MultiTrader, получение данных
Atom Ответить
23.08.2010


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

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

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

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

Теги:


Спасибо:




6 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.08.2010
Ответить


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

Спасибо:

Alexander

Фотография
Дата: 24.08.2010
Ответить


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

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

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

Фотография
Дата: 25.08.2010
Ответить


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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 25.08.2010
Ответить


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

Спасибо:

Alexander

Фотография
Дата: 25.08.2010
Ответить


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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 25.08.2010
Ответить


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

Спасибо:


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

loading
clippy