Может ли OrderSend == 0 ?

 

Корректна ли такая запись:

if (OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"", MAGIC,0,Green) == 0) Sleep(5000);

Из хелпа следует, что OrderSend "Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи".

Какой смысл здесь может подразумеваться?

 
Makarov:

Корректна ли такая запись:

if (OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"", MAGIC,0,Green) == 0) Sleep(5000);

Нет, не корректна. OrderSend не возвращает 0, либо номер тикета ордера, либо -1, но я бы рекомендовал на всякий случай ставить проверку не на ==-1, а на <0.

P.S. Кстати, если подразумевается возможность нескольких торговых операций на одном тике, то Sleep лучше делать независимо от результата операции.
 
Спасибо. Попробую переадресовать этот вопрос Mak -у в ветке: https://www.mql5.com/ru/users/sashken
 
Да, там опечатка, нужно проверять на < 0
Почему Sleep(5000) непомню, видимо надо было :))
 
Mak:
Да, там опечатка, нужно проверять на < 0
Почему Sleep(5000) непомню, видимо надо было :))

Попробую читать мысли :) . Наверно, в случае ошибки сделать паузу, и через заданное время сделать новую попытку оправки ордера. Тогда встречный вопрос – эффективно ли это, и нужно ли на практике?

 
Посмотрите пост на который я там отвечал.
Там был скрипт, который я немного переделал.
Моя строчка делает практически то же самое, что и тот скрипт.
Зачем там Sleep, наверное вы правильно угадали ...
Но вопрос не ко мне.
Причина обращения: