/* * -------------------------------------------------------------- * 报单/撤单,委托回报/成交回报 * -------------------------------------------------------------- */ public bool OrderInsert(CustomOrder order, out string errMsg) { if (!CheckOrder(order, out errMsg)) { return(false); } // 构造下单参数 ThostFtdcInputOrderField inOrder = new ThostFtdcInputOrderField(); inOrder.BrokerID = BROKER_ID; inOrder.InvestorID = INVESTOR_ID; inOrder.OrderPriceType = EnumOrderPriceTypeType.LimitPrice; inOrder.InstrumentID = order.InstrumentID; inOrder.OrderRef = iOrderRef.ToString(); inOrder.LimitPrice = order.Price; inOrder.Direction = (order.Direction == BS_CODE.Buy) ? EnumDirectionType.Buy : EnumDirectionType.Sell; inOrder.CombOffsetFlag_0 = (order.OffsetFlag == OC_CODE.Open) ? EnumOffsetFlagType.Open : EnumOffsetFlagType.Close; inOrder.VolumeTotalOriginal = order.Volume; inOrder.VolumeCondition = EnumVolumeConditionType.AV; inOrder.MinVolume = 0; // ?? inOrder.ContingentCondition = EnumContingentConditionType.Immediately; inOrder.CombHedgeFlag_0 = HedgeFlagType; inOrder.TimeCondition = EnumTimeConditionType.GFD; inOrder.ForceCloseReason = EnumForceCloseReasonType.NotForceClose; inOrder.IsAutoSuspend = 0; inOrder.UserForceClose = 0; // 更新 order.OrderNo = iOrderRef; iOrderRef++; // 下单 var ret = trader.ReqOrderInsert(inOrder, iRequestID++); errMsg = (ret == 0) ? "-" : "CTP报单录入失败,返回值:" + ret; return(ret == 0); }