Всех приветствую! Кто знает подскажите, как сделать на mql4 чтоб время жизни второго ордера был равет первому? - страница 3

 
Vitaly Muzichenko:

Ордер как раз таки удаляется, а вот позиция закрывается. И это на любом рынке, даже на товарном


Если бы коллега задал вопрос на английском языке - я бы не просил уточнить.

В русском языке рыночный ордер (синоним позиция) можно только закрыть (к сожалению:)

отложенный ордер (синоним заявка) можно и удалить (к счастью:)

 
Mikhail Kontsevoy:

Ордер закрывается, а не удаляется по TP?SL. Cформулируйте точно, что вы хотите. 


да, закрывается. Верно.

Думал сделать классами, но пока не реализовал

 
dmitri58_mql5:

да, закрывается. Верно.

Думал сделать классами, но пока не реализовал


народ, все прочел, но а можно по существу: к примеру есть сигнал на продажу и работаем:

     основной =OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,0,0,"Блок_2-OP_SELL",Magic,0,clrRed);

     компенсатор=OrderSend(Symbol(),OP_BUYSTOP,LotsOptimized(),Ask+L*Point,slippage,0,0,"Блок_2-Компенсатор",Magic2,0,clrBlue);  (L  это расстояние от основного до компенсатора, зачем это делать? да потому что закрывать в убыток это не есть хорошо и я приверженник открыть противоположный и как тренд изменится в первоначальное мое направление тогда и раскрывать замок)

 итак, цена ушла вверх и открывается компенсаторный. 

Мой вопрос в том что, сначало необходимо чтоб закрылся основной, а затем и только так чтоб закрылся и компенсаторный. какой функцией это сделать? как описать?

 
dmitri58_mql5:


народ, все прочел, но а можно по существу: к примеру есть сигнал на продажу и работаем:

     основной =OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,0,0,"Блок_2-OP_SELL",Magic,0,clrRed);

     компенсатор=OrderSend(Symbol(),OP_BUYSTOP,LotsOptimized(),Ask+L*Point,slippage,0,0,"Блок_2-Компенсатор",Magic2,0,clrBlue);  (L  это расстояние от основного до компенсатора, зачем это делать? да потому что закрывать в убыток это не есть хорошо и я приверженник открыть противоположный и как тренд изменится в первоначальное мое направление тогда и раскрывать замок)

 итак, цена ушла вверх и открывается компенсаторный. 

Мой вопрос в том что, сначало необходимо чтоб закрылся основной, а затем и только так чтоб закрылся и компенсаторный. какой функцией это сделать? как описать?


Второй ордер ставите/открываете после первого? Значит тикет первого известен. Сразу после установки/открытия второго ордера его тикет тоже известен, тут создаем глобальную переменную терминала с именем 'order_'+Ticket2 и присваиваем ей значение Ticket1. Потом, в цикле проходим по всем ордерам, если для ордера существует глобальная переменная  'order_'+OrderTicket(), берем ее значение (Ticket) и выделяем ордер по Ticket1 и смотрим что с ним, если он закрыт (его время закрытия больше 0), то удаляем или закрываем ордер с Ticket2.

 
Dmitry Fedoseev:

Второй ордер ставите/открываете после первого? Значит тикет первого известен. Сразу после установки/открытия второго ордера его тикет тоже известен, тут создаем глобальную переменную терминала с именем 'order_'+Ticket2 и присваиваем ей значение Ticket1. Потом, в цикле проходим по всем ордерам, если для ордера существует глобальная переменная  'order_'+OrderTicket(), берем ее значение (Ticket) и выделяем ордер по Ticket1 и смотрим что с ним, если он закрыт (его время закрытия больше 0), то удаляем или закрываем ордер с Ticket2.


благодарю.

попробую

 
dmitri58_mql5:


благодарю.

попробую

другой вариант - тикет первого ордера писать в комент второго. То есть использовать не глоб.переменную терминала, а ордер на сервере. И переносить советник между терминалами и VDS будет проще.

Эдакая частичная эмуляция OCO групп.

 
Maxim Kuznetsov:

другой вариант - тикет первого ордера писать в комент второго. То есть использовать не глоб.переменную терминала, а ордер на сервере. И переносить советник между терминалами и VDS будет проще.

Эдакая частичная эмуляция OCO групп.


а вот  тут работа с ордерами на сервере брокера, для меня темень.

но спасибо

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