コード例 #1
0
ファイル: XTradeSpi.cs プロジェクト: frozenpine/ProgramTrade
 protected override void OnRtnOrder(CLRDFITCOrderRtnField RtnOrderData)
 {
     if (ProgramTradeEvents.RspEventHandler.ContainsKey(RspSpiModules.RtnOrder) && null != ProgramTradeEvents.RspEventHandler[RspSpiModules.RtnOrder])
     {
         TypedRspEventArgs <CLRDFITCOrderRtnField, object> evt = new TypedRspEventArgs <CLRDFITCOrderRtnField, object> {
             RequestID = -1, ErrorID = 0, Message = RtnOrderData.statusMsg, Data = RtnOrderData, Error = null, IsLast = true
         };
         Parallel.ForEach(ProgramTradeEvents.RspEventHandler[RspSpiModules.RtnOrder].GetInvocationList(), handler =>
         {
             (handler as EventHandler <RspEventArgs>).BeginInvoke(this, evt, null, null);
         });
     }
 }
コード例 #2
0
        public static OrderDetail CreateDetail(CLRDFITCOrderRtnField order)
        {
            OrderDetail result = new OrderDetail();

            result.OrderSysID = order.spdOrderID;
            switch (order.exchangeID)
            {
            case "DCE":
                result.ExchangeID = ExchangeID.DCE;
                break;

            case "CZCE":
                result.ExchangeID = ExchangeID.CZCE;
                break;

            case "CFFEX":
                result.ExchangeID = ExchangeID.CFFEX;
                break;

            case "SHFE":
                result.ExchangeID = ExchangeID.SHFE;
                break;
            }
            result.InstrumentID = order.instrumentID;
            switch (order.openCloseType)
            {
            case (int)CLRDFITCOpenCloseType.SPD_OPEN:
                result.Operation = Operation.Open;
                break;

            case (int)CLRDFITCOpenCloseType.SPD_CLOSE:
                result.Operation = Operation.Close;
                break;
            }
            switch (order.buySellType)
            {
            case (short)CLRDFITCBuySellType.SPD_BUY:
                result.Direction = Direction.Buy;
                break;

            case (short)CLRDFITCBuySellType.SPD_SELL:
                result.Direction = Direction.Sell;
                break;
            }
            result.LimitPrice = order.insertPrice;
            result.Volume     = order.orderAmount;
            switch (order.orderStatus)
            {
            case (short)CLRDFITCOrderAnswerStatusType.SPD_CANCELED:
                result.OrderStatus = OrderState.AllCanceled;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_FILLED:
                result.OrderStatus = OrderState.AllDealed;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_IN_QUEUE:
                result.OrderStatus = OrderState.Queuening;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_PARTIAL:
                result.OrderStatus = OrderState.PartialDealed;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_PARTIAL_CANCELED:
                result.OrderStatus = OrderState.PartialCaneled;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_IN_CANCELING:
                result.OrderStatus = OrderState.Canceling;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_ERROR:
                result.OrderStatus = OrderState.Error;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_PLACED:
                result.OrderStatus = OrderState.Placed;
                break;

            case (short)CLRDFITCOrderAnswerStatusType.SPD_TRIGGERED:
                result.OrderStatus = OrderState.Triggered;
                break;
            }
            return(result);
        }