بالنسبه للجزء الأول
الكود بهذه الطريقه لن يعطيك عدد النقاط الخاسره لآخر عقد بل سيكون لأول عقد لأنك إستخدمت الحلقه بهذه الطريقه
إجعله بهذا الشكلكود PHP:for(int i =OrdersTotal()-1;i>=0;i--){
وهذا سيحل المشكله لكن طبعا الكود السابق سوف يكون الفرق على سيكون بالنقاط فمثلا سيكون الفرق 0.0050كود PHP:double LastBuyPip , LastSellPip ;
if(OrdersTotal()>0)
{
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
if(OrderType()==OP_BUY ){
LastBuyPip=(NormalizeDouble(OrderOpenPrice()-Bid),digits) ;
}
if(OrderType()==OP_SELL ){
LastSellPip=(NormalizeDouble(Ask-OrderOpenPrice()),digits) ;
}
}
}
}
وإذا أردت جعله عدد صحيح يجب أن تقسم الناتج على قيمة النقطة LastSellPip/Point
بالنسبه للكود الآخر فهو صحيح لكن ربما المشكله ليست في الداله نفسها تأكد من شروط الدخول التي قمت بوضعها
إستخدم الأمر print لطباعة النتائج عند عمل باك تست وحاول تتبع الأرقام التي تظهر عندك حتى تعلم سبب الخطأ

