Example #1
0
 protected override void OnRspQryOrderInfo(CLRDFITCOrderCommRtnField OrderData, CLRDFITCErrorRtnField ErrorInfo, bool bIsLast)
 {
     if (ProgramTradeEvents.RspEventHandler.ContainsKey(RspSpiModules.QryOrders) && null != ProgramTradeEvents.RspEventHandler[RspSpiModules.QryOrders])
     {
         TypedRspEventArgs <CLRDFITCOrderCommRtnField, CLRDFITCErrorRtnField> evt = new TypedRspEventArgs <CLRDFITCOrderCommRtnField, CLRDFITCErrorRtnField> {
             RequestID = OrderData.lRequestID, ErrorID = ErrorInfo.nErrorID, Message = ErrorInfo.errorMsg, Data = OrderData, Error = ErrorInfo, IsLast = bIsLast
         };
         Parallel.ForEach(ProgramTradeEvents.RspEventHandler[RspSpiModules.QryOrders].GetInvocationList(), handler =>
         {
             (handler as EventHandler <RspEventArgs>).BeginInvoke(this, evt, null, null);
         });
     }
 }
Example #2
0
        public static OrderDetail CreateDetail(CLRDFITCOrderCommRtnField 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.openClose)
            {
            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;
            result.MatchedPrice  = order.matchedPrice;
            result.MatchedVolume = order.matchedAmount;
            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);
        }