Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Slava, 2021.05.29 18:16
Хочу напомнить.
1. Для каждого символа, для которого открыт хоть один график, работает отдельный поток для обработки пришедших тиков. Может быть открыто несколько графиков по какому-то символу, но поток будет всё равно один.
2. Поток символа обрабатывает не графики, а таймсерии. То есть, те самые массивы данных, которые отдаются на запрос CopyRates
3. Бесполезно спрашивать у своего символа в OnTick или OnCalculate, синхронизирован ли он. Конечно, да!
4. Все таймсерии обрабатываются по порядку, от младшей к старшей. Сначала применение тика, потом расчёт всех индикаторов, созданных на данной таймсерии. Если вы из индикатора, работающего на M1, спрашиваете данные для этого же символа H1, то вы никогда не получите данных с применённым тиком. Данные всегда будут на один тик назад, какие бы ухищрения вы не применяли. Потому что один поток на символ с последовательной обработкой таймфреймов.
5. Предыдущее утверждение не касается экспертов и скриптов, потому что эксперты и скрипты работают каждый в своём отдельном потоке.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Anton, 2021.06.01 09:40
Утверждение получилось немного двусмысленное. На всякий случай уточняю. Да, при обработке тика все таймсерии обрабатываются по порядку, от младшей к старшей. Каждый тик добавляется к данным каждой таймсерии, затем производится расчет индикаторов на каждой таймсерии, по порядку. Т.е. для индикатора в OnCalculate() данные самих таймсерий (всех) безусловно обновленные, но данные индикаторов старших таймфреймов еще не пересчитаны.
Включите по условию пользовательское событие и в OnChartEvent() по этому событию получите значения. Где-то это долго обсуждалось. Даже с примерами.
тут проблема не в обнаружении события, а в получении значения по событию первого тика. Значения на этом тике просто еще нет и не будет никогда. так заложено в работу терминала. Ну это конечно, если я правильно понял комментарии автора в первом посте.
тут проблема не в обнаружении события, а в получении значения по событию первого тика. Значения на этом тике просто еще нет и не будет никогда. так заложено в работу терминала. Ну это конечно, если я правильно понял комментарии автора в первом посте.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Нулевой буфер старшего ТФ на первом тике
Alexey Viktorov, 2025.06.01 06:00
Включите по условию пользовательское событие и в OnChartEvent() по этому событию получите значения. Где-то это долго обсуждалось. Даже с примерами.Повторяю: Это уже обсуждалось. Результат положительный. Ищите это обсуждение и будет вам счастье.
Вам повезло. Я быстро смог найти, но это не начало обсуждения
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Alexey Viktorov, 2024.06.25 13:59
Так вот это очень полезно оказалось. Я не так просто упоминал свойства графического объекта сразу после создания его. Точно так же и с массивом индикатора. Обновлённый массив будет доступен только после выхода из функции обработки этого массива. Следовательно надо что-то сделать чтобы была возможность почитать этот буфер(массив) между выходом из OnCalculate() и вторым тиком. В этом поможет этот самый CHARTEVENT_CUSTOM.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет! Решена ли проблема получения данных индикатора старшего ТФ на нулевом баре на первом тике? У меня пока получается получить данные только со второго тика. Т.е я обращаюсь к примеру с индикатора на М1 к индикатору на М3 и на новом баре М3 на первом тике я хочу получить данные индикатора на М3 - не получается! Только на втором тике.....
запускаю этот индикатор на М1 :
Вызываю этот индикатор
в тестере получаю значения только со второго тика и далее. Первый тик без значения.
в чем может быть проблема?