Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 622

 
Как в MT4 увеличить количество баров в тестере перед инициализацией индикатора? Индикатор должен произвести расчет на истории - нужно проверить корректность именно в тестере.
 
Ещё вопрос, как сделать проверку целостности истории при инициализации в MT4? Есть подозрение, что в момент инициализации происходит подкачка истории, что влияет на предварительный расчет...
 
-Aleks-:
Ещё вопрос, как сделать проверку целостности истории при инициализации в MT4? Есть подозрение, что в момент инициализации происходит подкачка истории, что влияет на предварительный расчет...
Проверьте количество баров rates_total. Если rates_total > prev_calculated+1 - значит подкачалось более 1 бара и следовательно произошла подгрузка истории.
 
Alexey Kozitsyn:
Проверьте количество баров rates_total. Если rates_total > prev_calculated+1 - значит подкачалось более 1 бара и следовательно произошла подгрузка истории.
А частоту проверки делать раз в секунду, и после длительной паузы продолжать инициализацию, верно?
 
-Aleks-:
А частоту проверки делать раз в секунду, и после длительной паузы продолжать инициализацию, верно?

Вообще, как мне недавно сказали в СД, в индикаторах лучше обходиться без таймера.

Достаточно добавить условие: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) как условие первого запуска и полного пересчета индикатора. Если сделаете это в OnCalculate() ничего страшного не будет. 

 
И про какую "длительную паузу" Вы говорите?
 
Alexey Kozitsyn:

Вообще, как мне недавно сказали в СД, в индикаторах лучше обходиться без таймера.

Достаточно добавить условие: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) как условие первого запуска и полного пересчета индикатора. Если сделаете это в OnCalculate() ничего страшного не будет. 

Ну, мне надо что б в советнике корретно рассчитался класс типа индикатора.

Поэтому я что то туплю, если разрешено 10000 баров на чарт и они есть, то Bars  больше 10000 не будет возвращать даже если будут появляться новые бары. Тогда как мне узнать появление нового бара при подгрузки истории? 

 
И видимо проверку надо делать не при инициализации, так как советник инициализируется при загрузке терминала до коннекта с ДЦ....
 
-Aleks-:

Ну, мне надо что б в советнике корретно рассчитался класс типа индикатора.

Поэтому я что то туплю, если разрешено 10000 баров на чарт и они есть, то Bars  больше 10000 не будет возвращать даже если будут появляться новые бары. Тогда как мне узнать появление нового бара при подгрузки истории? 

Почему не будет? Будет. И Bars() и rates_total будут увеличиваться. Проверяйте количество в OnCalculate().

Количество баров, установленное в терминале не повлияло на количество баров в тестере (чуть меньше 100000).

 
Alexey Kozitsyn:

Почему не будет? Будет. И Bars() и rates_total будут увеличиваться. Проверяйте количество в OnCalculate().

Количество баров, установленное в терминале не повлияло на количество баров в тестере (чуть меньше 100000).

Нет нет,мне нужно это не в тестере а при реальном запуске терминала на чарте - там же это сработает только если в истории меньше максимального количества баров, или я не прав?