Автор#1

Здравствуйте, подскажите пожалуйста как реализовать в коде открытие ордера по заданной цене. Выставление отложки не подходит по условиям системы.
Возможно допустил ошибку в своем коде:
if(Bid==BSl || Bid OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,Ask+SL*Point,Ask-TP*Point,"",MagicNumber1,0,Red);

#2

Здравствуйте! Ну если у Вас переменная BSl содержит в себе цену открытия sell-ордера, то все верно. А в чем проблема? Подозреваю, что проблема может быть в ECN-счете брокера. Если у Вас ECN, то нужно сначала открывать ордер без стоплосса и тейкпрофита, а после открытия уже модифицировать. В таком варианте, как у Вас, брокер не даст открыть ордер на ECN. Стоп и тейк лучше высчитывать от цены, по которой ордер откроется, так будет точнее. Условие можно написать короче:

if(Bid  {
}

Автор#3

Переменная BSl - это стоп лосс buy ордера.
Счет не ECN.
Если указываю цену открытия sell ордера равной значению переменной BSl, то все работает, но постоянно выдается сообщение об ошибке 138 (пока не откроется ордер).
Условие исправил, благодарю)

#4

постоянно выдается сообщение об ошибке 138 (пока не откроется ордер)


Если брокер не ECN, то чтобы не вылетала ошибка 138 поставьте Slippage пошире. У Вас видимо очень маленькое значение проскальзывания. Возможно, Вы
просто указываете значение проскальзывания в "старых" пунктах, а Ваш брокер пятизнаковый. В этом случае будет очень узкое значение проскальзывания и ошибка 138 обеспечена. Был бы ECN, такой ошибки бы не было.
Автор#5

Решил проблему немного иначе. Ордер теперь открывается при условии, что предыдущий противоположный ордер закрыт с отрицательным профитом. В любом случае спасибо за помощь ;)

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025