public ClosePositionResponse( MarketOrderTransaction longOrderCreateTransaction, OrderFillTransaction longOrderFillTransaction, OrderCancelTransaction longOrderCancelTransaction, MarketOrderTransaction shortOrderCreateTransaction, OrderFillTransaction shortOrderFillTransaction, OrderCancelTransaction shortOrderCancelTransaction, ImmutableList <string> relatedTransactionIDs, string lastTransactionID) { LongOrderCreateTransaction = longOrderCreateTransaction; LongOrderFillTransaction = longOrderFillTransaction; LongOrderCancelTransaction = longOrderCancelTransaction; ShortOrderCreateTransaction = shortOrderCreateTransaction; ShortOrderFillTransaction = shortOrderFillTransaction; ShortOrderCancelTransaction = shortOrderCancelTransaction; RelatedTransactionIDs = relatedTransactionIDs; LastTransactionID = lastTransactionID; }
void _transactionsSession_DataReceived(OkonkwoOandaV20.TradeLibrary.DataTypes.Stream.TransactionStreamResponse data) { if (data.transaction.type == "LIMIT_ORDER") { LimitOrderTransaction order = (LimitOrderTransaction)data.transaction; Order newOrder = new Order(); newOrder.NumberUser = Convert.ToInt32(order.clientExtensions.id); newOrder.NumberMarket = order.id.ToString(); newOrder.SecurityNameCode = order.instrument; newOrder.Price = Convert.ToDecimal(order.price); newOrder.TimeCallBack = DateTime.Parse(order.time); newOrder.State = OrderStateType.Activ; if (NewOrderEvent != null) { NewOrderEvent(newOrder); } } else if (data.transaction.type == "LIMIT_ORDER_REJECT") { LimitOrderRejectTransaction order = (LimitOrderRejectTransaction)data.transaction; Order newOrder = new Order(); newOrder.NumberUser = Convert.ToInt32(order.clientExtensions.id); newOrder.NumberMarket = order.id.ToString(); newOrder.SecurityNameCode = order.instrument; newOrder.Price = Convert.ToDecimal(order.price); newOrder.State = OrderStateType.Fail; newOrder.TimeCallBack = DateTime.Parse(order.time); if (NewOrderEvent != null) { NewOrderEvent(newOrder); } } else if (data.transaction.type == "ORDER_FILL") { OrderFillTransaction order = (OrderFillTransaction)data.transaction; MyTrade trade = new MyTrade(); trade.NumberOrderParent = order.clientOrderID; trade.NumberTrade = order.id.ToString(); trade.Price = Convert.ToDecimal(order.price); trade.Volume = Convert.ToDecimal(order.units); trade.Time = DateTime.Parse(order.time); trade.SecurityNameCode = order.instrument; Order myOrder = _orders.Find(o => o.NumberUser.ToString() == order.clientOrderID); if (myOrder == null) { return; } trade.Volume = myOrder.Volume; if (order.units == 1) { trade.Side = Side.Buy; } else { trade.Side = Side.Sell; } if (NewMyTradeEvent != null) { NewMyTradeEvent(trade); } } else if (data.transaction.type == "SystemOrderReject") { Order newOrder = new Order(); // newOrder.NumberUser = order.NumberUser; newOrder.State = OrderStateType.Fail; //trade.Time = DateTime.Parse(order.time); if (NewOrderEvent != null) { NewOrderEvent(newOrder); } } else if (data.transaction.type == "ORDER_CANCEL") { OrderCancelTransaction order = (OrderCancelTransaction)data.transaction; Order newOrder = new Order(); newOrder.NumberUser = Convert.ToInt32(order.clientOrderID); newOrder.State = OrderStateType.Cancel; newOrder.TimeCallBack = DateTime.Parse(order.time); newOrder.TimeCancel = newOrder.TimeCallBack; if (NewOrderEvent != null) { NewOrderEvent(newOrder); } } }