Правильная реакция тестера. RefreshRates() возвращает true, при смене цены, то есть при приходе нового тика.
Возвращает true, если данные обновлены, иначе false.
while(RefreshRates() == false)
Ловите бесконечный цикл в тестере.
Когда true, по коду управление должно переходит оператору for. После for управление вновь последовательно переходит к while для которого уже истина false ...Не могу понять, что мешает тестеру.Полагаю особенности работы тестера.
Как же быть? Как анализировать историю? Пожалуйста, подскажите.
Когда true, по коду управление должно переходит оператору for. После for управление вновь последовательно переходит к while для которого уже истина false ...Не могу понять, что мешает тестеру.Полагаю особенности работы тестера.
Как же быть? Как анализировать историю? Пожалуйста, подскажите.
for (int i=1; i<=5; i++) { /* bla-bla-bla */ //---- обновим ценовые данные RefreshRates(); }
Довольно ясно все показано в примере RefreshRates
Просмто в конце цикла, если есть новые данные обновите их и все. Нету работайте со старыми.
Если потянуть на текущей график, запускается.Но на тестере стратегий( для анализа участков истории) не запускается.
не используйте в тестере стратегий, там все равно всегда актуальные данные котировок,
bool refreshrates(int count=10) { if(IsTesting()||IsOptimization())return(true); for(int i=0;i<count;i++) if(RefreshRates()) return(true); Print("Не удалось обновить RefreshRates()"); return(false); }
замените в своем коде вызовы RefreshRates() на мою refreshrates() и все будет корректно работать
PS: паузу бы поставить, смысла нет обновлять 10 раз за хх мсек, я бы хоть 300-500 паузу использовал, но тут дело вкуса
///
Как же быть? Как анализировать историю? Пожалуйста, подскажите.
Какую историю? Тики или бары?
Какую историю? Тики или бары?
Количество итераций между тиками на конкретных участках истории т.е. историю тиков.
не используйте в тестере стратегий, там все равно всегда актуальные данные котировок,
замените в своем коде вызовы RefreshRates() на мою refreshrates() и все будет корректно работать
PS: паузу бы поставить, смысла нет обновлять 10 раз за хх мсек, я бы хоть 300-500 паузу использовал, но тут дело вкуса
Довольно ясно все показано в примере RefreshRates
Просмто в конце цикла, если есть новые данные обновите их и все. Нету работайте со старыми.
Количество итераций между тиками на конкретных участках истории т.е. историю тиков.
Вот таким образом в цикле вообще не стоит ждать. Каждый новый тик запускает функцию OnTick() - собирайте тики в массив.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Простой код для подсчета количества итераций между тиками.
Если потянуть на текущей график, запускается.Но на тестере стратегий( для анализа участков истории) не запускается.Ошибку не выдает, просто график замирает на первом тике.
Без анализа на истории не представляется возможным написание задуманного кода.Пожалуйста, в чем ошибка? Как исправить код для запуска на тестере стратегий.