GetOrderOpenPrice

 

Почему не устанавливается отложенник, если я использую переменную startPoint приравненную к цене последнего открытого ордера?

if (ExistPositions(NULL, OP_BUY, magic)) 
   startPoint = GetOrderOpenPrice(NULL, OP_BUY, magic);
   {ticket=OrderSend(Symbol(),OP_BUYSTOP,0.3,startPoint+40*Point,3,0,startPoint+80*Point,"Buy Stop",magic,0,Green);} 
 

Ой, я поняла - это ( GetOrderOpenPrice ) только для отложенных ордеров. :((

 

Логика кода получается такой:

Проверяется условие ExistPositions().

  • Если оно true, то выполняется вторая строка startPoint = ..., а после этого и третья.
  • Если условие false, то вторая строка не выполняется, и сразу выполняется третья. Но в этом случае startPoint должен быть вычислен где-то раньше.

Все так?

Если не так - поставьте фигурные скобки как надо. Вы обрамили ими один оператор (открытие ордера). Тут они не нужны, т.к. и без них код будет выполняться так же. Может, правильнее вот так:

if (ExistPositions(NULL, OP_BUY, magic)) 
{
   startPoint = GetOrderOpenPrice(NULL, OP_BUY, magic);
   ticket=OrderSend(Symbol(),OP_BUYSTOP,0.3,startPoint+40*Point,3,0,startPoint+80*Point,"Buy Stop",magic,0,Green);
} 
else
{
   /// сюда впишите код
}
 

Спасибо!

Причина обращения: