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;
 }
Beispiel #2
0
        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);
                }
            }
        }