السلام عليكم
اود من أحد الاخوة ان يساعدني في اصلاح الخطأ الموجود في هادا الاكسبيرت
فكرة الاكسبيرت واضحة
فقط لا ينفد الاوامر
الملف المرفق 278903
Printable View
السلام عليكم
اود من أحد الاخوة ان يساعدني في اصلاح الخطأ الموجود في هادا الاكسبيرت
فكرة الاكسبيرت واضحة
فقط لا ينفد الاوامر
الملف المرفق 278903
حتى تستطيع معرفة سبب الخطأ في الإكسبرت وعدم فتح الصفقه
يجب أن تذهب إلى خانة Journal سوف يظهر لك رقم الخطأ
وهذه قائمة بمعنى كل خطأ
http://docs.mql4.com/constants/errors
في الإكسبرت الخاص بك يظهر الخطأ رقم 130 وهذا يعني Invalid stops
فقد يكون الهدف أو الأستوب في مكان خاطئ ربما بسبب قربه من سعر وضع الأمر المعلق
لذلك يمكنك إستعمال الداله MathMax و MathMin بحيث إذا كان الهدف أو الأستوب أقل من أقرب سعر مسموح به يضع الأكسبرت الهدف والأستوب عند السعر المسموح به كمثال
مثلا ستجعل الأمر المعلق بهذا الشكل
وكذلك باقي أوامر البيع والشراءكود PHP:OrderSend(Symbol(), OP_BUYSTOP, Lot, NormalizeDouble(r1,Digits), 5, MathMin(r1-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point,r2), MathMax(pivo,r1+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point), "Commentaire", magicnumberBuy, 0, Blue);
مرفق الإكسبرت بعد التعديل
شكرا كتيرا اخ مستر دولار
وادا اردت أمر اغلاق جميع صفقات اليوم والغاء الصفقات الغير المفعلة قيل فتح الصفقات الجدد
سوف تحتاج إلى عمل دالة لحذف وإغلاق جميع الصفقات كمثال
ثم قبل كود وضع الأوامر المعلقه ضع دالة حذف وإغلاق الصفقاتكود PHP:void CloseDeleteOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3);
}
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3);
}
if(OrderType()>OP_SELL)
{
OrderDelete(OrderTicket());
}
}
}
}
كود PHP:CloseDeleteOrders();