Как установить время закрытия сделки?

 

Всех приветствую. 

Подскажите, пожалуйста, как установить время закрытия сделки по аналогу с экспирацией опционов?

Мне нужно установить время закрытия каждой открытой сделки. 

Т.е., я открываю штук 5-10 сделок по каждой валюте и мне нужно у каждой установить время, когда сделки закрыться, если она не закрылась по стопу или лоссу. 


 
очень просто. Получите тикет нужной сделки. Сравните текущее время с нужным временем закрытия сделки и закройте. 
 
Ivan Butko:

Всех приветствую. 

Подскажите, пожалуйста, как установить время закрытия сделки по аналогу с экспирацией опционов?

Мне нужно установить время закрытия каждой открытой сделки. 

Т.е., я открываю штук 5-10 сделок по каждой валюте и мне нужно у каждой установить время, когда сделки закрыться, если она не закрылась по стопу или лоссу. 


есть идея

в коммент или в мэйджик ордера записать время закрытия

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

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

if(TimeHour(TimeCurrent())==22 & TimeMinute(TimeCurrent())==30){
         for (int i=OrdersTotal()-1; i>-1; i--){
             if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
                if(OrderSymbol()==Symbol()){
                   bool orderClose=false;
                   while(!orderClose){
                     orderClose=OrderClose(OrderTicket(),Lot,Bid,Slippage);
                   }
               }
            }
         }
}

Для каждой сделки отдельно удобно будет только если внутри дня (например код ниже по идее должен закрывать сделку через 5 часов после открытия... но только если внутри дня дальше думать нужно...):

   for (int i=OrdersTotal()-1; i>-1; i--){
             if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
                if(OrderSymbol()==Symbol()){
                   if(TimeHour(TimeCurrent())-TimeHour(OrderOpenTime())>=5 & TimeMinute(TimeCurrent())>TimeMinute(OrderOpenTime())){
                      bool orderClose=false;
                      while(!orderClose){
                        orderClose=OrderClose(OrderTicket(),Lot,Bid,Slippage);
                      }
                   }
               }
            }
         } 

Если за пределами дня открытия наверное немного сложнее будет

 
Yevhenii Levchenko:

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

Для каждой сделки отдельно удобно будет только если внутри дня (например код ниже по идее должен закрывать сделку через 5 часов после открытия... но только если внутри дня дальше думать нужно...):

Если за пределами дня открытия наверное немного сложнее будет

Гениально. А если нужно для каждой позиции установить своё время жизни позиции, да ещё и время рандомно? И не исключён вариант, что та позиция которая открыта последней должна быть закрыта первой.

 
Yevhenii Levchenko:

Для каждой сделки отдельно удобно будет только если внутри дня (например код ниже по идее должен закрывать сделку через 5 часов после открытия... но только если внутри дня дальше думать нужно...):

if(TimeCurrent() > OrderOpenTime()+ 5*3660 )
 
Igor Makanu:
Точняк! А не нужно 3600 на 1000 умножать или там в секундах?
 
Yevhenii Levchenko:
Точняк! А не нужно 3600 на 1000 умножать или там в секундах?

https://docs.mql4.com/ru/trading/orderopentime

datetime  OrderOpenTime();

в MQL datetime ограничен секундами

 
Igor Makanu:

https://docs.mql4.com/ru/trading/orderopentime

в MQL datetime ограничен секундами

Igor Makanu:
Yevhenii Levchenko:

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

Для каждой сделки отдельно удобно будет только если внутри дня (например код ниже по идее должен закрывать сделку через 5 часов после открытия... но только если внутри дня дальше думать нужно...):

Если за пределами дня открытия наверное немного сложнее будет

multiplicator:
есть идея

в коммент или в мэйджик ордера записать время закрытия

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


Ребят, от души. Всем спасибо за помощь

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