OrderLog -> Trades
Atom
4/14/2018
Дмитрий_


Добрый день

Попытка получить сделки из ордер лога дала результат только в виде 2 сделок (16:33:06.216 и 16:56:26.387).

https://drive.google.com/open?id=145etRqDqYqbP4lCK0dFjZySxTaPDa1R0


Tags:


Thanks:


1 2  >
Дмитрий_

Avatar
Date: 4/16/2018
Reply


Попробовал на данных не 2014, а 2018 - количество сделок стало больше, но львиная их доля так же пропущена. OrdLogAFLT-6.18.PNG OrderLogCount = 25726 TradesAFLT-6.18.PNG TradesCount = 572 A.zip

OrdLogAFLT-6.18.PNG 79 KB (1295) TradesAFLT-6.18.PNG 77 KB (1131) A.zip 275 KB (821)
Thanks:

Support

Avatar
Date: 4/16/2018
Reply


Добрый день

Возможно проблема с данными. Проверьте сами данные. Сколько изначально в них сделок.

Thanks:

Дмитрий_

Avatar
Date: 4/16/2018
Reply


Добрый день

Если я правильно смотрю, то выходит 13026 сделок CountDoneTrades.PNG

CountDoneTrades.PNG 116 KB (903)
Thanks:

Support

Avatar
Date: 4/16/2018
Reply


Пожалуйста уточните ваш ответ.

Thanks:

Дмитрий_

Avatar
Date: 4/16/2018
Reply


Ок

var ordLogStorage = storageRegistry1.GetOrderLogMessageStorage(new Security { Id = "AFLT-6.18@MICEX", Board = ExchangeBoard.Micex }); var ordLogs = ordLogStorage.Load(new DateTime(2018, 4, 13), new DateTime(2018, 4, 14)).ToList();

foreach (var o in ordLogs) { if (o.OrderState == OrderStates.Done) { ExecutionMessage executionMessage = new ExecutionMessage ;

                trades6.Add(executionMessage);
            }

}

Получил List<ExecutionMessage> ordLogs (количество ExecutionMessage ордер лога = 25726) Пройдясь по каждому сообщению, отсортировал по o.OrderState == OrderStates.Done и сохранил результат в trades6 (List<ExecutionMessage>)

"Возможно проблема с данными. Проверьте сами данные. Сколько изначально в них сделок." Верно ли, что trades6.Count = искомому количеству сделок?

Thanks:

Support

Avatar
Date: 4/16/2018
Reply


Проверять строчку на сделку можно по полю TradeId

Thanks: Дмитрий_

Дмитрий_

Avatar
Date: 4/16/2018
Reply


По данному полю, где TradeId != null, количество сделок = 1144.

Используя метод var trades = ordLogs.ToTicks().ToList();, получаем trades.Count = 572

У меня что-то не сходится. 1144-572 = 572. Я что-то фундаментально не догоняю, как так ordLogs.ToTicks().ToList().Count * 2 == количеству сделок, где TradeId != null?

Thanks:

Support

Avatar
Date: 4/16/2018
Reply


В сделке участвуют две стороны.

Thanks: Дмитрий_

Дмитрий_

Avatar
Date: 4/16/2018
Reply


"В сделке участвуют две стороны." Во туплю.

Причём более 1 раза. http://doc.stocksharp.ru/html/T_StockSharp_Messages_OrderStates.htm

Thanks:

Дмитрий_

Avatar
Date: 4/18/2018
Reply


Добрый день

Подскажите пожалуйста, чем отличаются executionMessage.OriginSide ( http://doc.stocksharp.ru/html/P_StockSharp_Messages_ExecutionMessage_OriginSide.htm - Инициатор сделки (продавец или покупатель)) и executionMessage.Side ( http://doc.stocksharp.ru/html/P_StockSharp_Messages_ExecutionMessage_Side.htm - Направление заявки (покупка или продажа))? Логически OriginSide == Side

Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy