public void TestOrderAction() { _api.OnRspOrderAction += new TradeApi.RspOrderAction((ref CThostFtdcInputOrderActionField pInputOrderAction, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, byte bIsLast) => { if (pRspInfo.ErrorID != 0) { Console.WriteLine(pRspInfo.ErrorMsg); Assert.IsTrue(pRspInfo.ErrorID == 0); } }); _api.OnRtnOrder += new TradeApi.RtnOrder((ref CThostFtdcOrderField pOrder) => { if (pOrder.OrderStatus == TThostFtdcOrderStatusType.Canceled) { Console.WriteLine("撤单成功, BrokerID: {0}, OrderSysID: {1}", pOrder.BrokerID, pOrder.OrderSysID); } else { Console.WriteLine("下单成功, BrokerID: {0}, OrderSysID: {1}", pOrder.BrokerID, pOrder.OrderSysID); CThostFtdcInputOrderActionField field = new CThostFtdcInputOrderActionField(); field.ActionFlag = TThostFtdcActionFlagType.Delete; field.BrokerID = _brokerID; field.InvestorID = _investorID; field.InstrumentID = "TF1809"; if (pOrder.FrontID != 0) { field.FrontID = pOrder.FrontID; } if (pOrder.SessionID != 0) { field.SessionID = pOrder.SessionID; } if (pOrder.OrderRef != "") { field.OrderRef = pOrder.OrderRef; } field.ExchangeID = pOrder.ExchangeID; if (pOrder.OrderSysID != null) { field.OrderSysID = new string('\0', 21 - pOrder.OrderSysID.Length) + pOrder.OrderSysID; } _api.OrderAction(1, field); Thread.Sleep(50); } Thread.Sleep(50); }); _api.OnRspOrderInsert += new TradeApi.RspOrderInsert((ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, byte bIsLast) => { if (pRspInfo.ErrorID != 0) { Console.WriteLine(pRspInfo.ErrorMsg); Assert.IsTrue(pRspInfo.ErrorID == 0); } }); CThostFtdcInputOrderField order = new CThostFtdcInputOrderField(); order.BrokerID = _brokerID; order.InvestorID = _investorID; order.InstrumentID = "TF1809"; order.OrderRef = "1"; order.UserID = _investorID; order.OrderPriceType = TThostFtdcOrderPriceTypeType.LimitPrice; order.Direction = TThostFtdcDirectionType.Buy; order.CombOffsetFlag = TThostFtdcOffsetFlagType.Open; order.CombHedgeFlag = TThostFtdcHedgeFlagType.Speculation; order.LimitPrice = 97.150; order.VolumeTotalOriginal = 1; order.TimeCondition = TThostFtdcTimeConditionType.GFD; order.VolumeCondition = TThostFtdcVolumeConditionType.AV; order.MinVolume = 1; order.ContingentCondition = TThostFtdcContingentConditionType.Immediately; order.ForceCloseReason = TThostFtdcForceCloseReasonType.NotForceClose; order.IsAutoSuspend = (int)TThostFtdcBoolType.No; order.BusinessUnit = null; order.UserForceClose = (int)TThostFtdcBoolType.No; _api.OrderInsert(1, order); Thread.Sleep(500); }