Ошибка Market closed в тестере

 

Прогоняю советник в тестере на реальных тиках.

И получаю странную ошибку - рынок работает, свечи идут, сигнал формируется, а заявка не выставляется. Выдается ошибка "Market closed"

В чем может быть проблема, подскажите


Файлы:
problem6.png  295 kb
 
Anton Polkovnikov:

Прогоняю советник в тестере на реальных тиках.

И получаю странную ошибку - рынок работает, свечи идут, сигнал формируется, а заявка не выставляется. Выдается ошибка "Market closed"

В чем может быть проблема, подскажите


Терминал обновили?

 

Ага, понятно. Время торгов на бирже сейчас урезали, соответственно, оно сменилось и в спецификации символа. Тогда вопрос - а как обойти это ограничение в тестере?


 

Есть какое решение проблемы выше?

Возникла ситуация, что советник, который раньше работал нормально, выдает ошибку, что рынок закрыт. Торговля на Форекс. Сейчас четверг 22:30 минут, т.е. рынок работает, вручную сделки на этом же демо-счете открывают без проблем.

 
taramortom #:

Есть какое решение проблемы выше?

Возникла ситуация, что советник, который раньше работал нормально, выдает ошибку, что рынок закрыт. Торговля на Форекс. Сейчас четверг 22:30 минут, т.е. рынок работает, вручную сделки на этом же демо-счете открывают без проблем.

Если еще актуально, то рассказываю, как я обошел эту проблему:

В сессии, где у тебя написано (на скрине) 09:45, я изменил на 00:00. Как я это сделал?

В тестере стратегий при нажатии на символ, где ты открывается окно (что у тебя на скрине). Внизу есть кнопки "По умолчанию", "Импорт" и "Экспорт". Сначала нажми на "Экспорт" и в сохранном файле в поле Close (там будет их штук 5) ставишь значение "0". После того, как всё исправишь, сохраняешь изменения, нажимаешь кнопку "Импорт" и загружаешь твой измененный файл.

 
Konstantin Afanasyev #:

Если еще актуально, то рассказываю, как я обошел эту проблему:

В сессии, где у тебя написано (на скрине) 09:45, я изменил на 00:00. Как я это сделал?

В тестере стратегий при нажатии на символ, где ты открывается окно (что у тебя на скрине). Внизу есть кнопки "По умолчанию", "Импорт" и "Экспорт". Сначала нажми на "Экспорт" и в сохранном файле в поле Close (там будет их штук 5) ставишь значение "0". После того, как всё исправишь, сохраняешь изменения, нажимаешь кнопку "Импорт" и загружаешь твой измененный файл.

Это не выход с ситуации.

 
Vitaly Muzichenko #:

Это не выход с ситуации.

На данный момент я использую такой вариант в своих советниках:

bool SessionOn()
{
   MqlDateTime current_day;
   datetime now = TimeTradeServer();
   datetime today = StringToTime(TimeToString(now, TIME_DATE));
   datetime from, to;

   TimeToStruct(now, current_day);
   SymbolInfoSessionTrade(_Symbol, (ENUM_DAY_OF_WEEK) current_day.day_of_week, 0, from, to);
   from += today;
   to += today;

   return (now >= from) && (now <= to);
}

Если сейчас время торговой сессии (т.е. можно торговать), то он вернет true. Я вызываю её в OnTick.

Для закрытии ордера в конце сессии, то я использую следующий параметр:

request.type_time = ORDER_TIME_DAY;

Где request - класс MqlTradeRequest.

При использовании этого кода у меня не возникает такая ошибка.

 
Konstantin Afanasyev #:

На данный момент я использую такой вариант в своих советниках:

Если сейчас время торговой сессии (т.е. можно торговать), то он вернет true. Я вызываю её в OnTick.

Для закрытии ордера в конце сессии, то я использую следующий параметр:

Где request - класс MqlTradeRequest.

При использовании этого кода у меня не возникает такая ошибка.

Тут есть пара тонких моментов.

1 - SymbolInfoSessionTrade() может неверно отражать реальность (у моего брокера так)

2 - StringToTime(TimeToString(now, TIME_DATE)) - весьма и весьма медленное преобразование, лучше делать так:

TimeTradeServer()/86400*86400  // целочисленное деление с отбрасыванием остатка, 86400 = 60*60*24 - к-во секунд в сутках
Причина обращения: