Взляни на мою функцию времени. Может станет легче.
Если время ок то открывай ордер. Если нет то закрывай.
Чтобы сразу не открывался ордер в ините поставь флаг открыт ли ордер тру. (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:
Спасибо за ответ, но мне хотелось бы, чтобы изменения были именно в этом коде, ибо советник работающий на реальном счете. Очень желательно просто что-то поправить в существующем коде. Там какая-то мелочь, которую я пока не вижу, чтобы поменять.
А. Ну если на реальном:))))))))))))))))))))))))))))
Спасибо за ответ, но мне хотелось бы, чтобы изменения были именно в этом коде, ибо советник работающий на реальном счете. Очень желательно просто что-то поправить в существующем коде. Там какая-то мелочь, которую я пока не вижу, чтобы поменять.
Vasyl Nosal:
А. Ну если на реальном:))))))))))))))))))))))))))))
что тебя так улыбнуло?
А. Ну если на реальном:))))))))))))))))))))))))))))
Motzaart:
что тебя так улыбнуло?
что тебя так улыбнуло?
То что твой код намного хуже того что я предложил.
Vasyl Nosal:
я не спорю, ибо я нуб, поэтому и попросил помощи...меряться яйцами не собираюсь...мне нужно просто поправить, а не менять полностью...там много условий, которые в корне изменят структуру советника...а это нежелательно...если ставить твой вариант, то уйдет куча времени, чтобы все поменять
То что твой код намного хуже того что я предложил.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. Написал советник. Возникла потребность добавить новый временной отрезок.
Помогите написать код, чтобы отложенные ордера, выставленные в 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);