проилюстрируйте как-то, о чём говорите... покажите журнал
Если во время тестирования использовать индикатор, который обращается к Bid, Ask, iTime(), то этот индикатор будет получать последние значения, пришедшие с сервера, а не по рынке в момент тестирования.
Обнаруживается такая ошибка легко.
1. Создаёте индикатор.
2. Открываете тестер с любым советником. Не важно используется ли этот индикатор из советника, либо присоединён к графику тестирования вручную, данные Bid, Ask и по PERIOD_M5 будет некорректные (а вот по PERIOD_M1 правильные).
Интересно, что думают господа разработчики?
Кто и как обходит эти проблемы?
Есть ещё несостыковки по данным в режиме тестирования? (что-то подсказывает, что есть).
Что-то Вы здесь намудрили, батенька. Подобный баг и до Вас давно бы бросился в глаза, но, никто не замечает....
Решил проверить в тестовом эксперте, только немного изменил, чтобы Bid и Ask корректно отображались:
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { Print("Время индикатора PERIOD_M1: ", TimeToStr(iTime(NULL, PERIOD_M1, 0))); Print("Время индикатора PERIOD_M5: ", TimeToStr(iTime(NULL, PERIOD_M5, 0))); Print("Цены Bid: ", DoubleToStr(Bid,Digits), " Ask: ", DoubleToStr(Ask,Digits)); return(0); }
И что мы видим в журнале ?:
2009.07.06 00:10:52 2008.07.03 23:46 Test GBPUSD,H1: Время индикатора PERIOD_M1: 2008.07.03 23:46 2009.07.06 00:10:52 2008.07.03 23:46 Test GBPUSD,H1: Цены Bid: 1.98290 Ask: 1.98318 2009.07.06 00:10:52 2008.07.03 23:46 Test GBPUSD,H1: Время индикатора PERIOD_M5: 2008.07.03 23:45 2009.07.06 00:10:52 2008.07.03 23:46 Test GBPUSD,H1: Время индикатора PERIOD_M1: 2008.07.03 23:46 2009.07.06 00:10:52 2008.07.03 23:45 Test GBPUSD,H1: Цены Bid: 1.98280 Ask: 1.98308 2009.07.06 00:10:52 2008.07.03 23:45 Test GBPUSD,H1: Время индикатора PERIOD_M5: 2008.07.03 23:45 2009.07.06 00:10:52 2008.07.03 23:45 Test GBPUSD,H1: Время индикатора PERIOD_M1: 2008.07.03 23:45 2009.07.06 00:10:52 2008.07.03 23:44 Test GBPUSD,H1: Цены Bid: 1.98270 Ask: 1.98298 2009.07.06 00:10:52 2008.07.03 23:44 Test GBPUSD,H1: Время индикатора PERIOD_M5: 2008.07.03 23:40 2009.07.06 00:10:52 2008.07.03 23:44 Test GBPUSD,H1: Время индикатора PERIOD_M1: 2008.07.03 23:44 2009.07.06 00:10:52 2008.07.03 23:42 Test GBPUSD,H1: Цены Bid: 1.98280 Ask: 1.98308 2009.07.06 00:10:52 2008.07.03 23:42 Test GBPUSD,H1: Время индикатора PERIOD_M5: 2008.07.03 23:40 2009.07.06 00:10:52 2008.07.03 23:42 Test GBPUSD,H1: Время индикатора PERIOD_M1: 2008.07.03 23:42
Время на М1 меняется через минуту, на М5 синхронно через пять минут, Bid, Ask соответствуют 2008 году, а не последним котировкам сервера ( 1,63312).
То, что приаттаченный вручную индикатор в режиме визуального тестирования не совпадает с встроенным в советник, известно давно, но из советника мы всегда получаем правильные на данный момент значения.
Вот спрэд соответствует текущему с сервера, ну это и так известно ( в 5-ке обещают историю спрэдов).
Что касается нестыковок по данным в режиме тестирования на разных таймфреймах, то да, они были, и в своё время много копий на этом поломали, но, кажется, всё это уже устранено.
Что-то Вы здесь намудрили, батенька. Подобный баг и до Вас давно бы бросился в глаза, но, никто не замечает....
Решил проверить в тестовом эксперте, только немного изменил, чтобы Bid и Ask корректно отображались:
Читаем внимательно... "Если во время тестирования использовать индикатор, который обращается к Bid, Ask, iTime()...". Советник работает как надо, а вот индикатор, который он использует работает неверно. Вставьте свой код в новый индикатор и посмотрите, что он выдаёт в режиме тестирования.
Пожалуйста...
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:23
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:22
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:21
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:20
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:19
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:18
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:17
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:16
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:15
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:14
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:13
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:12
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:11
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:10
2009.07.05 17:55:37 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:37 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:09
2009.07.05 17:55:35 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:35 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:35 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:08
2009.07.05 17:55:35 test_ind EURUSD,M1: Цены Bid и Ask: 1.3981.3982
2009.07.05 17:55:35 test_ind EURUSD,M1: Время индикатора PERIOD_M5: 2009.07.03 22:55
2009.07.05 17:55:35 test_ind EURUSD,M1: Время индикатора PERIOD_M1: 2009.06.01 00:08
2009.07.05 17:55:35 test_ind EURUSD,M1: initialized
2009.07.05 17:55:33 test_ind EURUSD,M1: loaded successfully
2009.07.05 17:55:04 Compiling 'test_ind'
Если во время тестирования использовать индикатор, который обращается к Bid, Ask, iTime(), то этот индикатор будет получать последние значения, пришедшие с сервера, а не по рынке в момент тестирования.
Под "тестированием" вы имеете в виду процесс использования советником данных индикатора через iCustom или присоединение индикатора к графику в режиме визуализации?
Если 1-ое - то Valmars наглядно продемонстрировал, что все там нормально и никаких багов.
Если 2-ое - то это старая песня, о которой Valmars тоже упомянул. В режиме визуализации индикатору доступно только существующее рыночное окружение. Никаких Bid и Ask там использовать нельзя. Да и такой стиль в индиткаторе - некрасиво. На то он и индикатор, чтобы использовать массивы-таймсерии, а не Bid и Ask напрямую.
Под "тестированием" вы имеете в виду процесс использования советником данных индикатора через iCustom или присоединение индикатора к графику в режиме визуализации?
Если 1-ое - то Valmars наглядно продемонстрировал, что все там нормально и никаких багов.
Проверил ещё раз. Если индикатор присоединяется через iCustom (первое), то всё здорово. Если вручную цепляется на график, то "вылетают" неправильные цены
Если 2-ое - то это старая песня, о которой Valmars тоже упомянул. В режиме визуализации индикатору доступно только существующее рыночное окружение. Никаких Bid и Ask там использовать нельзя. Да и такой стиль в индиткаторе - некрасиво. На то он и индикатор, чтобы использовать массивы-таймсерии, а не Bid и Ask напрямую.
Вот это как-то странно. Индикатор должен работать в каком-то одном окружении: либо тестера, либо реальных данных. Смешение только путает: оно нигде не описано и легко попасть впросак.
Более того, может с Bid и Ask чёрт с ними, но почему так работает iTime() при присоединении? Для PERIOD_M1 всё классно, а вот PERIOD_MXXX уже неправильные данные. Как Вы считаете?
Проверил ещё раз. Если индикатор присоединяется через iCustom (первое), то всё здорово. Если вручную цепляется на график, то "вылетают" неправильные цены
Вот это как-то странно. Индикатор должен работать в каком-то одном окружении: либо тестера, либо реальных данных. Смешение только путает: оно нигде не описано и легко попасть впросак.
Более того, может с Bid и Ask чёрт с ними, но почему так работает iTime() при присоединении? Для PERIOD_M1 всё классно, а вот PERIOD_MXXX уже неправильные данные. Как Вы считаете?
Собственно, тестер и создан для максимально быстрого тестирования советников и в нём расчитываются и моделируются только данные, необходимые для работы советника. Ничего тут странного нет. Мало ли чего Вы навешаете на график, работа советника от этого не зависит.
Собственно, тестер и создан для максимально быстрого тестирования советников и в нём расчитываются и моделируются только данные, необходимые для работы советника. Ничего тут странного нет. Мало ли чего Вы навешаете на график, работа советника от этого не зависит.
Программа должна работать правильно, а потом уже быстро. Какой смысл в программе, которая быстро и неправильно решает поставленную задачу. Окружение - переменные и серии - должны полностью принадлежать либо к тестеру, либо к реальным данным. На худой конец, это надо описать, потому что это не тривиально и быстрее набъёшь шишки, чем догадаешься, что вот такое положение дел.
Всем спасибо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Если во время тестирования использовать индикатор, который обращается к Bid, Ask, iTime(), то этот индикатор будет получать последние значения, пришедшие с сервера, а не по рынке в момент тестирования.
Обнаруживается такая ошибка легко.
1. Создаёте индикатор.
2. Открываете тестер с любым советником. Не важно используется ли этот индикатор из советника, либо присоединён к графику тестирования вручную, данные Bid, Ask и по PERIOD_M5 будет некорректные (а вот по PERIOD_M1 правильные).
Интересно, что думают господа разработчики?
Кто и как обходит эти проблемы?
Есть ещё несостыковки по данным в режиме тестирования? (что-то подсказывает, что есть).