← Zurück

тайны CandleManager :)

Два вопроса

  1. Почему иногда события свечек вызываются в следующем порядке 2011-02-11 23:00:00.4416 Info OnNewCandles 11.02.2011 <mark>23:00:00</mark> (время свечи) 2011-02-11 23:00:00.4416 Info <mark>OnCandlesChanged</mark> 11.02.2011 22:45:00 2011-02-11 23:00:00.4416 Info OnCandlesFinished 11.02.2011 22:45:00

то есть нет гарантии что после появления новой свечи старая неизменна?

  1. Почему при подписке на эти события они возвращают данные не с момента подписки а с начала дня? То есть ожидая только актуальные свечки я получаю все свечки дня...

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

sklementiev: Два вопроса

  1. Почему иногда события свечек вызываются в следующем порядке 2011-02-11 23:00:00.4416 Info OnNewCandles 11.02.2011 23:00:00 (время свечи) 2011-02-11 23:00:00.4416 Info OnCandlesChanged 11.02.2011 22:45:00 2011-02-11 23:00:00.4416 Info OnCandlesFinished 11.02.2011 22:45:00

то есть нет гарантии что после появления новой свечи старая неизменна?

Типичная ситуация, пришли тики за 2 тайм-фрейма. Они обрабатываются CandleManager. Итог, два события - появление новой свечки, и обновление старой.

sklementiev: 2. Почему при подписке на эти события они возвращают данные не с момента подписки а с начала дня?

Так работает QuikTrader, Квик + ДДЕ.

sklementiev: То есть ожидая только актуальные свечки я получаю все свечки дня...

Именно так. Поэтому и ввел интерфейс ICandleSource.

sklementiev
sklementiev Autor

sklementiev: Два вопроса

  1. Почему иногда события свечек вызываются в следующем порядке 2011-02-11 23:00:00.4416 Info OnNewCandles 11.02.2011 <mark>23:00:00</mark> (время свечи) 2011-02-11 23:00:00.4416 Info <mark>OnCandlesChanged</mark> 11.02.2011 22:45:00 2011-02-11 23:00:00.4416 Info OnCandlesFinished 11.02.2011 22:45:00

то есть нет гарантии что после появления новой свечи старая неизменна?

Типичная ситуация, пришли тики за 2 тайм-фрейма. Они обрабатываются CandleManager. Итог, два события - появление новой свечки, и обновление старой.

Хм, означает ли это что Квик получает тики не отсортированные по оси времени? То есть за тиком в новом тайфрейме приходит тик в старом? Сомневаюсь, что окно все сделки (источник данных для CandleManager) собержит такие данные. Поправь меня если я неправ

Вообще, для меня текущий порядок вызовов этих событий достаточно странный - сначала OnNewCandles затем OnCandlesFinished По моему, <mark>естественный</mark> порядок для пользователя должен быть несколко иной, ведь для нас события по оси времени линейны... старая свеча закончилась, новая началась

10:59.59 - последник тик старого таймфрейма OnCandlesChanged(старая свеча) 11:00.01 - первый тик нового таймфрейма, OnCandlesFinished(старая свеча), OnNewCandles(новая "плоская" свеча O=H=L=C) 11:00.03 - тик нового таймфрейма, OnCandlesChanged(текушая свеча)

sklementiev: 2. Почему при подписке на эти события они возвращают данные не с момента подписки а с начала дня?

Так работает QuikTrader, Квик + ДДЕ.

Я это понимаю, ты просто строишь свечи на основе тех данный, которые есть в окне все сделки. Однако это <mark>особенность реализации</mark> Для пользователя смотрящего на API и читающего документацию это <mark>тайна</mark> Мне кажется, естественно предполагать, что эти события будут генерить данные актуальный свечей с момента подписки на событие тем более,что для получения прошлый свечек у тебя есть прекрасный метод GetTimeFrameCandles :)

Вообщем к чему я это все - любое поведение компонентов библиотеки должно быть либо однозначно предсказуемо либо однозначно документировано

sklementiev: То есть ожидая только актуальные свечки я получаю все свечки дня...

Именно так. Поэтому и ввел интерфейс ICandleSource.

Не совсем понял, при чем здесь это, сорри