Для поиска обяснений непонятной мне работы тестера по контрольным точкам набросал следующий код:
/////////////// void start() // { if(NewBar1(15))Print("NewBar1() = ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); if(NewBar2())Print("NewBar2() = ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); return; } ////////////////////////// bool NewBar1(int tf) // {//////////////////////// static int BarTime=0; int time0=iTime(NULL,tf,0); if(BarTime!=time0) { BarTime=time0; return(true); } else return(false); } ////////////////// bool NewBar2() // {/////////////// static int BarTime=0; int time0=Time[0]; if(BarTime!=time0) { BarTime=time0; return(true); } else return(false); } /////////////////////////
И при запуске на разных валютах проскакивают следующие лаги:
2008.10.27 15:08:16 2006.01.02 02:45 TEST_NewBar() USDCHF,M15: NewBar2() = 2006.01.02 02:45:00
2008.10.27 15:08:16 2006.01.02 02:45 TEST_NewBar() USDCHF,M15: NewBar1() = 2006.01.02 02:45:00
2008.10.27 15:08:16 2006.01.02 02:29 TEST_NewBar() USDCHF,M15: NewBar2() = 2006.01.02 02:29:59
2008.10.27 15:08:16 2006.01.02 02:29 TEST_NewBar() USDCHF,M15: NewBar1() = 2006.01.02 02:29:59
2008.10.27 15:08:16 2006.01.02 02:00 TEST_NewBar() USDCHF,M15: NewBar2() = 2006.01.02 02:00:00
2008.10.27 15:08:16 2006.01.02 02:00 TEST_NewBar() USDCHF,M15: NewBar1() = 2006.01.02 02:00:00
2008.10.27 15:08:16 2006.01.02 01:59 TEST_NewBar() USDCHF,M15: NewBar2() = 2006.01.02 01:59:59
2008.10.27 15:08:16 2006.01.02 01:59 TEST_NewBar() USDCHF,M15: NewBar1() = 2006.01.02 01:59:59
2008.10.27 15:08:16 2006.01.02 01:30 TEST_NewBar() USDCHF,M15: NewBar2() = 2006.01.02 01:30:00
2008.10.27 15:08:16 2006.01.02 01:30 TEST_NewBar() USDCHF,M15: NewBar1() = 2006.01.02 01:30:00
2008.10.27 15:12:08 2006.01.02 01:00 TEST_NewBar() GBPUSD,M15: NewBar2() = 2006.01.02 01:00:00
2008.10.27 15:12:08 2006.01.02 01:00 TEST_NewBar() GBPUSD,M15: NewBar1() = 2006.01.02 01:00:00
2008.10.27 15:12:08 2006.01.02 00:59 TEST_NewBar() GBPUSD,M15: NewBar2() = 2006.01.02 00:59:59
2008.10.27 15:12:08 2006.01.02 00:59 TEST_NewBar() GBPUSD,M15: NewBar1() = 2006.01.02 00:59:59
2008.10.27 15:12:08 2006.01.02 00:30 TEST_NewBar() GBPUSD,M15: NewBar2() = 2006.01.02 00:30:00
2008.10.27 15:12:08 2006.01.02 00:30 TEST_NewBar() GBPUSD,M15: NewBar1() = 2006.01.02 00:30:00
2008.10.27 15:12:08 2006.01.02 00:14 TEST_NewBar() GBPUSD,M15: NewBar2() = 2006.01.02 00:14:59
2008.10.27 15:12:08 2006.01.02 00:14 TEST_NewBar() GBPUSD,M15: NewBar1() = 2006.01.02 00:14:59
2008.10.27 15:12:57 2006.01.02 00:30 TEST_NewBar() USDJPY,M15: NewBar2() = 2006.01.02 00:30:00
2008.10.27 15:12:57 2006.01.02 00:30 TEST_NewBar() USDJPY,M15: NewBar1() = 2006.01.02 00:30:00
2008.10.27 15:12:57 2006.01.02 00:29 TEST_NewBar() USDJPY,M15: NewBar2() = 2006.01.02 00:29:59
2008.10.27 15:12:57 2006.01.02 00:29 TEST_NewBar() USDJPY,M15: NewBar1() = 2006.01.02 00:29:59
2008.10.27 15:12:48 2006.01.02 00:00 TEST_NewBar() USDJPY,M15: NewBar2() = 2006.01.02 00:00:00
2008.10.27 15:12:48 2006.01.02 00:00 TEST_NewBar() USDJPY,M15: NewBar1() = 2006.01.02 00:00:00
Как такое может быть?
С моделированием, по-моему, что-то не так? Или я чего-то не понимаю?
Хотелось бы услышать мнение разработчиков.
Режим тестирования по контрольным точкам изначально планировался для грубой оценки торговых стратегий. Это некий компромис между режимом тестирования по всем тикам (самый медленный и в то же время самый точный режим тестирования) и режимом тестирования по ценам открытия (самый быстрый, но самый грубый режим). Поэтому в данном случае непонятно желание при тестировании по контрольным точкам(не гарантирующем точное моделирование цены) получать точные значения с более младших таймфреймов.
Это чисто мое замечание, возможно, Слава, что-то добавит.
Может просто в минутках нет точно соответствующего бара? Ночное время таки...
Режим тестирования по контрольным точкам изначально планировался для грубой оценки торговых стратегий. Это некий компромис между режимом тестирования по всем тикам (самый медленный и в то же время самый точный режим тестирования) и режимом тестирования по ценам открытия (самый быстрый, но самый грубый режим). Поэтому в данном случае непонятно желание при тестировании по контрольным точкам(не гарантирующем точное моделирование цены) получать точные значения с более младших таймфреймов.
Это чисто мое замечание, возможно, Слава, что-то добавит.
Последний тест проводился на 15 минутном графике(в листинге видно) с поиском момента появления нового бара. Но новый 15-й бар никак не должен начинаться в 29:59 или 14:59.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Обнаружилась, на мой взгляд, некорректная работа функции iTime при тестировании в режиме по контрольным точкам.
На скрине видно, что iTime берет время с минутного таймфрейма не корректно, когда в то же время этот же тик с других таймфреймов считывается правильно.
Причем, это происходит два тика подряд и выдаёт правильное значение аж только на третем тике. Это видно из записи журнала:
2008.10.26 02:15:43 2006.01.02 04:14 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:15:43 2006.01.02 04:14 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:15:43 2006.01.02 04:14 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:10:00
2008.10.26 02:15:43 2006.01.02 04:14 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:14:00
2008.10.26 02:15:42 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:15:42 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:15:42 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:15:42 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:10:00
2008.10.26 02:15:42 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 03:58:00
2008.10.26 02:08:25 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:08:25 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:08:25 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:00:00
2008.10.26 02:08:25 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 04:10:00
2008.10.26 02:08:25 2006.01.02 04:10 TEST_Tick_Time GBPUSD,M5: 2006.01.02 03:58:00
Возможно, это звенья одной и той же нехорошей цепочки, с которой обещали разобраться в другой ветке 'Разработчикам. Ошибка работы тестера или действительно результаты тестирования по контрольным точкам нельзя воспринимать серьезно!'