Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
К сожалению, бывают моменты, когда перечисленные методы не исключают появления сообщения в терминале "...[Market closed]....". Тема неоднократно обжёвывалась на форуме, что-то вроди бы предпринималось...
Однако до сих пор приходится пользоваться костылями.
P.S. Если я ошибаюсь, не отследил, как проблему разрулили, ткните плиз носом "что, где когда".
От невозможности решения данной проблемы уже не знаю, что делать. После встречи с этим сообщением, советник оказывается в нокдауне и уже не делает попыток для открытия позиции:
2017.03.02 02:00:08.454 '3387531': order sell 0.01 EURUSD opening at 1.0549 sl: 0.0000 tp: 0.0000 failed [Market is closed]
Для того, чтобы привести его в чувство, необходимо и достаточно вызвать и закрыть советник путем Советники - Свойства- ОК и он исправно ставит пропущенную, в начале ТФ, позицию:
2017.03.02 04:27:58.100 '3387531': order #116149905 sell 0.01 EURUSD at 1.0540 was modified -> sl: 0.0000 tp: 1.0040
Что делать?
Интересная идея, но не могу запустить и проверить. Можете сделать без MT4Orders.mqh ? не хочется ковыряться в дебрях MT4.
Скачайте mqh, тогда запустится. MT4 не при чем.
От невозможности решения данной проблемы уже не знаю, что делать. После встречи с этим сообщением, советник оказывается в нокдауне и уже не делает попыток для открытия позиции:
2017.03.02 02:00:08.454 '3387531': order sell 0.01 EURUSD opening at 1.0549 sl: 0.0000 tp: 0.0000 failed [Market is closed]
Для того, чтобы привести его в чувство, необходимо и достаточно вызвать и закрыть советник путем Советники - Свойства- ОК и он исправно ставит пропущенную, в начале ТФ, позицию:
2017.03.02 04:27:58.100 '3387531': order #116149905 sell 0.01 EURUSD at 1.0540 was modified -> sl: 0.0000 tp: 1.0040
Что делать?
попробуйте такую функцию
{
MqlDateTime last_time;
MqlDateTime start_time;
MqlDateTime end_time;
datetime trade_time_start=0;
datetime trade_time_end=0;
datetime starts=0;
datetime end=0;
ResetLastError();
datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME);
if(expiration!=0 && times>=expiration)return(false);
TimeToStruct(times,last_time);
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
starts=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(starts==end)return(true);
if(times>starts && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError());
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
starts=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(starts==end)return(true);
if(times>starts && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError());
return(false);
}
...
попробуйте такую функцию
{
MqlDateTime last_time;
MqlDateTime start_time;
MqlDateTime end_time;
datetime trade_time_start=0;
datetime trade_time_end=0;
datetime starts=0;
datetime end=0;
ResetLastError();
datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME);
if(expiration!=0 && times>=expiration)return(false);
TimeToStruct(times,last_time);
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
starts=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(starts==end)return(true);
if(times>starts && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError());
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
starts=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(starts==end)return(true);
if(times>starts && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError());
return(false);
}
...
Благодарю, проверю. Кто поможет мне "вшить" эту функцию в код советника, составляющего основу проекта "комикадзе"?
попробуйте такую функцию
{
MqlDateTime last_time;
MqlDateTime start_time;
MqlDateTime end_time;
datetime trade_time_start=0;
datetime trade_time_end=0;
datetime starts=0;
datetime end=0;
ResetLastError();
datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME);
if(expiration!=0 && times>=expiration)return(false);
TimeToStruct(times,last_time);
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
starts=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(starts==end)return(true);
if(times>starts && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError());
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
starts=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(starts==end)return(true);
if(times>starts && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError());
return(false);
}
...
В субботу ф-ция вернула true. Разбираться нет времени. Поясните пожалуйста что делает эта ф-ция, и как с ней работать - просто, если не сложно, сохраните моё время на разбор работы ф-ции.
В субботу ф-ция вернула true. Разбираться нет времени. Поясните пожалуйста что делает эта ф-ция, и как с ней работать - просто, если не сложно, сохраните моё время на разбор работы ф-ции.
функция получает из спецификации инструмента данные времени о торговой сессии сравнивает его со временем переданным в функцию и если время выходит за границы торговой сессии то возвращает false. Да тут есть нюанс так как TimeCurrent() не работает в выходные, нужно как-то завязать время либо на локальное время компьютера либо сделать поправку в несколько секунд например TimeCurrent()+5
функция получает из спецификации инструмента данные времени о торговой сессии сравнивает его со временем переданным в функцию и если время выходит за границы торговой сессии то возвращает false. Да тут есть нюанс так как TimeCurrent() не работает в выходные, нужно как-то завязать время либо на локальное время компьютера либо сделать поправку в несколько секунд например TimeCurrent()+5
От невозможности решения данной проблемы уже не знаю, что делать. После встречи с этим сообщением, советник оказывается в нокдауне и уже не делает попыток для открытия позиции:
2017.03.02 02:00:08.454 '3387531': order sell 0.01 EURUSD opening at 1.0549 sl: 0.0000 tp: 0.0000 failed [Market is closed]
Для того, чтобы привести его в чувство, необходимо и достаточно вызвать и закрыть советник путем Советники - Свойства- ОК и он исправно ставит пропущенную, в начале ТФ, позицию:
2017.03.02 04:27:58.100 '3387531': order #116149905 sell 0.01 EURUSD at 1.0540 was modified -> sl: 0.0000 tp: 1.0040
Что делать?
На стороне ДЦ признали ошибку сервера:
Нами была произведена детальная проверка сложившейся ситуации на Вашем счете #*******) в ходе которой было установлено:
2017.03.08 00:00:09 (GMT +1) открытие ордера Sell 0.01 EURUSD по цене 1.0564 было отклонено в связи с технической причиной. В момент отправки запроса, ордер не был принят на обработку ввиду задержки на стороне сервера. Технический отдел уже проинформирован об этой ситуации и занимается ее решением. В ближайшее время ситуация будет исправлена.
Может здесь будет что-то полезное
https://www.mql5.com/ru/forum/91147
.....