الاوامر المعلقة .. كود تكرارها .. وبداية وضعها
السلام عليكم أحبتي جميعاً
لدي سؤال وأتمنى أن اجد الإجابة
بعد الإطلاع في هذا المنتدى على أكواد برمجة إكسبيرتات الأوامر المعلقة والمضاعفات حاولت فهم آلية تكرار الأمر المعلق وبعقد ثابت وفرق ثابت بين كل أمر معلق (step) لكن واجهت بعض الصعوبة.
وكيف بالإمكان ان تكون بداية وضع الاوامر المعلقة بيعاً وشراء عند نقطة سعرية أو تحقق شرط معين.
وكذلك أقصى عدد للأوامر في إتجاه واحد
لكم تحياتي وصالح الدعاء ... ودمتم سالمين غانمين
رد: الاوامر المعلقة .. كود تكرارها .. وبداية وضعها
على سبيل المثال بالنسبه للأوامر المعلقة إستخدام الحلقات هي الأفضل لوضع الأوامر وتحديد الفجوات بين الأوامر
لاحظ الكود التالي
كود PHP:
if(OpenOrders){
for(i=1;i<=NumberOfOrders;i++)
{
newlot=Multiplier*lastlot;
lastlot=newlot;
Price=Bid+(i*Step*point);
if(TakeProfit==0){TP=0;}else{TP=Price-TakeProfit*point;}
if(StopLoss==0){SL=0;}else{SL=Price+StopLoss*point;}
OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL,TP,"MR.dollar EA",MagicNumberS,0,Red);
}
}
في البداية وضعت الشرط
وهذا الشرط يمكن وضع مكانه شروط وضع الأوامر في الإكسبرت الذي تريده
بعد ذلك قمنا بإستخدام الحلقه for وكان تعبير إبتداء الحلقه 1 والمتغير NumberOfOrders هو أقصى عدد للأوامر ويمكنك وضعه كتغير خارجي في خصائص الإكسبرت
ثم كود مضاعفة اللوت ثم المهم وهو سعر الدخول في الصفقه
كود PHP:
Price=Bid+(i*Step*point);
كما ترى لنفرض على سبيل المثال السعر الحالي 1.4500 وجعلت Step=20 بداية سيكون إبتداء الحلقه i=1
فسيكون سعر الدخول الأول
كود PHP:
1.4500+(1*20*Point)
أي من سعر 1.4520
ثم سيكون سعر الدخول الثاني عندما تعيد الحلقه عملها وتصبح i=2
كود PHP:
1.4500+(2*20*Point)
وهكذا تستمر الحلقه حتى تنتهي بعدد العقود الذي قمت بتحديده
أما بالنسبة لوضع الأوامر بسعر السوق فبداية يجب أن نحدد سعر دخول آخر صفقه وحجم اللوت لها
كود PHP:
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==OP_BUY){
openprice=OrderOpenPrice();lots=OrderLots();
}
}{
ثم بعد ذلك نضع من ضمن شروط الدخول إذا كان السعر الحالي أقل من سعر الدخول -20 نقطه على سبيل المثال
كود PHP:
if(Ask<=openprice-Step*point&&orderscnt(OP_BUY)>=1){
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,newLot,NormalizeDouble(Ask,digits),3,0,TP,"MR.dollar EA",MagicNumber,0,Blue);
هناك طبعا أكثر من طريقه لكتابة أكواد المضاعفات ولكن في النهاية جميعها ستؤدي نفس الغرض
رد: الاوامر المعلقة .. كود تكرارها .. وبداية وضعها
أخي مستر دولار ... جزاك الله الجنة ورحم والديك وجمعك بهما في جنات النعيم
وكما توقعت أن يكون اول رد على الموضوع هو ردك ... دون أدنى شك في تجاوب الآخرين ومحبتهم للمساعدة
أكرر لك شكري وصالح دعائي لك ... احبك في الله
ولو أشكل علي شيء في الموضوع فلا غنى لي عن مساعدتك وبقية الأعضاء
موفق اخي وعزيزي
رد: الاوامر المعلقة .. كود تكرارها .. وبداية وضعها
كيف لي ان أجعل الامر المعلق الواحد يتكرر في نفس النقطة السعرية وبنفس التيك بروفيت والاستوب لوز وعدد العقود
رد: الاوامر المعلقة .. كود تكرارها .. وبداية وضعها
اقتباس:
المشاركة الأصلية كتبت بواسطة 911
كيف لي ان أجعل الامر المعلق الواحد يتكرر في نفس النقطة السعرية وبنفس التيك بروفيت والاستوب لوز وعدد العقود
سوف تستخدم الحلقات لذلك بحيث يكون إبتداء الحلقه 1 وإنتهاء الحلقه هو عدد العقود التي تريدها
راجع هذا الإكسبرت سوف تجد تقريبا نفس الطريقه
https://forum.arabictrader.com/t96360.html