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

[Удален]  
-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).

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

И в реальном времени при работе индикатора rates_total и Bars() будут увеличиваться. В OnInit() вы не сможете получить rates_total, т.к. параметр в функцию не передается. Проверку истории нужно в любом случае проводить в OnCalculate().

 
Доброго всем времени суток! Прошу помощи в поиске советника. Нужен бокс (коробка) с выставлением времени сессии, разбивкой на три ордера в каждую сторону, функциями трэйлинга и стоп лосс. Я уже просто утонул в поисках на просторах. Я почти на краю пропасти, ещё чуть-чуть и я начну изучать язык и эдитор, чтобы самому написать!!! ПОМОГИТЕ!!!