Нет события NewCandles
Atom Ответить
26.05.2010


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

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

Теги:


Спасибо:




11 Ответов
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
Ответить


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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy