← Zurück

Нет события NewCandles

Михаил, почему может не генериться событие СandleManager.NewCandles? Делал на двух тестовых терминалах разных брокеров в своем проекте и SampleSMA. И там и там одна ошибка: По LKOH свечи идут, по RIM0 свечей нет. Ошибка возникла именно сегодня, до этого все было нормально. Уж не знаю одновременный глюк тестовых серверов, или что то в библиотеке? Версия 2.0.

В окне все сделки по RIM0 операции идут. Стакан шевелится.

War dieses Thema hilfreich?

Thema teilen

Kommentare (11)

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

Mikhail Sukhov
Mikhail Sukhov

А RegisterCandles вызывается у CandleManager?

artemox
artemox Autor

Вызывается

Mikhail Sukhov
Mikhail Sukhov

А ITrader.NewTrades для RIM0 приходит? Как проверяете, что события не вызываются?

artemox
artemox Autor

Сделал такую отладку:

           _trader.NewTrades += trades =>
            {
                Log("NewTrades.MaxTim=" + trades.Max(c =>

c.Time).ToString()); };

          _candleManager.NewCandles += (token, candles) =>
           {
                DateTime _lastCandle = candles.Keys.Max(c =>

c.Time); OnLog("_lastCandle: " + _lastCandle.ToString());

При этом сделки пришли до 18:44:59 27.05.2010 22:30:19 NewTrades.MaxTim=27.05.2010 18:44:59

А свечи минутки до 11:08 (одним пакетом) Несколько запусков и перезагрузок компьютера с одним результатом 27.05.2010 22:28:52 _lastCandle: 27.05.2010 11:08:00

В другом терминале вообще свечи не пришли ни разу, хотя также сделки шли бесперебойно.

Честно говоря не понимаю откуда проблема, до этого все было отлично :( Проблема и в SampleSMA или своем проекте.

Mikhail Sukhov
Mikhail Sukhov

Хочу сразу задать вопрос. Вы понимаете, что trades, передающийся в событие trader.NewTrades - это не все сделки, которые вообще накопились (то получается через ITrader.Trades), а то, что было получено в текущий момент?

artemox
artemox Autor

Насколько я понимал - сделки вычитывались из таблицы всех сделок, при этом свежевычитанная партия передавалась в NewTrades. Если вычитанных сделок достаточно для формирования новой свечи - генерится NewCandles.

Сегодня запускаю терминал с начала сессии и свечи рисуются нормально но до 12:18, дальше NewCandles не приходит, хотя NewTrades идут исправно.

Перезапускаю терминал и проект, теперь сделки и свечи приходят большими кусками, но свечи опять же до 12:18 (то же время, что и в онлайн режиме) 28.05.2010 18:02:01NewTrades.MaxTime=28.05.2010 10:34:11 28.05.2010 18:02:03NewTrades.MaxTime=28.05.2010 10:41:25 28.05.2010 18:02:06NewTrades.MaxTime=28.05.2010 10:47:14 28.05.2010 18:02:07NewTrades.MaxTime=28.05.2010 10:58:08 28.05.2010 18:02:09NewTrades.MaxTime=28.05.2010 11:05:00 28.05.2010 18:02:11NewTrades.MaxTime=28.05.2010 11:12:23 28.05.2010 18:02:13NewTrades.MaxTime=28.05.2010 11:22:26 28.05.2010 18:02:15NewTrades.MaxTime=28.05.2010 11:34:12 28.05.2010 18:02:17NewTrades.MaxTime=28.05.2010 11:51:38 28.05.2010 18:02:19 _lastCandle: 28.05.2010 11:58:00 28.05.2010 18:02:19 _lastCandle: 28.05.2010 12:02:00 28.05.2010 18:02:19 NewTrades.MaxTime=28.05.2010 12:02:22 28.05.2010 18:02:21 _lastCandle: 28.05.2010 12:18:00 28.05.2010 18:02:21 NewTrades.MaxTime=28.05.2010 12:18:02 28.05.2010 18:02:23 NewTrades.MaxTime=28.05.2010 12:33:35 28.05.2010 18:02:25 NewTrades.MaxTime=28.05.2010 12:47:11 28.05.2010 18:02:27 NewTrades.MaxTime=28.05.2010 13:08:56 28.05.2010 18:02:29 NewTrades.MaxTime=28.05.2010 13:31:17 дальше идут только NewTrades.MaxTimе, и ни одного _lastCandle

artemox
artemox Autor

Открываю проект SampleSMA (свежераспакованный из архива солюшн)

Запускаю, по LKOH последняя cвеча 18:40 (пятиминутки)

меняю строку var lkoh = securities.FirstOrDefault(s => s.Code == "GAZP"); Запускаю, по GAZP последняя cвеча 18:40, по SBER03 - 18:40, по SiM0 - 12:15, RIM0 - 12:15 (проверял в пятницу) В воскресенье LKOH, GAZP, SBER03 - последняя cвеча 18:40, а по SiM0, RIM0 ни одной свечи.

Но самое интересное, что таже проблема с ФОРТСом и на 1.8. Получается проблема в компьютере, но в чем именно... :( Единственное, что менялось - автообновление винды (Vista)

artemox
artemox Autor

Насчет отсутствия свечей при тестировании в воскресенье и версии 1.8 погорячился. Т.к. тестировал на третьем терминале (у "открытия" сервер доступен в выходные) В колонке код бумаги у них "RTS-6.10", а у меня есть завязка на получение истории по RIM0 - поэтому я просто поменял 2 и 3 колонки местами. При этом не сделал соответствующие изменения в таблице всех сделок.

Вернул колонки назад, переопределил MarketDepthDelimiter, и на терминале "открытия" пришли все свечи ФОРТСа!! Ура! Хотя это не отменяет проблему с частичным появлением свечей, все равно уже не так тоскливо :)

Mikhail Sukhov
Mikhail Sukhov

Правильно, поэтому код

_trader.NewTrades += trades => { Log("NewTrades.MaxTim=" + trades.Max(c => c.Time).ToString()); };

покажет лишь самую большую дату для новой партии сделок.

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

Alexander
Alexander

Михаил, я правильно понял, что одному CandleManager можно зарегистрировать несколько различных таймфреймов и потом с ними параллельно работать?

Mikhail Sukhov
Mikhail Sukhov

Конечно, именно так и нужно.