[update] CTP 6.3.19
This commit is contained in:
parent
c439195056
commit
a5aac33698
@ -21,6 +21,8 @@ THOST_FTDC_ICT_HKMCIDCard = 'I'
|
|||||||
THOST_FTDC_ICT_AccountsPermits = 'J'
|
THOST_FTDC_ICT_AccountsPermits = 'J'
|
||||||
THOST_FTDC_ICT_FrgPrmtRdCard = 'K'
|
THOST_FTDC_ICT_FrgPrmtRdCard = 'K'
|
||||||
THOST_FTDC_ICT_CptMngPrdLetter = 'L'
|
THOST_FTDC_ICT_CptMngPrdLetter = 'L'
|
||||||
|
THOST_FTDC_ICT_UniformSocialCreditCode = 'N'
|
||||||
|
THOST_FTDC_ICT_CorporationCertNo = 'O'
|
||||||
THOST_FTDC_ICT_OtherCard = 'x'
|
THOST_FTDC_ICT_OtherCard = 'x'
|
||||||
THOST_FTDC_IR_All = '1'
|
THOST_FTDC_IR_All = '1'
|
||||||
THOST_FTDC_IR_Group = '2'
|
THOST_FTDC_IR_Group = '2'
|
||||||
@ -142,6 +144,16 @@ THOST_FTDC_PC_Combination = '3'
|
|||||||
THOST_FTDC_PC_Spot = '4'
|
THOST_FTDC_PC_Spot = '4'
|
||||||
THOST_FTDC_PC_EFP = '5'
|
THOST_FTDC_PC_EFP = '5'
|
||||||
THOST_FTDC_PC_SpotOption = '6'
|
THOST_FTDC_PC_SpotOption = '6'
|
||||||
|
THOST_FTDC_PC_TAS = '7'
|
||||||
|
THOST_FTDC_PC_MI = 'I'
|
||||||
|
THOST_FTDC_APC_FutureSingle = '1'
|
||||||
|
THOST_FTDC_APC_OptionSingle = '2'
|
||||||
|
THOST_FTDC_APC_Futures = '3'
|
||||||
|
THOST_FTDC_APC_Options = '4'
|
||||||
|
THOST_FTDC_APC_TradingComb = '5'
|
||||||
|
THOST_FTDC_APC_UnTradingComb = '6'
|
||||||
|
THOST_FTDC_APC_AllTrading = '7'
|
||||||
|
THOST_FTDC_APC_All = '8'
|
||||||
THOST_FTDC_IP_NotStart = '0'
|
THOST_FTDC_IP_NotStart = '0'
|
||||||
THOST_FTDC_IP_Started = '1'
|
THOST_FTDC_IP_Started = '1'
|
||||||
THOST_FTDC_IP_Pause = '2'
|
THOST_FTDC_IP_Pause = '2'
|
||||||
@ -251,6 +263,8 @@ THOST_FTDC_TRDT_OTC = '2'
|
|||||||
THOST_FTDC_TRDT_EFPDerived = '3'
|
THOST_FTDC_TRDT_EFPDerived = '3'
|
||||||
THOST_FTDC_TRDT_CombinationDerived = '4'
|
THOST_FTDC_TRDT_CombinationDerived = '4'
|
||||||
THOST_FTDC_TRDT_BlockTrade = '5'
|
THOST_FTDC_TRDT_BlockTrade = '5'
|
||||||
|
THOST_FTDC_SPOST_Common = '#'
|
||||||
|
THOST_FTDC_SPOST_Tas = '0'
|
||||||
THOST_FTDC_PSRC_LastPrice = '0'
|
THOST_FTDC_PSRC_LastPrice = '0'
|
||||||
THOST_FTDC_PSRC_Buy = '1'
|
THOST_FTDC_PSRC_Buy = '1'
|
||||||
THOST_FTDC_PSRC_Sell = '2'
|
THOST_FTDC_PSRC_Sell = '2'
|
||||||
@ -506,6 +520,8 @@ THOST_FTDC_UET_Trading = '3'
|
|||||||
THOST_FTDC_UET_TradingError = '4'
|
THOST_FTDC_UET_TradingError = '4'
|
||||||
THOST_FTDC_UET_UpdatePassword = '5'
|
THOST_FTDC_UET_UpdatePassword = '5'
|
||||||
THOST_FTDC_UET_Authenticate = '6'
|
THOST_FTDC_UET_Authenticate = '6'
|
||||||
|
THOST_FTDC_UET_SubmitSysInfo = '7'
|
||||||
|
THOST_FTDC_UET_Transfer = '8'
|
||||||
THOST_FTDC_UET_Other = '9'
|
THOST_FTDC_UET_Other = '9'
|
||||||
THOST_FTDC_ICS_Close = '0'
|
THOST_FTDC_ICS_Close = '0'
|
||||||
THOST_FTDC_ICS_CloseToday = '1'
|
THOST_FTDC_ICS_CloseToday = '1'
|
||||||
@ -1140,6 +1156,8 @@ THOST_FTDC_COMBT_STD = '3'
|
|||||||
THOST_FTDC_COMBT_STG = '4'
|
THOST_FTDC_COMBT_STG = '4'
|
||||||
THOST_FTDC_COMBT_PRT = '5'
|
THOST_FTDC_COMBT_PRT = '5'
|
||||||
THOST_FTDC_COMBT_CLD = '6'
|
THOST_FTDC_COMBT_CLD = '6'
|
||||||
|
THOST_FTDC_COMBT_OPL = '7'
|
||||||
|
THOST_FTDC_COMBT_BFO = '8'
|
||||||
THOST_FTDC_DCECOMBT_SPL = '0'
|
THOST_FTDC_DCECOMBT_SPL = '0'
|
||||||
THOST_FTDC_DCECOMBT_OPL = '1'
|
THOST_FTDC_DCECOMBT_OPL = '1'
|
||||||
THOST_FTDC_DCECOMBT_SP = '2'
|
THOST_FTDC_DCECOMBT_SP = '2'
|
||||||
@ -1195,6 +1213,7 @@ THOST_FTDC_CFUFN_SUFN_F = 'F'
|
|||||||
THOST_FTDC_CFUFN_SUFN_S = 'S'
|
THOST_FTDC_CFUFN_SUFN_S = 'S'
|
||||||
THOST_FTDC_CMDR_Comb = '0'
|
THOST_FTDC_CMDR_Comb = '0'
|
||||||
THOST_FTDC_CMDR_UnComb = '1'
|
THOST_FTDC_CMDR_UnComb = '1'
|
||||||
|
THOST_FTDC_CMDR_DelComb = '2'
|
||||||
THOST_FTDC_STOV_RealValue = '1'
|
THOST_FTDC_STOV_RealValue = '1'
|
||||||
THOST_FTDC_STOV_ProfitValue = '2'
|
THOST_FTDC_STOV_ProfitValue = '2'
|
||||||
THOST_FTDC_STOV_RealRatio = '3'
|
THOST_FTDC_STOV_RealRatio = '3'
|
||||||
|
@ -21,6 +21,8 @@ THOST_FTDC_ICT_HKMCIDCard = 'I'
|
|||||||
THOST_FTDC_ICT_AccountsPermits = 'J'
|
THOST_FTDC_ICT_AccountsPermits = 'J'
|
||||||
THOST_FTDC_ICT_FrgPrmtRdCard = 'K'
|
THOST_FTDC_ICT_FrgPrmtRdCard = 'K'
|
||||||
THOST_FTDC_ICT_CptMngPrdLetter = 'L'
|
THOST_FTDC_ICT_CptMngPrdLetter = 'L'
|
||||||
|
THOST_FTDC_ICT_UniformSocialCreditCode = 'N'
|
||||||
|
THOST_FTDC_ICT_CorporationCertNo = 'O'
|
||||||
THOST_FTDC_ICT_OtherCard = 'x'
|
THOST_FTDC_ICT_OtherCard = 'x'
|
||||||
THOST_FTDC_IR_All = '1'
|
THOST_FTDC_IR_All = '1'
|
||||||
THOST_FTDC_IR_Group = '2'
|
THOST_FTDC_IR_Group = '2'
|
||||||
@ -142,6 +144,16 @@ THOST_FTDC_PC_Combination = '3'
|
|||||||
THOST_FTDC_PC_Spot = '4'
|
THOST_FTDC_PC_Spot = '4'
|
||||||
THOST_FTDC_PC_EFP = '5'
|
THOST_FTDC_PC_EFP = '5'
|
||||||
THOST_FTDC_PC_SpotOption = '6'
|
THOST_FTDC_PC_SpotOption = '6'
|
||||||
|
THOST_FTDC_PC_TAS = '7'
|
||||||
|
THOST_FTDC_PC_MI = 'I'
|
||||||
|
THOST_FTDC_APC_FutureSingle = '1'
|
||||||
|
THOST_FTDC_APC_OptionSingle = '2'
|
||||||
|
THOST_FTDC_APC_Futures = '3'
|
||||||
|
THOST_FTDC_APC_Options = '4'
|
||||||
|
THOST_FTDC_APC_TradingComb = '5'
|
||||||
|
THOST_FTDC_APC_UnTradingComb = '6'
|
||||||
|
THOST_FTDC_APC_AllTrading = '7'
|
||||||
|
THOST_FTDC_APC_All = '8'
|
||||||
THOST_FTDC_IP_NotStart = '0'
|
THOST_FTDC_IP_NotStart = '0'
|
||||||
THOST_FTDC_IP_Started = '1'
|
THOST_FTDC_IP_Started = '1'
|
||||||
THOST_FTDC_IP_Pause = '2'
|
THOST_FTDC_IP_Pause = '2'
|
||||||
@ -164,6 +176,8 @@ THOST_FTDC_HF_Speculation = '1'
|
|||||||
THOST_FTDC_HF_Arbitrage = '2'
|
THOST_FTDC_HF_Arbitrage = '2'
|
||||||
THOST_FTDC_HF_Hedge = '3'
|
THOST_FTDC_HF_Hedge = '3'
|
||||||
THOST_FTDC_HF_MarketMaker = '5'
|
THOST_FTDC_HF_MarketMaker = '5'
|
||||||
|
THOST_FTDC_HF_SpecHedge = '6'
|
||||||
|
THOST_FTDC_HF_HedgeSpec = '7'
|
||||||
THOST_FTDC_BHF_Speculation = '1'
|
THOST_FTDC_BHF_Speculation = '1'
|
||||||
THOST_FTDC_BHF_Arbitrage = '2'
|
THOST_FTDC_BHF_Arbitrage = '2'
|
||||||
THOST_FTDC_BHF_Hedge = '3'
|
THOST_FTDC_BHF_Hedge = '3'
|
||||||
@ -208,7 +222,8 @@ THOST_FTDC_ORDT_DeriveFromCombination = '2'
|
|||||||
THOST_FTDC_ORDT_Combination = '3'
|
THOST_FTDC_ORDT_Combination = '3'
|
||||||
THOST_FTDC_ORDT_ConditionalOrder = '4'
|
THOST_FTDC_ORDT_ConditionalOrder = '4'
|
||||||
THOST_FTDC_ORDT_Swap = '5'
|
THOST_FTDC_ORDT_Swap = '5'
|
||||||
THOST_FTDC_ORDT_DeriveFromEFP = '6'
|
THOST_FTDC_ORDT_DeriveFromBlockTrade = '6'
|
||||||
|
THOST_FTDC_ORDT_DeriveFromEFPTrade = '7'
|
||||||
THOST_FTDC_TC_IOC = '1'
|
THOST_FTDC_TC_IOC = '1'
|
||||||
THOST_FTDC_TC_GFS = '2'
|
THOST_FTDC_TC_GFS = '2'
|
||||||
THOST_FTDC_TC_GFD = '3'
|
THOST_FTDC_TC_GFD = '3'
|
||||||
@ -247,9 +262,13 @@ THOST_FTDC_TRDT_OptionsExecution = '1'
|
|||||||
THOST_FTDC_TRDT_OTC = '2'
|
THOST_FTDC_TRDT_OTC = '2'
|
||||||
THOST_FTDC_TRDT_EFPDerived = '3'
|
THOST_FTDC_TRDT_EFPDerived = '3'
|
||||||
THOST_FTDC_TRDT_CombinationDerived = '4'
|
THOST_FTDC_TRDT_CombinationDerived = '4'
|
||||||
|
THOST_FTDC_TRDT_BlockTrade = '5'
|
||||||
|
THOST_FTDC_SPOST_Common = '#'
|
||||||
|
THOST_FTDC_SPOST_Tas = '0'
|
||||||
THOST_FTDC_PSRC_LastPrice = '0'
|
THOST_FTDC_PSRC_LastPrice = '0'
|
||||||
THOST_FTDC_PSRC_Buy = '1'
|
THOST_FTDC_PSRC_Buy = '1'
|
||||||
THOST_FTDC_PSRC_Sell = '2'
|
THOST_FTDC_PSRC_Sell = '2'
|
||||||
|
THOST_FTDC_PSRC_OTC = '3'
|
||||||
THOST_FTDC_IS_BeforeTrading = '0'
|
THOST_FTDC_IS_BeforeTrading = '0'
|
||||||
THOST_FTDC_IS_NoTrading = '1'
|
THOST_FTDC_IS_NoTrading = '1'
|
||||||
THOST_FTDC_IS_Continous = '2'
|
THOST_FTDC_IS_Continous = '2'
|
||||||
@ -501,6 +520,8 @@ THOST_FTDC_UET_Trading = '3'
|
|||||||
THOST_FTDC_UET_TradingError = '4'
|
THOST_FTDC_UET_TradingError = '4'
|
||||||
THOST_FTDC_UET_UpdatePassword = '5'
|
THOST_FTDC_UET_UpdatePassword = '5'
|
||||||
THOST_FTDC_UET_Authenticate = '6'
|
THOST_FTDC_UET_Authenticate = '6'
|
||||||
|
THOST_FTDC_UET_SubmitSysInfo = '7'
|
||||||
|
THOST_FTDC_UET_Transfer = '8'
|
||||||
THOST_FTDC_UET_Other = '9'
|
THOST_FTDC_UET_Other = '9'
|
||||||
THOST_FTDC_ICS_Close = '0'
|
THOST_FTDC_ICS_Close = '0'
|
||||||
THOST_FTDC_ICS_CloseToday = '1'
|
THOST_FTDC_ICS_CloseToday = '1'
|
||||||
@ -1135,6 +1156,19 @@ THOST_FTDC_COMBT_STD = '3'
|
|||||||
THOST_FTDC_COMBT_STG = '4'
|
THOST_FTDC_COMBT_STG = '4'
|
||||||
THOST_FTDC_COMBT_PRT = '5'
|
THOST_FTDC_COMBT_PRT = '5'
|
||||||
THOST_FTDC_COMBT_CLD = '6'
|
THOST_FTDC_COMBT_CLD = '6'
|
||||||
|
THOST_FTDC_COMBT_OPL = '7'
|
||||||
|
THOST_FTDC_COMBT_BFO = '8'
|
||||||
|
THOST_FTDC_DCECOMBT_SPL = '0'
|
||||||
|
THOST_FTDC_DCECOMBT_OPL = '1'
|
||||||
|
THOST_FTDC_DCECOMBT_SP = '2'
|
||||||
|
THOST_FTDC_DCECOMBT_SPC = '3'
|
||||||
|
THOST_FTDC_DCECOMBT_BLS = '4'
|
||||||
|
THOST_FTDC_DCECOMBT_BES = '5'
|
||||||
|
THOST_FTDC_DCECOMBT_CAS = '6'
|
||||||
|
THOST_FTDC_DCECOMBT_STD = '7'
|
||||||
|
THOST_FTDC_DCECOMBT_STG = '8'
|
||||||
|
THOST_FTDC_DCECOMBT_BFO = '9'
|
||||||
|
THOST_FTDC_DCECOMBT_SFO = 'a'
|
||||||
THOST_FTDC_ORPT_PreSettlementPrice = '1'
|
THOST_FTDC_ORPT_PreSettlementPrice = '1'
|
||||||
THOST_FTDC_ORPT_OpenPrice = '4'
|
THOST_FTDC_ORPT_OpenPrice = '4'
|
||||||
THOST_FTDC_ORPT_MaxPreSettlementPrice = '5'
|
THOST_FTDC_ORPT_MaxPreSettlementPrice = '5'
|
||||||
@ -1179,6 +1213,7 @@ THOST_FTDC_CFUFN_SUFN_F = 'F'
|
|||||||
THOST_FTDC_CFUFN_SUFN_S = 'S'
|
THOST_FTDC_CFUFN_SUFN_S = 'S'
|
||||||
THOST_FTDC_CMDR_Comb = '0'
|
THOST_FTDC_CMDR_Comb = '0'
|
||||||
THOST_FTDC_CMDR_UnComb = '1'
|
THOST_FTDC_CMDR_UnComb = '1'
|
||||||
|
THOST_FTDC_CMDR_DelComb = '2'
|
||||||
THOST_FTDC_STOV_RealValue = '1'
|
THOST_FTDC_STOV_RealValue = '1'
|
||||||
THOST_FTDC_STOV_ProfitValue = '2'
|
THOST_FTDC_STOV_ProfitValue = '2'
|
||||||
THOST_FTDC_STOV_RealRatio = '3'
|
THOST_FTDC_STOV_RealRatio = '3'
|
||||||
|
@ -3,10 +3,11 @@
|
|||||||
#define ONHEARTBEATWARNING 2
|
#define ONHEARTBEATWARNING 2
|
||||||
#define ONRSPUSERLOGIN 3
|
#define ONRSPUSERLOGIN 3
|
||||||
#define ONRSPUSERLOGOUT 4
|
#define ONRSPUSERLOGOUT 4
|
||||||
#define ONRSPERROR 5
|
#define ONRSPQRYMULTICASTINSTRUMENT 5
|
||||||
#define ONRSPSUBMARKETDATA 6
|
#define ONRSPERROR 6
|
||||||
#define ONRSPUNSUBMARKETDATA 7
|
#define ONRSPSUBMARKETDATA 7
|
||||||
#define ONRSPSUBFORQUOTERSP 8
|
#define ONRSPUNSUBMARKETDATA 8
|
||||||
#define ONRSPUNSUBFORQUOTERSP 9
|
#define ONRSPSUBFORQUOTERSP 9
|
||||||
#define ONRTNDEPTHMARKETDATA 10
|
#define ONRSPUNSUBFORQUOTERSP 10
|
||||||
#define ONRTNFORQUOTERSP 11
|
#define ONRTNDEPTHMARKETDATA 11
|
||||||
|
#define ONRTNFORQUOTERSP 12
|
||||||
|
@ -2,3 +2,5 @@ int reqUserLogin(const dict &req, int reqid);
|
|||||||
|
|
||||||
int reqUserLogout(const dict &req, int reqid);
|
int reqUserLogout(const dict &req, int reqid);
|
||||||
|
|
||||||
|
int reqQryMulticastInstrument(const dict &req, int reqid);
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@ virtual void onRspUserLogin(const dict &data, const dict &error, int reqid, bool
|
|||||||
|
|
||||||
virtual void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last) {};
|
virtual void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last) {};
|
||||||
|
|
||||||
|
virtual void onRspQryMulticastInstrument(const dict &data, const dict &error, int reqid, bool last) {};
|
||||||
|
|
||||||
virtual void onRspError(const dict &error, int reqid, bool last) {};
|
virtual void onRspError(const dict &error, int reqid, bool last) {};
|
||||||
|
|
||||||
virtual void onRspSubMarketData(const dict &data, const dict &error, int reqid, bool last) {};
|
virtual void onRspSubMarketData(const dict &data, const dict &error, int reqid, bool last) {};
|
||||||
|
@ -8,6 +8,8 @@ void processRspUserLogin(Task *task);
|
|||||||
|
|
||||||
void processRspUserLogout(Task *task);
|
void processRspUserLogout(Task *task);
|
||||||
|
|
||||||
|
void processRspQryMulticastInstrument(Task *task);
|
||||||
|
|
||||||
void processRspError(Task *task);
|
void processRspError(Task *task);
|
||||||
|
|
||||||
void processRspSubMarketData(Task *task);
|
void processRspSubMarketData(Task *task);
|
||||||
|
@ -28,3 +28,13 @@ int MdApi::reqUserLogout(const dict &req, int reqid)
|
|||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int MdApi::reqQryMulticastInstrument(const dict &req, int reqid)
|
||||||
|
{
|
||||||
|
CThostFtdcQryMulticastInstrumentField myreq = CThostFtdcQryMulticastInstrumentField();
|
||||||
|
memset(&myreq, 0, sizeof(myreq));
|
||||||
|
getInt(req, "TopicID", &myreq.TopicID);
|
||||||
|
getString(req, "InstrumentID", myreq.InstrumentID);
|
||||||
|
int i = this->api->ReqQryMulticastInstrument(&myreq, reqid);
|
||||||
|
return i;
|
||||||
|
};
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
.def("reqUserLogin", &MdApi::reqUserLogin)
|
.def("reqUserLogin", &MdApi::reqUserLogin)
|
||||||
.def("reqUserLogout", &MdApi::reqUserLogout)
|
.def("reqUserLogout", &MdApi::reqUserLogout)
|
||||||
|
.def("reqQryMulticastInstrument", &MdApi::reqQryMulticastInstrument)
|
||||||
.def("onFrontConnected", &MdApi::onFrontConnected)
|
.def("onFrontConnected", &MdApi::onFrontConnected)
|
||||||
.def("onFrontDisconnected", &MdApi::onFrontDisconnected)
|
.def("onFrontDisconnected", &MdApi::onFrontDisconnected)
|
||||||
.def("onHeartBeatWarning", &MdApi::onHeartBeatWarning)
|
.def("onHeartBeatWarning", &MdApi::onHeartBeatWarning)
|
||||||
.def("onRspUserLogin", &MdApi::onRspUserLogin)
|
.def("onRspUserLogin", &MdApi::onRspUserLogin)
|
||||||
.def("onRspUserLogout", &MdApi::onRspUserLogout)
|
.def("onRspUserLogout", &MdApi::onRspUserLogout)
|
||||||
|
.def("onRspQryMulticastInstrument", &MdApi::onRspQryMulticastInstrument)
|
||||||
.def("onRspError", &MdApi::onRspError)
|
.def("onRspError", &MdApi::onRspError)
|
||||||
.def("onRspSubMarketData", &MdApi::onRspSubMarketData)
|
.def("onRspSubMarketData", &MdApi::onRspSubMarketData)
|
||||||
.def("onRspUnSubMarketData", &MdApi::onRspUnSubMarketData)
|
.def("onRspUnSubMarketData", &MdApi::onRspUnSubMarketData)
|
||||||
|
@ -58,6 +58,18 @@ void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last)
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void onRspQryMulticastInstrument(const dict &data, const dict &error, int reqid, bool last) override
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PYBIND11_OVERLOAD(void, MdApi, onRspQryMulticastInstrument, data, error, reqid, last);
|
||||||
|
}
|
||||||
|
catch (const error_already_set &e)
|
||||||
|
{
|
||||||
|
cout << e.what() << endl;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void onRspError(const dict &error, int reqid, bool last) override
|
void onRspError(const dict &error, int reqid, bool last) override
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -71,6 +71,32 @@ void MdApi::processRspUserLogout(Task *task)
|
|||||||
this->onRspUserLogout(data, error, task->task_id, task->task_last);
|
this->onRspUserLogout(data, error, task->task_id, task->task_last);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void MdApi::processRspQryMulticastInstrument(Task *task)
|
||||||
|
{
|
||||||
|
gil_scoped_acquire acquire;
|
||||||
|
dict data;
|
||||||
|
if (task->task_data)
|
||||||
|
{
|
||||||
|
CThostFtdcMulticastInstrumentField *task_data = (CThostFtdcMulticastInstrumentField*)task->task_data;
|
||||||
|
data["TopicID"] = task_data->TopicID;
|
||||||
|
data["InstrumentID"] = toUtf(task_data->InstrumentID);
|
||||||
|
data["InstrumentNo"] = task_data->InstrumentNo;
|
||||||
|
data["CodePrice"] = task_data->CodePrice;
|
||||||
|
data["VolumeMultiple"] = task_data->VolumeMultiple;
|
||||||
|
data["PriceTick"] = task_data->PriceTick;
|
||||||
|
delete task_data;
|
||||||
|
}
|
||||||
|
dict error;
|
||||||
|
if (task->task_error)
|
||||||
|
{
|
||||||
|
CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
|
||||||
|
error["ErrorID"] = task_error->ErrorID;
|
||||||
|
error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
|
||||||
|
delete task_error;
|
||||||
|
}
|
||||||
|
this->onRspQryMulticastInstrument(data, error, task->task_id, task->task_last);
|
||||||
|
};
|
||||||
|
|
||||||
void MdApi::processRspError(Task *task)
|
void MdApi::processRspError(Task *task)
|
||||||
{
|
{
|
||||||
gil_scoped_acquire acquire;
|
gil_scoped_acquire acquire;
|
||||||
|
@ -28,6 +28,12 @@ case ONRSPUSERLOGOUT:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ONRSPQRYMULTICASTINSTRUMENT:
|
||||||
|
{
|
||||||
|
this->processRspQryMulticastInstrument(&task);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case ONRSPERROR:
|
case ONRSPERROR:
|
||||||
{
|
{
|
||||||
this->processRspError(&task);
|
this->processRspError(&task);
|
||||||
|
@ -21,7 +21,7 @@ void MdApi::OnHeartBeatWarning(int nTimeLapse)
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPUSERLOGIN;
|
task.task_name = ONRSPUSERLOGIN;
|
||||||
@ -42,7 +42,7 @@ void MdApi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtd
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPUSERLOGOUT;
|
task.task_name = ONRSPUSERLOGOUT;
|
||||||
@ -63,7 +63,28 @@ void MdApi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRs
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
|
{
|
||||||
|
Task task = Task();
|
||||||
|
task.task_name = ONRSPQRYMULTICASTINSTRUMENT;
|
||||||
|
if (pMulticastInstrument)
|
||||||
|
{
|
||||||
|
CThostFtdcMulticastInstrumentField *task_data = new CThostFtdcMulticastInstrumentField();
|
||||||
|
*task_data = *pMulticastInstrument;
|
||||||
|
task.task_data = task_data;
|
||||||
|
}
|
||||||
|
if (pRspInfo)
|
||||||
|
{
|
||||||
|
CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
|
||||||
|
*task_error = *pRspInfo;
|
||||||
|
task.task_error = task_error;
|
||||||
|
}
|
||||||
|
task.task_id = nRequestID;
|
||||||
|
task.task_last = bIsLast;
|
||||||
|
this->task_queue.push(task);
|
||||||
|
};
|
||||||
|
|
||||||
|
void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPERROR;
|
task.task_name = ONRSPERROR;
|
||||||
@ -78,7 +99,7 @@ void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bI
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPSUBMARKETDATA;
|
task.task_name = ONRSPSUBMARKETDATA;
|
||||||
@ -99,7 +120,7 @@ void MdApi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstr
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPUNSUBMARKETDATA;
|
task.task_name = ONRSPUNSUBMARKETDATA;
|
||||||
@ -120,7 +141,7 @@ void MdApi::OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificIns
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPSUBFORQUOTERSP;
|
task.task_name = ONRSPSUBFORQUOTERSP;
|
||||||
@ -141,7 +162,7 @@ void MdApi::OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInst
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRSPUNSUBFORQUOTERSP;
|
task.task_name = ONRSPUNSUBFORQUOTERSP;
|
||||||
@ -162,7 +183,7 @@ void MdApi::OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificIn
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
|
void MdApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRTNDEPTHMARKETDATA;
|
task.task_name = ONRTNDEPTHMARKETDATA;
|
||||||
@ -175,7 +196,7 @@ void MdApi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketDat
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
void MdApi::OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp)
|
void MdApi::OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
task.task_name = ONRTNFORQUOTERSP;
|
task.task_name = ONRTNFORQUOTERSP;
|
||||||
|
@ -68,6 +68,7 @@ CThostFtdcAuthenticationInfoField = {
|
|||||||
"IsResult": "int",
|
"IsResult": "int",
|
||||||
"AppID": "string",
|
"AppID": "string",
|
||||||
"AppType": "char",
|
"AppType": "char",
|
||||||
|
"ClientIPAddress": "string",
|
||||||
}
|
}
|
||||||
|
|
||||||
CThostFtdcRspUserLogin2Field = {
|
CThostFtdcRspUserLogin2Field = {
|
||||||
@ -410,6 +411,9 @@ CThostFtdcInvestorPositionField = {
|
|||||||
"ExchangeID": "string",
|
"ExchangeID": "string",
|
||||||
"YdStrikeFrozen": "int",
|
"YdStrikeFrozen": "int",
|
||||||
"InvestUnitID": "string",
|
"InvestUnitID": "string",
|
||||||
|
"PositionCostOffset": "double",
|
||||||
|
"TasPosition": "int",
|
||||||
|
"TasPositionCost": "double",
|
||||||
}
|
}
|
||||||
|
|
||||||
CThostFtdcInstrumentMarginRateField = {
|
CThostFtdcInstrumentMarginRateField = {
|
||||||
@ -1160,6 +1164,9 @@ CThostFtdcSyncingInvestorPositionField = {
|
|||||||
"ExchangeID": "string",
|
"ExchangeID": "string",
|
||||||
"YdStrikeFrozen": "int",
|
"YdStrikeFrozen": "int",
|
||||||
"InvestUnitID": "string",
|
"InvestUnitID": "string",
|
||||||
|
"PositionCostOffset": "double",
|
||||||
|
"TasPosition": "int",
|
||||||
|
"TasPositionCost": "double",
|
||||||
}
|
}
|
||||||
|
|
||||||
CThostFtdcSyncingInstrumentMarginRateField = {
|
CThostFtdcSyncingInstrumentMarginRateField = {
|
||||||
@ -2185,6 +2192,8 @@ CThostFtdcInputCombActionField = {
|
|||||||
"IPAddress": "string",
|
"IPAddress": "string",
|
||||||
"MacAddress": "string",
|
"MacAddress": "string",
|
||||||
"InvestUnitID": "string",
|
"InvestUnitID": "string",
|
||||||
|
"FrontID": "int",
|
||||||
|
"SessionID": "int",
|
||||||
}
|
}
|
||||||
|
|
||||||
CThostFtdcCombActionField = {
|
CThostFtdcCombActionField = {
|
||||||
@ -2569,6 +2578,8 @@ CThostFtdcSyncDelaySwapField = {
|
|||||||
"FromRemainSwap": "double",
|
"FromRemainSwap": "double",
|
||||||
"ToCurrencyID": "string",
|
"ToCurrencyID": "string",
|
||||||
"ToAmount": "double",
|
"ToAmount": "double",
|
||||||
|
"IsManualSwap": "int",
|
||||||
|
"IsAllRemainSetZero": "int",
|
||||||
}
|
}
|
||||||
|
|
||||||
CThostFtdcQrySyncDelaySwapField = {
|
CThostFtdcQrySyncDelaySwapField = {
|
||||||
@ -2796,7 +2807,9 @@ CThostFtdcInvestorPositionDetailField = {
|
|||||||
"SettlementPrice": "double",
|
"SettlementPrice": "double",
|
||||||
"CloseVolume": "int",
|
"CloseVolume": "int",
|
||||||
"CloseAmount": "double",
|
"CloseAmount": "double",
|
||||||
|
"TimeFirstVolume": "int",
|
||||||
"InvestUnitID": "string",
|
"InvestUnitID": "string",
|
||||||
|
"SpecPosiType": "char",
|
||||||
}
|
}
|
||||||
|
|
||||||
CThostFtdcTradingAccountPasswordField = {
|
CThostFtdcTradingAccountPasswordField = {
|
||||||
@ -3546,6 +3559,26 @@ CThostFtdcQryBulletinField = {
|
|||||||
"NewsUrgency": "char",
|
"NewsUrgency": "char",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CThostFtdcMulticastInstrumentField = {
|
||||||
|
"TopicID": "int",
|
||||||
|
"InstrumentID": "string",
|
||||||
|
"InstrumentNo": "int",
|
||||||
|
"CodePrice": "double",
|
||||||
|
"VolumeMultiple": "int",
|
||||||
|
"PriceTick": "double",
|
||||||
|
}
|
||||||
|
|
||||||
|
CThostFtdcQryMulticastInstrumentField = {
|
||||||
|
"TopicID": "int",
|
||||||
|
"InstrumentID": "string",
|
||||||
|
}
|
||||||
|
|
||||||
|
CThostFtdcAppIDAuthAssignField = {
|
||||||
|
"BrokerID": "string",
|
||||||
|
"AppID": "string",
|
||||||
|
"DRIdentityID": "int",
|
||||||
|
}
|
||||||
|
|
||||||
CThostFtdcReqOpenAccountField = {
|
CThostFtdcReqOpenAccountField = {
|
||||||
"TradeCode": "string",
|
"TradeCode": "string",
|
||||||
"BankID": "string",
|
"BankID": "string",
|
||||||
@ -4906,3 +4939,21 @@ CThostFtdcDepartmentUserField = {
|
|||||||
CThostFtdcQueryFreqField = {
|
CThostFtdcQueryFreqField = {
|
||||||
"QueryFreq": "int",
|
"QueryFreq": "int",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CThostFtdcAuthForbiddenIPField = {
|
||||||
|
"IPAddress": "string",
|
||||||
|
}
|
||||||
|
|
||||||
|
CThostFtdcQryAuthForbiddenIPField = {
|
||||||
|
"IPAddress": "string",
|
||||||
|
}
|
||||||
|
|
||||||
|
CThostFtdcSyncDelaySwapFrozenField = {
|
||||||
|
"DelaySwapSeqNo": "string",
|
||||||
|
"BrokerID": "string",
|
||||||
|
"InvestorID": "string",
|
||||||
|
"FromCurrencyID": "string",
|
||||||
|
"FromRemainSwap": "double",
|
||||||
|
"IsManualSwap": "int",
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -559,6 +559,8 @@ int TdApi::reqCombActionInsert(const dict &req, int reqid)
|
|||||||
getString(req, "IPAddress", myreq.IPAddress);
|
getString(req, "IPAddress", myreq.IPAddress);
|
||||||
getString(req, "MacAddress", myreq.MacAddress);
|
getString(req, "MacAddress", myreq.MacAddress);
|
||||||
getString(req, "InvestUnitID", myreq.InvestUnitID);
|
getString(req, "InvestUnitID", myreq.InvestUnitID);
|
||||||
|
getInt(req, "FrontID", &myreq.FrontID);
|
||||||
|
getInt(req, "SessionID", &myreq.SessionID);
|
||||||
int i = this->api->ReqCombActionInsert(&myreq, reqid);
|
int i = this->api->ReqCombActionInsert(&myreq, reqid);
|
||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
|
@ -806,6 +806,8 @@ void TdApi::processRspCombActionInsert(Task *task)
|
|||||||
data["IPAddress"] = toUtf(task_data->IPAddress);
|
data["IPAddress"] = toUtf(task_data->IPAddress);
|
||||||
data["MacAddress"] = toUtf(task_data->MacAddress);
|
data["MacAddress"] = toUtf(task_data->MacAddress);
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["FrontID"] = task_data->FrontID;
|
||||||
|
data["SessionID"] = task_data->SessionID;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -1006,6 +1008,9 @@ void TdApi::processRspQryInvestorPosition(Task *task)
|
|||||||
data["ExchangeID"] = toUtf(task_data->ExchangeID);
|
data["ExchangeID"] = toUtf(task_data->ExchangeID);
|
||||||
data["YdStrikeFrozen"] = task_data->YdStrikeFrozen;
|
data["YdStrikeFrozen"] = task_data->YdStrikeFrozen;
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["PositionCostOffset"] = task_data->PositionCostOffset;
|
||||||
|
data["TasPosition"] = task_data->TasPosition;
|
||||||
|
data["TasPositionCost"] = task_data->TasPositionCost;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -1475,7 +1480,9 @@ void TdApi::processRspQryInvestorPositionDetail(Task *task)
|
|||||||
data["SettlementPrice"] = task_data->SettlementPrice;
|
data["SettlementPrice"] = task_data->SettlementPrice;
|
||||||
data["CloseVolume"] = task_data->CloseVolume;
|
data["CloseVolume"] = task_data->CloseVolume;
|
||||||
data["CloseAmount"] = task_data->CloseAmount;
|
data["CloseAmount"] = task_data->CloseAmount;
|
||||||
|
data["TimeFirstVolume"] = task_data->TimeFirstVolume;
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["SpecPosiType"] = task_data->SpecPosiType;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -3514,6 +3521,8 @@ void TdApi::processErrRtnCombActionInsert(Task *task)
|
|||||||
data["IPAddress"] = toUtf(task_data->IPAddress);
|
data["IPAddress"] = toUtf(task_data->IPAddress);
|
||||||
data["MacAddress"] = toUtf(task_data->MacAddress);
|
data["MacAddress"] = toUtf(task_data->MacAddress);
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["FrontID"] = task_data->FrontID;
|
||||||
|
data["SessionID"] = task_data->SessionID;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
|
@ -59,6 +59,7 @@ TThostFtdcPositionDateType = "char"
|
|||||||
TThostFtdcPositionDateTypeType = "char"
|
TThostFtdcPositionDateTypeType = "char"
|
||||||
TThostFtdcTradingRoleType = "char"
|
TThostFtdcTradingRoleType = "char"
|
||||||
TThostFtdcProductClassType = "char"
|
TThostFtdcProductClassType = "char"
|
||||||
|
TThostFtdcAPIProductClassType = "char"
|
||||||
TThostFtdcInstLifePhaseType = "char"
|
TThostFtdcInstLifePhaseType = "char"
|
||||||
TThostFtdcDirectionType = "char"
|
TThostFtdcDirectionType = "char"
|
||||||
TThostFtdcPositionTypeType = "char"
|
TThostFtdcPositionTypeType = "char"
|
||||||
@ -79,6 +80,7 @@ TThostFtdcActionFlagType = "char"
|
|||||||
TThostFtdcTradingRightType = "char"
|
TThostFtdcTradingRightType = "char"
|
||||||
TThostFtdcOrderSourceType = "char"
|
TThostFtdcOrderSourceType = "char"
|
||||||
TThostFtdcTradeTypeType = "char"
|
TThostFtdcTradeTypeType = "char"
|
||||||
|
TThostFtdcSpecPosiTypeType = "char"
|
||||||
TThostFtdcPriceSourceType = "char"
|
TThostFtdcPriceSourceType = "char"
|
||||||
TThostFtdcInstrumentStatusType = "char"
|
TThostFtdcInstrumentStatusType = "char"
|
||||||
TThostFtdcInstStatusEnterReasonType = "char"
|
TThostFtdcInstStatusEnterReasonType = "char"
|
||||||
@ -299,7 +301,6 @@ TThostFtdcAMLInvestorTypeType = "string"
|
|||||||
TThostFtdcAMLIdCardTypeType = "string"
|
TThostFtdcAMLIdCardTypeType = "string"
|
||||||
TThostFtdcAMLTradeDirectType = "string"
|
TThostFtdcAMLTradeDirectType = "string"
|
||||||
TThostFtdcAMLTradeModelType = "string"
|
TThostFtdcAMLTradeModelType = "string"
|
||||||
TThostFtdcAMLParamIDType = "string"
|
|
||||||
TThostFtdcAMLOpParamValueType = "double"
|
TThostFtdcAMLOpParamValueType = "double"
|
||||||
TThostFtdcAMLCustomerCardTypeType = "string"
|
TThostFtdcAMLCustomerCardTypeType = "string"
|
||||||
TThostFtdcAMLInstitutionNameType = "string"
|
TThostFtdcAMLInstitutionNameType = "string"
|
||||||
@ -722,6 +723,7 @@ TThostFtdcExecResultType = "char"
|
|||||||
TThostFtdcStrikeSequenceType = "int"
|
TThostFtdcStrikeSequenceType = "int"
|
||||||
TThostFtdcStrikeTimeType = "string"
|
TThostFtdcStrikeTimeType = "string"
|
||||||
TThostFtdcCombinationTypeType = "char"
|
TThostFtdcCombinationTypeType = "char"
|
||||||
|
TThostFtdcDceCombinationTypeType = "char"
|
||||||
TThostFtdcOptionRoyaltyPriceTypeType = "char"
|
TThostFtdcOptionRoyaltyPriceTypeType = "char"
|
||||||
TThostFtdcBalanceAlgorithmType = "char"
|
TThostFtdcBalanceAlgorithmType = "char"
|
||||||
TThostFtdcActionTypeType = "char"
|
TThostFtdcActionTypeType = "char"
|
||||||
|
@ -52,6 +52,9 @@ public:
|
|||||||
///登出请求响应
|
///登出请求响应
|
||||||
virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
|
virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
|
||||||
|
|
||||||
|
///ÇëÇó²éѯ×é²¥ºÏÔ¼ÏìÓ¦
|
||||||
|
virtual void OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
|
||||||
|
|
||||||
///错误应答
|
///错误应答
|
||||||
virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
|
virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
|
||||||
|
|
||||||
@ -155,6 +158,9 @@ public:
|
|||||||
|
|
||||||
///登出请求
|
///登出请求
|
||||||
virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0;
|
virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0;
|
||||||
|
|
||||||
|
///ÇëÇó²éѯ×é²¥ºÏÔ¼
|
||||||
|
virtual int ReqQryMulticastInstrument(CThostFtdcQryMulticastInstrumentField *pQryMulticastInstrument, int nRequestID) = 0;
|
||||||
protected:
|
protected:
|
||||||
~CThostFtdcMdApi(){};
|
~CThostFtdcMdApi(){};
|
||||||
};
|
};
|
||||||
|
@ -252,6 +252,10 @@ typedef char TThostFtdcIdentifiedCardNoType[51];
|
|||||||
#define THOST_FTDC_ICT_FrgPrmtRdCard 'K'
|
#define THOST_FTDC_ICT_FrgPrmtRdCard 'K'
|
||||||
///资管产品备案函
|
///资管产品备案函
|
||||||
#define THOST_FTDC_ICT_CptMngPrdLetter 'L'
|
#define THOST_FTDC_ICT_CptMngPrdLetter 'L'
|
||||||
|
///统一社会信用代码
|
||||||
|
#define THOST_FTDC_ICT_UniformSocialCreditCode 'N'
|
||||||
|
///机构成立证明文件
|
||||||
|
#define THOST_FTDC_ICT_CorporationCertNo 'O'
|
||||||
///其他证件
|
///其他证件
|
||||||
#define THOST_FTDC_ICT_OtherCard 'x'
|
#define THOST_FTDC_ICT_OtherCard 'x'
|
||||||
|
|
||||||
@ -624,9 +628,35 @@ typedef char TThostFtdcTradingRoleType;
|
|||||||
#define THOST_FTDC_PC_EFP '5'
|
#define THOST_FTDC_PC_EFP '5'
|
||||||
///现货期权
|
///现货期权
|
||||||
#define THOST_FTDC_PC_SpotOption '6'
|
#define THOST_FTDC_PC_SpotOption '6'
|
||||||
|
///TAS合约
|
||||||
|
#define THOST_FTDC_PC_TAS '7'
|
||||||
|
///金属指数
|
||||||
|
#define THOST_FTDC_PC_MI 'I'
|
||||||
|
|
||||||
typedef char TThostFtdcProductClassType;
|
typedef char TThostFtdcProductClassType;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
///TFtdcAPIProductClassType是一个产品类型类型
|
||||||
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
///期货单一合约
|
||||||
|
#define THOST_FTDC_APC_FutureSingle '1'
|
||||||
|
///期权单一合约
|
||||||
|
#define THOST_FTDC_APC_OptionSingle '2'
|
||||||
|
///可交易期货(含期货组合和期货单一合约)
|
||||||
|
#define THOST_FTDC_APC_Futures '3'
|
||||||
|
///可交易期权(含期权组合和期权单一合约)
|
||||||
|
#define THOST_FTDC_APC_Options '4'
|
||||||
|
///可下单组合(目前包含DCE和ZCE的期货组合)
|
||||||
|
#define THOST_FTDC_APC_TradingComb '5'
|
||||||
|
///可申请的组合(dce可以申请的组合合约 包含dce可以交易的合约)
|
||||||
|
#define THOST_FTDC_APC_UnTradingComb '6'
|
||||||
|
///所有可以交易合约
|
||||||
|
#define THOST_FTDC_APC_AllTrading '7'
|
||||||
|
///所有合约(包含不能交易合约 慎用)
|
||||||
|
#define THOST_FTDC_APC_All '8'
|
||||||
|
|
||||||
|
typedef char TThostFtdcAPIProductClassType;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
///TFtdcInstLifePhaseType是一个合约生命周期状态类型
|
///TFtdcInstLifePhaseType是一个合约生命周期状态类型
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
@ -965,6 +995,16 @@ typedef char TThostFtdcOrderSourceType;
|
|||||||
|
|
||||||
typedef char TThostFtdcTradeTypeType;
|
typedef char TThostFtdcTradeTypeType;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
///TFtdcSpecPosiTypeType是一个特殊持仓明细标识类型
|
||||||
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
///普通持仓明细
|
||||||
|
#define THOST_FTDC_SPOST_Common '#'
|
||||||
|
///TAS合约成交产生的标的合约持仓明细
|
||||||
|
#define THOST_FTDC_SPOST_Tas '0'
|
||||||
|
|
||||||
|
typedef char TThostFtdcSpecPosiTypeType;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
///TFtdcPriceSourceType是一个成交价来源类型
|
///TFtdcPriceSourceType是一个成交价来源类型
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
@ -2510,6 +2550,10 @@ typedef char TThostFtdcClearbarchIDType[6];
|
|||||||
#define THOST_FTDC_UET_UpdatePassword '5'
|
#define THOST_FTDC_UET_UpdatePassword '5'
|
||||||
///客户端认证
|
///客户端认证
|
||||||
#define THOST_FTDC_UET_Authenticate '6'
|
#define THOST_FTDC_UET_Authenticate '6'
|
||||||
|
///终端信息上报
|
||||||
|
#define THOST_FTDC_UET_SubmitSysInfo '7'
|
||||||
|
///转账
|
||||||
|
#define THOST_FTDC_UET_Transfer '8'
|
||||||
///其他
|
///其他
|
||||||
#define THOST_FTDC_UET_Other '9'
|
#define THOST_FTDC_UET_Other '9'
|
||||||
|
|
||||||
@ -2711,11 +2755,6 @@ typedef char TThostFtdcAMLTradeDirectType[3];
|
|||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
typedef char TThostFtdcAMLTradeModelType[3];
|
typedef char TThostFtdcAMLTradeModelType[3];
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
|
||||||
///TFtdcAMLParamIDType是一个参数代码类型
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
|
||||||
typedef char TThostFtdcAMLParamIDType[21];
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
///TFtdcAMLOpParamValueType是一个业务参数代码值类型
|
///TFtdcAMLOpParamValueType是一个业务参数代码值类型
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
@ -6192,6 +6231,10 @@ typedef char TThostFtdcStrikeTimeType[13];
|
|||||||
#define THOST_FTDC_COMBT_PRT '5'
|
#define THOST_FTDC_COMBT_PRT '5'
|
||||||
///时间价差组合
|
///时间价差组合
|
||||||
#define THOST_FTDC_COMBT_CLD '6'
|
#define THOST_FTDC_COMBT_CLD '6'
|
||||||
|
///期权对锁组合
|
||||||
|
#define THOST_FTDC_COMBT_OPL '7'
|
||||||
|
///买备兑组合
|
||||||
|
#define THOST_FTDC_COMBT_BFO '8'
|
||||||
|
|
||||||
typedef char TThostFtdcCombinationTypeType;
|
typedef char TThostFtdcCombinationTypeType;
|
||||||
|
|
||||||
@ -6386,6 +6429,8 @@ typedef char TThostFtdcCFFEXUploadFileNameType;
|
|||||||
#define THOST_FTDC_CMDR_Comb '0'
|
#define THOST_FTDC_CMDR_Comb '0'
|
||||||
///申请拆分
|
///申请拆分
|
||||||
#define THOST_FTDC_CMDR_UnComb '1'
|
#define THOST_FTDC_CMDR_UnComb '1'
|
||||||
|
///操作员删组合单
|
||||||
|
#define THOST_FTDC_CMDR_DelComb '2'
|
||||||
|
|
||||||
typedef char TThostFtdcCombDirectionType;
|
typedef char TThostFtdcCombDirectionType;
|
||||||
|
|
||||||
|
@ -150,6 +150,8 @@ struct CThostFtdcAuthenticationInfoField
|
|||||||
TThostFtdcAppIDType AppID;
|
TThostFtdcAppIDType AppID;
|
||||||
///App类型
|
///App类型
|
||||||
TThostFtdcAppTypeType AppType;
|
TThostFtdcAppTypeType AppType;
|
||||||
|
///终端IP地址
|
||||||
|
TThostFtdcIPAddressType ClientIPAddress;
|
||||||
};
|
};
|
||||||
|
|
||||||
///用户登录应答2
|
///用户登录应答2
|
||||||
@ -812,6 +814,10 @@ struct CThostFtdcInvestorPositionField
|
|||||||
TThostFtdcInvestUnitIDType InvestUnitID;
|
TThostFtdcInvestUnitIDType InvestUnitID;
|
||||||
///大商所持仓成本差值,只有大商所使用
|
///大商所持仓成本差值,只有大商所使用
|
||||||
TThostFtdcMoneyType PositionCostOffset;
|
TThostFtdcMoneyType PositionCostOffset;
|
||||||
|
///tas持仓手数
|
||||||
|
TThostFtdcVolumeType TasPosition;
|
||||||
|
///tas持仓成本
|
||||||
|
TThostFtdcMoneyType TasPositionCost;
|
||||||
};
|
};
|
||||||
|
|
||||||
///合约保证金率
|
///合约保证金率
|
||||||
@ -2273,6 +2279,10 @@ struct CThostFtdcSyncingInvestorPositionField
|
|||||||
TThostFtdcInvestUnitIDType InvestUnitID;
|
TThostFtdcInvestUnitIDType InvestUnitID;
|
||||||
///大商所持仓成本差值,只有大商所使用
|
///大商所持仓成本差值,只有大商所使用
|
||||||
TThostFtdcMoneyType PositionCostOffset;
|
TThostFtdcMoneyType PositionCostOffset;
|
||||||
|
///tas持仓手数
|
||||||
|
TThostFtdcVolumeType TasPosition;
|
||||||
|
///tas持仓成本
|
||||||
|
TThostFtdcMoneyType TasPositionCost;
|
||||||
};
|
};
|
||||||
|
|
||||||
///正在同步中的合约保证金率
|
///正在同步中的合约保证金率
|
||||||
@ -4237,6 +4247,10 @@ struct CThostFtdcInputCombActionField
|
|||||||
TThostFtdcMacAddressType MacAddress;
|
TThostFtdcMacAddressType MacAddress;
|
||||||
///投资单元代码
|
///投资单元代码
|
||||||
TThostFtdcInvestUnitIDType InvestUnitID;
|
TThostFtdcInvestUnitIDType InvestUnitID;
|
||||||
|
///前置编号
|
||||||
|
TThostFtdcFrontIDType FrontID;
|
||||||
|
///会话编号
|
||||||
|
TThostFtdcSessionIDType SessionID;
|
||||||
};
|
};
|
||||||
|
|
||||||
///申请组合
|
///申请组合
|
||||||
@ -4977,6 +4991,10 @@ struct CThostFtdcSyncDelaySwapField
|
|||||||
TThostFtdcCurrencyIDType ToCurrencyID;
|
TThostFtdcCurrencyIDType ToCurrencyID;
|
||||||
///目标金额
|
///目标金额
|
||||||
TThostFtdcMoneyType ToAmount;
|
TThostFtdcMoneyType ToAmount;
|
||||||
|
///是否手工换汇
|
||||||
|
TThostFtdcBoolType IsManualSwap;
|
||||||
|
///是否将所有外币的剩余换汇额度设置为0
|
||||||
|
TThostFtdcBoolType IsAllRemainSetZero;
|
||||||
};
|
};
|
||||||
|
|
||||||
///查询延时换汇同步
|
///查询延时换汇同步
|
||||||
@ -5405,10 +5423,12 @@ struct CThostFtdcInvestorPositionDetailField
|
|||||||
TThostFtdcVolumeType CloseVolume;
|
TThostFtdcVolumeType CloseVolume;
|
||||||
///平仓金额
|
///平仓金额
|
||||||
TThostFtdcMoneyType CloseAmount;
|
TThostFtdcMoneyType CloseAmount;
|
||||||
///按照时间顺序平仓的笔数,大商所专用
|
///先开先平剩余数量(DCE)
|
||||||
TThostFtdcVolumeType TimeFirstVolume;
|
TThostFtdcVolumeType TimeFirstVolume;
|
||||||
///投资单元代码
|
///投资单元代码
|
||||||
TThostFtdcInvestUnitIDType InvestUnitID;
|
TThostFtdcInvestUnitIDType InvestUnitID;
|
||||||
|
///特殊持仓标志
|
||||||
|
TThostFtdcSpecPosiTypeType SpecPosiType;
|
||||||
};
|
};
|
||||||
|
|
||||||
///资金账户口令域
|
///资金账户口令域
|
||||||
@ -6835,6 +6855,43 @@ struct CThostFtdcQryBulletinField
|
|||||||
TThostFtdcNewsUrgencyType NewsUrgency;
|
TThostFtdcNewsUrgencyType NewsUrgency;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///MulticastInstrument
|
||||||
|
struct CThostFtdcMulticastInstrumentField
|
||||||
|
{
|
||||||
|
///主题号
|
||||||
|
TThostFtdcInstallIDType TopicID;
|
||||||
|
///合约代码
|
||||||
|
TThostFtdcInstrumentIDType InstrumentID;
|
||||||
|
///合约编号
|
||||||
|
TThostFtdcInstallIDType InstrumentNo;
|
||||||
|
///基准价
|
||||||
|
TThostFtdcPriceType CodePrice;
|
||||||
|
///合约数量乘数
|
||||||
|
TThostFtdcVolumeMultipleType VolumeMultiple;
|
||||||
|
///最小变动价位
|
||||||
|
TThostFtdcPriceType PriceTick;
|
||||||
|
};
|
||||||
|
|
||||||
|
///QryMulticastInstrument
|
||||||
|
struct CThostFtdcQryMulticastInstrumentField
|
||||||
|
{
|
||||||
|
///主题号
|
||||||
|
TThostFtdcInstallIDType TopicID;
|
||||||
|
///合约代码
|
||||||
|
TThostFtdcInstrumentIDType InstrumentID;
|
||||||
|
};
|
||||||
|
|
||||||
|
///App客户端权限分配
|
||||||
|
struct CThostFtdcAppIDAuthAssignField
|
||||||
|
{
|
||||||
|
///经纪公司代码
|
||||||
|
TThostFtdcBrokerIDType BrokerID;
|
||||||
|
///App代码
|
||||||
|
TThostFtdcAppIDType AppID;
|
||||||
|
///交易中心代码
|
||||||
|
TThostFtdcDRIdentityIDType DRIdentityID;
|
||||||
|
};
|
||||||
|
|
||||||
///转帐开户请求
|
///转帐开户请求
|
||||||
struct CThostFtdcReqOpenAccountField
|
struct CThostFtdcReqOpenAccountField
|
||||||
{
|
{
|
||||||
@ -9487,6 +9544,37 @@ struct CThostFtdcQueryFreqField
|
|||||||
TThostFtdcQueryFreqType QueryFreq;
|
TThostFtdcQueryFreqType QueryFreq;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///禁止认证IP
|
||||||
|
struct CThostFtdcAuthForbiddenIPField
|
||||||
|
{
|
||||||
|
///IP地址
|
||||||
|
TThostFtdcIPAddressType IPAddress;
|
||||||
|
};
|
||||||
|
|
||||||
|
///查询禁止认证IP
|
||||||
|
struct CThostFtdcQryAuthForbiddenIPField
|
||||||
|
{
|
||||||
|
///IP地址
|
||||||
|
TThostFtdcIPAddressType IPAddress;
|
||||||
|
};
|
||||||
|
|
||||||
|
///换汇可提冻结
|
||||||
|
struct CThostFtdcSyncDelaySwapFrozenField
|
||||||
|
{
|
||||||
|
///换汇流水号
|
||||||
|
TThostFtdcDepositSeqNoType DelaySwapSeqNo;
|
||||||
|
///经纪公司代码
|
||||||
|
TThostFtdcBrokerIDType BrokerID;
|
||||||
|
///投资者代码
|
||||||
|
TThostFtdcInvestorIDType InvestorID;
|
||||||
|
///源币种
|
||||||
|
TThostFtdcCurrencyIDType FromCurrencyID;
|
||||||
|
///源剩余换汇额度(可提冻结)
|
||||||
|
TThostFtdcMoneyType FromRemainSwap;
|
||||||
|
///是否手工换汇
|
||||||
|
TThostFtdcBoolType IsManualSwap;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
52
vnpy/api/ctp/readme.md
Normal file
52
vnpy/api/ctp/readme.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
#总步骤
|
||||||
|
|
||||||
|
1、利用API头文件,生成数据结构和函数
|
||||||
|
2、使用pybind11封装pyd或so
|
||||||
|
|
||||||
|
|
||||||
|
# 生成数据结构等映射py文件
|
||||||
|
|
||||||
|
1.生成数据类型
|
||||||
|
python generate_data_type.py
|
||||||
|
=> 产生两个文件: ctp_typedef.py, ctp_constant.py
|
||||||
|
|
||||||
|
2.生成数据结构
|
||||||
|
python generate_struct.py
|
||||||
|
=> 产生文件: ctp_struct.py
|
||||||
|
|
||||||
|
3.生成接口
|
||||||
|
python generate_api_functions.py
|
||||||
|
=> 产生 ctp_md_*.cpp ctp_md_*.h, ctp_td_*.cpp, ctp_td_*.h
|
||||||
|
|
||||||
|
# 6.3.15 升级6.3.19
|
||||||
|
|
||||||
|
1.更新覆盖 ctp/include/ctp目录下的*.h文件
|
||||||
|
2.更新覆盖 ctp/libs目录下的 *.lib文件
|
||||||
|
3.更新覆盖 ctp目录下的 *.dll, *.so文件
|
||||||
|
4.在ctp/generator目录下,重新生成数据结构等映射文件
|
||||||
|
5.更新覆盖ctp目录下的 ctp_constant.py
|
||||||
|
6.对比ctp/generator目录下的 ctp_md_*.h 文件,与 vnctp/vnctpmd/vnctpmd.h文件,增量更新常量、数据结构和函数名等代码
|
||||||
|
7.对比ctp/generator目录下的 ctp_md_*.cpp 文件,与 vnctp/vnctpmd/vnctpmd.cpp文件,增量更新函数等
|
||||||
|
8.对比ctp/generator目录下的 ctp_td_*.h 文件,与 vnctp/vnctptd/vnctptd.h文件,增量更新常量、数据结构和函数名等代码
|
||||||
|
9.对比ctp/generator目录下的 ctp_td_*.cpp 文件,与 vnctp/vnctptd/vnctptd.cpp文件,增量更新函数等
|
||||||
|
|
||||||
|
#windows 编译
|
||||||
|
|
||||||
|
1.vs 2019 打开vnctp/vnctp.sln解决方案文件
|
||||||
|
2.检查两个子项目的属性:
|
||||||
|
--头文件目录,包含python 3.7或者env目录下的include目录,ctp api的include目录,pybind11的include目录
|
||||||
|
--lib目录,主要是ctp/libs目录, python 3.7或env下的libs目录
|
||||||
|
3.使用release模式进行编译
|
||||||
|
|
||||||
|
|
||||||
|
#linux编译
|
||||||
|
1. 复制so文件到ctp根目录,并改名
|
||||||
|
mv thostmduserapi_se.so libthostmduserapi_se.so
|
||||||
|
mv thosttraderapi_se.so libthosttraderapi_se.so
|
||||||
|
在py37环境下运行
|
||||||
|
python setup.py build
|
||||||
|
2. 产生的so文件,复制改名至ctp/目录下
|
||||||
|
cp build/lib.linux-x86_64-3.7/vnctpmd.cpython-37m-x86_64-linux-gnu.so vnctpmd.so
|
||||||
|
cp build/lib.linux-x86_64-3.7/vnctptd.cpython-37m-x86_64-linux-gnu.so vnctptd.so
|
||||||
|
|
Binary file not shown.
Binary file not shown.
@ -1,11 +1,11 @@
|
|||||||
// vnctpmd.cpp : 定义 DLL 应用程序的导出函数。
|
// vnctpmd.cpp : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DLL Ӧ<>ó<EFBFBD><C3B3><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "vnctpmd.h"
|
#include "vnctpmd.h"
|
||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///C++的回调函数将数据保存到队列中
|
///C++<EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD>浽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void MdApi::OnFrontConnected()
|
void MdApi::OnFrontConnected()
|
||||||
@ -73,6 +73,27 @@ void MdApi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRs
|
|||||||
this->task_queue.push(task);
|
this->task_queue.push(task);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void MdApi::OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
|
{
|
||||||
|
Task task = Task();
|
||||||
|
task.task_name = ONRSPQRYMULTICASTINSTRUMENT;
|
||||||
|
if (pMulticastInstrument)
|
||||||
|
{
|
||||||
|
CThostFtdcMulticastInstrumentField *task_data = new CThostFtdcMulticastInstrumentField();
|
||||||
|
*task_data = *pMulticastInstrument;
|
||||||
|
task.task_data = task_data;
|
||||||
|
}
|
||||||
|
if (pRspInfo)
|
||||||
|
{
|
||||||
|
CThostFtdcRspInfoField *task_error = new CThostFtdcRspInfoField();
|
||||||
|
*task_error = *pRspInfo;
|
||||||
|
task.task_error = task_error;
|
||||||
|
}
|
||||||
|
task.task_id = nRequestID;
|
||||||
|
task.task_last = bIsLast;
|
||||||
|
this->task_queue.push(task);
|
||||||
|
};
|
||||||
|
|
||||||
void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
void MdApi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||||||
{
|
{
|
||||||
Task task = Task();
|
Task task = Task();
|
||||||
@ -201,7 +222,7 @@ void MdApi::OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp)
|
|||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///工作线程从队列中取出数据,转化为python对象后,进行推送
|
///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̴߳Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ת<EFBFBD><EFBFBD>Ϊpython<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void MdApi::processTask()
|
void MdApi::processTask()
|
||||||
@ -211,7 +232,7 @@ void MdApi::processTask()
|
|||||||
while (this->active)
|
while (this->active)
|
||||||
{
|
{
|
||||||
Task task = this->task_queue.pop();
|
Task task = this->task_queue.pop();
|
||||||
|
|
||||||
switch (task.task_name)
|
switch (task.task_name)
|
||||||
{
|
{
|
||||||
case ONFRONTCONNECTED:
|
case ONFRONTCONNECTED:
|
||||||
@ -244,6 +265,12 @@ void MdApi::processTask()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ONRSPQRYMULTICASTINSTRUMENT:
|
||||||
|
{
|
||||||
|
this->processRspQryMulticastInstrument(&task);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case ONRSPERROR:
|
case ONRSPERROR:
|
||||||
{
|
{
|
||||||
this->processRspError(&task);
|
this->processRspError(&task);
|
||||||
@ -366,6 +393,32 @@ void MdApi::processRspUserLogout(Task *task)
|
|||||||
this->onRspUserLogout(data, error, task->task_id, task->task_last);
|
this->onRspUserLogout(data, error, task->task_id, task->task_last);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void MdApi::processRspQryMulticastInstrument(Task *task)
|
||||||
|
{
|
||||||
|
gil_scoped_acquire acquire;
|
||||||
|
dict data;
|
||||||
|
if (task->task_data)
|
||||||
|
{
|
||||||
|
CThostFtdcMulticastInstrumentField *task_data = (CThostFtdcMulticastInstrumentField*)task->task_data;
|
||||||
|
data["TopicID"] = task_data->TopicID;
|
||||||
|
data["InstrumentID"] = toUtf(task_data->InstrumentID);
|
||||||
|
data["InstrumentNo"] = task_data->InstrumentNo;
|
||||||
|
data["CodePrice"] = task_data->CodePrice;
|
||||||
|
data["VolumeMultiple"] = task_data->VolumeMultiple;
|
||||||
|
data["PriceTick"] = task_data->PriceTick;
|
||||||
|
delete task->task_data;
|
||||||
|
}
|
||||||
|
dict error;
|
||||||
|
if (task->task_error)
|
||||||
|
{
|
||||||
|
CThostFtdcRspInfoField *task_error = (CThostFtdcRspInfoField*)task->task_error;
|
||||||
|
error["ErrorID"] = task_error->ErrorID;
|
||||||
|
error["ErrorMsg"] = toUtf(task_error->ErrorMsg);
|
||||||
|
delete task_error;
|
||||||
|
}
|
||||||
|
this->onRspQryMulticastInstrument(data, error, task->task_id, task->task_last);
|
||||||
|
};
|
||||||
|
|
||||||
void MdApi::processRspError(Task *task)
|
void MdApi::processRspError(Task *task)
|
||||||
{
|
{
|
||||||
gil_scoped_acquire acquire;
|
gil_scoped_acquire acquire;
|
||||||
@ -539,7 +592,7 @@ void MdApi::processRtnForQuoteRsp(Task *task)
|
|||||||
};
|
};
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///主动函数
|
///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void MdApi::createFtdcMdApi(string pszFlowPath)
|
void MdApi::createFtdcMdApi(string pszFlowPath)
|
||||||
@ -637,6 +690,7 @@ int MdApi::reqUserLogin(const dict &req, int reqid)
|
|||||||
getString(req, "OneTimePassword", myreq.OneTimePassword);
|
getString(req, "OneTimePassword", myreq.OneTimePassword);
|
||||||
getString(req, "ClientIPAddress", myreq.ClientIPAddress);
|
getString(req, "ClientIPAddress", myreq.ClientIPAddress);
|
||||||
getString(req, "LoginRemark", myreq.LoginRemark);
|
getString(req, "LoginRemark", myreq.LoginRemark);
|
||||||
|
getInt(req, "ClientIPPort", &myreq.ClientIPPort);
|
||||||
int i = this->api->ReqUserLogin(&myreq, reqid);
|
int i = this->api->ReqUserLogin(&myreq, reqid);
|
||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
@ -651,9 +705,18 @@ int MdApi::reqUserLogout(const dict &req, int reqid)
|
|||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int MdApi::reqQryMulticastInstrument(const dict &req, int reqid)
|
||||||
|
{
|
||||||
|
CThostFtdcQryMulticastInstrumentField myreq = CThostFtdcQryMulticastInstrumentField();
|
||||||
|
memset(&myreq, 0, sizeof(myreq));
|
||||||
|
getInt(req, "TopicID", &myreq.TopicID);
|
||||||
|
getString(req, "InstrumentID", myreq.InstrumentID);
|
||||||
|
int i = this->api->ReqQryMulticastInstrument(&myreq, reqid);
|
||||||
|
return i;
|
||||||
|
};
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///Boost.Python封装
|
///Boost.Python<EFBFBD><EFBFBD>װ
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class PyMdApi: public MdApi
|
class PyMdApi: public MdApi
|
||||||
@ -721,6 +784,17 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void onRspQryMulticastInstrument(const dict &data, const dict &error, int reqid, bool last) override
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PYBIND11_OVERLOAD(void, MdApi, onRspQryMulticastInstrument, data, error, reqid, last);
|
||||||
|
}
|
||||||
|
catch (const error_already_set &e)
|
||||||
|
{
|
||||||
|
cout << e.what() << endl;
|
||||||
|
}
|
||||||
|
};
|
||||||
void onRspError(const dict &error, int reqid, bool last) override
|
void onRspError(const dict &error, int reqid, bool last) override
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -825,12 +899,13 @@ PYBIND11_MODULE(vnctpmd, m)
|
|||||||
.def("unSubscribeForQuoteRsp", &MdApi::unSubscribeForQuoteRsp)
|
.def("unSubscribeForQuoteRsp", &MdApi::unSubscribeForQuoteRsp)
|
||||||
.def("reqUserLogin", &MdApi::reqUserLogin)
|
.def("reqUserLogin", &MdApi::reqUserLogin)
|
||||||
.def("reqUserLogout", &MdApi::reqUserLogout)
|
.def("reqUserLogout", &MdApi::reqUserLogout)
|
||||||
|
.def("reqQryMulticastInstrument", &MdApi::reqQryMulticastInstrument)
|
||||||
.def("onFrontConnected", &MdApi::onFrontConnected)
|
.def("onFrontConnected", &MdApi::onFrontConnected)
|
||||||
.def("onFrontDisconnected", &MdApi::onFrontDisconnected)
|
.def("onFrontDisconnected", &MdApi::onFrontDisconnected)
|
||||||
.def("onHeartBeatWarning", &MdApi::onHeartBeatWarning)
|
.def("onHeartBeatWarning", &MdApi::onHeartBeatWarning)
|
||||||
.def("onRspUserLogin", &MdApi::onRspUserLogin)
|
.def("onRspUserLogin", &MdApi::onRspUserLogin)
|
||||||
.def("onRspUserLogout", &MdApi::onRspUserLogout)
|
.def("onRspUserLogout", &MdApi::onRspUserLogout)
|
||||||
|
.def("onRspQryMulticastInstrument", &MdApi::onRspQryMulticastInstrument)
|
||||||
.def("onRspError", &MdApi::onRspError)
|
.def("onRspError", &MdApi::onRspError)
|
||||||
.def("onRspSubMarketData", &MdApi::onRspSubMarketData)
|
.def("onRspSubMarketData", &MdApi::onRspSubMarketData)
|
||||||
.def("onRspUnSubMarketData", &MdApi::onRspUnSubMarketData)
|
.def("onRspUnSubMarketData", &MdApi::onRspUnSubMarketData)
|
||||||
|
@ -16,13 +16,14 @@ using namespace pybind11;
|
|||||||
#define ONHEARTBEATWARNING 2
|
#define ONHEARTBEATWARNING 2
|
||||||
#define ONRSPUSERLOGIN 3
|
#define ONRSPUSERLOGIN 3
|
||||||
#define ONRSPUSERLOGOUT 4
|
#define ONRSPUSERLOGOUT 4
|
||||||
#define ONRSPERROR 5
|
#define ONRSPQRYMULTICASTINSTRUMENT 5
|
||||||
#define ONRSPSUBMARKETDATA 6
|
#define ONRSPERROR 6
|
||||||
#define ONRSPUNSUBMARKETDATA 7
|
#define ONRSPSUBMARKETDATA 7
|
||||||
#define ONRSPSUBFORQUOTERSP 8
|
#define ONRSPUNSUBMARKETDATA 8
|
||||||
#define ONRSPUNSUBFORQUOTERSP 9
|
#define ONRSPSUBFORQUOTERSP 9
|
||||||
#define ONRTNDEPTHMARKETDATA 10
|
#define ONRSPUNSUBFORQUOTERSP 10
|
||||||
#define ONRTNFORQUOTERSP 11
|
#define ONRTNDEPTHMARKETDATA 11
|
||||||
|
#define ONRTNFORQUOTERSP 12
|
||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
@ -78,6 +79,9 @@ public:
|
|||||||
///µÇ³öÇëÇóÏìÓ¦
|
///µÇ³öÇëÇóÏìÓ¦
|
||||||
virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
|
virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
|
||||||
|
|
||||||
|
/// ×é²¥ºÏÔ¼·µ»Ø
|
||||||
|
virtual void OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
|
||||||
|
|
||||||
///´íÎóÓ¦´ð
|
///´íÎóÓ¦´ð
|
||||||
virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
|
virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
|
||||||
|
|
||||||
@ -115,6 +119,8 @@ public:
|
|||||||
|
|
||||||
void processRspUserLogout(Task *task);
|
void processRspUserLogout(Task *task);
|
||||||
|
|
||||||
|
void processRspQryMulticastInstrument(Task *task);
|
||||||
|
|
||||||
void processRspError(Task *task);
|
void processRspError(Task *task);
|
||||||
|
|
||||||
void processRspSubMarketData(Task *task);
|
void processRspSubMarketData(Task *task);
|
||||||
@ -148,6 +154,8 @@ public:
|
|||||||
|
|
||||||
virtual void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last) {};
|
virtual void onRspUserLogout(const dict &data, const dict &error, int reqid, bool last) {};
|
||||||
|
|
||||||
|
virtual void onRspQryMulticastInstrument(const dict &data, const dict &error, int reqid, bool last) {};
|
||||||
|
|
||||||
virtual void onRspError(const dict &error, int reqid, bool last) {};
|
virtual void onRspError(const dict &error, int reqid, bool last) {};
|
||||||
|
|
||||||
virtual void onRspSubMarketData(const dict &data, const dict &error, int reqid, bool last) {};
|
virtual void onRspSubMarketData(const dict &data, const dict &error, int reqid, bool last) {};
|
||||||
@ -191,4 +199,6 @@ public:
|
|||||||
int reqUserLogin(const dict &req, int reqid);
|
int reqUserLogin(const dict &req, int reqid);
|
||||||
|
|
||||||
int reqUserLogout(const dict &req, int reqid);
|
int reqUserLogout(const dict &req, int reqid);
|
||||||
|
|
||||||
|
int reqQryMulticastInstrument(const dict &req, int reqid);
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<ProjectGuid>{F00054FF-282F-4826-848E-D58BFB9E9D9F}</ProjectGuid>
|
<ProjectGuid>{F00054FF-282F-4826-848E-D58BFB9E9D9F}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>vnctpmd</RootNamespace>
|
<RootNamespace>vnctpmd</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
@ -88,16 +88,16 @@
|
|||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<TargetExt>.pyd</TargetExt>
|
<TargetExt>.pyd</TargetExt>
|
||||||
<IncludePath>C:\Python37\include;$(SolutionDir);$(SolutionDir)..\include;$(SolutionDir)..\include\ctp;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Python37\include;$(SolutionDir);$(SolutionDir)..\include;$(SolutionDir)..\include\ctp;$(IncludePath)</IncludePath>
|
||||||
<ReferencePath>C:\GitHub\vnpy\vnpy\api\ctp\ctpapi;$(ReferencePath)</ReferencePath>
|
<ReferencePath>C:\GitHub\msincenselee\vnpy\api\ctp;$(ReferencePath)</ReferencePath>
|
||||||
<LibraryPath>C:\Python37\libs;$(SolutionDir)..\libs;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Python37\libs;$(SolutionDir)..\libs;$(LibraryPath)</LibraryPath>
|
||||||
<OutDir>$(SolutionDir)..\</OutDir>
|
<OutDir>$(SolutionDir)..\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<IncludePath>C:\Miniconda3\include;$(SolutionDir);$(SolutionDir)..\include;$(SolutionDir)..\include\ctp;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Users\incen\AppData\Local\conda\conda\envs\py37\include;$(SolutionDir);$(SolutionDir)..\include;$(SolutionDir)..\include\pybind11;$(SolutionDir)..\include\ctp;$(IncludePath)</IncludePath>
|
||||||
<ReferencePath>$(ReferencePath)</ReferencePath>
|
<ReferencePath>$(ReferencePath)</ReferencePath>
|
||||||
<TargetExt>.pyd</TargetExt>
|
<TargetExt>.pyd</TargetExt>
|
||||||
<LibraryPath>C:\Miniconda3\libs;$(SolutionDir)..\libs;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Users\incen\AppData\Local\conda\conda\envs\py37\libs;$(SolutionDir)..\libs;$(LibraryPath)</LibraryPath>
|
||||||
<OutDir>$(SolutionDir)..\</OutDir>
|
<OutDir>$(SolutionDir)..\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
@ -170,7 +170,7 @@
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>C:\GitHub\vnpy\vnpy\api\ctp\libs;C:\Miniconda3\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>C:\GitHub\msincenselee\vnpy\api\ctp\libs;C:\Users\incen\AppData\Local\conda\conda\envs\py37\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>thostmduserapi_se.lib;thosttraderapi_se.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>thostmduserapi_se.lib;thosttraderapi_se.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@ -197,4 +197,4 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// vnctpmd.cpp : 定义 DLL 应用程序的导出函数。
|
// vnctpmd.cpp : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DLL Ӧ<>ó<EFBFBD><C3B3><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "vnctptd.h"
|
#include "vnctptd.h"
|
||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///C++的回调函数将数据保存到队列中
|
///C++<EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD>浽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void TdApi::OnFrontConnected()
|
void TdApi::OnFrontConnected()
|
||||||
@ -2349,7 +2349,7 @@ void TdApi::OnRtnChangeAccountByBank(CThostFtdcChangeAccountField *pChangeAccoun
|
|||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///工作线程从队列中取出数据,转化为python对象后,进行推送
|
///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̴߳Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ת<EFBFBD><EFBFBD>Ϊpython<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void TdApi::processTask()
|
void TdApi::processTask()
|
||||||
@ -3927,6 +3927,8 @@ void TdApi::processRspCombActionInsert(Task *task)
|
|||||||
data["IPAddress"] = toUtf(task_data->IPAddress);
|
data["IPAddress"] = toUtf(task_data->IPAddress);
|
||||||
data["MacAddress"] = toUtf(task_data->MacAddress);
|
data["MacAddress"] = toUtf(task_data->MacAddress);
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["FrontID"] = task_data->FrontID;
|
||||||
|
data["SessionID"] = task_data->SessionID;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -4127,6 +4129,9 @@ void TdApi::processRspQryInvestorPosition(Task *task)
|
|||||||
data["ExchangeID"] = toUtf(task_data->ExchangeID);
|
data["ExchangeID"] = toUtf(task_data->ExchangeID);
|
||||||
data["YdStrikeFrozen"] = task_data->YdStrikeFrozen;
|
data["YdStrikeFrozen"] = task_data->YdStrikeFrozen;
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["PositionCostOffset"] = task_data->PositionCostOffset;
|
||||||
|
data["TasPosition"] = task_data->TasPosition;
|
||||||
|
data["TasPositionCost"] = task_data->TasPositionCost;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -4596,7 +4601,9 @@ void TdApi::processRspQryInvestorPositionDetail(Task *task)
|
|||||||
data["SettlementPrice"] = task_data->SettlementPrice;
|
data["SettlementPrice"] = task_data->SettlementPrice;
|
||||||
data["CloseVolume"] = task_data->CloseVolume;
|
data["CloseVolume"] = task_data->CloseVolume;
|
||||||
data["CloseAmount"] = task_data->CloseAmount;
|
data["CloseAmount"] = task_data->CloseAmount;
|
||||||
|
data["TimeFirstVolume"] = task_data->TimeFirstVolume;
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["SpecPosiType"] = task_data->SpecPosiType;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -6635,6 +6642,8 @@ void TdApi::processErrRtnCombActionInsert(Task *task)
|
|||||||
data["IPAddress"] = toUtf(task_data->IPAddress);
|
data["IPAddress"] = toUtf(task_data->IPAddress);
|
||||||
data["MacAddress"] = toUtf(task_data->MacAddress);
|
data["MacAddress"] = toUtf(task_data->MacAddress);
|
||||||
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
data["InvestUnitID"] = toUtf(task_data->InvestUnitID);
|
||||||
|
data["FrontID"] = task_data->FrontID;
|
||||||
|
data["SessionID"] = task_data->SessionID;
|
||||||
delete task_data;
|
delete task_data;
|
||||||
}
|
}
|
||||||
dict error;
|
dict error;
|
||||||
@ -8237,7 +8246,7 @@ void TdApi::processRtnChangeAccountByBank(Task *task)
|
|||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///主动函数
|
///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void TdApi::createFtdcTraderApi(string pszFlowPath)
|
void TdApi::createFtdcTraderApi(string pszFlowPath)
|
||||||
@ -8859,6 +8868,8 @@ int TdApi::reqCombActionInsert(const dict &req, int reqid)
|
|||||||
getString(req, "IPAddress", myreq.IPAddress);
|
getString(req, "IPAddress", myreq.IPAddress);
|
||||||
getString(req, "MacAddress", myreq.MacAddress);
|
getString(req, "MacAddress", myreq.MacAddress);
|
||||||
getString(req, "InvestUnitID", myreq.InvestUnitID);
|
getString(req, "InvestUnitID", myreq.InvestUnitID);
|
||||||
|
getInt(req, "FrontID", &myreq.FrontID);
|
||||||
|
getInt(req, "SessionID", &myreq.SessionID);
|
||||||
int i = this->api->ReqCombActionInsert(&myreq, reqid);
|
int i = this->api->ReqCombActionInsert(&myreq, reqid);
|
||||||
return i;
|
return i;
|
||||||
};
|
};
|
||||||
@ -9636,14 +9647,14 @@ int TdApi::reqQueryBankAccountMoneyByFuture(const dict &req, int reqid)
|
|||||||
|
|
||||||
|
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
///Boost.Python封装
|
///Boost.Python<EFBFBD><EFBFBD>װ
|
||||||
///-------------------------------------------------------------------------------------
|
///-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class PyTdApi : public TdApi
|
class PyTdApi : public TdApi
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using TdApi::TdApi;
|
using TdApi::TdApi;
|
||||||
|
|
||||||
void onFrontConnected() override
|
void onFrontConnected() override
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<ProjectGuid>{016732E6-5789-4F7C-9A1C-C46A249080CF}</ProjectGuid>
|
<ProjectGuid>{016732E6-5789-4F7C-9A1C-C46A249080CF}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>vnctptd</RootNamespace>
|
<RootNamespace>vnctptd</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
@ -94,8 +94,8 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
<TargetExt>.pyd</TargetExt>
|
<TargetExt>.pyd</TargetExt>
|
||||||
<IncludePath>C:\Miniconda3\include;$(SolutionDir);$(SolutionDir)..\include;$(SolutionDir)..\include\ctp;$(IncludePath)</IncludePath>
|
<IncludePath>C:\ProgramData\Miniconda3\include;$(SolutionDir);$(SolutionDir)..\include;$(SolutionDir)..\include\ctp;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Miniconda3\libs;$(SolutionDir)..\libs;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\ProgramData\Miniconda3\libs;$(SolutionDir)..\libs;$(LibraryPath)</LibraryPath>
|
||||||
<OutDir>$(SolutionDir)..\</OutDir>
|
<OutDir>$(SolutionDir)..\</OutDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
@ -168,7 +168,7 @@
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>C:\Miniconda3\libs;C:\GitHub\vnpy\vnpy\api\ctp\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>C:\Users\incen\AppData\Local\conda\conda\envs\py37\libs;C:\GitHub\msincenselee\vnpy\api\ctp\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>thostmduserapi_se.lib;thosttraderapi_se.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>thostmduserapi_se.lib;thosttraderapi_se.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user