-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() ничего страшного не будет.
Вообще, как мне недавно сказали в СД, в индикаторах лучше обходиться без таймера.
Достаточно добавить условие: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) как условие первого запуска и полного пересчета индикатора. Если сделаете это в OnCalculate() ничего страшного не будет.
Ну, мне надо что б в советнике корретно рассчитался класс типа индикатора.
Поэтому я что то туплю, если разрешено 10000 баров на чарт и они есть, то Bars больше 10000 не будет возвращать даже если будут появляться новые бары. Тогда как мне узнать появление нового бара при подгрузки истории?
Ну, мне надо что б в советнике корретно рассчитался класс типа индикатора.
Поэтому я что то туплю, если разрешено 10000 баров на чарт и они есть, то Bars больше 10000 не будет возвращать даже если будут появляться новые бары. Тогда как мне узнать появление нового бара при подгрузки истории?
Почему не будет? Будет. И Bars() и rates_total будут увеличиваться. Проверяйте количество в OnCalculate().
Количество баров, установленное в терминале не повлияло на количество баров в тестере (чуть меньше 100000).
Почему не будет? Будет. И Bars() и rates_total будут увеличиваться. Проверяйте количество в OnCalculate().
Количество баров, установленное в терминале не повлияло на количество баров в тестере (чуть меньше 100000).
Нет нет,мне нужно это не в тестере а при реальном запуске терминала на чарте - там же это сработает только если в истории меньше максимального количества баров, или я не прав?
-Aleks-: Нет нет,мне нужно это не в тестере а при реальном запуске терминала на чарте - там же это сработает только если в истории меньше максимального количества баров, или я не прав?
И в реальном времени при работе индикатора rates_total и Bars() будут увеличиваться. В OnInit() вы не сможете получить rates_total, т.к. параметр в функцию не передается. Проверку истории нужно в любом случае проводить в OnCalculate().
Доброго всем времени суток! Прошу помощи в поиске советника. Нужен бокс (коробка) с выставлением времени сессии, разбивкой на три ордера в каждую сторону, функциями трэйлинга и стоп лосс. Я уже просто утонул в поисках на просторах. Я почти на краю пропасти, ещё чуть-чуть и я начну изучать язык и эдитор, чтобы самому написать!!! ПОМОГИТЕ!!!
Ещё вопрос, как сделать проверку целостности истории при инициализации в MT4? Есть подозрение, что в момент инициализации происходит подкачка истории, что влияет на предварительный расчет...
Проверьте количество баров rates_total. Если rates_total > prev_calculated+1 - значит подкачалось более 1 бара и следовательно произошла подгрузка истории.
А частоту проверки делать раз в секунду, и после длительной паузы продолжать инициализацию, верно?
Вообще, как мне недавно сказали в СД, в индикаторах лучше обходиться без таймера.
Достаточно добавить условие: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) как условие первого запуска и полного пересчета индикатора. Если сделаете это в OnCalculate() ничего страшного не будет.
Вообще, как мне недавно сказали в СД, в индикаторах лучше обходиться без таймера.
Достаточно добавить условие: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) как условие первого запуска и полного пересчета индикатора. Если сделаете это в OnCalculate() ничего страшного не будет.
Ну, мне надо что б в советнике корретно рассчитался класс типа индикатора.
Поэтому я что то туплю, если разрешено 10000 баров на чарт и они есть, то Bars больше 10000 не будет возвращать даже если будут появляться новые бары. Тогда как мне узнать появление нового бара при подгрузки истории?
Ну, мне надо что б в советнике корретно рассчитался класс типа индикатора.
Поэтому я что то туплю, если разрешено 10000 баров на чарт и они есть, то Bars больше 10000 не будет возвращать даже если будут появляться новые бары. Тогда как мне узнать появление нового бара при подгрузки истории?
Почему не будет? Будет. И Bars() и rates_total будут увеличиваться. Проверяйте количество в OnCalculate().
Количество баров, установленное в терминале не повлияло на количество баров в тестере (чуть меньше 100000).
Почему не будет? Будет. И Bars() и rates_total будут увеличиваться. Проверяйте количество в OnCalculate().
Количество баров, установленное в терминале не повлияло на количество баров в тестере (чуть меньше 100000).
Нет нет,мне нужно это не в тестере а при реальном запуске терминала на чарте - там же это сработает только если в истории меньше максимального количества баров, или я не прав?
И в реальном времени при работе индикатора rates_total и Bars() будут увеличиваться. В OnInit() вы не сможете получить rates_total, т.к. параметр в функцию не передается. Проверку истории нужно в любом случае проводить в OnCalculate().