можно попытаться получить данные свечи с помощью getCandleByIndex и сравнить её с O,H,L,V свечи, полученной с помощью CreateDataSource, но, похоже одним CreateDataSource тут не обойтись - т.к. придётся сканировать все интервалы.
Я думал об этом... Довольно не надёжное решение, к тому же слишком затратное, если нужно мониторить, не изменился ли таймфрейм.
Задача стоит следующая: построить индикатор, рассчитанный по значениям с графика 1) на который индикатор наложен 2) и с другого, заданного идентификатором tag
Так вот, при изменении таймфрейма второго графика индикатор должен автоматически пересчитаться.
Надо делать так, как надо. А как не надо - делать не надо.
таймфрейм графика это что? 5 мин, часовой, дневной? getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Валентин пишет: getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Этот способ не всегда даст верный результат. Он не сработает, если между двумя последними свечами был перерыв (промежуток времени), когда не совершались сделки.
Валентин пишет: getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Этот способ не всегда даст верный результат. Он не сработает, если между двумя последними свечами был перерыв (промежуток времени), когда не совершались сделки.
Зачем две последние? любые две рядом. еще две любые рядом и еще две любые рядом. получаем три значения, берем то значение, которое чаще всего встречается. Конечно как то через одно место, но чем не вариант
Валентин пишет: Зачем две последние? любые две рядом. еще две любые рядом и еще две любые рядом. получаем три значения, берем то значение, которое чаще всего встречается. Конечно как то через одно место, но чем не вариант
Можно в начале работы получить время самой первой и второй свечи для каждого таймфрейма с помощью CreateDataSource и сохранить их в таблице. Если брокер предоставляет графики цены за предыдущие дни, то в большинстве случаев для каждого таймфрейма время первой свечи будет отличаться от других таймфреймов (кроме случаев, когда по данному инструменту начиная с какого-то таймфрейма и для более крупных таймфреймов история будет насчитывать меньше 3000 свечей, но на этот случай мы сохраняем еще время второй свечи). Данные из этой таблицы будут актуальны в течение всего торгового дня. Дальше проверяем - если у нас нет совпадающих пар значений времени в полученной таблице, то можно смело их использовать для идентификации таймфрейма на открытом графике, к которому обращаемся посредством getCandleByIndex. В подавляющем большинстве случаев это будет работать, а проверка значений пары свечей не будет слишком затратной.
Дмитрий пишет: Можно в начале работы получить время самой первой и второй свечи для каждого таймфрейма с помощью CreateDataSource и сохранить их в таблице.
Правда если речь идет об индикаторе, то CreateDataSource в нем использовать нельзя :( Если только делать это в отдельном скрипте, сохранять таблицу в файл, а в индикаторе читать ее из файла.
Дмитрий пишет: Можно в начале работы получить время самой первой и второй свечи
Да, спасибо. Для моей задачи (отслеживание изменения таймфрейма на втором графике) можно запомнить время первых двух свечей с помощью getCandlesByIndex. Если время любой свечи изменилось - значит изменён таймфрейм. Правда есть вероятность, что при изменении таймфрейма время свечей не изменится. Но она не велика.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель пишет: Оба графика имеют разные таймфреймы.
Вообще-то , свечи - это нелинейное сжатие исходных данных. Поэтому непонятна сама постановка задачи обработки двух свечных графиков разного тайма. Какую задачу решаете? -------------------------------------- Можно, например, взять оба графика одного тайма(наименьшего) и далее вычислять нужные параметры на любом тайме больше исходного.