← Zurück

CandleManager

вот в мануале вычитал что "Менеджер создания свечек. По торговому шлюзу ITrader подключается к событию NewTrades, и на основе полученных данных формирует свечки по заданным критериям. "

то есть свечки строятся по сделкам, я правильно понимаю?

А есть возможнолсть строить свечки по Bid/Ask из таблицы Инструменты?

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

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

Tauler
Tauler Autor

вот в мануале вычитал что "Менеджер создания свечек. По торговому шлюзу ITrader подключается к событию NewTrades, и на основе полученных данных формирует свечки по заданным критериям. "

то есть свечки строятся по сделкам, я правильно понимаю?

А есть возможнолсть строить свечки по Bid/Ask из таблицы Инструменты?

Mikhail Sukhov
Mikhail Sukhov

Стандартно нет. Но можете сами это сделать. Во-первых, лучше делать по MarketDepth, так как стакан обновляется чаще, чем инструменты. Второе, при ликвидном инструменте будете терять значения - слишком уж быстро будет скакать спред.

Tauler
Tauler Autor

при ликвидном инструменте будете терять значения - слишком уж быстро будет скакать спред.

поподробнее можно? на стакане буду терять или на инструментах?

Mikhail Sukhov
Mikhail Sukhov

На стакане меньше, на инструменте больше. Дело в том, что тот же РТС обновляется раз 10-15 в секунду (это то, что мне удалось увидеть самому при прямом подключении к бирже, может быть и больше). Квик, при самом быстром раскладе, пришлет 3-4 изменения для стакана. По инструменту, вроде бы обновление не чаще 1 раза в секунду.

Pulsar
Pulsar

Если можно еще один вопрос по менеджеру свечей. собственно вопрос в том что не получается его создать и правильно использовать. Приведенный ниже код на VB не создает ошибок, но работает неправильно:

'объявления ... Public WithEvents CandleMan As New CandleManager(Trader) '-- Создаем Менеджер свечей Dim token As CandleToken '--Cтранный идентификатор типа свечей Dim Svechi() As Candle ... '---Загрузочная процедура--- ... token = CandleMan.RegisterTimeFrameCandles(Instrument, TimeSpan.FromMinutes(5)) Svechi = CandleMan.GetTimeFrameCandles(Instrument, TimeSpan.FromMinutes(5), 100) ... Instrument содержит правильно сформированный инекс RIM0 (проверено в отладчике). После этого в массиве Svechi оказывается 9 или 10 записей, хаотично разбросанных по времени и со странными значениями открытия- закрытия свечей (обычно равными между собой)

Процедура вызываемая по событию появления новой свечи Sub PodpisCandle() Handles CandleMan.NewCandles ... вызывается только один раз при загрузке программы. На смену или изменение свечей в графике квика не реагирует.

Что-то я не так понимаю?

Mikhail Sukhov
Mikhail Sukhov

Делается не так то, что RegisterTimeFrameCandles запускает в другом потоке процесс формирования свечек. Соответственно, когда на следующей строчке Вы делаете получения свечек - практически ничего еще не свормированно. Как получать свечки. Нужно подписатся на событие NewCandles. Оно вызывается, когда появилась новая свечка (именно появилась, когда произошел первый тик, а не до конца сформировалась). Скажем, если пришло событие для свечки со временем 12:25, то значит все свечки раньше этого периода сформировались, и можно получать их через GetTimeFrameCandles.

Pulsar
Pulsar

Да, вы правы, это сработало. Правда несколько странно, - при первом запуске программы коллекция заполняеся постепенно с шагом 8-16-32-52-73... при этом на каждом шаге вызывается событие новой свечи... но все же заполняется и то слава богу. Однако до 100 (как в примере и хелпа) не доходит. По той простой причине что в период с 10-30 до 18-45 накапливается всего 99 5-минутных свечей. Вот на 99 коллекция и останавливается в 18-45 (раньше - меньше). Отсюда вопрос - как получить вчерашние свечки? Ведь на них нужно строить входные для сегодняшнего дня значения индикаторов.