Почему бы разработчикам не пойти по другому пути - чтонить типа
вирутального сервера в виде отдельной программы с возможностью
изменения скорости подачи котировок. Все проблемы решаются
- и портфельные и визуализация и ручная тренировка.
ArtemRG:
Тестировал с визуализацией советника на H1. Поставил на график индикатор, который обращается к периоду D1. Оказалось, что из массива iHigh(NULL, PERIOD_D1, 0) поступает не иммитируемая история, а текущая реальная.
Пример индикатора (на IE7 непонятно, как вставить код корректно)
#property indicator_chart_window
int start()
{
Comment ("D1 high=", iHigh(NULL, PERIOD_D1,0)," low=", iLow(NULL, PERIOD_D1, 0)," close=",iClose(NULL, PERIOD_D1,0)," ATR=", iATR(NULL, PERIOD_D1, 10, 0));
return(0);
}
Вообще давно заметил, что если советник при тестировании обращается к другому периоду, то возникают проблемы со стабильностью результатов его тестирования на разных машинах.
Когда дадите доступ к историческим данным, то, пожалуйста, добавьте скрипт, который бы проверял целостность этих данных. Желательно, чтобы охватывались все периоды. Такой скрипт даст уверенность в качестве истории при смене машины или переинсталяции программы.
Дело в том, что в индикаторах при Визуальном Тестировании не работает функция эмуляции текущего времени.Тестировал с визуализацией советника на H1. Поставил на график индикатор, который обращается к периоду D1. Оказалось, что из массива iHigh(NULL, PERIOD_D1, 0) поступает не иммитируемая история, а текущая реальная.
Пример индикатора (на IE7 непонятно, как вставить код корректно)
#property indicator_chart_window
int start()
{
Comment ("D1 high=", iHigh(NULL, PERIOD_D1,0)," low=", iLow(NULL, PERIOD_D1, 0)," close=",iClose(NULL, PERIOD_D1,0)," ATR=", iATR(NULL, PERIOD_D1, 10, 0));
return(0);
}
Вообще давно заметил, что если советник при тестировании обращается к другому периоду, то возникают проблемы со стабильностью результатов его тестирования на разных машинах.
Когда дадите доступ к историческим данным, то, пожалуйста, добавьте скрипт, который бы проверял целостность этих данных. Желательно, чтобы охватывались все периоды. Такой скрипт даст уверенность в качестве истории при смене машины или переинсталяции программы.
Т.е. если индикатор использует текущее время например, как у вас iHigh(NULL, PERIOD_D1,0) данные будут вычисляться с 0-ого барра т.е. с сегодняшнего, а нужно вычислить номер бара на момент тестирования.
я это делаю так:
//+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- datetime _curtime=CurTime(); //--- datetime _cur_time=iTime(NULL,0,0); // Сами моделируем CurTime() //--- int _nbar_day=iBarShift(NULL,PERIOD_D1,_cur_time); // Вычислим номер бара большего ТФ datetime _time_day=iTime(NULL,PERIOD_D1,_nbar_day); // Найдем абсолютное время открытия дня int _nbar_cur_period=iBarShift(NULL,0,_time_day); // Вычислим номер бара текущего ТФ datetime _time_nbar_cur_period=iTime(NULL,0,_nbar_cur_period); //Проверка времени открытия бара //--- Comment( "_cur_time= ",TimeToStr(_cur_time,TIME_DATE|TIME_SECONDS),"\n", "_time_day= ",TimeToStr(_time_day,TIME_DATE|TIME_SECONDS),"\n", "_time_nbar_cur_period= ",TimeToStr(_time_nbar_cur_period,TIME_DATE|TIME_SECONDS),"\n", "_curtime= ",TimeToStr(_curtime,TIME_DATE|TIME_SECONDS),"\n", "_nbar_day= ",_nbar_day,"\n", "__nbar_cur_period= ",_nbar_cur_period ); //--- // Всё получилось, что хотел!!! //---- return(0); } //+------------------------------------------------------------------+
ArtemRG:
Тестировал с визуализацией советника на H1. Поставил на график индикатор, который обращается к периоду D1. Оказалось, что из массива iHigh(NULL, PERIOD_D1, 0) поступает не иммитируемая история, а текущая реальная.
Вообще давно заметил, что если советник при тестировании обращается к другому периоду, то возникают проблемы со стабильностью результатов его тестирования на разных машинах.
В советниках и скриптах - время при визуально тестировании правильно
эмулируется. Я не замечал ошибок.
Тестировал с визуализацией советника на H1. Поставил на график индикатор, который обращается к периоду D1. Оказалось, что из массива iHigh(NULL, PERIOD_D1, 0) поступает не иммитируемая история, а текущая реальная.
Вообще давно заметил, что если советник при тестировании обращается к другому периоду, то возникают проблемы со стабильностью результатов его тестирования на разных машинах.
Integer писал (а):
Почему бы разработчикам не пойти по другому пути - чтонить типа вирутального сервера в виде отдельной программы с возможностью изменения скорости подачи котировок. Все проблемы решаются - и портфельные и визуализация и ручная тренировка.
Почему бы разработчикам не пойти по другому пути - чтонить типа вирутального сервера в виде отдельной программы с возможностью изменения скорости подачи котировок. Все проблемы решаются - и портфельные и визуализация и ручная тренировка.
Идея отличная, осталось дождаться её реализации :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пример индикатора (на IE7 непонятно, как вставить код корректно)
#property indicator_chart_window
int start()
{
Comment ("D1 high=", iHigh(NULL, PERIOD_D1,0)," low=", iLow(NULL, PERIOD_D1, 0)," close=",iClose(NULL, PERIOD_D1,0)," ATR=", iATR(NULL, PERIOD_D1, 10, 0));
return(0);
}
Вообще давно заметил, что если советник при тестировании обращается к другому периоду, то возникают проблемы со стабильностью результатов его тестирования на разных машинах.
Когда дадите доступ к историческим данным, то, пожалуйста, добавьте скрипт, который бы проверял целостность этих данных. Желательно, чтобы охватывались все периоды. Такой скрипт даст уверенность в качестве истории при смене машины или переинсталяции программы.