← Zurück

MultiTrader, получение данных

В MultiTrader добавляются 7 квиков, экспорт запускается методом StartExport. Таблицы настроены везде правильно, ошибок никаких нет. Данные по всем сделкам (лента) идут только у 4х брокеров (почему-то не все брокеры её предоставляют сразу, надо звонить и дополнительно говорить чтоб включили), у 3х - не идут.

Вот если в MultiTrader в AggregatedTraders добавить первым QuikTrader из тех 3х, где данные по всем сделкам не идут, то и в MultiTrader все сделки идти не будут. Как можно этого избежать, т.е. как объединять приходящие данные?

И хочется чтоб при потери связи одного из квиков данные всё равно продолжали идти. Для этого я создал свой класс, наследуясь от QuikTrader и переопределил public override void ReStartExport() { if (!IsConnected) base.ReStartExport(); }

но сейчас есть сомнения, что всё будет работать так, как я предполагал...

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

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

Mikhail Sukhov
Mikhail Sukhov

Быть такого не может. MultiTrader сделки проверяет на уникальность. Тоесть, если сделка с номер X уже была ранее экспортирована, то она не передается в событие NewTrades. Может быть у Вас MultiTrader уже содержит ранее добавленные сделки (например, до ошибки с экспортом)?

Alexander
Alexander Autor

Нет, не содержал - экспорт по всем сделкам из одного из квиков не шёл с самого начала. Сегодня вечером или завтра с утра попробую воспроизвести, тогда отпишусь.

Ещё вот что заметил - в конце дня, при закрытии своей программы, я печатаю всю ленту в файл -

if (multiTrader.Trades.Count() > 0) { if (!Directory.Exists("MarketData")) { Directory.CreateDirectory("MarketData"); } var allTradesSw = new StreamWriter("MarketData\{0}{1:00}_{2:00} _AllTrades.log".Put(_multiTrader.Trades.Last().Time.Year, _multiTrader.Trades.Last().Time.Month, _multiTrader.Trades.Last().Time.Day), false); foreach (var trade in _multiTrader.Trades) { allTradesSw.WriteLine("{0} - {1} - {2} - {3}", trade.Time, trade.Price, trade.Volume, trade.OrderDirection); } allTradesSw.Close();

Так вот из моей копии робота (с 1м квиком) - получилась 328001 запись вчера, на сервере (где вчера было 7 квиков) - в 7 раз больше. Т.е. вначале идёт запись от 10:00:00 до 23:49:59, потом опять от 10:00:00 до 23:49:59, опять... и так 7 раз

И ещё - у некоторых из сделок на месте trade.OrderDirection было пусто, т.е. направление сделки не проставилось. Могу скинуть данный получившийся файл.

Alexander
Alexander Autor

Вот сейчас опять - при записи из multiTrader.Trades создалось фактически 6 одинаковых копий всех сделок (было запущено 6 копий квиков). Одна запись - от 10:00:00 до 23:49:59, и так 6 раз. Выходит multiTrader.Trades объединяет Trades из каждого из добавленных Квиков? Или почему иначе так выходит?

Mikhail Sukhov
Mikhail Sukhov

Забыл отписать. Да, в MultiTrader.Trades возвращает сделки всех Aggregated traders, а не уникальные... Проблему нашел и уже пофиксил. По всей видимости, скоро будет 2.3.1, где Ваши с Таулером ошибки будут пофиксены.

Alexander
Alexander Autor

Ура-ура =) Продолжим их находить на благо обществу. А почему порой не проставляется OrderDirection известно? В таблице Всех сделок квика заполнено всё...

Mikhail Sukhov
Mikhail Sukhov

=) начинается... Так, давайте по подробнее и в отдельной теме.