Помгите изменить код для отложенных ордеров

 

Здравствуйте. Написал советник. Возникла потребность добавить новый временной отрезок.

Помогите написать код, чтобы отложенные ордера, выставленные в 8.00 закрывались в 16.00 и в это же время выставлялись новые отложенные ордера с закрытием их в 22.00.

Исправьте, пожалуйста в этом коде:

bool operation=0;for(int pos=0;pos     {if ( OrderSelect (pos, SELECT_BY_POS) == false )  continue;
      if ( OrderSymbol()==Symbol()) break;}
     
      if (TimeSeason==2) t=8;
      if(Hour()==t&&operation==0)
   {operation=1;if(operation==1 &&OrderSymbol()!=Symbol()||OrdersTotal()==0)
        {OrderSend(Symbol(),OP_BUYSTOP,lots,OPB,0,SLB,CLB,"My order#",16000,0,Green);
       OrderSend(Symbol(),OP_SELLSTOP,lots,OPS,0,SLS,CLS,"My order#",16000,0,Green);}}


 
 
 if (TimeSeason==2)int t3=16;
 if(Hour()>t3){operation=0;
 {for(  int ii=OrdersTotal()-1;ii>=0;ii--)
       {OrderSelect(ii, SELECT_BY_POS);
        int  type1   = OrderType();bool result1 = false;
        switch(type1)
         {case OP_BUYSTOP   :
          case OP_SELLSTOP  :
          result1 = OrderDelete( OrderTicket() );break;}}}}return(0);
                
 

Взляни на мою функцию времени. Может станет легче.

Если время ок то открывай ордер. Если нет то закрывай.

Чтобы сразу не открывался ордер  в ините поставь флаг открыт ли ордер тру. (opened=true) 

 

datetime prev_day,start_1,stop_1,start_2,stop_2,start_3,stop_3;
 bool opened;


//////////////////////////////////////////////////////////////
 int OnInit()
 {  
start_1=StringToTime(start1);
stop_1=StringToTime(stop1);
start_2=StringToTime(start2);
stop_2=StringToTime(stop2);
start_3=StringToTime(start3);
stop_3=StringToTime(stop3);

 opened=true;


 return(INIT_SUCCEEDED);
}



////////////////////////////////////////////////////////////
 void OnTick()
 {
   //time filter
 if(!work_time_f()) 
 {
 //close
 opened=false;
 return;
 }



 //enter
 if(!opened) //open
}
https://www.mql5.com/ru/code/14244
Функция работы программы по времени
Функция работы программы по времени
  • голосов: 19
  • 2015.11.23
  • Vasyl Nosal
  • www.mql5.com
Функция разрешает исполнение определенного кода в указанный промежуток времени.
 
Vasyl Nosal:

Взляни на мою функцию времени. Может станет легче.

Если время ок то открывай ордер. Если нет то закрывай.

Чтобы сразу не открывался ордер  в ините поставь флаг открыт ли ордер тру. (opened=true) 

 

Спасибо за ответ, но мне хотелось бы, чтобы изменения были именно в этом коде, ибо советник работающий на реальном счете. Очень желательно просто что-то поправить в существующем коде. Там какая-то мелочь, которую я пока не вижу, чтобы поменять.
 
Motzaart:
Спасибо за ответ, но мне хотелось бы, чтобы изменения были именно в этом коде, ибо советник работающий на реальном счете. Очень желательно просто что-то поправить в существующем коде. Там какая-то мелочь, которую я пока не вижу, чтобы поменять.
Нормально код вставляйте в сообщение. Думаете кто то будет разбираться  в вашем ... написанном в одну строчку.
 
Motzaart:
Спасибо за ответ, но мне хотелось бы, чтобы изменения были именно в этом коде, ибо советник работающий на реальном счете. Очень желательно просто что-то поправить в существующем коде. Там какая-то мелочь, которую я пока не вижу, чтобы поменять.
А. Ну если на реальном:))))))))))))))))))))))))))))
 
Vitalii Ananev:
Нормально код вставляйте в сообщение. Думаете кто то будет разбираться  в вашем ... написанном в одну строчку.
Файлы:
M.mq4  3 kb
 
Vasyl Nosal:
А. Ну если на реальном:))))))))))))))))))))))))))))
что тебя так улыбнуло?
 
Motzaart:
что тебя так улыбнуло?

То что твой код намного хуже того что я предложил.

 
Vasyl Nosal:

То что твой код намного хуже того что я предложил.

я не спорю, ибо я нуб, поэтому и попросил помощи...меряться яйцами не собираюсь...мне нужно просто поправить, а не менять полностью...там много условий, которые в корне изменят структуру советника...а это нежелательно...если ставить твой вариант, то уйдет куча времени, чтобы все поменять
Причина обращения: