Тестер не может начинать работу, имея ноль баров за спиной. Иначе показания большинства индикаторов не смогут быть правильно расчитаны. При инициализации (в init()) Bars как раз и показывает сколько баров в запасе имеется на начало тестирования (на вашем рисунке это 1002 часовых бара на 01 января 2000 года) . Почитайте статьи из раздела Тестер, это в любом случае будет полезно.
А почему именно 1002 бара в запасе на начало 2000 года ? Их должно быть больше. История доступна с 01 января 1999 года. А это больше чем 1002 часовых бара.
Только что запустил с 01 января 2004 года. Получил Bars=1001. Вы считаете это нормально ?
Выпущены новый клиентский терминал MetaTrader 4 build 211 и MetaTrader 4 MultiTerminal build 210.
Список изменений клиентского терминала MetaTrader 4 build 211:
1. MQL4: Исправлена работа функции FileWriteString(). Теперь она работает
в точном соответствии с документацией: «Если записываемая строка
короче, чем указанное значение длины строки, то строка будет
добавлена двоичными 0 до указанной длины.»
2. MQL4: Исправлена ошибка передачи строковых параметров в импортируемые
функции
3. MQL4: Исправлена ошибка освобождения историй чужих инструментов
или таймфреймов после выгрузки эксперта. Теперь терминал освобождает
использованную память через минуту после выгрузки эксперта.
4. MQL4: Исправлена функция MarketInfo() с параметром MODE_TICKVALUE. Теперь
возвращаемое значение не нормализуется.
5. MQL4: Исправлена ошибка формирования переменной last_error при обращении
к существующей глобальной переменной при помощи функции GlobalVariableSetOnCondition().
6. Tester: Исправлена ошибка пересчёта при оптимизации при переходе
на данные другого торгового сервера. Теперь при изменении источника
данных данные будут пересчитаны.
7. Tester: Исправлено отображение графика оптимизации по профит-фактору.
8. Tester: Изменён алгоритм предоставления данных, предшествующих
дате начала тестирования. Теперь добавляются 1000 баров при запросе
любых исторических данных.
9. Tester: Улучшен алгоритм моделирования данных. Более точное моделирование
тиков для баров с объемом 4–6. Исправлена ошибка появления неверного
тика в начале генерирующей последовательности при использовании
ограничивающих дат.
В новом мультитерминале MetaTrader 4 MultiTerminal build 210 исправлена ошибка
отсутствия символов в списке при выставлении сигналов.
Я считаю нормальным сначала изучить предмет, а потом задавать вопросы по существу. Изменения в MT4 публикуются в разделе Новости:
Выпущены новый клиентский терминал MetaTrader 4 build 211 и MetaTrader 4 MultiTerminal build 210.
8. Tester: Изменён алгоритм предоставления данных, предшествующих
дате начала тестирования. Теперь добавляются 1000 баров при запросе
любых исторических данных.
Таким образом, в свежих версиях MetaTrader, я никак не могу получить доступ к истории в тестере более чем 1000 баров на момент начала тестирования ?
Таким образом, в свежих версиях MetaTrader, я никак не могу получить доступ к истории в тестере более чем 1000 баров на момент начала тестирования ?
А вот касаемо необхоимости получать значения индикатора в глубь на более чем 1000 баров интересно было бы послушать. Не всегда встретишь такого практика, все больше теоретики попадаются :)
Таким образом, в свежих версиях MetaTrader, я никак не могу получить доступ к истории в тестере более чем 1000 баров на момент начала тестирования ?
А вот касаемо необхоимости получать значения индикатора в глубь на более чем 1000 баров интересно было бы послушать. Не всегда встретишь такого практика, все больше теоретики попадаются :)
По тестеру : Это решение половинчатое. Двигаясь по этому пути надо писать свой тестер.
Интересно - победитель прошлого чемпионата практик или теоретик ? Он использовал MACD c периодом 5000 ...
По Вашей классификации выходит теоретик. Практики в 3 бара истории укладываются.
Не забудьте в deinit поставить вывод количество баров.
А в вашей программе и с этим проблемы ?
Не забудьте в deinit поставить вывод количество баров.
А в вашей программе и с этим проблемы ?
понятно, что Вы имеете малый опыт работы с экспертами, но это не позволяет Вам в таком тоне делать заявления.
Рашид Вам явно и точно указал на решение проблемы:
- прочитать статьи в разделе "тестер"
- читать новости (1000 баров добавляются к началу указанного периода)
- не ставить ограничения по периодам, если хотите тестироваться на всей истории
Для общего развития - тестирование начинается с начала графика (100 бар, если с начала истории или с указанного времени с наличием предыдущих 1000 баров). А это означает, что переменная Bars принимает увеличивающиеся значения в виде:
Bars = начало_истории; Инициализация_эксперта(Bars); // тут или Bars = ~100 или Bars = ~1000 while( Bars < конец_истории ) { for(....) // моделирование развития бара { ... Запуск_функции_start_эксперта(Bars); } //--- переходим к следующему бару Bars++; } Деинициализация_эксперта(Bars);
По Вашему коду явно видно, что Вы замеряете количество баров на инициализации эксперта и закономерно получаете величину в 1002 бара. Все абсолютно точно и ошибок никаких нет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
При запуске тестера стратегий значения переменной Bars упорно принимают странные значения, как то :
1001, иногда 1002, а порой и 101, что не имеет ничего общего с действительностью.
Вот код эксперта :
Вот результаты прогона :
И, наконец, логфайл :
2007.12.28 10:40:23 2000.01.03 00:00 TestBars EURUSD,H1: Bars= 1002
2007.12.28 10:40:23 TestBars started for testing
2007.12.28 10:40:21 TestBars EURUSD,H1: loaded successfully
Как видим в отчете тестера показано 44696 баров, а значение переменной Bars в данном прогоне равно 1002. Cкрипт, запущеный на соответствующем графике, дает значение Bars = 55975.
Данная "особенность" наблюдается на двух компьютерах. Это баг, фича или faq ?