Exemple #1
0
        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);
        }