Exemplo n.º 1
0
 public OnRspOrderInsertArgs(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.pInputOrder = pInputOrder;
     this.pRspInfo    = pRspInfo;
     this.nRequestID  = nRequestID;
     this.bIsLast     = bIsLast;
 }
Exemplo n.º 2
0
 private void OnErrRtnOrderInsert_callback(object sender, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     if (null != OnErrRtnOrderInsert)
     {
         OnErrRtnOrderInsert(this, new OnErrRtnOrderInsertArgs(ref pInputOrder, ref pRspInfo));
     }
 }
Exemplo n.º 3
0
 private void OnRspOrderInsert_callback(object sender, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (null != OnRspOrderInsert)
     {
         OnRspOrderInsert(this, new OnRspOrderInsertArgs(ref pInputOrder, ref pRspInfo, nRequestID, bIsLast));
     }
 }
Exemplo n.º 4
0
 private void OnErrRtnOrderInsert_callback(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     if (null != OnErrRtnOrderInsert)
     {
         OnErrRtnOrderInsert(this, new OnErrRtnOrderInsertArgs(pTraderApi, ref pInputOrder, ref pRspInfo));
     }
 }
Exemplo n.º 5
0
        private void OnErrRtnOrderInsert(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
        {
            SingleOrder order;
            string      strKey = string.Format("{0}:{1}:{2}", _RspUserLogin.FrontID, _RspUserLogin.SessionID, pInputOrder.OrderRef);

            if (_OrderRef2Order.TryGetValue(strKey, out order))
            {
                tdlog.Error("交易所回应:{0},{1},开平{2},价{3},原量{4},引用{5},{6}#{7}",
                            pInputOrder.InstrumentID, pInputOrder.Direction, pInputOrder.CombOffsetFlag, pInputOrder.LimitPrice,
                            pInputOrder.VolumeTotalOriginal,
                            pInputOrder.OrderRef, pRspInfo.ErrorID, pRspInfo.ErrorMsg);

                order.Text = string.Format("{0}|{1}#{2}", order.Text.Substring(0, Math.Min(order.Text.Length, 64)), pRspInfo.ErrorID, pRspInfo.ErrorMsg);
                EmitRejected(order, order.Text);
                //没得办法,这样全撤了状态就唯一了
                Dictionary <string, CThostFtdcOrderField> _Ref2Action;
                if (_Orders4Cancel.TryGetValue(order, out _Ref2Action))
                {
                    lock (_Ref2Action)
                    {
                        _Ref2Action.Remove(strKey);
                        if (0 == _Ref2Action.Count())
                        {
                            _Orders4Cancel.Remove(order);
                            return;
                        }
                        Cancel(order);
                    }
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// InputOrderField转换为OrderField
        /// </summary>
        public static OrderField InputOrderField_To_OrderField(CThostFtdcInputOrderField iof, CThostFtdcRspInfoField pRspInfo)
        {
            CThostFtdcOrderField cfof = new CThostFtdcOrderField();

            cfof.BrokerID            = iof.BrokerID;
            cfof.InvestorID          = iof.InvestorID;
            cfof.InstrumentID        = iof.InstrumentID;
            cfof.OrderRef            = iof.OrderRef;
            cfof.UserID              = iof.UserID;
            cfof.CombHedgeFlag       = iof.CombHedgeFlag;
            cfof.CombHedgeFlag       = iof.CombHedgeFlag;
            cfof.ContingentCondition = iof.ContingentCondition;
            cfof.Direction           = iof.Direction;
            cfof.ExchangeID          = iof.ExchangeID;
            cfof.ForceCloseReason    = iof.ForceCloseReason;
            cfof.GTDDate             = iof.GTDDate;
            cfof.LimitPrice          = iof.LimitPrice;
            cfof.StopPrice           = iof.StopPrice;
            cfof.OrderPriceType      = iof.OrderPriceType;
            cfof.TimeCondition       = iof.TimeCondition;
            cfof.VolumeTotalOriginal = iof.VolumeTotalOriginal;
            cfof.MinVolume           = iof.MinVolume;
            cfof.VolumeCondition     = iof.VolumeCondition;
            cfof.StatusMsg           = string.Format("{0}: {1}", pRspInfo.ErrorID, pRspInfo.ErrorMsg);
            return(new OrderField(cfof));
        }
 public void OnRspOrderInsert(CThostFtdcInputOrderField pInputOrder, CThostFtdcRspInfoField pRspInfo, int nRequestID,
                              bool bIsLast)
 {
     if (pRspInfo.ErrorID != 0)
     {
         Console.WriteLine("OnRspOrderInsert Error: {0}", pRspInfo.ErrorMsg);
     }
     else
     {
         Console.WriteLine("OnRspOrderInsert");
     }
 }
Exemplo n.º 8
0
        private void OnErrRtnOrderInsert(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
        {
            tdlog.Error("交易所回应:{0},{1},开平{2},价{3},原量{4},引用{5},{6}#{7}",
                        pInputOrder.InstrumentID, pInputOrder.Direction, pInputOrder.CombOffsetFlag, pInputOrder.LimitPrice,
                        pInputOrder.VolumeTotalOriginal,
                        pInputOrder.OrderRef, pRspInfo.ErrorID, pRspInfo.ErrorMsg);

            GenericOrderItem item;
            string           strKey = string.Format("{0}:{1}:{2}", _RspUserLogin.FrontID, _RspUserLogin.SessionID, pInputOrder.OrderRef);

            if (orderMap.TryGetValue(strKey, out item))
            {
                EmitRejected(item, pRspInfo.ErrorID, pRspInfo.ErrorMsg);
                OnLastStatus(item, "", strKey);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 处理错单: 交易所返回
        /// </summary>
        /// <param name="pInputOrder"></param>
        /// <param name="pRspInfo"></param>
        private void CTPOnErrRtnOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
        {
            string     id = string.Format("{0}|{1}|{2}", _session, _front, pInputOrder.OrderRef);
            OrderField of = new OrderField();

            if (IsLogin)// && DicOrderField.TryGetValue(id, out of))// && of.Status != OrderStatus.Canceled && of.IsLocal)
            {
                var pOrder = pInputOrder;
                int tmp;
                of = new OrderField
                {
                    Custom       = int.TryParse(pOrder.OrderRef, out tmp) ? tmp % 1000000 : 0,
                    InstrumentID = pOrder.InstrumentID,
                    InsertTime   = DateTime.Now.ToString("HH:mm:ss"), //为null会导致界面显示错误
                                                                      //SysID = string.Empty,        //为null会导致界面显示错误
                    TradeTime  = string.Empty,
                    IsLocal    = true,
                    LimitPrice = pOrder.LimitPrice,
                    OrderID    = id,
                    Volume     = pOrder.VolumeTotalOriginal,
                    VolumeLeft = pOrder.VolumeTotalOriginal, // pOrder->VolumeTotal;
                                                             //f->VolumeLeft = pOrder->VolumeTotal; //由ontrade处理
                                                             //Status = OrderStatus.Normal,
                                                             //Status = OrderStatus.Canceled,
                    Status    = OrderStatus.Error,
                    StatusMsg = pRspInfo.ErrorID + "|" + pRspInfo.ErrorMsg,
                    Direction = pOrder.Direction == TThostFtdcDirectionType.THOST_FTDC_D_Buy ? DirectionType.Buy : DirectionType.Sell,
                    Hedge     = (TThostFtdcHedgeFlagType)pOrder.CombHedgeFlag[0] == TThostFtdcHedgeFlagType.THOST_FTDC_HF_Speculation ? HedgeType.Speculation :
                                (TThostFtdcHedgeFlagType)pOrder.CombHedgeFlag[0] == TThostFtdcHedgeFlagType.THOST_FTDC_HF_Arbitrage ? HedgeType.Arbitrage : HedgeType.Hedge,
                    Offset = (TThostFtdcOffsetFlagType)pOrder.CombOffsetFlag[0] == TThostFtdcOffsetFlagType.THOST_FTDC_OF_Open ? OffsetType.Open :
                             (TThostFtdcOffsetFlagType)pOrder.CombOffsetFlag[0] == TThostFtdcOffsetFlagType.THOST_FTDC_OF_CloseToday ? OffsetType.CloseToday : OffsetType.Close,
                };
                of.Status    = OrderStatus.Error;
                of.StatusMsg = string.Format("[RtnErrorID:{0}]{1}", pRspInfo.ErrorID, pRspInfo.ErrorMsg);

                _OnRtnErrOrder?.Invoke(this, new ErrOrderArgs {
                    ErrorID = pRspInfo.ErrorID, ErrorMsg = pRspInfo.ErrorMsg, Value = of
                });
            }
        }
Exemplo n.º 10
0
        void trader_ErrorReturnOrderInsertResponse(object sender, CTPEventArgs <CThostFtdcInputOrderField> e)
        {
            PrintObject(e.Value);

            this.Invoke(new Action(() =>
            {
                UpdateBindTable(this.idOrderDataGridView, e.Value, new Func <DataRow, object, bool>(
                                    (DataRow row, object obj) =>
                {
                    CThostFtdcInputOrderField order = (CThostFtdcInputOrderField)obj;

                    if (order.OrderRef == (string)row["OrderRef"])
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }));
            }));
        }
Exemplo n.º 11
0
        public void TestOrderInsert()
        {
            _api.OnRtnOrder += new TradeApi.RtnOrder((ref CThostFtdcOrderField pOrder) =>
            {
                Console.WriteLine("下单成功, BrokerID: {0}, OrderSysID: {1}", pOrder.BrokerID, pOrder.OrderSysID);
            });
            _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.Sell;
            order.CombOffsetFlag      = TThostFtdcOffsetFlagType.Open;
            order.CombHedgeFlag       = TThostFtdcHedgeFlagType.Speculation;
            order.LimitPrice          = 97.550;
            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);
        }
Exemplo n.º 12
0
        private void OnRspOrderInsert(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            SingleOrder order;
            string      strKey = string.Format("{0}:{1}:{2}", _RspUserLogin.FrontID, _RspUserLogin.SessionID, pInputOrder.OrderRef);

            if (_OrderRef2Order.TryGetValue(strKey, out order))
            {
                if (OutputLog)
                {
                    Console.WriteLine("CTP回应:{0},{1},开平{2},价{3},原量{4},引用{5},{6}",
                                      pInputOrder.InstrumentID, pInputOrder.Direction, pInputOrder.CombOffsetFlag, pInputOrder.LimitPrice,
                                      pInputOrder.VolumeTotalOriginal,
                                      pInputOrder.OrderRef, pRspInfo.ErrorMsg);
                }
                order.Text = string.Format("{0} {1}", order.Text, pRspInfo.ErrorMsg);
                EmitRejected(order, order.Text);
                //这些地方没法处理混合报单
                //没得办法,这样全撤了状态就唯一了
                //但由于不知道在错单时是否会有报单回报,所以在这查一次,以防重复撤单出错
                //找到对应的报单回应
                Dictionary <string, CThostFtdcOrderField> _Ref2Action;
                if (_Orders4Cancel.TryGetValue(order, out _Ref2Action))
                {
                    lock (_Ref2Action)
                    {
                        _Ref2Action.Remove(strKey);
                        if (0 == _Ref2Action.Count())
                        {
                            _Orders4Cancel.Remove(order);
                            return;
                        }
                        Cancel(order);
                    }
                }
            }
        }
Exemplo n.º 13
0
 private void OnErrRtnOrderInsert_3(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     OnErrRtnOrderInsert_1(this, ref pInputOrder, ref pRspInfo);
 }
Exemplo n.º 14
0
 private void OnRspOrderInsert_3(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     OnRspOrderInsert_1(this, ref pInputOrder, ref pRspInfo, nRequestID, bIsLast);
 }
 ///报单录入错误回报
 public void OnErrRtnOrderInsert(CThostFtdcInputOrderField pInputOrder, CThostFtdcRspInfoField pRspInfo)
 {
     Console.WriteLine("OnErrRtnOrderInsert");
 }
Exemplo n.º 16
0
 private void OnErrRtnOrderInsert_3(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     OnErrRtnOrderInsert_1(this, pTraderApi, ref pInputOrder, ref pRspInfo);
 }
Exemplo n.º 17
0
 private void OnRspOrderInsert_3(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     OnRspOrderInsert_1(this, pTraderApi, ref pInputOrder, ref pRspInfo, nRequestID, bIsLast);
 }
Exemplo n.º 18
0
 private void OnErrRtnOrderInsert_3(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     OnErrRtnOrderInsert_1(this, pTraderApi, ref pInputOrder, ref pRspInfo);
 }
 public override void OnRspOrderInsert(CThostFtdcInputOrderField pInputOrder, CThostFtdcRspInfoField pRspInfo, int nRequestID,
                                       bool bIsLast)
 {
     _callbackApi.OnRspOrderInsert(pInputOrder, pRspInfo, nRequestID, bIsLast);
 }
Exemplo n.º 20
0
 private void OnRspOrderInsert_callback(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (null != OnRspOrderInsert)
     {
         OnRspOrderInsert(this, new OnRspOrderInsertArgs(pTraderApi, ref pInputOrder, ref pRspInfo, nRequestID, bIsLast));
     }
 }
Exemplo n.º 21
0
        /// <summary>
        /// 下普通单错误时回报
        /// </summary>
        private void CTradeApi_OnRspOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            OrderField of = ConvertFunctions.InputOrderField_To_OrderField(pInputOrder, pRspInfo);

            this._OnErrorOrder?.Invoke(of);
        }
Exemplo n.º 22
0
        /// <summary>
        /// 处理错单: CTP平台返回
        /// </summary>
        /// <param name="pInputOrder"></param>
        /// <param name="pRspInfo"></param>
        /// <param name="nRequestID"></param>
        /// <param name="bIsLast"></param>
        private void CTPOnRspOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            //ref重复::重发
            //if (pRspInfo.ErrorID == 22)
            //{
            //	if (!IsLogin) return;

            //	CThostFtdcInputOrderField f = pInputOrder;
            //	//Thread.Sleep(50);
            //	f.OrderRef = string.Format("{0:000000}{1}", ++_req, f.OrderRef.Length >= 6 ? f.OrderRef.Substring(f.OrderRef.Length - 6) : (new string('0', 6 - f.OrderRef.Length) + f.OrderRef));
            //	_t.ReqOrderInsert()
            //	this._import.ReqCommand(EnumReq.ReqOrderInsert, f);
            //}
            //else
            {
                string id = string.Format("{0}|{1}|{2}", _session, _front, pInputOrder.OrderRef);

                int tmp;
                if (DicOrderField.TryAdd(id, new OrderField
                {
                    Custom = int.TryParse(pInputOrder.OrderRef, out tmp) ? tmp % 1000000 : 0, // pOrder.OrderRef.Length <= 6 ? string.Empty : pOrder.OrderRef.Substring(pOrder.OrderRef.Length - 6),
                                                                                              //InsertTime = DicOrderField.Max(n => n.Value.InsertTime) ?? DateTime.Now.ToString("HH:mm:ss"),
                    InstrumentID = pInputOrder.InstrumentID,
                    InsertTime = DateTime.Now.ToString("HH:mm:ss"),                           //为null会导致界面显示错误
                                                                                              //SysID = string.Empty,        //为null会导致界面显示错误
                    TradeTime = string.Empty,
                    IsLocal = true,
                    LimitPrice = pInputOrder.LimitPrice,
                    OrderID = id,
                    Volume = pInputOrder.VolumeTotalOriginal,
                    VolumeLeft = pInputOrder.VolumeTotalOriginal, // pOrder->VolumeTotal;
                                                                  //f->VolumeLeft = pOrder->VolumeTotal; //由ontrade处理
                                                                  //Status = OrderStatus.Normal,
                                                                  //Status = OrderStatus.Canceled,
                    Status = OrderStatus.Error,
                    StatusMsg = pRspInfo.ErrorID + "|" + pRspInfo.ErrorMsg,
                    Direction = pInputOrder.Direction == TThostFtdcDirectionType.THOST_FTDC_D_Buy ? DirectionType.Buy : DirectionType.Sell,
                    Hedge = (TThostFtdcHedgeFlagType)pInputOrder.CombHedgeFlag[0] == TThostFtdcHedgeFlagType.THOST_FTDC_HF_Speculation ? HedgeType.Speculation :
                            (TThostFtdcHedgeFlagType)pInputOrder.CombHedgeFlag[0] == TThostFtdcHedgeFlagType.THOST_FTDC_HF_Arbitrage ? HedgeType.Arbitrage : HedgeType.Hedge,
                    Offset = (TThostFtdcOffsetFlagType)pInputOrder.CombOffsetFlag[0] == TThostFtdcOffsetFlagType.THOST_FTDC_OF_Open ? OffsetType.Open :
                             (TThostFtdcOffsetFlagType)pInputOrder.CombOffsetFlag[0] == TThostFtdcOffsetFlagType.THOST_FTDC_OF_CloseToday ? OffsetType.CloseToday : OffsetType.Close,
                }))
                {
                    string it = DicOrderField.Max(n => n.Value.InsertTime);
                    if (string.IsNullOrEmpty(it))
                    {
                        it = DateTime.Now.ToString("HH:mm:ss");
                    }
                    else
                    {
                        it = TimeSpan.Parse(it).Add(TimeSpan.FromMilliseconds(1)).ToString(@"hh\:mm\:ss"); //加1秒
                    }
                    DicOrderField[id].InsertTime = it;
                    if (IsLogin)
                    {
                        _OnRtnErrOrder?.Invoke(this, new ErrOrderArgs {
                            ErrorID = pRspInfo.ErrorID, ErrorMsg = pRspInfo.ErrorMsg, Value = DicOrderField[id]
                        });
                    }
                }
            }
        }
Exemplo n.º 23
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start testing CTP Trade API");
            const string ctpServerAddress = "tcp://ctpfz1-front1.citicsf.com:51205";
            var          api = CThostFtdcTraderApi.CreateFtdcTraderApi();
            var          spi = new CTPTradeCallbackImpl();

            api.RegisterSpi(spi);

            api.SubscribePrivateTopic(THOST_TE_RESUME_TYPE.THOST_TERT_QUICK);
            api.SubscribePublicTopic(THOST_TE_RESUME_TYPE.THOST_TERT_QUICK);
            api.RegisterFront(ctpServerAddress);
            api.Init();

            while (!spi.IsConnected)
            {
                Thread.Sleep(100);
                Console.WriteLine("is not connected...");
            }

            var userLogin = new CThostFtdcReqUserLoginField();

            userLogin.BrokerID = "66666";
            userLogin.UserID   = "11782";
            userLogin.Password = "******";

            int requestId = 0;

            api.ReqUserLogin(userLogin, requestId++);

            while (!spi.IsReady)
            {
                Thread.Sleep(100);
                Console.WriteLine("is not ready...");
            }

            Thread.Sleep(1100);

            var settlementConfirm = new CThostFtdcSettlementInfoConfirmField()
            {
                BrokerID   = userLogin.BrokerID,
                InvestorID = userLogin.UserID
            };

            api.ReqSettlementInfoConfirm(settlementConfirm, requestId++);

            Thread.Sleep(3000);

            var order = new CThostFtdcInputOrderField();

            order.BrokerID            = userLogin.BrokerID;
            order.InvestorID          = userLogin.UserID;
            order.InstrumentID        = "IF1803";
            order.OrderRef            = spi.GetNextOrderRef();
            order.UserID              = userLogin.UserID;
            order.Direction           = '0';
            order.CombOffsetFlag      = "0";
            order.CombHedgeFlag       = "1";
            order.LimitPrice          = 4000.0;
            order.VolumeTotalOriginal = 1;
            order.VolumeCondition     = '1';
            order.MinVolume           = 1;
            order.ForceCloseReason    = '0';
            order.IsAutoSuspend       = 0;
            order.UserForceClose      = 0;
            order.GTDDate             = "";
            order.ContingentCondition = '1';
            order.OrderPriceType      = '2';
            order.TimeCondition       = '3';
            order.StopPrice           = 0;
            order.RequestID           = requestId++;

            api.ReqOrderInsert(order, order.RequestID);

            while (true)
            {
                Thread.Sleep(100);
            }
        }
Exemplo n.º 24
0
 public OnErrRtnOrderInsertArgs(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     this.pTraderApi = pTraderApi;
     this.pInputOrder = pInputOrder;
     this.pRspInfo = pRspInfo;
 }
 public override void OnErrRtnOrderInsert(CThostFtdcInputOrderField pInputOrder, CThostFtdcRspInfoField pRspInfo)
 {
     _callbackApi.OnErrRtnOrderInsert(pInputOrder, pRspInfo);
 }
Exemplo n.º 26
0
    public virtual int ReqOrderInsert(CThostFtdcInputOrderField pInputOrder, int nRequestID)
    {
        int ret = thosttradeapiPINVOKE.CThostFtdcTraderApi_ReqOrderInsert(swigCPtr, CThostFtdcInputOrderField.getCPtr(pInputOrder), nRequestID);

        return(ret);
    }
Exemplo n.º 27
0
 public int ReqOrderInsert(CThostFtdcInputOrderField pInputOrder, int nRequestID)
 {
     return(_traderApi.ReqOrderInsert(pInputOrder, nRequestID));
 }
Exemplo n.º 28
0
 public OnRspOrderInsertArgs(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.pTraderApi = pTraderApi;
     this.pInputOrder = pInputOrder;
     this.pRspInfo = pRspInfo;
     this.nRequestID = nRequestID;
     this.bIsLast = bIsLast;
 }
Exemplo n.º 29
0
 public OnErrRtnOrderInsertArgs(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     this.pTraderApi  = pTraderApi;
     this.pInputOrder = pInputOrder;
     this.pRspInfo    = pRspInfo;
 }
Exemplo n.º 30
0
 public OnErrRtnOrderInsertArgs(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     this.pInputOrder = pInputOrder;
     this.pRspInfo    = pRspInfo;
 }
Exemplo n.º 31
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);
        }
Exemplo n.º 32
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CThostFtdcInputOrderField obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
Exemplo n.º 33
0
 private void OnErrRtnOrderInsert_callback(IntPtr pTraderApi, ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
 {
     if (null != OnErrRtnOrderInsert)
     {
         OnErrRtnOrderInsert(this, new OnErrRtnOrderInsertArgs(pTraderApi, ref pInputOrder, ref pRspInfo));
     }
 }
Exemplo n.º 34
0
        /// <summary>
        /// 错单回报
        /// </summary>
        private void CTradeApi_OnErrRtnOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo)
        {
            OrderField of = ConvertFunctions.InputOrderField_To_OrderField(pInputOrder, pRspInfo);

            this._OnErrorOrder?.Invoke(of);
        }