static datetime lastbar = 0; //- в глобальные переменные lastbar = Time[0]; //- в инит bool NewBar() { if(Time[0] <= lastbar ) return(false); else { lastbar = Time[0]; return(true); } }
Так работает только на нормальном онлайн графике, а на оффлайн нет. Может быть проблема в том, что сейчас на оффлайн графиках необходимо обрабатывать только событие OnTimer, т.к. OnTick не работает. Такой код работает только на стандартном таймфрейме:
static datetime lastbar = 0; int OnInit() { lastbar = Time[0]; EventSetTimer(1); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } void OnTick() { } void OnTimer() { if (NewBar() == true) { Print ("Новый бар !"); } } bool NewBar() { if(Time[0] <= lastbar ) return(false); else { lastbar = Time[0]; return(true); } }
тогда только читать .hst
А в чем проблема то в онлайн? Может быть, дело в том, что два и более баров имеют одно и то же время открытия? Потому как в других случаях приведенный код работает корректно.
Другой вариант выявления нового бара - ориентироваться на количество баров:
bool IsNewBar() { static int oldBars = 0; if (oldBars >= Bars) return false; oldBars = Bars; return true; }
А в чем проблема то в онлайн? Может быть, дело в том, что два и более баров имеют одно и то же время открытия? Потому как в других случаях приведенный код работает корректно.
Другой вариант выявления нового бара - ориентироваться на количество баров:
Нет, проблема не в одинаковом времени открытия - это точно, т.к. ни на одном баре он вообще не срабатывает. Спасибо за идею про количество, попробую.
Добрый день, пишу советник для оффлайн ренко графика (получаемый с помощью Renko Liva Chart) и никак не получается определить появление новой свечи. Стандартный код, например:
не работает онлайн, хотя на тестере все ок. Есть идея читать данные прямо из файла hst, но может быть есть вариант по проще? Заранее спасибо.
много недоработок было еще в старом MQL, про новый я уже молчу, устал "копья ломать".
Поэтому, проще всего написать советник для обычного графика, включив в него функцию Ренко.
Пусть она прямо в советнике создает массив с теми данными, которые вы пытаетесь считать с автономного графика.
Правила для Ренко просты, реализовать легко.
И вполне достаточно функции обработки событий OnTick().
А в чем проблема то в онлайн? Может быть, дело в том, что два и более баров имеют одно и то же время открытия? Потому как в других случаях приведенный код работает корректно.
Другой вариант выявления нового бара - ориентироваться на количество баров:
Не стоит ориентироваться на баги. Ихенько, только имхенько.
Не стоит ориентироваться на баги.
Разработчики сами еще не определились с нюансами автономных графиков,
много недоработок было еще в старом MQL, про новый я уже молчу, устал "копья ломать".
Поэтому, проще всего написать советник для обычного графика, включив в него функцию Ренко.
Пусть она прямо в советнике создает массив с теми данными, которые вы пытаетесь считать с автономного графика.
Правила для Ренко просты, реализовать легко.
И вполне достаточно функции обработки событий OnTick().
Была такая мысль, но все-таки хочется видеть наглядно что происходит.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, пишу советник для оффлайн ренко графика (получаемый с помощью Renko Liva Chart) и никак не получается определить появление новой свечи. Стандартный код, например:
не работает онлайн, хотя на тестере все ок. Есть идея читать данные прямо из файла hst, но может быть есть вариант по проще? Заранее спасибо.