Как из тиков получается одна свеча
Возьмём все тики инструмента за период, например с 14:05:00 до 14:05:59 UTC. Свеча за эту минуту - это четыре значения:
- Open - цена первого тика периода.
- High - максимальная цена тика за период.
- Low - минимальная цена тика за период.
- Close - цена последнего тика периода.
Свеча обозначается временем начала периода. Свеча 14:05 включает тики с 14:05:00 до 14:06:00, не включая его. Если один источник помечает свечи по началу, а другой по концу, весь график смещается на период.
Важно и то, по какой цене строится свеча. У инструментов с ценой последней сделки (крипта, индексы, сырьё, облигации) цена в тике одна. У инструментов с двусторонней котировкой нужно выбрать один ряд. Свечи в фиде FinaQuotes строятся по единому правилу; какой ряд цен в них используется, смотрите в документации. Почему у вас правило должно совпадать - в статье о bid, ask и спреде.
Минутная база и старшие таймфреймы
Считать каждый таймфрейм из сырых тиков расточительно и чревато расхождениями. Обычный подход, и в фиде FinaQuotes тоже, - строить из тиков минутные свечи, а всё остальное агрегировать из них.
Агрегация повторяет ту же логику: пятиминутная свеча берёт открытие первой минутной, максимум из максимумов, минимум из минимумов и закрытие последней. Часовая - то же самое за шестьдесят минут, и так до месяца. Таймфреймов 9: 1m, 5m, 15m, 30m, 1H, 4H, 1D, 1W, 1MN. Раз все они из одной базы, часовая свеча всегда сходится с шестьюдесятью минутными внутри неё.
Почему границы в UTC
Все границы свечей в фиде выровнены по UTC: часы начинаются в :00 UTC, четырёхчасовые свечи - в 00:00, 04:00, 08:00 и так далее, дневные - в 00:00 UTC, месячные - первого числа. Недельные строятся по тому же принципу, точное правило - в документации.
Локальное время кажется удобнее, но ломает свечи: летнее время даёт сутки по 23 и 25 часов и час, который случается дважды; клиенты в разных странах видели бы разные дневные свечи; брокеру с клиентами в разных поясах пришлось бы хранить по истории на каждый пояс.
В UTC этих проблем нет. Храните и передавайте всё в UTC, а в локальное время переводите только при отображении. Если нужна дневная свеча по местному торговому дню, соберите её у себя из часовых или минутных.
Сессии: акции, форекс, крипта
Не все рынки торгуют круглосуточно, и свечи следуют за рынком, а не за календарём.
- Акции: свечи строятся только в часы торгов биржи листинга, с учётом перехода на летнее время. Основная сессия в США, открывающаяся в 09:30 по Нью-Йорку, начинается в 13:30 UTC летом и в 14:30 UTC зимой, и свечи сдвигаются вместе с ней.
- Форекс: 24 часа пять дней в неделю. Свечи непрерывны в течение недели, на выходных - разрыв между закрытием пятницы и открытием воскресенья.
- Крипта: 24/7, свечи непрерывны, включая выходные и праздники.
- Металлы, индексы, сырьё и облигации следуют часам своих рынков.
Покрытие по рынкам - на страницах акций, форекса и криптовалют.
Минуты без тиков
Что делать с минутой, в которую не пришло ни одной цены? Подходов два: «нет тика - нет свечи», когда минуты в истории просто нет, и forward fill, когда создаётся плоская свеча со всеми четырьмя ценами, равными предыдущему закрытию.
Фид на реальных тиках обычно не создаёт свечу для минуты без тиков, и от FinaQuotes стоит ожидать именно этого; окончательное правило - в документации. Причина - честность: плоская свеча намекает, что рынок проверили и он не изменился, хотя на деле ничего не наблюдалось. Если графической библиотеке нужен непрерывный ряд, заполняйте пропуски при отображении, а хранимые данные оставляйте как есть.
Глубина истории по таймфреймам
История свечей отдаётся через REST: годы дневных данных, месяцы внутридневных. Цифры приблизительные и могут отличаться по инструментам, например у недавно добавленных.
| Таймфрейм | Типичная глубина | Для чего |
|---|---|---|
| 1m | До 180 дней | Внутридневные детали |
| 5m, 15m, 30m | Около 60 дней | Внутридневные графики за недели |
| 1H, 4H | Около 2 лет | Среднесрочные графики, аналитика |
| 1D, 1W, 1MN | Несколько лет | Долгосрочные графики и бэктесты |
Подробнее - на странице исторических данных.
Корректировки и поздние обновления
Свеча не всегда окончательна в момент закрытия периода. Последняя свеча меняется с каждым тиком, а тик с меткой за секунду до границы может прийти чуть позже неё. Храните свечи как записи с ключом «инструмент, таймфрейм, время открытия» и обновляйте их по ключу: пришла свеча с тем же ключом - замените, а не добавляйте вторую. Тик применяйте к той свече, которой принадлежит его время, даже если это предыдущая.
Корректировки после сбоя источника. Каждый класс активов обслуживается несколькими независимыми источниками с автоматическим переключением. Если источник отказал или прислал неверные значения, данные за этот период могут быть исправлены задним числом, включая сохранённые свечи. Клиент с кэшем истории должен уметь перезагрузить недавний диапазон. Тишина инструментов отслеживается, но пропуск может остаться, если за период цен не было ни из одного источника. Подробно - в политике рыночных данных.
Частые вопросы
Почему дневные свечи в UTC, а не в моём времени?
Потому что в UTC нет перехода на летнее время и он одинаков для всех клиентов. Локальные дневные свечи различались бы по странам и ломались бы дважды в год. Переводите время только при отображении или собирайте свои дневные свечи из часовых.
Почему на графике акции разрывы ночью и на выходных?
Свечи акций строятся только в часы торгов биржи листинга, пока биржа закрыта, свечей нет. У форекса есть разрыв на выходных, у крипты, которая торгуется 24/7, разрывов нет.
Может ли последняя свеча измениться после отрисовки?
Да. Текущая свеча меняется с каждым тиком, а недавние свечи могут быть исправлены после сбоя источника. Храните свечи по ключу «инструмент, таймфрейм, время открытия» и заменяйте при получении новой версии.
Нужен фид, о котором эта статья?
Расскажите, что вы строите и какие классы активов нужны. Ответим в течение одного рабочего дня: условия доступа и стоимость.