В чем ошибка в коде ? - страница 2

 
sergeev >>:

Код сделали правильно. То что зацикливается - этого я не понял. В коде ведь нет никакого цикла. Смотрите на внешнее окружение.


можно сделать так, что бы SL или TP модифицировались однажды ? одного раза вполне хватит.

а то каждый пункт подтягивается.

 
можно. только тогда нет гарантии, что он с первого раза установится на нужное место. ведь стопуровень мешает...
 
sergeev >>:
можно. только тогда нет гарантии, что он с первого раза установится на нужное место. ведь стопуровень мешает...

как сделать ?

я протестирую, может устроит.

 
sergeev >>:

Код сделали правильно.


Алексей, добрый день.

почему то иногда все равно 130 ошибку выдает ?

типа стопы неправильные

 
Stells >>:

можно сделать так, что бы SL или TP модифицировались однажды ? одного раза вполне хватит.

а то каждый пункт подтягивается.

или можно так паузу выдержать 60 секунд с помощью Sleep ?

double tp, sl;
 if (OrderOpenPrice()-Bid>STP) // если цена отошла в убыток на размер стопуровня
 {
   tp=NormalizeDouble(MathMax(OrderOpenPrice()+bu*Point*mn, Bid+STP), Digits); // вычисляем требуемый профит с учётом стопуровня
   if (tp<OrderTakeProfit()) // если профит ещё выше требуемого
     if (!OrderModify(OrderTicket(),OrderOpenPrice(), OrderStopLoss(), tp, 3)) {Sleep(60000);} // модифицируем и ждем 60 секунд
     { err=GetLastError(); if (err>1) Print(ErrorDescription(err)); } // в случае ошибки выводим в журнал
 }
 else if (Bid-OrderOpenPrice()>STP) // если пошли в профит на размер стопуровня
 {
   sl=NormalizeDouble(MathMin(OrderOpenPrice()+bu*Point*mn, Bid-STP),Digits); // находим требуемый стоплос
   if (sl>OrderStopLoss()) // если стоплос ещё ниже требуемого
     if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(),3)){Sleep(60000);} // модифицируем и ждем 60 секунд
     { err=GetLastError(); if (err>1) Print(ErrorDescription(err)); } // в случае ошибки выводим в журнал
 }
Причина обращения: