Чемпионат Automated Trading Championship 2010 стартовал! - страница 25

 
GODZILLA:

Интересная вещь получается! Прогнал своего чемпионатного эксперта в тестере стратегий за период чемпионата (2010.10.03 - 2010.10.14). Получилось пять сделок. На чемпионате - ни одной сделки! В чём причина такого ступора и каковы отличия работы работы эксперта в обоих случаях, если он находится на крупном таймфрейме и анализирует только закрытые бары?

перед обращением к д1 с н4 синхронизируете историю?
 
gdtt:
перед обращением к д1 с н4 синхронизируете историю?
У меня эксперт работает только на H4? что есть д1?
 
GODZILLA:
У меня эксперт работает только на H4? что есть д1?

вот воспроизвел ситуацию, когда идет обращение к данным таймфрейма, отличном от тех, на котором работает эксперт

int OnInit()
  {
   
   timebarm5 = TimeCurrent();
   prev = 0;
   return(0);
  }


datetime timebarm5;
datetime prev;
void OnTick()
  {
  
  datetime m1[1];
  int n = CopyTime( Symbol(), PERIOD_CURRENT, 0, 1, m1 );
  if( n <= 0 ){Print("Ошибка получения данных с м1"); return; }
  if( m1[0] != prev ){
    prev = m1[0];
    Print("Бар м1 =", m1[0]);
  }
  if( m1[0] - timebarm5 > 60*5 ){
    double closem5[1];
    int n2 = CopyClose( Symbol(), PERIOD_M5, 1, 1, closem5 );
    Print("n2=", n2, " Новый бар м5, close[1]=", closem5[0]);
    timebarm5 = m1[0];
  }
}
//+------------------------------------------------------------------+

здесь м1-м5

На м1 определили, что появился новый бар м5. без синхронизации обращаемся к данным на м5, пытаемся получить значение close[1]( предпоследнего бара), а возвращается значение бара close[2]

на картинке пообводил значения и бар, стрелка, указывала на обведенный бар, но при prinscreen она гаснет

 

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
gdtt:

вот воспроизвел ситуацию, когда идет обращение к данным таймфрейма, отличном от тех, на котором работает эксперт

здесь м1-м5

На м1 определили, что появился новый бар м5. без синхронизации обращаемся к данным на м5, пытаемся получить значение close[1]( предпоследнего бара), а возвращается значение бара close[2]

на картинке пообводил значения и бар, стрелка, указывала на обведенный бар, но при prinscreen она гаснет

 

 

 

Да такая рассинхронизация моему эксперту, как слону укус комара! Хотя, сам факт, конечно, интересный!
 
GODZILLA:
Да такая рассинхронизация моему эксперту, как слону укус комара! Хотя, сам факт, конечно, интересный!

да, если будет повторное обращение к CopyClose( Symbol(), PERIOD_M5, 1, 1, closem5 )

а если, как это модно стало по функции isnewbar?

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

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
gdtt:

да, если будет повторное обращение к CopyClose( Symbol(), PERIOD_M5, 1, 1, closem5 )

а если, как это модно стало по функции isnewbar?

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

Чего-то я не допонимаю! Проверяем время появления текущего бара на H4 по времени его возникновения

datetime NewTime = SeriesInfoInteger(symbol, timeframe, SERIES_LASTBAR_DATE);

 Сравниваем его с предыдущим значением

if (NewTime != LastTime_)
{


}

И, имея неравенство, то есть приход нового бара, после получения значения ценовой таймсерии на первом баре на самом деле имеем это значение со второго бара? Но даже если бы оно так было бы, эксперт с задержкой, но всё-равно бы сделки открывал!

 
GODZILLA:

Интересная вещь получается! Прогнал своего чемпионатного эксперта в тестере стратегий за период чемпионата (2010.10.03 - 2010.10.14). Получилось пять сделок. На чемпионате - ни одной сделки! В чём причина такого ступора и каковы отличия работы работы эксперта в обоих случаях, если он находится на крупном таймфрейме и анализирует только закрытые бары?

я невнимательно прочитал пост, понял что советник стоит на h4, а сигналы берет по закрытым барам на d1, поэтому и талдычу про старший таймфрейм, у Вас получается что все на одном происходит. а кастомные индикаторы есть? с ними тоже есть нюансы.
 
gdtt:
я невнимательно прочитал пост, понял что советник стоит на h4, а сигналы берет по закрытым барам на d1, поэтому и талдычу про старший таймфрейм, у Вас получается что все на одном происходит. а кастомные индикаторы есть? с ними тоже есть нюансы.
ОК! Я такой архаизм, как идикаторы в эксперте не употребляю вааще! Все расчёты внутри эксперта!
 
GODZILLA:

Интересная вещь получается! Прогнал своего чемпионатного эксперта в тестере стратегий за период чемпионата (2010.10.03 - 2010.10.14). Получилось пять сделок. На чемпионате - ни одной сделки! В чём причина такого ступора и каковы отличия работы работы эксперта в обоих случаях, если он находится на крупном таймфрейме и анализирует только закрытые бары?

На чемпионате синхронизация данни не как на тестере....  

https://www.mql5.com/ru/forum/2236/page18

Можно проблем здесь... 

Чемпионат Automated Trading Championship 2010 стартовал!
Чемпионат Automated Trading Championship 2010 стартовал!
  • www.mql5.com
Чемпионат Automated Trading Championship 2010 стартовал!
 
Manov:

На чемпионате синхронизация данни не как на тестере....  

https://www.mql5.com/ru/forum/2236/page18

Можно проблем здесь... 

Да нет! Ну нет данных, ещё раз их запросил... с пятого запроса получил и поехал, а тут молчит и усё!!

 

Для экспертов и пользовательских индикаторов лучше использовать событийную модель обработки. Если при обработке события OnTick() или OnCalculate() не удалось получить все необходимые данные требуемой таймсерии, то следует выйти из обработчика события, рассчитывая на появление доступа к данным при следующем вызове обработчика.