Как узнать таймфрейм графика с заданным идентификатором?
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 01.02.2015
06.06.2015 23:25:54
если я правильно понял, то функция getDataSourceInfo - работает только в скриптах-индикаторах, а без неё - врядли...
Пользователь
Сообщений: Регистрация: 01.02.2015
07.06.2015 00:11:27
можно попытаться получить данные свечи с помощью getCandleByIndex и сравнить её с O,H,L,V свечи, полученной с помощью CreateDataSource, но, похоже одним CreateDataSource тут не обойтись - т.к. придётся сканировать все интервалы.
Я думал об этом... Довольно не надёжное решение, к тому же слишком затратное, если нужно мониторить, не изменился ли таймфрейм.
Задача стоит следующая: построить индикатор, рассчитанный по значениям с графика 1) на который индикатор наложен 2) и с другого, заданного идентификатором tag
Так вот, при изменении таймфрейма второго графика индикатор должен автоматически пересчитаться.
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 30.03.2015
07.06.2015 09:48:43
таймфрейм графика это что? 5 мин, часовой, дневной? getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Пользователь
Сообщений: Регистрация: 31.01.2015
07.06.2015 13:33:06
Цитата
Валентин пишет: getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Этот способ не всегда даст верный результат. Он не сработает, если между двумя последними свечами был перерыв (промежуток времени), когда не совершались сделки.
Валентин пишет: getCandlesByIndex возвращает в том числе timedate запрашиваем две свечи рядом (предпоследняя и предпредпоследняя), вычисляем разность времени и вот?
Этот способ не всегда даст верный результат. Он не сработает, если между двумя последними свечами был перерыв (промежуток времени), когда не совершались сделки.
Зачем две последние? любые две рядом. еще две любые рядом и еще две любые рядом. получаем три значения, берем то значение, которое чаще всего встречается. Конечно как то через одно место, но чем не вариант
Пользователь
Сообщений: Регистрация: 30.01.2015
07.06.2015 15:41:36
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 31.01.2015
07.06.2015 16:56:42
Цитата
Валентин пишет: Зачем две последние? любые две рядом. еще две любые рядом и еще две любые рядом. получаем три значения, берем то значение, которое чаще всего встречается. Конечно как то через одно место, но чем не вариант
Я думал об этом... Довольно не надёжное решение, к тому же слишком затратное, если нужно мониторить, не изменился ли таймфрейм.
Пользователь
Сообщений: Регистрация: 31.01.2015
07.06.2015 17:09:59
Можно в начале работы получить время самой первой и второй свечи для каждого таймфрейма с помощью CreateDataSource и сохранить их в таблице. Если брокер предоставляет графики цены за предыдущие дни, то в большинстве случаев для каждого таймфрейма время первой свечи будет отличаться от других таймфреймов (кроме случаев, когда по данному инструменту начиная с какого-то таймфрейма и для более крупных таймфреймов история будет насчитывать меньше 3000 свечей, но на этот случай мы сохраняем еще время второй свечи). Данные из этой таблицы будут актуальны в течение всего торгового дня. Дальше проверяем - если у нас нет совпадающих пар значений времени в полученной таблице, то можно смело их использовать для идентификации таймфрейма на открытом графике, к которому обращаемся посредством getCandleByIndex. В подавляющем большинстве случаев это будет работать, а проверка значений пары свечей не будет слишком затратной.
Пользователь
Сообщений: Регистрация: 31.01.2015
07.06.2015 21:41:07
Цитата
Дмитрий пишет: Можно в начале работы получить время самой первой и второй свечи для каждого таймфрейма с помощью CreateDataSource и сохранить их в таблице.
Правда если речь идет об индикаторе, то CreateDataSource в нем использовать нельзя :( Если только делать это в отдельном скрипте, сохранять таблицу в файл, а в индикаторе читать ее из файла.
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
07.06.2015 22:11:10
Цитата
Дмитрий пишет: Можно в начале работы получить время самой первой и второй свечи
Да, спасибо. Для моей задачи (отслеживание изменения таймфрейма на втором графике) можно запомнить время первых двух свечей с помощью getCandlesByIndex. Если время любой свечи изменилось - значит изменён таймфрейм. Правда есть вероятность, что при изменении таймфрейма время свечей не изменится. Но она не велика.
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 30.01.2015
11.06.2015 14:32:48
задача легко решается размещением графиков в одном окне но разных подокнах
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.06.2015 16:35:25
Оба графика имеют разные таймфреймы.
Надо делать так, как надо. А как не надо - делать не надо.
Пользователь
Сообщений: Регистрация: 30.01.2015
13.06.2015 15:52:40
Цитата
Старатель пишет: Оба графика имеют разные таймфреймы.
Вообще-то , свечи - это нелинейное сжатие исходных данных. Поэтому непонятна сама постановка задачи обработки двух свечных графиков разного тайма. Какую задачу решаете? -------------------------------------- Можно, например, взять оба графика одного тайма(наименьшего) и далее вычислять нужные параметры на любом тайме больше исходного.
Пользователь
Сообщений: Регистрация: 30.01.2015
13.06.2015 15:55:52
если рынок ликвидный,то можно определить разность времени двух соседних закрытых свечей