if(period != PERIOD_CURRENT)
{
period = PERIOD_CURRENT;
ChartRedraw();
}
Проверка символа так-же.
Добрый день, камрады!
Суть проблемы: Индикатором рисую объекты на графике - тут все работает. При смене ТФ и смене инструмента не всегда происходит перерисовка индикатора.
Видимое решение: использовать ChartRedraw().
...
Заранее спасибо!!!
Покажите как рассчитываете?
Примерно так
if(period != PERIOD_CURRENT)
{
period = PERIOD_CURRENT;
ChartRedraw();
}
Проверка символа так-же.
Ох, спасибо Алексей, оперативно ответ получил - не ожидал!
Вечерком сяду и проанализирую - вроде бы изящно ложится на проблему.
Спасибо большое!
Выделенное говорит о том, что индикатор у вас не верно сделан. Ведь он при переинициализации должен сделать полный пересчёт. Он видимо не делает.
Покажите как рассчитываете?
Артем, только из дома, ближе к вечеру смогу сделать
Проверил более внимательно то, когда проявляется моя проблема.
Возникает она при отсутствии котировок по данному символу и ТФ - в OnInit() создаются объекты (индикатор построен на графических объектах), а котировки - подгружаются спустя некоторое время.
Переключение ТФ на другой - приводит к переинициализации индикатора и он уже при имеющихся котировках отображается нормально...
В связи с этим возникают вопросы:
1) можно ли в OnInit() принудительно подгрузить котировки по нужному символу/ТФ на заданном диапазоне времени?
2) можно ли как-то проконтролировать готовность котировок к работе?
Заранее спасибо!
Доброго времени суток всем!
Проверил более внимательно то, когда проявляется моя проблема.
Возникает она при отсутствии котировок по данному символу и ТФ - в OnInit() создаются объекты (индикатор построен на графических объектах), а котировки - подгружаются спустя некоторое время.
Переключение ТФ на другой - приводит к переинициализации индикатора и он уже при имеющихся котировках отображается нормально...
В связи с этим возникают вопросы:
1) можно ли в OnInit() принудительно подгрузить котировки по нужному символу/ТФ на заданном диапазоне времени?
2) можно ли как-то проконтролировать готовность котировок к работе?
Заранее спасибо!
CopyRates() и другие функции копирования котировок на нужном ТФ и символе запускают обновление соответствующей информации в терминале и докачку данных, если они отсутствуют. Повторять, пока не вернёт больше ноля.
Доброго времени суток всем!
Проверил более внимательно то, когда проявляется моя проблема.
Возникает она при отсутствии котировок по данному символу и ТФ - в OnInit() создаются объекты (индикатор построен на графических объектах), а котировки - подгружаются спустя некоторое время.
Переключение ТФ на другой - приводит к переинициализации индикатора и он уже при имеющихся котировках отображается нормально...
В связи с этим возникают вопросы:
1) можно ли в OnInit() принудительно подгрузить котировки по нужному символу/ТФ на заданном диапазоне времени?
2) можно ли как-то проконтролировать готовность котировок к работе?
Заранее спасибо!
Я это победил вот так, была точно такая-же проблема. Этот код в OnInit
for(int e=0; e<5; e++) { // вот это помогло
CopyOpen(Symbol(),Period(),0,(int)ChartGetInteger(0,CHART_WIDTH_IN_BARS,0),OPEN);
}
Спасибо за ответы )
Доберусь до дома - плотно займусь в рамках рекомендаций.
В сторону CopyRates() и иже с ней я посматривал, но почему-то они у меня не отложились в голове - наверное, устал - невнимателен был.
По результатам - отпишусь и еще раз спасибо скажу )
Просто ChartRedraw() после создания объектов. Чаще всего достаточно просто в конце OnTick(). Не важно будете переключать таймфрейм или нет. Конечно в деините тоже надо, после удаления объектов. В общем, всегда после любых действий с графическими объектами, если надо, что бы эти действия отобразились на графике тут же.
Доброго времени суток всем!
Проверил более внимательно то, когда проявляется моя проблема.
Возникает она при отсутствии котировок по данному символу и ТФ - в OnInit() создаются объекты (индикатор построен на графических объектах), а котировки - подгружаются спустя некоторое время.
Переключение ТФ на другой - приводит к переинициализации индикатора и он уже при имеющихся котировках отображается нормально...
В связи с этим возникают вопросы:
1) можно ли в OnInit() принудительно подгрузить котировки по нужному символу/ТФ на заданном диапазоне времени?
2) можно ли как-то проконтролировать готовность котировок к работе?
Заранее спасибо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, камрады!
Суть проблемы: Индикатором рисую объекты на графике - тут все работает. При смене ТФ и смене инструмента не всегда происходит перерисовка индикатора.
Видимое решение: использовать ChartRedraw().
Собственно вопрос: пока никак не могу найти информацию по тому, как поймать момент, когда мне нужно вызывать принудительную перерисовку графика.
Прошу поделиться информацией и возможным решением, если кто-то владеет вопросом.
Может быть использовать OnChartEvent() c CHARTEVENT_CHART_CHANGE - по этому признаку перерисовывать график? Если я прав, то прошу объяснить, как этот вариант правильно использовать - первая попытка ни к чему позитивному не привела: вычитываю событие, сравниваю с CHARTEVENT_CHART_CHANGE и в случае совпадения вызываю ChartRedraw();
Заранее спасибо!!!