void TdApi::processFrontConnected(Task task) { this->onFrontConnected(); }; void TdApi::processFrontDisconnected(Task task) { this->onFrontDisconnected(task.task_id); }; void TdApi::processHeartBeatWarning(Task task) { this->onHeartBeatWarning(task.task_id); }; void TdApi::processRspError(Task task) { CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspError(error, task.task_id, task.task_last); }; void TdApi::processRspUserLogin(Task task) { CSecurityFtdcRspUserLoginField task_data = any_cast(task.task_data); dict data; data["MaxOrderRef"] = task_data.MaxOrderRef; data["UserID"] = task_data.UserID; data["TradingDay"] = task_data.TradingDay; data["SessionID"] = task_data.SessionID; data["SystemName"] = task_data.SystemName; data["FrontID"] = task_data.FrontID; data["BrokerID"] = task_data.BrokerID; data["LoginTime"] = task_data.LoginTime; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspUserLogin(data, error, task.task_id, task.task_last); }; void TdApi::processRspUserLogout(Task task) { CSecurityFtdcUserLogoutField task_data = any_cast(task.task_data); dict data; data["UserID"] = task_data.UserID; data["BrokerID"] = task_data.BrokerID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspUserLogout(data, error, task.task_id, task.task_last); }; void TdApi::processRspOrderInsert(Task task) { CSecurityFtdcInputOrderField task_data = any_cast(task.task_data); dict data; data["ContingentCondition"] = task_data.ContingentCondition; data["CombOffsetFlag"] = task_data.CombOffsetFlag; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; data["UserForceClose"] = task_data.UserForceClose; data["Direction"] = task_data.Direction; data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; data["OrderPriceType"] = task_data.OrderPriceType; data["TimeCondition"] = task_data.TimeCondition; data["IsAutoSuspend"] = task_data.IsAutoSuspend; data["StopPrice"] = task_data.StopPrice; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["MinVolume"] = task_data.MinVolume; data["ForceCloseReason"] = task_data.ForceCloseReason; data["BrokerID"] = task_data.BrokerID; data["CombHedgeFlag"] = task_data.CombHedgeFlag; data["GTDDate"] = task_data.GTDDate; data["BusinessUnit"] = task_data.BusinessUnit; data["OrderRef"] = task_data.OrderRef; data["InvestorID"] = task_data.InvestorID; data["VolumeCondition"] = task_data.VolumeCondition; data["RequestID"] = task_data.RequestID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspOrderInsert(data, error, task.task_id, task.task_last); }; void TdApi::processRspOrderAction(Task task) { CSecurityFtdcInputOrderActionField task_data = any_cast(task.task_data); dict data; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["OrderLocalID"] = task_data.OrderLocalID; data["OrderActionRef"] = task_data.OrderActionRef; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; data["OrderRef"] = task_data.OrderRef; data["InvestorID"] = task_data.InvestorID; data["SessionID"] = task_data.SessionID; data["VolumeChange"] = task_data.VolumeChange; data["BrokerID"] = task_data.BrokerID; data["RequestID"] = task_data.RequestID; data["ActionFlag"] = task_data.ActionFlag; data["FrontID"] = task_data.FrontID; data["BranchPBU"] = task_data.BranchPBU; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspOrderAction(data, error, task.task_id, task.task_last); }; void TdApi::processRspUserPasswordUpdate(Task task) { CSecurityFtdcUserPasswordUpdateField task_data = any_cast(task.task_data); dict data; data["UserID"] = task_data.UserID; data["NewPassword"] = task_data.NewPassword; data["OldPassword"] = task_data.OldPassword; data["BrokerID"] = task_data.BrokerID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspUserPasswordUpdate(data, error, task.task_id, task.task_last); }; void TdApi::processRspTradingAccountPasswordUpdate(Task task) { CSecurityFtdcTradingAccountPasswordUpdateField task_data = any_cast(task.task_data); dict data; data["NewPassword"] = task_data.NewPassword; data["OldPassword"] = task_data.OldPassword; data["BrokerID"] = task_data.BrokerID; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspTradingAccountPasswordUpdate(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryExchange(Task task) { CSecurityFtdcExchangeField task_data = any_cast(task.task_data); dict data; data["ExchangeProperty"] = task_data.ExchangeProperty; data["ExchangeID"] = task_data.ExchangeID; data["ExchangeName"] = task_data.ExchangeName; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryExchange(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryInstrument(Task task) { CSecurityFtdcInstrumentField task_data = any_cast(task.task_data); dict data; data["IsTrading"] = task_data.IsTrading; data["ExpireDate"] = task_data.ExpireDate; data["UnitMargin"] = task_data.UnitMargin; data["OrderCanBeWithdraw"] = task_data.OrderCanBeWithdraw; data["PositionType"] = task_data.PositionType; data["ProductClass"] = task_data.ProductClass; data["MinSellVolume"] = task_data.MinSellVolume; data["InstrumentName"] = task_data.InstrumentName; data["ExecPrice"] = task_data.ExecPrice; data["RightModelID"] = task_data.RightModelID; data["VolumeMultiple"] = task_data.VolumeMultiple; data["DeliveryYear"] = task_data.DeliveryYear; data["OptionsMarginParam2"] = task_data.OptionsMarginParam2; data["OptionsMarginParam1"] = task_data.OptionsMarginParam1; data["PosTradeType"] = task_data.PosTradeType; data["CreateDate"] = task_data.CreateDate; data["InstrumentID"] = task_data.InstrumentID; data["MaxLimitOrderVolume"] = task_data.MaxLimitOrderVolume; data["ExchangeID"] = task_data.ExchangeID; data["MinLimitOrderVolume"] = task_data.MinLimitOrderVolume; data["MaxMarketOrderVolume"] = task_data.MaxMarketOrderVolume; data["StartDelivDate"] = task_data.StartDelivDate; data["InstrumentType"] = task_data.InstrumentType; data["DeliveryMonth"] = task_data.DeliveryMonth; data["MinBuyVolume"] = task_data.MinBuyVolume; data["PriceTick"] = task_data.PriceTick; data["InstLifePhase"] = task_data.InstLifePhase; data["MarketID"] = task_data.MarketID; data["ExchangeInstID"] = task_data.ExchangeInstID; data["MinMarketOrderVolume"] = task_data.MinMarketOrderVolume; data["EndDelivDate"] = task_data.EndDelivDate; data["OpenDate"] = task_data.OpenDate; data["ProductID"] = task_data.ProductID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryInstrument(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryInvestor(Task task) { CSecurityFtdcInvestorField task_data = any_cast(task.task_data); dict data; data["SZBranchID"] = task_data.SZBranchID; data["InvestorName"] = task_data.InvestorName; data["SHBranchID"] = task_data.SHBranchID; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["InvestorID"] = task_data.InvestorID; data["BrokerID"] = task_data.BrokerID; data["InvestorGroupID"] = task_data.InvestorGroupID; data["SettleSystemType"] = task_data.SettleSystemType; data["InvestorLevel"] = task_data.InvestorLevel; data["IsActive"] = task_data.IsActive; data["IdentifiedCardType"] = task_data.IdentifiedCardType; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryInvestor(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryTradingCode(Task task) { CSecurityFtdcTradingCodeField task_data = any_cast(task.task_data); dict data; data["PBU"] = task_data.PBU; data["ExchangeID"] = task_data.ExchangeID; data["ClientType"] = task_data.ClientType; data["ClientID"] = task_data.ClientID; data["InvestorID"] = task_data.InvestorID; data["BrokerID"] = task_data.BrokerID; data["IsActive"] = task_data.IsActive; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryTradingCode(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryTradingAccount(Task task) { CSecurityFtdcTradingAccountField task_data = any_cast(task.task_data); dict data; data["MarginTradeAmount"] = task_data.MarginTradeAmount; data["FrozenTransferFee"] = task_data.FrozenTransferFee; data["Mortgage"] = task_data.Mortgage; data["ExchangeDeliveryMargin"] = task_data.ExchangeDeliveryMargin; data["FrozenMargin"] = task_data.FrozenMargin; data["WithdrawQuota"] = task_data.WithdrawQuota; data["TransferFee"] = task_data.TransferFee; data["Commission"] = task_data.Commission; data["Interest"] = task_data.Interest; data["ShortSellProfit"] = task_data.ShortSellProfit; data["FrozenExecCash"] = task_data.FrozenExecCash; data["CashIn"] = task_data.CashIn; data["AccountID"] = task_data.AccountID; data["Available"] = task_data.Available; data["PreCredit"] = task_data.PreCredit; data["PreMortgage"] = task_data.PreMortgage; data["CreditRatio"] = task_data.CreditRatio; data["CreditAmount"] = task_data.CreditAmount; data["InterestBase"] = task_data.InterestBase; data["ExchangeMargin"] = task_data.ExchangeMargin; data["ConversionAmount"] = task_data.ConversionAmount; data["SSStockValue"] = task_data.SSStockValue; data["ShortSellAmount"] = task_data.ShortSellAmount; data["PreMargin"] = task_data.PreMargin; data["CurrencyCode"] = task_data.CurrencyCode; data["DeliveryMargin"] = task_data.DeliveryMargin; data["BondRepurchaseAmount"] = task_data.BondRepurchaseAmount; data["TradingDay"] = task_data.TradingDay; data["BrokerID"] = task_data.BrokerID; data["FrozenCash"] = task_data.FrozenCash; data["Withdraw"] = task_data.Withdraw; data["ReverseRepurchaseAmount"] = task_data.ReverseRepurchaseAmount; data["StampTax"] = task_data.StampTax; data["Balance"] = task_data.Balance; data["FrozenStampTax"] = task_data.FrozenStampTax; data["Reserve"] = task_data.Reserve; data["PreDeposit"] = task_data.PreDeposit; data["MarginTradeProfit"] = task_data.MarginTradeProfit; data["Credit"] = task_data.Credit; data["PreBalance"] = task_data.PreBalance; data["CurrMargin"] = task_data.CurrMargin; data["FrozenCommission"] = task_data.FrozenCommission; data["AccountType"] = task_data.AccountType; data["StockValue"] = task_data.StockValue; data["Deposit"] = task_data.Deposit; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryTradingAccount(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryDepthMarketData(Task task) { CSecurityFtdcDepthMarketDataField task_data = any_cast(task.task_data); dict data; data["HighestPrice"] = task_data.HighestPrice; data["BidPrice5"] = task_data.BidPrice5; data["BidPrice4"] = task_data.BidPrice4; data["BidPrice1"] = task_data.BidPrice1; data["BidPrice3"] = task_data.BidPrice3; data["BidPrice2"] = task_data.BidPrice2; data["LowerLimitPrice"] = task_data.LowerLimitPrice; data["OpenPrice"] = task_data.OpenPrice; data["AskPrice5"] = task_data.AskPrice5; data["AskPrice4"] = task_data.AskPrice4; data["AskPrice3"] = task_data.AskPrice3; data["PreClosePrice"] = task_data.PreClosePrice; data["AskPrice1"] = task_data.AskPrice1; data["PreSettlementPrice"] = task_data.PreSettlementPrice; data["AskVolume1"] = task_data.AskVolume1; data["UpdateTime"] = task_data.UpdateTime; data["UpdateMillisec"] = task_data.UpdateMillisec; data["AveragePrice"] = task_data.AveragePrice; data["BidVolume5"] = task_data.BidVolume5; data["BidVolume4"] = task_data.BidVolume4; data["BidVolume3"] = task_data.BidVolume3; data["BidVolume2"] = task_data.BidVolume2; data["PreOpenInterest"] = task_data.PreOpenInterest; data["AskPrice2"] = task_data.AskPrice2; data["Volume"] = task_data.Volume; data["AskVolume3"] = task_data.AskVolume3; data["AskVolume2"] = task_data.AskVolume2; data["AskVolume5"] = task_data.AskVolume5; data["AskVolume4"] = task_data.AskVolume4; data["UpperLimitPrice"] = task_data.UpperLimitPrice; data["BidVolume1"] = task_data.BidVolume1; data["InstrumentID"] = task_data.InstrumentID; data["ClosePrice"] = task_data.ClosePrice; data["ExchangeID"] = task_data.ExchangeID; data["TradingDay"] = task_data.TradingDay; data["PreDelta"] = task_data.PreDelta; data["OpenInterest"] = task_data.OpenInterest; data["CurrDelta"] = task_data.CurrDelta; data["Turnover"] = task_data.Turnover; data["LastPrice"] = task_data.LastPrice; data["SettlementPrice"] = task_data.SettlementPrice; data["ExchangeInstID"] = task_data.ExchangeInstID; data["LowestPrice"] = task_data.LowestPrice; data["ActionDay"] = task_data.ActionDay; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryDepthMarketData(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryBondInterest(Task task) { CSecurityFtdcBondInterestField task_data = any_cast(task.task_data); dict data; data["InstrumentID"] = task_data.InstrumentID; data["TradingDay"] = task_data.TradingDay; data["ExchangeID"] = task_data.ExchangeID; data["Interest"] = task_data.Interest; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryBondInterest(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryMarketRationInfo(Task task) { CSecurityFtdcMarketRationInfoField task_data = any_cast(task.task_data); dict data; data["InvestorID"] = task_data.InvestorID; data["ExchangeID"] = task_data.ExchangeID; data["BrokerID"] = task_data.BrokerID; data["RationVolume"] = task_data.RationVolume; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryMarketRationInfo(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryInstrumentCommissionRate(Task task) { CSecurityFtdcInstrumentCommissionRateField task_data = any_cast(task.task_data); dict data; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["TradeFeeByMoney"] = task_data.TradeFeeByMoney; data["Direction"] = task_data.Direction; data["MinTradeFee"] = task_data.MinTradeFee; data["StampTaxRateByMoney"] = task_data.StampTaxRateByMoney; data["InvestorID"] = task_data.InvestorID; data["MarginByMoney"] = task_data.MarginByMoney; data["StampTaxRateByVolume"] = task_data.StampTaxRateByVolume; data["BrokerID"] = task_data.BrokerID; data["InvestorRange"] = task_data.InvestorRange; data["TransferFeeRateByVolume"] = task_data.TransferFeeRateByVolume; data["TransferFeeRateByMoney"] = task_data.TransferFeeRateByMoney; data["TradeFeeByVolume"] = task_data.TradeFeeByVolume; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryInstrumentCommissionRate(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryETFInstrument(Task task) { CSecurityFtdcETFInstrumentField task_data = any_cast(task.task_data); dict data; data["ETFInstrumentID"] = task_data.ETFInstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["ETFPurRedInstrumentID"] = task_data.ETFPurRedInstrumentID; data["EstimateCashComponent"] = task_data.EstimateCashComponent; data["CreationRedemptionUnit"] = task_data.CreationRedemptionUnit; data["Maxcashratio"] = task_data.Maxcashratio; data["Creationredemption"] = task_data.Creationredemption; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryETFInstrument(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryETFBasket(Task task) { CSecurityFtdcETFBasketField task_data = any_cast(task.task_data); dict data; data["ETFInstrumentID"] = task_data.ETFInstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["Premium"] = task_data.Premium; data["StockInstrumentName"] = task_data.StockInstrumentName; data["CurrenceReplaceStatus"] = task_data.CurrenceReplaceStatus; data["Volume"] = task_data.Volume; data["Amount"] = task_data.Amount; data["StockInstrumentID"] = task_data.StockInstrumentID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryETFBasket(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryOFInstrument(Task task) { CSecurityFtdcOFInstrumentField task_data = any_cast(task.task_data); dict data; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["NetPrice"] = task_data.NetPrice; data["Creationredemption"] = task_data.Creationredemption; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryOFInstrument(data, error, task.task_id, task.task_last); }; void TdApi::processRspQrySFInstrument(Task task) { CSecurityFtdcSFInstrumentField task_data = any_cast(task.task_data); dict data; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["NetPrice"] = task_data.NetPrice; data["MinMergeVolume"] = task_data.MinMergeVolume; data["SFInstrumentID"] = task_data.SFInstrumentID; data["MinSplitVolume"] = task_data.MinSplitVolume; data["VolumeRatio"] = task_data.VolumeRatio; data["SplitMergeStatus"] = task_data.SplitMergeStatus; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQrySFInstrument(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryOrder(Task task) { CSecurityFtdcOrderField task_data = any_cast(task.task_data); dict data; data["ContingentCondition"] = task_data.ContingentCondition; data["NotifySequence"] = task_data.NotifySequence; data["ActiveUserID"] = task_data.ActiveUserID; data["VolumeTraded"] = task_data.VolumeTraded; data["UserProductInfo"] = task_data.UserProductInfo; data["CombOffsetFlag"] = task_data.CombOffsetFlag; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; data["UserForceClose"] = task_data.UserForceClose; data["RelativeOrderSysID"] = task_data.RelativeOrderSysID; data["AccountID"] = task_data.AccountID; data["Direction"] = task_data.Direction; data["InstallID"] = task_data.InstallID; data["ParticipantID"] = task_data.ParticipantID; data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; data["ExchangeInstID"] = task_data.ExchangeInstID; data["ClientID"] = task_data.ClientID; data["VolumeTotal"] = task_data.VolumeTotal; data["OrderPriceType"] = task_data.OrderPriceType; data["SessionID"] = task_data.SessionID; data["TimeCondition"] = task_data.TimeCondition; data["OrderStatus"] = task_data.OrderStatus; data["OrderSysID"] = task_data.OrderSysID; data["OrderSubmitStatus"] = task_data.OrderSubmitStatus; data["IsETF"] = task_data.IsETF; data["IsAutoSuspend"] = task_data.IsAutoSuspend; data["StopPrice"] = task_data.StopPrice; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["MinVolume"] = task_data.MinVolume; data["StatusMsg"] = task_data.StatusMsg; data["ForceCloseReason"] = task_data.ForceCloseReason; data["OrderType"] = task_data.OrderType; data["UpdateTime"] = task_data.UpdateTime; data["TradingDay"] = task_data.TradingDay; data["ActiveTime"] = task_data.ActiveTime; data["BrokerID"] = task_data.BrokerID; data["InsertTime"] = task_data.InsertTime; data["FrontID"] = task_data.FrontID; data["SuspendTime"] = task_data.SuspendTime; data["InstrumentType"] = task_data.InstrumentType; data["ClearingPartID"] = task_data.ClearingPartID; data["CombHedgeFlag"] = task_data.CombHedgeFlag; data["CancelTime"] = task_data.CancelTime; data["GTDDate"] = task_data.GTDDate; data["OrderLocalID"] = task_data.OrderLocalID; data["BranchID"] = task_data.BranchID; data["BusinessUnit"] = task_data.BusinessUnit; data["InsertDate"] = task_data.InsertDate; data["SequenceNo"] = task_data.SequenceNo; data["OrderRef"] = task_data.OrderRef; data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; data["InvestorID"] = task_data.InvestorID; data["VolumeCondition"] = task_data.VolumeCondition; data["RequestID"] = task_data.RequestID; data["OrderSource"] = task_data.OrderSource; data["BranchPBU"] = task_data.BranchPBU; data["TradeAmount"] = task_data.TradeAmount; data["ActiveTraderID"] = task_data.ActiveTraderID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryOrder(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryTrade(Task task) { CSecurityFtdcTradeField task_data = any_cast(task.task_data); dict data; data["TradeType"] = task_data.TradeType; data["HedgeFlag"] = task_data.HedgeFlag; data["TradeTime"] = task_data.TradeTime; data["Direction"] = task_data.Direction; data["ParticipantID"] = task_data.ParticipantID; data["Price"] = task_data.Price; data["ClientID"] = task_data.ClientID; data["Volume"] = task_data.Volume; data["OrderSysID"] = task_data.OrderSysID; data["ClearingPartID"] = task_data.ClearingPartID; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["UserID"] = task_data.UserID; data["TradeIndex"] = task_data.TradeIndex; data["TradingDay"] = task_data.TradingDay; data["BrokerID"] = task_data.BrokerID; data["TradeSource"] = task_data.TradeSource; data["OffsetFlag"] = task_data.OffsetFlag; data["OrderLocalID"] = task_data.OrderLocalID; data["TradeID"] = task_data.TradeID; data["TradeDate"] = task_data.TradeDate; data["BusinessUnit"] = task_data.BusinessUnit; data["SequenceNo"] = task_data.SequenceNo; data["OrderRef"] = task_data.OrderRef; data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; data["InvestorID"] = task_data.InvestorID; data["ExchangeInstID"] = task_data.ExchangeInstID; data["BranchPBU"] = task_data.BranchPBU; data["PriceSource"] = task_data.PriceSource; data["TradingRole"] = task_data.TradingRole; data["TradeAmount"] = task_data.TradeAmount; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryTrade(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryInvestorPosition(Task task) { CSecurityFtdcInvestorPositionField task_data = any_cast(task.task_data); dict data; data["LockPosition"] = task_data.LockPosition; data["MarginTradeAmount"] = task_data.MarginTradeAmount; data["ShortFrozenAmount"] = task_data.ShortFrozenAmount; data["ShortSellAmount"] = task_data.ShortSellAmount; data["TodaySSPosition"] = task_data.TodaySSPosition; data["HedgeFlag"] = task_data.HedgeFlag; data["TransferFee"] = task_data.TransferFee; data["Commission"] = task_data.Commission; data["ShortSellVolume"] = task_data.ShortSellVolume; data["CoverFrozenPosition"] = task_data.CoverFrozenPosition; data["TodayPurRedVolume"] = task_data.TodayPurRedVolume; data["PurRedShortFrozen"] = task_data.PurRedShortFrozen; data["CashIn"] = task_data.CashIn; data["PreSettlementPrice"] = task_data.PreSettlementPrice; data["ShortSellFrozenAmount"] = task_data.ShortSellFrozenAmount; data["CloseAmount"] = task_data.CloseAmount; data["PosiDirection"] = task_data.PosiDirection; data["LockFrozenPosition"] = task_data.LockFrozenPosition; data["RepurchasePosition"] = task_data.RepurchasePosition; data["MarginTradeVolume"] = task_data.MarginTradeVolume; data["YdPosition"] = task_data.YdPosition; data["MarginTradeFrozenVolume"] = task_data.MarginTradeFrozenVolume; data["ConversionRate"] = task_data.ConversionRate; data["ShortSellFrozenVolume"] = task_data.ShortSellFrozenVolume; data["OpenVolume"] = task_data.OpenVolume; data["TodayMTPosition"] = task_data.TodayMTPosition; data["CoverPosition"] = task_data.CoverPosition; data["CloseVolume"] = task_data.CloseVolume; data["AccountID"] = task_data.AccountID; data["ConversionAmount"] = task_data.ConversionAmount; data["ShortSellConversionProfit"] = task_data.ShortSellConversionProfit; data["InstrumentID"] = task_data.InstrumentID; data["PositionDate"] = task_data.PositionDate; data["ExchangeID"] = task_data.ExchangeID; data["MarginTradeFrozenAmount"] = task_data.MarginTradeFrozenAmount; data["ShortFrozen"] = task_data.ShortFrozen; data["LongFrozen"] = task_data.LongFrozen; data["TodayPosition"] = task_data.TodayPosition; data["TradingDay"] = task_data.TradingDay; data["PositionCost"] = task_data.PositionCost; data["BrokerID"] = task_data.BrokerID; data["FrozenCash"] = task_data.FrozenCash; data["OpenAmount"] = task_data.OpenAmount; data["OpenCost"] = task_data.OpenCost; data["StampTax"] = task_data.StampTax; data["Position"] = task_data.Position; data["ExecFrozenPosition"] = task_data.ExecFrozenPosition; data["ExchangeMargin"] = task_data.ExchangeMargin; data["PledgeInPosition"] = task_data.PledgeInPosition; data["SettlementPrice"] = task_data.SettlementPrice; data["LongFrozenAmount"] = task_data.LongFrozenAmount; data["InvestorID"] = task_data.InvestorID; data["UnlockFrozenPosition"] = task_data.UnlockFrozenPosition; data["YdOpenCost"] = task_data.YdOpenCost; data["MarginTradeConversionProfit"] = task_data.MarginTradeConversionProfit; data["SSStockValue"] = task_data.SSStockValue; data["StockValue"] = task_data.StockValue; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryInvestorPosition(data, error, task.task_id, task.task_last); }; void TdApi::processRtnOrder(Task task) { CSecurityFtdcOrderField task_data = any_cast(task.task_data); dict data; data["ContingentCondition"] = task_data.ContingentCondition; data["NotifySequence"] = task_data.NotifySequence; data["ActiveUserID"] = task_data.ActiveUserID; data["VolumeTraded"] = task_data.VolumeTraded; data["UserProductInfo"] = task_data.UserProductInfo; data["CombOffsetFlag"] = task_data.CombOffsetFlag; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; data["UserForceClose"] = task_data.UserForceClose; data["RelativeOrderSysID"] = task_data.RelativeOrderSysID; data["AccountID"] = task_data.AccountID; data["Direction"] = task_data.Direction; data["InstallID"] = task_data.InstallID; data["ParticipantID"] = task_data.ParticipantID; data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; data["ExchangeInstID"] = task_data.ExchangeInstID; data["ClientID"] = task_data.ClientID; data["VolumeTotal"] = task_data.VolumeTotal; data["OrderPriceType"] = task_data.OrderPriceType; data["SessionID"] = task_data.SessionID; data["TimeCondition"] = task_data.TimeCondition; data["OrderStatus"] = task_data.OrderStatus; data["OrderSysID"] = task_data.OrderSysID; data["OrderSubmitStatus"] = task_data.OrderSubmitStatus; data["IsETF"] = task_data.IsETF; data["IsAutoSuspend"] = task_data.IsAutoSuspend; data["StopPrice"] = task_data.StopPrice; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["MinVolume"] = task_data.MinVolume; data["StatusMsg"] = task_data.StatusMsg; data["ForceCloseReason"] = task_data.ForceCloseReason; data["OrderType"] = task_data.OrderType; data["UpdateTime"] = task_data.UpdateTime; data["TradingDay"] = task_data.TradingDay; data["ActiveTime"] = task_data.ActiveTime; data["BrokerID"] = task_data.BrokerID; data["InsertTime"] = task_data.InsertTime; data["FrontID"] = task_data.FrontID; data["SuspendTime"] = task_data.SuspendTime; data["InstrumentType"] = task_data.InstrumentType; data["ClearingPartID"] = task_data.ClearingPartID; data["CombHedgeFlag"] = task_data.CombHedgeFlag; data["CancelTime"] = task_data.CancelTime; data["GTDDate"] = task_data.GTDDate; data["OrderLocalID"] = task_data.OrderLocalID; data["BranchID"] = task_data.BranchID; data["BusinessUnit"] = task_data.BusinessUnit; data["InsertDate"] = task_data.InsertDate; data["SequenceNo"] = task_data.SequenceNo; data["OrderRef"] = task_data.OrderRef; data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; data["InvestorID"] = task_data.InvestorID; data["VolumeCondition"] = task_data.VolumeCondition; data["RequestID"] = task_data.RequestID; data["OrderSource"] = task_data.OrderSource; data["BranchPBU"] = task_data.BranchPBU; data["TradeAmount"] = task_data.TradeAmount; data["ActiveTraderID"] = task_data.ActiveTraderID; this->onRtnOrder(data); }; void TdApi::processRtnTrade(Task task) { CSecurityFtdcTradeField task_data = any_cast(task.task_data); dict data; data["TradeType"] = task_data.TradeType; data["HedgeFlag"] = task_data.HedgeFlag; data["TradeTime"] = task_data.TradeTime; data["Direction"] = task_data.Direction; data["ParticipantID"] = task_data.ParticipantID; data["Price"] = task_data.Price; data["ClientID"] = task_data.ClientID; data["Volume"] = task_data.Volume; data["OrderSysID"] = task_data.OrderSysID; data["ClearingPartID"] = task_data.ClearingPartID; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["UserID"] = task_data.UserID; data["TradeIndex"] = task_data.TradeIndex; data["TradingDay"] = task_data.TradingDay; data["BrokerID"] = task_data.BrokerID; data["TradeSource"] = task_data.TradeSource; data["OffsetFlag"] = task_data.OffsetFlag; data["OrderLocalID"] = task_data.OrderLocalID; data["TradeID"] = task_data.TradeID; data["TradeDate"] = task_data.TradeDate; data["BusinessUnit"] = task_data.BusinessUnit; data["SequenceNo"] = task_data.SequenceNo; data["OrderRef"] = task_data.OrderRef; data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; data["InvestorID"] = task_data.InvestorID; data["ExchangeInstID"] = task_data.ExchangeInstID; data["BranchPBU"] = task_data.BranchPBU; data["PriceSource"] = task_data.PriceSource; data["TradingRole"] = task_data.TradingRole; data["TradeAmount"] = task_data.TradeAmount; this->onRtnTrade(data); }; void TdApi::processErrRtnOrderInsert(Task task) { CSecurityFtdcInputOrderField task_data = any_cast(task.task_data); dict data; data["ContingentCondition"] = task_data.ContingentCondition; data["CombOffsetFlag"] = task_data.CombOffsetFlag; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; data["UserForceClose"] = task_data.UserForceClose; data["Direction"] = task_data.Direction; data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; data["OrderPriceType"] = task_data.OrderPriceType; data["TimeCondition"] = task_data.TimeCondition; data["IsAutoSuspend"] = task_data.IsAutoSuspend; data["StopPrice"] = task_data.StopPrice; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["MinVolume"] = task_data.MinVolume; data["ForceCloseReason"] = task_data.ForceCloseReason; data["BrokerID"] = task_data.BrokerID; data["CombHedgeFlag"] = task_data.CombHedgeFlag; data["GTDDate"] = task_data.GTDDate; data["BusinessUnit"] = task_data.BusinessUnit; data["OrderRef"] = task_data.OrderRef; data["InvestorID"] = task_data.InvestorID; data["VolumeCondition"] = task_data.VolumeCondition; data["RequestID"] = task_data.RequestID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onErrRtnOrderInsert(data, error); }; void TdApi::processErrRtnOrderAction(Task task) { CSecurityFtdcOrderActionField task_data = any_cast(task.task_data); dict data; data["ActionTime"] = task_data.ActionTime; data["InvestorID"] = task_data.InvestorID; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; data["ClientID"] = task_data.ClientID; data["InstallID"] = task_data.InstallID; data["ParticipantID"] = task_data.ParticipantID; data["OrderActionRef"] = task_data.OrderActionRef; data["VolumeChange"] = task_data.VolumeChange; data["SessionID"] = task_data.SessionID; data["ActionFlag"] = task_data.ActionFlag; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; data["StatusMsg"] = task_data.StatusMsg; data["BrokerID"] = task_data.BrokerID; data["InstrumentType"] = task_data.InstrumentType; data["ActionDate"] = task_data.ActionDate; data["OrderLocalID"] = task_data.OrderLocalID; data["BranchID"] = task_data.BranchID; data["BusinessUnit"] = task_data.BusinessUnit; data["OrderRef"] = task_data.OrderRef; data["ActionLocalID"] = task_data.ActionLocalID; data["RequestID"] = task_data.RequestID; data["FrontID"] = task_data.FrontID; data["BranchPBU"] = task_data.BranchPBU; data["OrderActionStatus"] = task_data.OrderActionStatus; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onErrRtnOrderAction(data, error); }; void TdApi::processRspFundOutByLiber(Task task) { CSecurityFtdcInputFundTransferField task_data = any_cast(task.task_data); dict data; data["UserID"] = task_data.UserID; data["InvestorID"] = task_data.InvestorID; data["BrokerID"] = task_data.BrokerID; data["AccountType"] = task_data.AccountType; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["Digest"] = task_data.Digest; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspFundOutByLiber(data, error, task.task_id, task.task_last); }; void TdApi::processRtnFundOutByLiber(Task task) { CSecurityFtdcFundTransferField task_data = any_cast(task.task_data); dict data; data["PlateSerial"] = task_data.PlateSerial; data["TradingDay"] = task_data.TradingDay; data["ErrorMsg"] = task_data.ErrorMsg; data["ErrorID"] = task_data.ErrorID; data["UserID"] = task_data.UserID; data["TransferSerial"] = task_data.TransferSerial; data["InvestorID"] = task_data.InvestorID; data["SessionID"] = task_data.SessionID; data["LiberSerial"] = task_data.LiberSerial; data["BrokerID"] = task_data.BrokerID; data["FundDirection"] = task_data.FundDirection; data["TradeTime"] = task_data.TradeTime; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["Digest"] = task_data.Digest; data["AccountID"] = task_data.AccountID; this->onRtnFundOutByLiber(data); }; void TdApi::processErrRtnFundOutByLiber(Task task) { CSecurityFtdcInputFundTransferField task_data = any_cast(task.task_data); dict data; data["UserID"] = task_data.UserID; data["InvestorID"] = task_data.InvestorID; data["BrokerID"] = task_data.BrokerID; data["AccountType"] = task_data.AccountType; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["Digest"] = task_data.Digest; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onErrRtnFundOutByLiber(data, error); }; void TdApi::processRtnFundInByBank(Task task) { CSecurityFtdcFundTransferField task_data = any_cast(task.task_data); dict data; data["PlateSerial"] = task_data.PlateSerial; data["TradingDay"] = task_data.TradingDay; data["ErrorMsg"] = task_data.ErrorMsg; data["ErrorID"] = task_data.ErrorID; data["UserID"] = task_data.UserID; data["TransferSerial"] = task_data.TransferSerial; data["InvestorID"] = task_data.InvestorID; data["SessionID"] = task_data.SessionID; data["LiberSerial"] = task_data.LiberSerial; data["BrokerID"] = task_data.BrokerID; data["FundDirection"] = task_data.FundDirection; data["TradeTime"] = task_data.TradeTime; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["Digest"] = task_data.Digest; data["AccountID"] = task_data.AccountID; this->onRtnFundInByBank(data); }; void TdApi::processRspQryFundTransferSerial(Task task) { CSecurityFtdcFundTransferField task_data = any_cast(task.task_data); dict data; data["PlateSerial"] = task_data.PlateSerial; data["TradingDay"] = task_data.TradingDay; data["ErrorMsg"] = task_data.ErrorMsg; data["ErrorID"] = task_data.ErrorID; data["UserID"] = task_data.UserID; data["TransferSerial"] = task_data.TransferSerial; data["InvestorID"] = task_data.InvestorID; data["SessionID"] = task_data.SessionID; data["LiberSerial"] = task_data.LiberSerial; data["BrokerID"] = task_data.BrokerID; data["FundDirection"] = task_data.FundDirection; data["TradeTime"] = task_data.TradeTime; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["Digest"] = task_data.Digest; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryFundTransferSerial(data, error, task.task_id, task.task_last); }; void TdApi::processRspFundInterTransfer(Task task) { CSecurityFtdcFundInterTransferField task_data = any_cast(task.task_data); dict data; data["SerialID"] = task_data.SerialID; data["TransferType"] = task_data.TransferType; data["UserID"] = task_data.UserID; data["InvestorID"] = task_data.InvestorID; data["BrokerID"] = task_data.BrokerID; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspFundInterTransfer(data, error, task.task_id, task.task_last); }; void TdApi::processRspQryFundInterTransferSerial(Task task) { CSecurityFtdcFundInterTransferSerialField task_data = any_cast(task.task_data); dict data; data["SerialID"] = task_data.SerialID; data["TransferType"] = task_data.TransferType; data["ErrorMsg"] = task_data.ErrorMsg; data["UserID"] = task_data.UserID; data["InvestorID"] = task_data.InvestorID; data["TransferTime"] = task_data.TransferTime; data["BrokerID"] = task_data.BrokerID; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["ErrorID"] = task_data.ErrorID; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onRspQryFundInterTransferSerial(data, error, task.task_id, task.task_last); }; void TdApi::processRtnFundInterTransferSerial(Task task) { CSecurityFtdcFundInterTransferSerialField task_data = any_cast(task.task_data); dict data; data["SerialID"] = task_data.SerialID; data["TransferType"] = task_data.TransferType; data["ErrorMsg"] = task_data.ErrorMsg; data["UserID"] = task_data.UserID; data["InvestorID"] = task_data.InvestorID; data["TransferTime"] = task_data.TransferTime; data["BrokerID"] = task_data.BrokerID; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["ErrorID"] = task_data.ErrorID; data["AccountID"] = task_data.AccountID; this->onRtnFundInterTransferSerial(data); }; void TdApi::processErrRtnFundInterTransfer(Task task) { CSecurityFtdcFundInterTransferField task_data = any_cast(task.task_data); dict data; data["SerialID"] = task_data.SerialID; data["TransferType"] = task_data.TransferType; data["UserID"] = task_data.UserID; data["InvestorID"] = task_data.InvestorID; data["BrokerID"] = task_data.BrokerID; data["Password"] = task_data.Password; data["TradeAmount"] = task_data.TradeAmount; data["AccountID"] = task_data.AccountID; CSecurityFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; this->onErrRtnFundInterTransfer(data, error); };