Mikhail Sukhov
|
Дата: 27.05.2010
А RegisterCandles вызывается у CandleManager?
|
|
|
|
artemox
|
Дата: 27.05.2010
Вызывается
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 27.05.2010
А ITrader.NewTrades для RIM0 приходит? Как проверяете, что события не вызываются?
|
|
|
|
artemox
|
Дата: 27.05.2010
Сделал такую отладку:
_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
|
Дата: 28.05.2010
Хочу сразу задать вопрос. Вы понимаете, что trades, передающийся в событие trader.NewTrades - это не все сделки, которые вообще накопились (то получается через ITrader.Trades), а то, что было получено в текущий момент?
|
|
|
|
artemox
|
Дата: 28.05.2010
|
|
|
|
Насколько я понимал - сделки вычитывались из таблицы всех сделок, при этом свежевычитанная партия передавалась в 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
|
Дата: 30.05.2010
Открываю проект 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
|
Дата: 30.05.2010
Насчет отсутствия свечей при тестировании в воскресенье и версии 1.8 погорячился. Т.к. тестировал на третьем терминале (у "открытия" сервер доступен в выходные) В колонке код бумаги у них "RTS-6.10", а у меня есть завязка на получение истории по RIM0 - поэтому я просто поменял 2 и 3 колонки местами. При этом не сделал соответствующие изменения в таблице всех сделок.
Вернул колонки назад, переопределил MarketDepthDelimiter, и на терминале "открытия" пришли все свечи ФОРТСа!! Ура! Хотя это не отменяет проблему с частичным появлением свечей, все равно уже не так тоскливо :)
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 31.05.2010
Правильно, поэтому код
_trader.NewTrades += trades => { Log("NewTrades.MaxTim=" + trades.Max(c => c.Time).ToString()); };
покажет лишь самую большую дату для новой партии сделок.
Еще такая заметка. Попробуйте RegisterTimeFrameCandles вызвать, когда начнут появляться уже текущие сделки (текущей минуты к примеру), а не архивные.
|
|
|
|
Alexander
|
Дата: 05.07.2010
Михаил, я правильно понял, что одному CandleManager можно зарегистрировать несколько различных таймфреймов и потом с ними параллельно работать?
|
|
|
|
Mikhail Sukhov
|
Дата: 05.07.2010
Конечно, именно так и нужно.
|
|
|