عزيزي وضاح عطاراقتباس:
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سنشرح المزيد من الأوامر المتعلقة بالاكسبيرتات والصفقات التجارية وكيفية التعامل معها.
وبواسطة هذه الوظائف الخاصة بالصفقات نستطيع الشراء أو البيع الفوري والمعلق أو حذف الصفقات المعلقة أو الاستعلام عن الصفقات المفتوحة حاليا أو الصفقات المنفذة.
كل صفقة نقوم بها سواء كانت فورية أو معلقة فإن لها رقم فريد غير متكرر على مستوى الصفقات التي تفتح من البروكر نفسه .
وهو عبارة عن رقم تسلسلي لجميع الصفقات الحقيقية أو الديمو لكل الحسابات الموجودة في السيرفر الخاص بكل بروكر .
مثلا أنا فتحت صفقة شراء من حسابي وأخذت الرقم 20034 وأنت أيضا لك حساب في نفس الشركة وفتحت بعدي مباشرة صفقة بيع من حسابك فهي ستأخذ الرقم 20035 .
ومن خلال هذا الرقم نستطيع معرفة حجم العمل لأي شركة فوركس وذلك بمعرفة عدد الصفقات التي يتم فتحها كل يوم مثلا .
فمثلا فتحت أنا صفقة أخذت الرقم 10000 وبعد ساعة فتحت صفقة أخرى فكان رقمها 100300 فهذا يعني أنه خلال هذه الساعة تم فتح 300 صفقة.
ولكننا لن نعرف طبعا عدد الصفقات الحقيقية من الديمو . ولكنه رقم يعبر عن حركة الشركة بشكل عام .
المهم من كل الكلام السابق فإن أهم شيء لنا علينا معرفته أن لكل صفقة رقم Ticket وهو رقم فريد لهذه الصفقة فقط .
حتى الصفقة المعلقة التي نحذفها لها رقم فريد يبقى معلقا بها حتى النهاية .
وجدنا في الدرس السابق كيف قمنا بعمل حلقة على كل الصفقات الحالية ومعرفة عدد الصفقات المتعلقة بالاكسبيرت فقط عن طريق ميزة الرقم السري الذي يميز الصفقات عن بعضها البعض.
وكيف استطعنا أيضا إغلاق الصفقات المفتوحة أو حذف الصفقات المعلقة .
واستخدمنا في ذلك تقنية بسيطة وهي عبارة عن حلقة تمر على كل الصفقات من أول صفقة حتى آخر صفقة .
وفي حال وجدنا صفقة تحقق الشروط المطلوبة قمنا بعدها أو حذفها أو إغلاقها حسب نوع العمل المطلوب .
لا يمكن بأي حال من الأحوال التعامل مع صفقة قبل اختيارها أولا ويتم اختيارها عن طريق الوظيفة OrderSelect .
كل الأوامر المتعلقة بالصفقات تقريبا تحتاج قبل استدعائها تنفيذ الوظيفة OrderSelect . وإلا فإننا سنحصل على رسالة خطأ .
لذلك يجب الانتباه جيدا أننا فعلا قمنا باختيار الصفقة المطلوبة وبعدها نستطيع عمل أي شيء على هذه الصفقة المختارة .
مثلا نستطيع معرفة أي معلومة عن الصفقة المختارة مثل سعر الدخول لهذه الصفقة أو نوع الصفقة هل هي بيع أو شراء أو غيره .
أو تاريخ فتح الصفقة أو ربح الصفقة الحالي وغيره من المعلومات الأخرى الهامة .
بما أننا لا بد من أن نختار الصفقة من خلال OrderSelect قبل أن نقوم بأي عملية على الصفقة المختارة لذلك سنتكلم قليلا عن تقنية الاختيار هذه.
لكل حساب قسمين من الصفقات .
القسم الأول : هو القسم الذي يحوي على الصفقات المنفذة وغير المغلقة أو الصفقات المعلقة وغير المنفذة .
وهي الصفقات التي نراها في صفحة Trade أسفل برنامج التداول .
القسم الثاني : وهو القسم الذي يحوي على الصفقات المغلقة أو الصفقات المعلقة المحذوفة .
وهي الصفقات التي نراها في صفحة History .
في الحقيقة فإن لكل صفقة رقمين :
الأول : رقم التيكيت الذي تحدثنا قبل قليل .
الثاني : رقم تسلسلي في القسم الذي يتبع له وهو يبدأ من الصفر - واحد - اثنان وهكذا حتى آخر صفقة .
ولكل قسم أرقام تسلسلية خاصة به .
ادخل على صفقاتك الحالية فإن أول صفقة لها الرقم صفر والصفقة التي بعدها رقمها واحد وهكذا .
هذا الرقم لن تراه في جدول الصفقات . بل سترى رقم التيكيت فقط .
الآن حان وقت شرح الوظيفة OrderSelect
لهذه الوظيفة ثلاث بارامترات :
الأول : رقم الصفقة التسلسلي أو التيكيت والذي يتحدد نوعه حسب قيمة البارامتر الثاني .
البارامتر الثاني : نوع الرقم هل هو تسلسلي أو تيكيت . ويأخذ قيمتين إما SELECT_BY_POS وهذا يعني أن الرقم نوعه تسلسلي.
أو القيمة SELECT_BY_TICKET وهذا يعني أن الرقم نوعه تيكيت .
البارامتر الثالث : نوع القسم الذي سنختار منه الصفقة هل هو الصفقات الحالية أو الهيستوري . وله قيمتان إما MODE_TRADES وهذا يعني أننا سنعمل على الصفقات الحالية. وهي القيمة الافتراضية .
أو القيمة MODE_HISTORY وهذا يعني أننا سنعمل على الصفقات الهيستوري فقط .
فمثلا الكود التالي يعني أنني أختار الصفقة ذات الرقم التسلسي 3 في الصفقات الحالية:
كما يمكن كتابة نفس السطر بالطريقة المختصرة مع أني لا أحبذها على الشكل التالي :كود PHP:
OrderSelect(3, SELECT_BY_POS,MODE_TRADE);
حيث أن البارامتر الثالث له قيمة افتراضية هي MODE_TRADE ونستطيع عدم كتابته .كود PHP:
OrderSelect(3, SELECT_BY_POS);
والكود التالي يعني أنني أختار الصفقة ذات رقم التيكيت 25689 في الصفقات الحالية:
والكود التالي يعني أنني أختار الصفقة ذات رقم التيكيت 4567 في صفقات الهيستوري:كود PHP:
OrderSelect(25689, SELECT_BY_TICKET,MODE_TRADE);
كود PHP:
OrderSelect(4567, SELECT_BY_TICKET,MODE_HISTORY);
لو سمحت طلب كيف احصل على رقم التيكت هذا مثلا انا عندي خمسة صفقات مفتوحة واريد
تعديل صفقة معينة كيف يمكن ذلك برمجيا لو سمحت ممكن الكود