Как исправить ошибку в советнике

 
Подскажите пожалуйста как исправить ошибку  invalid price 1.11530000 for OrderClose function. Почему ошибка выдается при открытии ордера.

 
sevak sargsyan:
Подскажите пожалуйста как исправить ошибку  invalid price 1.11530000 for OrderClose function. Почему ошибка выдается при открытии ордера.


Перед отправкой торгового приказа цену надо нормализовать с помощью функции NormalizeDouble(цена , Digits())

 
Vitalii Ananev:

Перед отправкой торгового приказа цену надо нормализовать с помощью функции NormalizeDouble(цена , Digits())


Не знаю что не так

OrderSend(Symbol(),OP_SELL,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell"

 
sevak sargsyan:

Не знаю что не так

OrderSend(Symbol(),OP_SELL,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell"


Не верно указаны параметры функции OrderSend(). Почитайте внимательно справку. Для OP_SELL тейк профит должен быть ниже цены открытия позиции NormalizeDouble(Bid-stop*Point, Digits()). Или вы перепутали стоп лосс с тейк профит. 

 
sevak sargsyan:

Не знаю что не так

OrderSend(Symbol(),OP_SELL,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell"


Так смотреть нужно именно OrderClose (не зря же об этом пишется в журнал). С чего Вы взяли, что ошибка появляется при открытии ордера? Думаю, что-то не доглядели.

 

Дело в том что при компилировании нет не ошибок не предупреждений. Когда включаю на терминале (там нет открытых сделок) советник пытается открыть сделку и в журнале выдается ошибка.

 
sevak sargsyan:

Дело в том что при компилировании нет не ошибок не предупреждений. Когда включаю на терминале (там нет открытых сделок) советник пытается открыть сделку и в журнале выдается ошибка.


Выше читайте, параметры OrderSend() неверные.

 
Vitalii Ananev:

Выше читайте, параметры OrderSend() неверные.


Та же самая ошибка не чего не изменилось.

OrderSend(Symbol(),OP_BUY,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell

OrderSend(Symbol(),OP_SELL,0.01,Ask,0,NormalizeDouble(Bid-stop*Point, Digits),0,"order_buy",

 
А где именно в коде вы используете OrderClose?
 
sevak sargsyan:

Та же самая ошибка не чего не изменилось.

OrderSend(Symbol(),OP_BUY,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell

OrderSend(Symbol(),OP_SELL,0.01,Ask,0,NormalizeDouble(Bid-stop*Point, Digits),0,"order_buy",

Здесь не правильно, должно быть так:

OrderSend(Symbol(),OP_SELL,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell

OrderSend(Symbol(),OP_BUY,0.01,Ask,0,NormalizeDouble(Bid-stop*Point, Digits),0,"order_buy",

и еще непонятно как вы stop нормализировали... он должен быть в формате (например) 0,0010 для 4-знака и 0,00100 для 5-знака...

 
sevak sargsyan:

Та же самая ошибка не чего не изменилось.

OrderSend(Symbol(),OP_BUY,0.01,Bid,0,NormalizeDouble(Ask+stop*Point, Digits),0,"order_sell

OrderSend(Symbol(),OP_SELL,0.01,Ask,0,NormalizeDouble(Bid-stop*Point, Digits),0,"order_buy",


Для покупки надо указать цену Ask, а для продажи цену Bid. Stop Loss для покупки должен быть ниже цены открытия позиции, для продажи выше.

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