Example #1
0
 public override void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("交易登录失败:" + pRspInfo.ErrorMsg);
         return;
     }
     LogCenter.Log("交易登录成功");
     AccountCenter.Instance.IsTDLogin = true;
     this.instruments.Clear();
     LogCenter.Log("请求查询合约");
     int i = this.ReqQryInstrument(new ThostFtdcQryInstrumentField(), 0);
     if (i != 0)
     {
         LogCenter.Error("请求查询合约错误:" + CTPErrorHelper.GetError(i));
     }
     var field = new ThostFtdcSettlementInfoConfirmField
     {
         BrokerID = AccountCenter.Instance.Account.BrokerID,
         InvestorID = AccountCenter.Instance.Account.InvestorID,
         ConfirmDate = DateTime.Today.ToString(),
         ConfirmTime = DateTime.Now.ToLongTimeString()
     };
     LogCenter.Log("投资者结算结果确认");
     i = this.ReqSettlementInfoConfirm(field, 0);
     if (i != 0)
     {
         LogCenter.Error("投资者结算结果确认错误:" + CTPErrorHelper.GetError(i));
     }
 }
Example #2
0
        /// <summary>
        /// 错误应答信息
        /// </summary>
        /// <param name="pRspInfo"></param>
        /// <returns></returns>
        bool IsErrorRspInfo(ThostFtdcRspInfoField pRspInfo)
        {
            // 如果ErrorID != 0, 说明收到了错误的响应
            bool bResult = ((pRspInfo != null) && (pRspInfo.ErrorID != 0));

            if (bResult)
            {
                Console.WriteLine("--->>> ErrorID={0}, ErrorMsg={1}", pRspInfo.ErrorID, pRspInfo.ErrorMsg);
            }
            return(bResult);
        }
Example #3
0
        private bool IsErrorRspInfo(ThostFtdcRspInfoField pRspInfo)
        {
            var flag = (pRspInfo != null && pRspInfo.ErrorID != 0);

            if (flag)
            {
                HandleErrorInternal("CPT返回错误:ErrorID=" + pRspInfo.ErrorID + ",ErrorMsg=" + pRspInfo.ErrorMsg);
                //HandleErrorInternal(pRspInfo.ErrorMsg, pRspInfo.ErrorID);
            }
            return(flag);
        }
Example #4
0
 void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     __DEBUGPF__();
     if (bIsLast && !IsErrorRspInfo(pRspInfo))
     {
         ///获取当前交易日
         Console.WriteLine("--->>> 获取当前交易日 = " + api.GetTradingDay());
         // 请求订阅行情
         SubscribeMarketData();
     }
 }
Example #5
0
        private void TraderAdapter_OnRspQryInstrument(ThostFtdcInstrumentField pInstrument,
                                                      ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast)
        {
            try
            {
                if (MyUtils.IsWrongRspInfo(pRspInfo))
                {
                    MyUtils.ReportError(pRspInfo, "查询合约错误");
                    return;
                }

                if (pInstrument != null)
                {
                    if (!pInstrument.InstrumentID.Contains("efp") && !pInstrument.InstrumentID.Contains("eof"))
                    {
                        if (pInstrument.InstrumentID.Contains("&"))
                        {
                            //套利合约
                            MyUtils.ComboInstrumentInfo[pInstrument.InstrumentID] = pInstrument;
                        }
                        else
                        {
                            //标准
                            MyUtils.StandardInstrumentInfo[pInstrument.InstrumentID] = pInstrument;
                        }
                        MyUtils.CategoryToExchangeId[MyUtils.GetInstrumentCategory(pInstrument.InstrumentID)] =
                            pInstrument.ExchangeID;

                        var temp =
                            string.Format(
                                "查询合约回报: 创建日:{0},交割月:{1},交割年份:{2},结束交割日:{3},交易所代码:{4},合约在交易所的代码:{5},到期日:{6},合约生命周期状态:{7},合约代码:{8},合约名称:{9},当前是否交易:{10},多头保证金率:{11},限价单最大下单量:{12},市价单最大下单量:{13},限价单最小下单量:{14},市价单最小下单量:{15},上市日:{16},持仓日期类型:{17},持仓类型:{18},最小变动价位:{19},产品类型:{20},产品代码:{21},空头保证金率:{22},开始交割日:{23},合约数量乘数:{24}",
                                pInstrument.CreateDate, pInstrument.DeliveryMonth, pInstrument.DeliveryYear,
                                pInstrument.EndDelivDate, pInstrument.ExchangeID, pInstrument.ExchangeInstID,
                                pInstrument.ExpireDate, pInstrument.InstLifePhase, pInstrument.InstrumentID,
                                pInstrument.InstrumentName, pInstrument.IsTrading, pInstrument.LongMarginRatio,
                                pInstrument.MaxLimitOrderVolume, pInstrument.MaxMarketOrderVolume,
                                pInstrument.MinLimitOrderVolume, pInstrument.MinMarketOrderVolume, pInstrument.OpenDate,
                                pInstrument.PositionDateType, pInstrument.PositionType, pInstrument.PriceTick,
                                pInstrument.ProductClass, pInstrument.ProductID, pInstrument.ShortMarginRatio,
                                pInstrument.StartDelivDate, pInstrument.VolumeMultiple);
                    }
                }

                if (bIsLast)
                {
                    Thread.Sleep(1000);
                    ReqQryTradingAccount();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("查询合约出错:" + ex.Message);
            }
        }
Example #6
0
 public override void OnRspQryInstrument(ThostFtdcInstrumentField pInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.instruments.Add(new Instrument(pInstrument));
     if (bIsLast)
     {
         string[] instrumentIDs = this.instruments.Select(p => p.InstrumentID).ToArray();
         MdAdapter.Instance.Start(instrumentIDs);
         Instrument[] instruments = this.instruments.OrderBy(p => p.InstrumentID).ToArray();
         InstrumentListViewModel.Instance.Instruments = instruments;
         InstrumentDAL.Save(instruments);
     }
 }
Example #7
0
        public static void ReportError(ThostFtdcRspInfoField pRspInfo, string title)
        {
            ErrorInfo errorInfo = new ErrorInfo
            {
                ErrorID    = pRspInfo.ErrorID,
                ErrorMsg   = pRspInfo.ErrorMsg,
                IsRead     = false,
                HappenTime = DateTime.Now.ToString(CultureInfo.InvariantCulture)
            };

            ErrorList.Add(errorInfo);
        }
Example #8
0
 void _market_OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo.ErrorID != 0)
     {
         this.OnLog(string.Format("行情登录失败: 代码: {0}, 消息: {1}", pRspInfo.ErrorID, pRspInfo.ErrorMsg));
     }
     else
     {
         this.OnLog("行情登录成功");
     }
     this._asyncWaiter.Set();
 }
Example #9
0
 void _trade_OnRspQryOrder(ThostFtdcOrderField pOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pOrder != null)
     {
         var exists = this._orders.FirstOrDefault(_ => _.OrderSysID == pOrder.OrderSysID);
         if (exists == null)
         {
             this._orders.Add(pOrder);
         }
     }
     if (bIsLast)
     {
         this.Account.PendingOrders = this._orders.Where(_ => (_.OrderSysID ?? "").Trim().Length > 0 && _.GetOrderStatus() == OrderStatus.Pending).Select(_ => _.ToOptionOrder()).ToList();
     }
 }
Example #10
0
        private void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            __DEBUGPF__();
            if (bIsLast)
            {
                bool isLogin = !IsErrorRspInfo(pRspInfo);
                if (isLogin)
                {   // 订阅
                    Subscribe();
                }

                // 通知登录结果
                if (HandleLoginDel != null)
                {
                    HandleLoginDel(isLogin);
                }
            }
        }
Example #11
0
        private void OnRspQryInstrument(ThostFtdcInstrumentField pInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            __DEBUGPF__();

            // 保存返回的合约代码
            instruments.Add(pInstrument.InstrumentID);

            if (bIsLast)
            {
                HandleStatusInternal("CTP合约代码已获取");

                if (mdClient != null)
                {
                    mdClient.Subscribe(instruments.ToArray());
                }

                //请求查询资金账户
                ReqQryTradingAccount();
            }
        }
Example #12
0
 void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
     if (bIsLast && !IsErrorRspInfo(pRspInfo))
     {
         // 保存会话参数
         FRONT_ID   = pRspUserLogin.FrontID;
         SESSION_ID = pRspUserLogin.SessionID;
         int iNextOrderRef = 0;
         if (!string.IsNullOrEmpty(pRspUserLogin.MaxOrderRef))
         {
             iNextOrderRef = Convert.ToInt32(pRspUserLogin.MaxOrderRef);
         }
         iNextOrderRef++;
         ORDER_REF = Convert.ToString(iNextOrderRef);
         ///获取当前交易日
         Console.WriteLine("--->>> 获取当前交易日 = " + api.GetTradingDay());
         ///投资者结算结果确认
         ReqSettlementInfoConfirm();
     }
 }
        public void QuoteAdapter_OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin,
                                                ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast)
        {
            try
            {
                Utils.ReportError(pRspInfo, "行情登录回报错误");

                if (bIsLast && Utils.IsCorrectRspInfo(pRspInfo))
                {
                    _isReady = true;
                    var temp =
                        string.Format(
                            "行情登录回报:经纪公司代码:{0},郑商所时间:{1},大商所时间:{2},中金所时间:{3},前置编号:{4},登录成功时间:{5},最大报单引用:{6},会话编号:{7},上期所时间:{8},交易系统名称:{9},交易日:{10},用户代码:{11}",
                            pRspUserLogin.BrokerID, pRspUserLogin.CZCETime, pRspUserLogin.DCETime,
                            pRspUserLogin.FFEXTime,
                            pRspUserLogin.FrontID, pRspUserLogin.LoginTime, pRspUserLogin.MaxOrderRef,
                            pRspUserLogin.SessionID, pRspUserLogin.SHFETime, pRspUserLogin.SystemName,
                            pRspUserLogin.TradingDay, pRspUserLogin.UserID);

                    Utils.WriteLine(temp, true);

                    _frontId   = pRspUserLogin.FrontID;
                    _sessionId = pRspUserLogin.SessionID;

                    //行情重连的时候,重新订阅需要的行情
                    if (SubscribedQuotes.Count > 0)
                    {
                        SubscribeMarketData(SubscribedQuotes.ToArray());
                    }
                }
                else
                {
                    Utils.WriteLine("行情登录失败", true);
                }
            }
            catch (Exception ex)
            {
                Utils.WriteException(ex);
            }
        }
Example #14
0
        void _trade_OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            if (pRspInfo.ErrorID != 0)
            {
                this.OnLog(string.Format("交易登录失败: 代码: {0}, 消息: {1}", pRspInfo.ErrorID, pRspInfo.ErrorMsg));
            }
            else
            {
                this.OnLog("交易登录成功");
                this._session.FrontID   = pRspUserLogin.FrontID;
                this._session.SessionID = pRspUserLogin.SessionID;
                if (!string.IsNullOrEmpty(pRspUserLogin.MaxOrderRef))
                {
                    this._session.OrderRef = Convert.ToInt32(pRspUserLogin.MaxOrderRef);
                }
                var orderRef = this._session.NextOrderRef();

                this.QueryOrders();
                this.QueryAccount();
                this.QueryPositions();
            }
            this._asyncWaiter.Set();
        }
Example #15
0
 /// <summary>
 /// 登入应答
 /// </summary>
 /// <param name="pRspUserLogin"></param>
 /// <param name="pRspInfo"></param>
 /// <param name="nRequestID"></param>
 /// <param name="bIsLast"></param>
 void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
     if (bIsLast && !IsErrorRspInfo(pRspInfo))
     {
         //获取当前交易日
         Console.WriteLine("--->>> 获取当前交易日 = " + api.GetTradingDay());
         // 请求订阅行情
         SubscribeMarketData();
     }
 }
Example #16
0
 /// <summary>
 /// 错误应答
 /// </summary>
 /// <param name="pRspInfo"></param>
 /// <param name="nRequestID"></param>
 /// <param name="bIsLast"></param>
 void OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
     IsErrorRspInfo(pRspInfo);
 }
Example #17
0
 public override void OnRspSubMarketData(ThostFtdcSpecificInstrumentField pSpecificInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast) { }
Example #18
0
 public override void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.instruments.Clear();
     this.ReqQryInstrument(new ThostFtdcQryInstrumentField(), 0);
 }
Example #19
0
 /// <summary>
 /// 处理所有的OnErrRtn****回调事件
 /// </summary>
 protected void CbOnErrRtnFunc(IntPtr pObject, EnumOnErrRtnType type, IntPtr pParam, ThostFtdcRspInfoField pRspInfo)
 {
     if (OnErrRtnEvent != null)
     {
         OnErrRtnEvent(this, new OnErrRtnEventArgs(type, pParam, pRspInfo));
     }
 }
Example #20
0
        private void _trade_OnRspAuthenticate(ThostFtdcRspAuthenticateField pRspAuthenticateField, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            if (pRspInfo.ErrorID != 0)
            {
                throw new Exception($"认证失败:{nameof(pRspInfo.ErrorID)} {pRspInfo.ErrorID}, {nameof(pRspInfo.ErrorMsg)} {pRspInfo.ErrorMsg}");
            }

            this.Login();
        }
Example #21
0
 public void QuoteAdapter_OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin,
                                         ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast)
 {
     _isReady = true;
 }
Example #22
0
 void OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
     IsErrorRspInfo(pRspInfo);
 }
Example #23
0
 void OnRspOrderAction(ThostFtdcInputOrderActionField pInputOrderAction, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
     IsErrorRspInfo(pRspInfo);
 }
Example #24
0
 public override void OnRspQryInvestorPositionDetail(ThostFtdcInvestorPositionDetailField pInvestorPositionDetail, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #25
0
 public override void OnRspQryTradingAccount(ThostFtdcTradingAccountField pTradingAccount, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #26
0
 public override void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #27
0
 public override void OnRspUnSubMarketData(ThostFtdcSpecificInstrumentField pSpecificInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("取消订阅行情错误:" + pRspInfo.ErrorMsg);
     }
 }
Example #28
0
 bool IsErrorRspInfo(ThostFtdcRspInfoField pRspInfo)
 {
     // 如果ErrorID != 0, 说明收到了错误的响应
     bool bResult = ((pRspInfo != null) && (pRspInfo.ErrorID != 0));
     if (bResult)
         cMainForm.SetTDErrorRspInfo((object)pRspInfo);
     return bResult;
 }
Example #29
0
 private void QuoteAdapter_OnRspSubMarketData(ThostFtdcSpecificInstrumentField pSpecificInstrument,
                                              ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast)
 {
 }
Example #30
0
        private void OnRspSettlementInfoConfirm(ThostFtdcSettlementInfoConfirmField p, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            __DEBUGPF__();
            if (bIsLast)
            {
                HandleStatusInternal("CTP投资者结算结果已确认");

                // 获取合约信息
                ReqQryInstrument();
            }
        }
Example #31
0
 void OnRspSubMarketData(ThostFtdcSpecificInstrumentField pSpecificInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     __DEBUGPF__();
 }
Example #32
0
 public void OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (!IsErrorRspInfo(pRspInfo))
     {
     }
 }
Example #33
0
 void _trade_OnRspQryTradingAccount(ThostFtdcTradingAccountField pTradingAccount, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pTradingAccount != null)
     {
         this.Account.Available = pTradingAccount.Available;
         this.Account.Total     = pTradingAccount.Balance;
     }
 }
Example #34
0
        private void OnRspOrderAction(ThostFtdcInputOrderActionField pInputOrderAction, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            __DEBUGPF__();
            //IsErrorRspInfo(pRspInfo);

            if (HandleErrRtnOrderCancelDel != null)
            {
                var customOrder = new CustomOrder();
                // 原始报单信息
                customOrder.OrderNo      = int.Parse(pInputOrderAction.OrderRef);
                customOrder.InstrumentID = pInputOrderAction.InstrumentID;
                customOrder.Price        = pInputOrderAction.LimitPrice;
                // 更新委托回报信息
                customOrder.tradeRef = pInputOrderAction.ExchangeID + "_" + pInputOrderAction.OrderSysID;

                HandleErrRtnOrderCancelDel(customOrder, pRspInfo.ErrorMsg);
            }
        }
        private void QuoteAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo,
                                                  int nRequestId, bool bIsLast)
        {
            try
            {
                Utils.ReportError(pRspInfo, "登出账号回报错误");

                if (pUserLogout != null)
                {
                    Utils.WriteLine("登出回报", true);
                    Utils.OutputField(pUserLogout);
                }
            }
            catch (Exception ex)
            {
                Utils.WriteException(ex);
            }
        }
Example #36
0
 void OnRspQryInvestorPosition(ThostFtdcInvestorPositionField pInvestorPosition, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     __DEBUGPF__();
     //pInvestorPosition.Position;
 }
Example #37
0
 public override void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.SubscribeMarketData(this.instrumentIDs);
 }
Example #38
0
 public OnErrRtnEventArgs(EnumOnErrRtnType EventType, IntPtr pParam, ThostFtdcRspInfoField pRspInfo)
 {
     this.EventType = EventType;
     this.Param     = pParam;
     this.RspInfo   = pRspInfo;
 }
Example #39
0
 /// <summary>
 /// 错误应答信息 
 /// </summary>
 /// <param name="pRspInfo"></param>
 /// <returns></returns>
 bool IsErrorRspInfo(ThostFtdcRspInfoField pRspInfo)
 {
     // 如果ErrorID != 0, 说明收到了错误的响应
     bool bResult = ((pRspInfo != null) && (pRspInfo.ErrorID != 0));
     if (bResult)
         Console.WriteLine("--->>> ErrorID={0}, ErrorMsg={1}", pRspInfo.ErrorID, pRspInfo.ErrorMsg);
     return bResult;
 }
Example #40
0
 public override void OnRspQryTradingAccount(ThostFtdcTradingAccountField pTradingAccount, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo != null && pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("请求查询资金账户错误:" + pRspInfo.ErrorMsg);
         return;
     }
     if (pTradingAccount == null)
     {
         LogCenter.Error("请求查询资金账户错误,返回值为空");
         return;
     }
     var tradingAccount = new TradingAccount
     {
         BrokerID = pTradingAccount.BrokerID,
         AccountID = pTradingAccount.AccountID,
         PreMortgage = pTradingAccount.PreMortgage,
         PreCredit = pTradingAccount.PreCredit,
         PreDeposit = pTradingAccount.PreDeposit,
         PreBalance = pTradingAccount.PreBalance,
         PreMargin = pTradingAccount.PreMargin,
         InterestBase = pTradingAccount.InterestBase,
         Interest = pTradingAccount.Interest,
         Deposit = pTradingAccount.Deposit,
         Withdraw = pTradingAccount.Withdraw,
         FrozenMargin = pTradingAccount.FrozenMargin,
         FrozenCash = pTradingAccount.FrozenCash,
         FrozenCommission = pTradingAccount.FrozenCommission,
         CurrMargin = pTradingAccount.CurrMargin,
         CashIn = pTradingAccount.CashIn,
         Commission = pTradingAccount.Commission,
         CloseProfit = pTradingAccount.CloseProfit,
         PositionProfit = pTradingAccount.PositionProfit,
         Balance = pTradingAccount.Balance,
         Available = pTradingAccount.Available,
         WithdrawQuota = pTradingAccount.WithdrawQuota,
         Reserve = pTradingAccount.Reserve,
         TradingDay = pTradingAccount.TradingDay,
         SettlementID = pTradingAccount.SettlementID,
         Credit = pTradingAccount.Credit,
         Mortgage = pTradingAccount.Mortgage,
         ExchangeMargin = pTradingAccount.ExchangeMargin,
         DeliveryMargin = pTradingAccount.DeliveryMargin,
         ExchangeDeliveryMargin = pTradingAccount.ExchangeDeliveryMargin,
         ReserveBalance = pTradingAccount.ReserveBalance,
         CurrencyID = pTradingAccount.CurrencyID,
         PreFundMortgageIn = pTradingAccount.PreFundMortgageIn,
         PreFundMortgageOut = pTradingAccount.PreFundMortgageOut,
         FundMortgageIn = pTradingAccount.FundMortgageIn,
         FundMortgageOut = pTradingAccount.FundMortgageOut,
         FundMortgageAvailable = pTradingAccount.FundMortgageAvailable,
         MortgageableFund = pTradingAccount.MortgageableFund,
         SpecProductMargin = pTradingAccount.SpecProductMargin,
         SpecProductFrozenMargin = pTradingAccount.SpecProductFrozenMargin,
         SpecProductCommission = pTradingAccount.SpecProductCommission,
         SpecProductFrozenCommission = pTradingAccount.SpecProductFrozenCommission,
         SpecProductPositionProfit = pTradingAccount.SpecProductPositionProfit,
         SpecProductCloseProfit = pTradingAccount.SpecProductCloseProfit,
         SpecProductPositionProfitByAlg = pTradingAccount.SpecProductPositionProfitByAlg,
         SpecProductExchangeMargin = pTradingAccount.SpecProductExchangeMargin,
     };
     TradingAccountViewModel.Instance.Update(tradingAccount);
 }
Example #41
0
 /// <summary>
 /// 取消订阅行情应答
 /// </summary>
 /// <param name="pSpecificInstrument"></param>
 /// <param name="pRspInfo"></param>
 /// <param name="nRequestID"></param>
 /// <param name="bIsLast"></param>
 void OnRspUnSubMarketData(ThostFtdcSpecificInstrumentField pSpecificInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
 }
Example #42
0
 public override void OnRspQryInstrument(ThostFtdcInstrumentField pInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo != null && pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("请求查询合约错误:" + pRspInfo.ErrorMsg);
         return;
     }
     if (pInstrument.ProductClass == EnumProductClassType.Futures)
     {
         this.instruments.Add(new Instrument(pInstrument));
     }
     if (bIsLast)
     {
         LogCenter.Log("收到期货合约数量:" + this.instruments.Count);
         InstrumentCenter.Instance.SetInstruments(this.instruments.OrderBy(p => p.InstrumentID).ToArray());
     }
 }
Example #43
0
 /// <summary>
 /// 登出应答
 /// </summary>
 /// <param name="pUserLogout"></param>
 /// <param name="pRspInfo"></param>
 /// <param name="nRequestID"></param>
 /// <param name="bIsLast"></param>
 void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     DebugPrintFunc(new StackTrace());
 }
Example #44
0
 public override void OnRspQryInvestorPositionDetail(ThostFtdcInvestorPositionDetailField pInvestorPositionDetail, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo != null && pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("查询投资者持仓明细错误:" + pRspInfo.ErrorMsg);
         return;
     }
     if (pInvestorPositionDetail == null)
     {
         return;
     }
     var detial = new InvestorPositionDetail
     {
         InstrumentID = pInvestorPositionDetail.InstrumentID,
         BrokerID = pInvestorPositionDetail.BrokerID,
         InvestorID = pInvestorPositionDetail.InvestorID,
         HedgeFlag = (HedgeFlag)pInvestorPositionDetail.HedgeFlag,
         Direction = (DirectionType)pInvestorPositionDetail.Direction,
         OpenDate = pInvestorPositionDetail.OpenDate,
         TradeID = pInvestorPositionDetail.TradeID,
         Volume = pInvestorPositionDetail.Volume,
         OpenPrice = pInvestorPositionDetail.OpenPrice,
         TradingDay = pInvestorPositionDetail.TradingDay,
         SettlementID = pInvestorPositionDetail.SettlementID,
         TradeType = (TradeType)pInvestorPositionDetail.TradeType,
         CombInstrumentID = pInvestorPositionDetail.CombInstrumentID,
         ExchangeID = pInvestorPositionDetail.ExchangeID,
         CloseProfitByDate = pInvestorPositionDetail.CloseProfitByDate,
         CloseProfitByTrade = pInvestorPositionDetail.CloseProfitByTrade,
         PositionProfitByDate = pInvestorPositionDetail.PositionProfitByDate,
         PositionProfitByTrade = pInvestorPositionDetail.PositionProfitByTrade,
         Margin = pInvestorPositionDetail.Margin,
         ExchMargin = pInvestorPositionDetail.ExchMargin,
         MarginRateByMoney = pInvestorPositionDetail.MarginRateByMoney,
         MarginRateByVolume = pInvestorPositionDetail.MarginRateByVolume,
         LastSettlementPrice = pInvestorPositionDetail.LastSettlementPrice,
         SettlementPrice = pInvestorPositionDetail.SettlementPrice,
         CloseVolume = pInvestorPositionDetail.CloseVolume,
         CloseAmount = pInvestorPositionDetail.CloseAmount,
     };
     this.positionDetails.Add(detial);
     if (bIsLast)
     {
         PositionViewModel.Instance.Update(this.positionDetails);
     }
 }
Example #45
0
 private void QuoteAdapter_OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo,
                                           int nRequestId, bool bIsLast)
 {
     _isReady = false;
 }
Example #46
0
 ///期货发起查询银行余额应答
 public void OnRspQueryBankAccountMoneyByFuture(ThostFtdcReqQueryAccountField pReqQueryAccount, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (!IsErrorRspInfo(pRspInfo))
     {
     }
 }
Example #47
0
 private void QuoteAdapter_OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestId, bool bIsLast)
 {
 }
Example #48
0
 public void OnRspSubMarketData(ThostFtdcSpecificInstrumentField pSpecificInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (!IsErrorRspInfo(pRspInfo))
     {
     }
 }
Example #49
0
 void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     __DEBUGPF__();
 }
Example #50
0
 public override void OnRspOrderInsert(ThostFtdcInputOrderField pInputOrder, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     LogCenter.Error("报单录入请求响应:{0} {1}", pRspInfo.ErrorMsg, pRspInfo.ErrorID);
 }
Example #51
0
 void OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     __DEBUGPF__();
     IsErrorRspInfo(pRspInfo);
 }
Example #52
0
 public override void OnRspQryInvestorPosition(ThostFtdcInvestorPositionField pInvestorPosition, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo != null && pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("请求查询投资者持仓错误:" + pRspInfo.ErrorMsg);
         return;
     }
     if (pInvestorPosition == null)
     {
         return;
     }
     var position = new InvestorPosition
     {
         InstrumentID = pInvestorPosition.InstrumentID,
         BrokerID = pInvestorPosition.BrokerID,
         InvestorID = pInvestorPosition.InvestorID,
         PosiDirection = (PosiDirection)pInvestorPosition.PosiDirection,
         HedgeFlag = (HedgeFlag)pInvestorPosition.HedgeFlag,
         PositionDate = (PositionDateType)pInvestorPosition.PositionDate,
         YdPosition = pInvestorPosition.YdPosition,
         Position = pInvestorPosition.Position,
         LongFrozen = pInvestorPosition.LongFrozen,
         ShortFrozen = pInvestorPosition.ShortFrozen,
         LongFrozenAmount = pInvestorPosition.LongFrozenAmount,
         ShortFrozenAmount = pInvestorPosition.ShortFrozenAmount,
         OpenVolume = pInvestorPosition.OpenVolume,
         CloseVolume = pInvestorPosition.CloseVolume,
         OpenAmount = pInvestorPosition.OpenAmount,
         CloseAmount = pInvestorPosition.CloseAmount,
         PositionCost = pInvestorPosition.PositionCost,
         PreMargin = pInvestorPosition.PreMargin,
         UseMargin = pInvestorPosition.UseMargin,
         FrozenMargin = pInvestorPosition.FrozenMargin,
         FrozenCash = pInvestorPosition.FrozenCash,
         FrozenCommission = pInvestorPosition.FrozenCommission,
         CashIn = pInvestorPosition.CashIn,
         Commission = pInvestorPosition.Commission,
         CloseProfit = pInvestorPosition.CloseProfit,
         PositionProfit = pInvestorPosition.PositionProfit,
         PreSettlementPrice = pInvestorPosition.PreSettlementPrice,
         SettlementPrice = pInvestorPosition.SettlementPrice,
         TradingDay = pInvestorPosition.TradingDay,
         SettlementID = pInvestorPosition.SettlementID,
         OpenCost = pInvestorPosition.OpenCost,
         ExchangeMargin = pInvestorPosition.ExchangeMargin,
         CombPosition = pInvestorPosition.CombPosition,
         CombLongFrozen = pInvestorPosition.CombLongFrozen,
         CombShortFrozen = pInvestorPosition.CombShortFrozen,
         CloseProfitByDate = pInvestorPosition.CloseProfitByDate,
         CloseProfitByTrade = pInvestorPosition.CloseProfitByTrade,
         TodayPosition = pInvestorPosition.TodayPosition,
         MarginRateByMoney = pInvestorPosition.MarginRateByMoney,
         MarginRateByVolume = pInvestorPosition.MarginRateByVolume,
         StrikeFrozen = pInvestorPosition.StrikeFrozen,
         StrikeFrozenAmount = pInvestorPosition.StrikeFrozenAmount,
         AbandonFrozen = pInvestorPosition.AbandonFrozen,
     };
     this.positions.Add(position);
     if (bIsLast)
     {
         PositionViewModel.Instance.Update(this.positions);
     }
 }
Example #53
0
 public void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (!IsErrorRspInfo(pRspInfo))
     {
         cMainForm.SetMDLoginState((object)"已连接");
     }
 }
Example #54
0
 public override void OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #55
0
 public void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
 }
Example #56
0
 public override void OnRspUserLogout(ThostFtdcUserLogoutField pUserLogout, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #57
0
 /// <summary>
 /// 处理所有的OnRsp****回调事件
 /// </summary>
 protected void CbOnRspFunc(IntPtr pObject, EnumOnRspType type, IntPtr pParam, ThostFtdcRspInfoField pRspInfo, int nRequestID, [MarshalAs(UnmanagedType.I1)] bool bIsLast)
 {
     if (OnRspEvent != null)
     {
         OnRspEvent(this, new OnRspEventArgs(type, pParam, pRspInfo, nRequestID, bIsLast));
     }
 }
Example #58
0
 public override void OnRspUnSubForQuoteRsp(ThostFtdcSpecificInstrumentField pSpecificInstrument, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     throw new NotImplementedException();
 }
Example #59
0
 public override void OnRspError(ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     LogCenter.Error("交易错误:{0} {1}", pRspInfo.ErrorMsg, pRspInfo.ErrorID);
 }
Example #60
0
 public override void OnRspUserLogin(ThostFtdcRspUserLoginField pRspUserLogin, ThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (pRspInfo.ErrorID != 0)
     {
         LogCenter.Error("行情登录失败:" + pRspInfo.ErrorMsg);
         return;
     }
     LogCenter.Log("行情登录成功");
     AccountCenter.Instance.IsMDLogin = true;
     int i = this.SubscribeMarketData(subscribeSet.ToArray());
     if (i != 0)
     {
         LogCenter.Error("订阅行情错误:" + CTPErrorHelper.GetError(i));
     }
 }