1132 lines
44 KiB
C++
1132 lines
44 KiB
C++
void TdApi::processFrontConnected(Task task)
|
|
{
|
|
PyLock lock;
|
|
this->onFrontConnected();
|
|
};
|
|
|
|
void TdApi::processFrontDisconnected(Task task)
|
|
{
|
|
PyLock lock;
|
|
this->onFrontDisconnected(task.task_id);
|
|
};
|
|
|
|
void TdApi::processHeartBeatWarning(Task task)
|
|
{
|
|
PyLock lock;
|
|
this->onHeartBeatWarning(task.task_id);
|
|
};
|
|
|
|
void TdApi::processRspError(Task task)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcRspInfoField task_error = any_cast<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcRspUserLoginField task_data = any_cast<CSecurityFtdcRspUserLoginField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcUserLogoutField task_data = any_cast<CSecurityFtdcUserLogoutField>(task.task_data);
|
|
dict data;
|
|
data["UserID"] = task_data.UserID;
|
|
data["BrokerID"] = task_data.BrokerID;
|
|
|
|
CSecurityFtdcRspInfoField task_error = any_cast<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInputOrderField task_data = any_cast<CSecurityFtdcInputOrderField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInputOrderActionField task_data = any_cast<CSecurityFtdcInputOrderActionField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcUserPasswordUpdateField task_data = any_cast<CSecurityFtdcUserPasswordUpdateField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcTradingAccountPasswordUpdateField task_data = any_cast<CSecurityFtdcTradingAccountPasswordUpdateField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcExchangeField task_data = any_cast<CSecurityFtdcExchangeField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInstrumentField task_data = any_cast<CSecurityFtdcInstrumentField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInvestorField task_data = any_cast<CSecurityFtdcInvestorField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcTradingCodeField task_data = any_cast<CSecurityFtdcTradingCodeField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcTradingAccountField task_data = any_cast<CSecurityFtdcTradingAccountField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcDepthMarketDataField task_data = any_cast<CSecurityFtdcDepthMarketDataField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcBondInterestField task_data = any_cast<CSecurityFtdcBondInterestField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcMarketRationInfoField task_data = any_cast<CSecurityFtdcMarketRationInfoField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInstrumentCommissionRateField task_data = any_cast<CSecurityFtdcInstrumentCommissionRateField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcETFInstrumentField task_data = any_cast<CSecurityFtdcETFInstrumentField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcETFBasketField task_data = any_cast<CSecurityFtdcETFBasketField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcOFInstrumentField task_data = any_cast<CSecurityFtdcOFInstrumentField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcSFInstrumentField task_data = any_cast<CSecurityFtdcSFInstrumentField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcOrderField task_data = any_cast<CSecurityFtdcOrderField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcTradeField task_data = any_cast<CSecurityFtdcTradeField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInvestorPositionField task_data = any_cast<CSecurityFtdcInvestorPositionField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcOrderField task_data = any_cast<CSecurityFtdcOrderField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcTradeField task_data = any_cast<CSecurityFtdcTradeField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInputOrderField task_data = any_cast<CSecurityFtdcInputOrderField>(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<CSecurityFtdcRspInfoField>(task.task_error);
|
|
dict error;
|
|
error["ErrorMsg"] = task_error.ErrorMsg;
|
|
error["ErrorID"] = task_error.ErrorID;
|
|
|
|
this->onErrRtnOrderInsert(data, error);
|
|
};
|
|
|
|
void TdApi::processErrRtnOrderAction(Task task)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcOrderActionField task_data = any_cast<CSecurityFtdcOrderActionField>(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<CSecurityFtdcRspInfoField>(task.task_error);
|
|
dict error;
|
|
error["ErrorMsg"] = task_error.ErrorMsg;
|
|
error["ErrorID"] = task_error.ErrorID;
|
|
|
|
this->onErrRtnOrderAction(data, error);
|
|
};
|
|
|
|
void TdApi::processRspFundOutByLiber(Task task)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInputFundTransferField task_data = any_cast<CSecurityFtdcInputFundTransferField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundTransferField task_data = any_cast<CSecurityFtdcFundTransferField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcInputFundTransferField task_data = any_cast<CSecurityFtdcInputFundTransferField>(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<CSecurityFtdcRspInfoField>(task.task_error);
|
|
dict error;
|
|
error["ErrorMsg"] = task_error.ErrorMsg;
|
|
error["ErrorID"] = task_error.ErrorID;
|
|
|
|
this->onErrRtnFundOutByLiber(data, error);
|
|
};
|
|
|
|
void TdApi::processRtnFundInByBank(Task task)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundTransferField task_data = any_cast<CSecurityFtdcFundTransferField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundTransferField task_data = any_cast<CSecurityFtdcFundTransferField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundInterTransferField task_data = any_cast<CSecurityFtdcFundInterTransferField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundInterTransferSerialField task_data = any_cast<CSecurityFtdcFundInterTransferSerialField>(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<CSecurityFtdcRspInfoField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundInterTransferSerialField task_data = any_cast<CSecurityFtdcFundInterTransferSerialField>(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)
|
|
{
|
|
PyLock lock;
|
|
CSecurityFtdcFundInterTransferField task_data = any_cast<CSecurityFtdcFundInterTransferField>(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<CSecurityFtdcRspInfoField>(task.task_error);
|
|
dict error;
|
|
error["ErrorMsg"] = task_error.ErrorMsg;
|
|
error["ErrorID"] = task_error.ErrorID;
|
|
|
|
this->onErrRtnFundInterTransfer(data, error);
|
|
};
|
|
|