Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Продавай время процессора и заработай!
Liana
361
Liana 2012.03.30 18:35 

Почему не устанавливается отложенник, если я использую переменную 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);} 
Liana
361
Liana 2012.03.30 18:48  

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

Sceptic Philozoff
Модератор
17849
Sceptic Philozoff 2012.03.30 23:09  

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

Проверяется условие 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
{
   /// сюда впишите код
}
Liana
361
Liana 2012.03.31 18:56  

Спасибо!

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий