السلام عليكم ورحمة الله وبركاته
أعمل على برمجة اكسبرت وهو في مرحلة التخطيط للفكرة.
ولكن توقفت عند مسألة لم أجد لها حلاً حتى الآن.
الفكرة ببساطة أن الاكسبرت يفتح عدد من الأوامر وليكن 5 باي ستوب و5 سل ستوب فوق السعر الحالي بعدة نقاط يتم تحديدها.
ما توقفت عنه هو التالي:
عندما يتم تفعيل أمر سل ستوب مثلاً ليتحول إلى أمر سل... أريد أن يقوم الاكسبرت بوضع أمر باي ستوب على بعد عدد مُعين من النقاط فوق سعر السل الستوب الذي تم فتحه (أو حتى بعدد مُعين من النقاط فوق السعر الحالي للزوج)
وبالعكس عندما يتم تفعيل أمر باي ستوب مثلاً ليتحول إلى أمر باي... أريد أن يقوم الاكسبرت بوضع أمر سل ستوب على بعد عدد مُعين من النقاط تحت سعر الباي الستوب الذي تم فتحه (أو حتى بعدد مُعين من النقاط تحت السعر الحالي للزوج)
مثال للتوضيح: السعر الحالي 1.400
SELLTOP1 1.380
SELLTOP2 1.360
SELLTOP3 1.340
SELLTOP4 1.320
BUYSTOP1 1.420
BUYSTOP2 1.440
BUYSTOP3 1.460
BUYSTOP4 1.480
في هذه الحالة عدد الأوامر من كل نوع 4
المسافة بين الأوامر 20 نقطة.
لو ارتفع السعر ل1.420 سيتم فتح أمر BUY
هنا أريد وضع أمر SELLTOP عند سعر 1.400 (أقل 20 نقطة من سعر الفتح لصفقة الشراء)
وعندما يصل السعر إلى 1.440 يتم وضع أمر SELLSTOP عند 1.420
وهكذا.
وإذا اتجه السعر للهبوط وفتح صفقة SELL عند 1.380 يقوم الاكسبرت بفتح صفقة BUYSTOP عند 1.400
وهكذا.
المشكلة كيف نربط أمر البيع (أو الشراء) الذي تم تفعيله للتو مع صفقة الSELLSTOP أو BUYSTOP بحيث يتم وضع صفقة واحدة فقط بدون تكرار أو تضارب.
حيث أنه لو استخدمنا مثلاً.
if(OrderSymbol()==Symbol() && OrderType==OP_BUY && OrderMagicNumber=MagicNumber)
{
OrderSend(Symbol();OP_SELLSTOP...etc
}
سيتم فتح عشرات الصفقات بدون توقف.
وإذا وضعنا العُدد الإجمالي لعدد الصفقات المؤجلة كشرط لاستكمال العدد ل8 صفقات عند نقصانها ..
للأسف سيتم وضع صفقات من نوع واحد طوال الوقت حسب نوع أول صفقة سيتم تفعيلها.
هل هناك طريقة لحل هذه المسألة؟