vnpy/vn.api/vn.ksotp/vnksotptd/vnksotptd/vnksotptd.cpp

5983 lines
176 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// MdApi.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "vnksotptd.h"
///-------------------------------------------------------------------------------------
///从Python对象到C++类型转换用的函数
///-------------------------------------------------------------------------------------
void getInt(dict d, string key, int *value)
{
if (d.has_key(key)) //检查字典中是否存在该键值
{
object o = d[key]; //获取该键值
extract<int> x(o); //创建提取器
if (x.check()) //如果可以提取
{
*value = x(); //对目标整数指针赋值
}
}
}
void getDouble(dict d, string key, double *value)
{
if (d.has_key(key))
{
object o = d[key];
extract<double> x(o);
if (x.check())
{
*value = x();
}
}
}
void getChar(dict d, string key, char *value)
{
if (d.has_key(key))
{
object o = d[key];
extract<string> x(o);
if (x.check())
{
string s = x();
const char *buffer = s.c_str();
//对字符串指针赋值必须使用strcpy_s, vs2013使用strcpy编译通不过
//+1应该是因为C++字符串的结尾符号不是特别确定不加这个1会出错
strcpy_s(value, strlen(buffer) + 1, buffer);
}
}
}
///-------------------------------------------------------------------------------------
///C++的回调函数将数据保存到队列中
///-------------------------------------------------------------------------------------
void TdApi::OnFrontConnected()
{
Task task = Task();
task.task_name = ONFRONTCONNECTED;
this->task_queue.push(task);
};
void TdApi::OnFrontDisconnected(int nReason)
{
Task task = Task();
task.task_name = ONFRONTDISCONNECTED;
task.task_id = nReason;
this->task_queue.push(task);
};
void TdApi::OnRspError(CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPERROR;
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspUserLogin(CKSOTPRspUserLoginField *pRspUserLogin, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPUSERLOGIN;
if (pRspUserLogin)
{
task.task_data = *pRspUserLogin;
}
else
{
CKSOTPRspUserLoginField empty_data = CKSOTPRspUserLoginField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspUserLogout(CKSOTPUserLogoutField *pUserLogout, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPUSERLOGOUT;
if (pUserLogout)
{
task.task_data = *pUserLogout;
}
else
{
CKSOTPUserLogoutField empty_data = CKSOTPUserLogoutField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspUserPasswordUpdate(CKSOTPUserPasswordUpdateField *pUserPasswordUpdate, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPUSERPASSWORDUPDATE;
if (pUserPasswordUpdate)
{
task.task_data = *pUserPasswordUpdate;
}
else
{
CKSOTPUserPasswordUpdateField empty_data = CKSOTPUserPasswordUpdateField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspTradingAccountPasswordUpdate(CKSOTPTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPTRADINGACCOUNTPASSWORDUPDATE;
if (pTradingAccountPasswordUpdate)
{
task.task_data = *pTradingAccountPasswordUpdate;
}
else
{
CKSOTPTradingAccountPasswordUpdateField empty_data = CKSOTPTradingAccountPasswordUpdateField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspOrderInsert(CKSOTPInputOrderField *pInputOrder, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPORDERINSERT;
if (pInputOrder)
{
task.task_data = *pInputOrder;
}
else
{
CKSOTPInputOrderField empty_data = CKSOTPInputOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspOrderAction(CKSOTPInputOrderActionField *pInputOrderAction, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPORDERACTION;
if (pInputOrderAction)
{
task.task_data = *pInputOrderAction;
}
else
{
CKSOTPInputOrderActionField empty_data = CKSOTPInputOrderActionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryOrder(CKSOTPOrderField *pOrder, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYORDER;
if (pOrder)
{
task.task_data = *pOrder;
}
else
{
CKSOTPOrderField empty_data = CKSOTPOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryTrade(CKSOTPTradeField *pTrade, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYTRADE;
if (pTrade)
{
task.task_data = *pTrade;
}
else
{
CKSOTPTradeField empty_data = CKSOTPTradeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInvestorPosition(CKSOTPInvestorPositionField *pInvestorPosition, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINVESTORPOSITION;
if (pInvestorPosition)
{
task.task_data = *pInvestorPosition;
}
else
{
CKSOTPInvestorPositionField empty_data = CKSOTPInvestorPositionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryTradingAccount(CKSOTPTradingAccountField *pTradingAccount, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYTRADINGACCOUNT;
if (pTradingAccount)
{
task.task_data = *pTradingAccount;
}
else
{
CKSOTPTradingAccountField empty_data = CKSOTPTradingAccountField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInvestor(CKSOTPInvestorField *pInvestor, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINVESTOR;
if (pInvestor)
{
task.task_data = *pInvestor;
}
else
{
CKSOTPInvestorField empty_data = CKSOTPInvestorField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryTradingCode(CKSOTPTradingCodeField *pTradingCode, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYTRADINGCODE;
if (pTradingCode)
{
task.task_data = *pTradingCode;
}
else
{
CKSOTPTradingCodeField empty_data = CKSOTPTradingCodeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryExchange(CKSOTPExchangeField *pExchange, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYEXCHANGE;
if (pExchange)
{
task.task_data = *pExchange;
}
else
{
CKSOTPExchangeField empty_data = CKSOTPExchangeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInstrument(CKSOTPInstrumentField *pInstrument, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINSTRUMENT;
if (pInstrument)
{
task.task_data = *pInstrument;
}
else
{
CKSOTPInstrumentField empty_data = CKSOTPInstrumentField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInvestorPositionDetail(CKSOTPInvestorPositionDetailField *pInvestorPositionDetail, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINVESTORPOSITIONDETAIL;
if (pInvestorPositionDetail)
{
task.task_data = *pInvestorPositionDetail;
}
else
{
CKSOTPInvestorPositionDetailField empty_data = CKSOTPInvestorPositionDetailField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryTradingNotice(CKSOTPTradingNoticeField *pTradingNotice, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYTRADINGNOTICE;
if (pTradingNotice)
{
task.task_data = *pTradingNotice;
}
else
{
CKSOTPTradingNoticeField empty_data = CKSOTPTradingNoticeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspExecOrderInsert(CKSOTPInputExecOrderField *pInputExecOrder, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPEXECORDERINSERT;
if (pInputExecOrder)
{
task.task_data = *pInputExecOrder;
}
else
{
CKSOTPInputExecOrderField empty_data = CKSOTPInputExecOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspLockInsert(CKSOTPInputLockField *pInputLock, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPLOCKINSERT;
if (pInputLock)
{
task.task_data = *pInputLock;
}
else
{
CKSOTPInputLockField empty_data = CKSOTPInputLockField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspExecOrderAction(CKSOTPInputExecOrderActionField *pInputExecOrderAction, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPEXECORDERACTION;
if (pInputExecOrderAction)
{
task.task_data = *pInputExecOrderAction;
}
else
{
CKSOTPInputExecOrderActionField empty_data = CKSOTPInputExecOrderActionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryExecOrder(CKSOTPExecOrderField *pExecOrder, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYEXECORDER;
if (pExecOrder)
{
task.task_data = *pExecOrder;
}
else
{
CKSOTPExecOrderField empty_data = CKSOTPExecOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryExecOrderVolume(CKSOTPExecOrderVolumeField *pExecOrderVolume, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYEXECORDERVOLUME;
if (pExecOrderVolume)
{
task.task_data = *pExecOrderVolume;
}
else
{
CKSOTPExecOrderVolumeField empty_data = CKSOTPExecOrderVolumeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryLock(CKSOTPLockField *pLock, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYLOCK;
if (pLock)
{
task.task_data = *pLock;
}
else
{
CKSOTPLockField empty_data = CKSOTPLockField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryLockPosition(CKSOTPLockPositionField *pLockPosition, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYLOCKPOSITION;
if (pLockPosition)
{
task.task_data = *pLockPosition;
}
else
{
CKSOTPLockPositionField empty_data = CKSOTPLockPositionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryUnderlyingStockInfo(CKSOTPUnderlyingStockInfoField *pUnderlyingStockInfo, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYUNDERLYINGSTOCKINFO;
if (pUnderlyingStockInfo)
{
task.task_data = *pUnderlyingStockInfo;
}
else
{
CKSOTPUnderlyingStockInfoField empty_data = CKSOTPUnderlyingStockInfoField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryOTPInsCommRate(CKSOTPOTPInsCommRateField *pOTPInsCommRate, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYOTPINSCOMMRATE;
if (pOTPInsCommRate)
{
task.task_data = *pOTPInsCommRate;
}
else
{
CKSOTPOTPInsCommRateField empty_data = CKSOTPOTPInsCommRateField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInstrumentMarginRate(CKSOTPInstrumentMarginRateField *pInstrumentMarginRate, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINSTRUMENTMARGINRATE;
if (pInstrumentMarginRate)
{
task.task_data = *pInstrumentMarginRate;
}
else
{
CKSOTPInstrumentMarginRateField empty_data = CKSOTPInstrumentMarginRateField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryOTPAssignment(CKSOTPOTPAssignmentField *pOTPAssignment, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYOTPASSIGNMENT;
if (pOTPAssignment)
{
task.task_data = *pOTPAssignment;
}
else
{
CKSOTPOTPAssignmentField empty_data = CKSOTPOTPAssignmentField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryDepthMarketData(CKSOTPDepthMarketDataField *pDepthMarketData, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYDEPTHMARKETDATA;
if (pDepthMarketData)
{
task.task_data = *pDepthMarketData;
}
else
{
CKSOTPDepthMarketDataField empty_data = CKSOTPDepthMarketDataField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspFromBankToStockByStock(CKSOTPReqTransferField *pReqTransfer, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPFROMBANKTOSTOCKBYSTOCK;
if (pReqTransfer)
{
task.task_data = *pReqTransfer;
}
else
{
CKSOTPReqTransferField empty_data = CKSOTPReqTransferField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRtnFromBankToStockByStock(CKSOTPRspTransferField *pRspTransfer)
{
Task task = Task();
task.task_name = ONRTNFROMBANKTOSTOCKBYSTOCK;
if (pRspTransfer)
{
task.task_data = *pRspTransfer;
}
else
{
CKSOTPRspTransferField empty_data = CKSOTPRspTransferField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRspFromStockToBankByStock(CKSOTPReqTransferField *pReqTransfer, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPFROMSTOCKTOBANKBYSTOCK;
if (pReqTransfer)
{
task.task_data = *pReqTransfer;
}
else
{
CKSOTPReqTransferField empty_data = CKSOTPReqTransferField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRtnFromStockToBankByStock(CKSOTPRspTransferField *pRspTransfer)
{
Task task = Task();
task.task_name = ONRTNFROMSTOCKTOBANKBYSTOCK;
if (pRspTransfer)
{
task.task_data = *pRspTransfer;
}
else
{
CKSOTPRspTransferField empty_data = CKSOTPRspTransferField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnQueryBankBalanceByStock(CKSOTPNotifyQueryAccountField *pNotifyQueryAccount)
{
Task task = Task();
task.task_name = ONRTNQUERYBANKBALANCEBYSTOCK;
if (pNotifyQueryAccount)
{
task.task_data = *pNotifyQueryAccount;
}
else
{
CKSOTPNotifyQueryAccountField empty_data = CKSOTPNotifyQueryAccountField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRspQryContractBank(CKSOTPContractBankField *pContractBank, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYCONTRACTBANK;
if (pContractBank)
{
task.task_data = *pContractBank;
}
else
{
CKSOTPContractBankField empty_data = CKSOTPContractBankField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQueryBankAccountMoneyByStock(CKSOTPReqQueryAccountField *pReqQueryAccount, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQUERYBANKACCOUNTMONEYBYSTOCK;
if (pReqQueryAccount)
{
task.task_data = *pReqQueryAccount;
}
else
{
CKSOTPReqQueryAccountField empty_data = CKSOTPReqQueryAccountField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryTransferSerial(CKSOTPTransferSerialField *pTransferSerial, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYTRANSFERSERIAL;
if (pTransferSerial)
{
task.task_data = *pTransferSerial;
}
else
{
CKSOTPTransferSerialField empty_data = CKSOTPTransferSerialField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQrySettlementInfoConfirm(CKSOTPSettlementInfoConfirmField *pSettlementInfoConfirm, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYSETTLEMENTINFOCONFIRM;
if (pSettlementInfoConfirm)
{
task.task_data = *pSettlementInfoConfirm;
}
else
{
CKSOTPSettlementInfoConfirmField empty_data = CKSOTPSettlementInfoConfirmField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspSettlementInfoConfirm(CKSOTPSettlementInfoConfirmField *pSettlementInfoConfirm, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPSETTLEMENTINFOCONFIRM;
if (pSettlementInfoConfirm)
{
task.task_data = *pSettlementInfoConfirm;
}
else
{
CKSOTPSettlementInfoConfirmField empty_data = CKSOTPSettlementInfoConfirmField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQrySettlementInfo(CKSOTPSettlementInfoField *pSettlementInfo, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYSETTLEMENTINFO;
if (pSettlementInfo)
{
task.task_data = *pSettlementInfo;
}
else
{
CKSOTPSettlementInfoField empty_data = CKSOTPSettlementInfoField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInvestorTradeLevel(CKSOTPInvestorTradeLevelField *pInvestorTradeLevel, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINVESTORTRADELEVEL;
if (pInvestorTradeLevel)
{
task.task_data = *pInvestorTradeLevel;
}
else
{
CKSOTPInvestorTradeLevelField empty_data = CKSOTPInvestorTradeLevelField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryPurchaseLimitAmt(CKSOTPPurchaseLimitAmtField *pPurchaseLimitAmt, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYPURCHASELIMITAMT;
if (pPurchaseLimitAmt)
{
task.task_data = *pPurchaseLimitAmt;
}
else
{
CKSOTPPurchaseLimitAmtField empty_data = CKSOTPPurchaseLimitAmtField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryPositionLimitVol(CKSOTPPositionLimitVolField *pPositionLimitVol, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYPOSITIONLIMITVOL;
if (pPositionLimitVol)
{
task.task_data = *pPositionLimitVol;
}
else
{
CKSOTPPositionLimitVolField empty_data = CKSOTPPositionLimitVolField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryHistoryOrder(CKSOTPHistoryOrderField *pHistoryOrder, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYHISTORYORDER;
if (pHistoryOrder)
{
task.task_data = *pHistoryOrder;
}
else
{
CKSOTPHistoryOrderField empty_data = CKSOTPHistoryOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryHistoryTrade(CKSOTPHistoryTradeField *pHistoryTrade, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYHISTORYTRADE;
if (pHistoryTrade)
{
task.task_data = *pHistoryTrade;
}
else
{
CKSOTPHistoryTradeField empty_data = CKSOTPHistoryTradeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryHistoryAssignment(CKSOTPHistoryAssignmentField *pHistoryAssignment, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYHISTORYASSIGNMENT;
if (pHistoryAssignment)
{
task.task_data = *pHistoryAssignment;
}
else
{
CKSOTPHistoryAssignmentField empty_data = CKSOTPHistoryAssignmentField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryDelivDetail(CKSOTPDelivDetailField *pDelivDetail, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYDELIVDETAIL;
if (pDelivDetail)
{
task.task_data = *pDelivDetail;
}
else
{
CKSOTPDelivDetailField empty_data = CKSOTPDelivDetailField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspAutoExecOrderAction(CKSOTPAutoExecOrderActionField *pAutoExecOrderAction, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPAUTOEXECORDERACTION;
if (pAutoExecOrderAction)
{
task.task_data = *pAutoExecOrderAction;
}
else
{
CKSOTPAutoExecOrderActionField empty_data = CKSOTPAutoExecOrderActionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspCombActionInsert(CKSOTPInputCombActionField *pInputCombAction, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPCOMBACTIONINSERT;
if (pInputCombAction)
{
task.task_data = *pInputCombAction;
}
else
{
CKSOTPInputCombActionField empty_data = CKSOTPInputCombActionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryInvestorCombinePosition(CKSOTPInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYINVESTORCOMBINEPOSITION;
if (pInvestorPositionCombineDetail)
{
task.task_data = *pInvestorPositionCombineDetail;
}
else
{
CKSOTPInvestorPositionCombineDetailField empty_data = CKSOTPInvestorPositionCombineDetailField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryCombActionVolume(CKSOTPCombActionVolumeField *pCombActionVolume, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYCOMBACTIONVOLUME;
if (pCombActionVolume)
{
task.task_data = *pCombActionVolume;
}
else
{
CKSOTPCombActionVolumeField empty_data = CKSOTPCombActionVolumeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspFundOutCreditApply(CKSOTPInputFundOutCreditApplyField *pFundOutCreditApply, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPFUNDOUTCREDITAPPLY;
if (pFundOutCreditApply)
{
task.task_data = *pFundOutCreditApply;
}
else
{
CKSOTPInputFundOutCreditApplyField empty_data = CKSOTPInputFundOutCreditApplyField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryFundOutCredit(CKSOTPRspQryFundOutCreditField *pRspQryFundOutCredit, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYFUNDOUTCREDIT;
if (pRspQryFundOutCredit)
{
task.task_data = *pRspQryFundOutCredit;
}
else
{
CKSOTPRspQryFundOutCreditField empty_data = CKSOTPRspQryFundOutCreditField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRspQryFundOutCreditApply(CKSOTPRspQryFundOutCreditApplyField *pRspQryFundOutCreditApply, CKSOTPRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
Task task = Task();
task.task_name = ONRSPQRYFUNDOUTCREDITAPPLY;
if (pRspQryFundOutCreditApply)
{
task.task_data = *pRspQryFundOutCreditApply;
}
else
{
CKSOTPRspQryFundOutCreditApplyField empty_data = CKSOTPRspQryFundOutCreditApplyField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
if (pRspInfo)
{
task.task_error = *pRspInfo;
}
else
{
CKSOTPRspInfoField empty_error = CKSOTPRspInfoField();
memset(&empty_error, 0, sizeof(empty_error));
task.task_error = empty_error;
}
task.task_id = nRequestID;
task.task_last = bIsLast;
this->task_queue.push(task);
};
void TdApi::OnRtnOrder(CKSOTPOrderField *pOrder)
{
Task task = Task();
task.task_name = ONRTNORDER;
if (pOrder)
{
task.task_data = *pOrder;
}
else
{
CKSOTPOrderField empty_data = CKSOTPOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnTrade(CKSOTPTradeField *pTrade)
{
Task task = Task();
task.task_name = ONRTNTRADE;
if (pTrade)
{
task.task_data = *pTrade;
}
else
{
CKSOTPTradeField empty_data = CKSOTPTradeField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnExecOrder(CKSOTPExecOrderField *pExecOrder)
{
Task task = Task();
task.task_name = ONRTNEXECORDER;
if (pExecOrder)
{
task.task_data = *pExecOrder;
}
else
{
CKSOTPExecOrderField empty_data = CKSOTPExecOrderField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnLock(CKSOTPLockField *pLock)
{
Task task = Task();
task.task_name = ONRTNLOCK;
if (pLock)
{
task.task_data = *pLock;
}
else
{
CKSOTPLockField empty_data = CKSOTPLockField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnInstrumentStatus(CKSOTPInstrumentStatusField *pInstrumentStatus)
{
Task task = Task();
task.task_name = ONRTNINSTRUMENTSTATUS;
if (pInstrumentStatus)
{
task.task_data = *pInstrumentStatus;
}
else
{
CKSOTPInstrumentStatusField empty_data = CKSOTPInstrumentStatusField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnTradingNotice(CKSOTPTradingNoticeInfoField *pTradingNoticeInfo)
{
Task task = Task();
task.task_name = ONRTNTRADINGNOTICE;
if (pTradingNoticeInfo)
{
task.task_data = *pTradingNoticeInfo;
}
else
{
CKSOTPTradingNoticeInfoField empty_data = CKSOTPTradingNoticeInfoField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
void TdApi::OnRtnCombAction(CKSOTPCombActionField *pCombAction)
{
Task task = Task();
task.task_name = ONRTNCOMBACTION;
if (pCombAction)
{
task.task_data = *pCombAction;
}
else
{
CKSOTPCombActionField empty_data = CKSOTPCombActionField();
memset(&empty_data, 0, sizeof(empty_data));
task.task_data = empty_data;
}
this->task_queue.push(task);
};
///-------------------------------------------------------------------------------------
///工作线程从队列中取出数据转化为python对象后进行推送
///-------------------------------------------------------------------------------------
void TdApi::processTask()
{
while (1)
{
Task task = this->task_queue.wait_and_pop();
switch (task.task_name)
{
case ONFRONTCONNECTED:
{
this->processFrontConnected(task);
break;
}
case ONFRONTDISCONNECTED:
{
this->processFrontDisconnected(task);
break;
}
case ONRSPUSERLOGIN:
{
this->processRspUserLogin(task);
break;
}
case ONRSPUSERLOGOUT:
{
this->processRspUserLogout(task);
break;
}
case ONRSPUSERPASSWORDUPDATE:
{
this->processRspUserPasswordUpdate(task);
break;
}
case ONRSPTRADINGACCOUNTPASSWORDUPDATE:
{
this->processRspTradingAccountPasswordUpdate(task);
break;
}
case ONRSPORDERINSERT:
{
this->processRspOrderInsert(task);
break;
}
case ONRSPORDERACTION:
{
this->processRspOrderAction(task);
break;
}
case ONRSPQRYORDER:
{
this->processRspQryOrder(task);
break;
}
case ONRSPQRYTRADE:
{
this->processRspQryTrade(task);
break;
}
case ONRSPQRYINVESTORPOSITION:
{
this->processRspQryInvestorPosition(task);
break;
}
case ONRSPQRYTRADINGACCOUNT:
{
this->processRspQryTradingAccount(task);
break;
}
case ONRSPQRYINVESTOR:
{
this->processRspQryInvestor(task);
break;
}
case ONRSPQRYTRADINGCODE:
{
this->processRspQryTradingCode(task);
break;
}
case ONRSPQRYEXCHANGE:
{
this->processRspQryExchange(task);
break;
}
case ONRSPQRYINSTRUMENT:
{
this->processRspQryInstrument(task);
break;
}
case ONRSPQRYINVESTORPOSITIONDETAIL:
{
this->processRspQryInvestorPositionDetail(task);
break;
}
case ONRSPQRYTRADINGNOTICE:
{
this->processRspQryTradingNotice(task);
break;
}
case ONRSPEXECORDERINSERT:
{
this->processRspExecOrderInsert(task);
break;
}
case ONRSPLOCKINSERT:
{
this->processRspLockInsert(task);
break;
}
case ONRSPEXECORDERACTION:
{
this->processRspExecOrderAction(task);
break;
}
case ONRSPQRYEXECORDER:
{
this->processRspQryExecOrder(task);
break;
}
case ONRSPQRYEXECORDERVOLUME:
{
this->processRspQryExecOrderVolume(task);
break;
}
case ONRSPQRYLOCK:
{
this->processRspQryLock(task);
break;
}
case ONRSPQRYLOCKPOSITION:
{
this->processRspQryLockPosition(task);
break;
}
case ONRSPQRYUNDERLYINGSTOCKINFO:
{
this->processRspQryUnderlyingStockInfo(task);
break;
}
case ONRSPQRYOTPINSCOMMRATE:
{
this->processRspQryOTPInsCommRate(task);
break;
}
case ONRSPQRYINSTRUMENTMARGINRATE:
{
this->processRspQryInstrumentMarginRate(task);
break;
}
case ONRSPQRYOTPASSIGNMENT:
{
this->processRspQryOTPAssignment(task);
break;
}
case ONRSPQRYDEPTHMARKETDATA:
{
this->processRspQryDepthMarketData(task);
break;
}
case ONRSPFROMBANKTOSTOCKBYSTOCK:
{
this->processRspFromBankToStockByStock(task);
break;
}
case ONRTNFROMBANKTOSTOCKBYSTOCK:
{
this->processRtnFromBankToStockByStock(task);
break;
}
case ONRSPFROMSTOCKTOBANKBYSTOCK:
{
this->processRspFromStockToBankByStock(task);
break;
}
case ONRTNFROMSTOCKTOBANKBYSTOCK:
{
this->processRtnFromStockToBankByStock(task);
break;
}
case ONRTNQUERYBANKBALANCEBYSTOCK:
{
this->processRtnQueryBankBalanceByStock(task);
break;
}
case ONRSPQRYCONTRACTBANK:
{
this->processRspQryContractBank(task);
break;
}
case ONRSPQUERYBANKACCOUNTMONEYBYSTOCK:
{
this->processRspQueryBankAccountMoneyByStock(task);
break;
}
case ONRSPQRYTRANSFERSERIAL:
{
this->processRspQryTransferSerial(task);
break;
}
case ONRSPQRYSETTLEMENTINFOCONFIRM:
{
this->processRspQrySettlementInfoConfirm(task);
break;
}
case ONRSPSETTLEMENTINFOCONFIRM:
{
this->processRspSettlementInfoConfirm(task);
break;
}
case ONRSPQRYSETTLEMENTINFO:
{
this->processRspQrySettlementInfo(task);
break;
}
case ONRSPQRYINVESTORTRADELEVEL:
{
this->processRspQryInvestorTradeLevel(task);
break;
}
case ONRSPQRYPURCHASELIMITAMT:
{
this->processRspQryPurchaseLimitAmt(task);
break;
}
case ONRSPQRYPOSITIONLIMITVOL:
{
this->processRspQryPositionLimitVol(task);
break;
}
case ONRSPQRYHISTORYORDER:
{
this->processRspQryHistoryOrder(task);
break;
}
case ONRSPQRYHISTORYTRADE:
{
this->processRspQryHistoryTrade(task);
break;
}
case ONRSPQRYHISTORYASSIGNMENT:
{
this->processRspQryHistoryAssignment(task);
break;
}
case ONRSPQRYDELIVDETAIL:
{
this->processRspQryDelivDetail(task);
break;
}
case ONRSPAUTOEXECORDERACTION:
{
this->processRspAutoExecOrderAction(task);
break;
}
case ONRSPCOMBACTIONINSERT:
{
this->processRspCombActionInsert(task);
break;
}
case ONRSPQRYINVESTORCOMBINEPOSITION:
{
this->processRspQryInvestorCombinePosition(task);
break;
}
case ONRSPQRYCOMBACTIONVOLUME:
{
this->processRspQryCombActionVolume(task);
break;
}
case ONRSPFUNDOUTCREDITAPPLY:
{
this->processRspFundOutCreditApply(task);
break;
}
case ONRSPQRYFUNDOUTCREDIT:
{
this->processRspQryFundOutCredit(task);
break;
}
case ONRSPQRYFUNDOUTCREDITAPPLY:
{
this->processRspQryFundOutCreditApply(task);
break;
}
case ONRSPERROR:
{
this->processRspError(task);
break;
}
case ONRTNORDER:
{
this->processRtnOrder(task);
break;
}
case ONRTNTRADE:
{
this->processRtnTrade(task);
break;
}
case ONRTNEXECORDER:
{
this->processRtnExecOrder(task);
break;
}
case ONRTNLOCK:
{
this->processRtnLock(task);
break;
}
case ONRTNINSTRUMENTSTATUS:
{
this->processRtnInstrumentStatus(task);
break;
}
case ONRTNTRADINGNOTICE:
{
this->processRtnTradingNotice(task);
break;
}
case ONRTNCOMBACTION:
{
this->processRtnCombAction(task);
break;
}
}
}
}
void TdApi::processFrontConnected(Task task)
{
PyLock lock;
this->onFrontConnected();
};
void TdApi::processFrontDisconnected(Task task)
{
PyLock lock;
this->onFrontDisconnected(task.task_id);
};
void TdApi::processRspUserLogin(Task task)
{
PyLock lock;
CKSOTPRspUserLoginField task_data = any_cast<CKSOTPRspUserLoginField>(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;
data["SSETime"] = task_data.SSETime;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPUserLogoutField task_data = any_cast<CKSOTPUserLogoutField>(task.task_data);
dict data;
data["UserID"] = task_data.UserID;
data["BrokerID"] = task_data.BrokerID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspUserPasswordUpdate(Task task)
{
PyLock lock;
CKSOTPUserPasswordUpdateField task_data = any_cast<CKSOTPUserPasswordUpdateField>(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;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPTradingAccountPasswordUpdateField task_data = any_cast<CKSOTPTradingAccountPasswordUpdateField>(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;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspOrderInsert(Task task)
{
PyLock lock;
CKSOTPInputOrderField task_data = any_cast<CKSOTPInputOrderField>(task.task_data);
dict data;
data["ContingentCondition"] = task_data.ContingentCondition;
data["IsAutoSuspend"] = task_data.IsAutoSuspend;
data["HedgeFlag"] = task_data.HedgeFlag;
data["LimitPrice"] = task_data.LimitPrice;
data["UserForceClose"] = task_data.UserForceClose;
data["Direction"] = task_data.Direction;
data["IsSwapOrder"] = task_data.IsSwapOrder;
data["OffsetFlag"] = task_data.OffsetFlag;
data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal;
data["OrderPriceType"] = task_data.OrderPriceType;
data["TimeCondition"] = task_data.TimeCondition;
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["UserID"] = task_data.UserID;
data["BrokerID"] = task_data.BrokerID;
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;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPInputOrderActionField task_data = any_cast<CKSOTPInputOrderActionField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["ActionFlag"] = task_data.ActionFlag;
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["OrderSysID"] = task_data.OrderSysID;
data["FrontID"] = task_data.FrontID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspQryOrder(Task task)
{
PyLock lock;
CKSOTPOrderField task_data = any_cast<CKSOTPOrderField>(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["TraderID"] = task_data.TraderID;
data["HedgeFlag"] = task_data.HedgeFlag;
data["LimitPrice"] = task_data.LimitPrice;
data["UserForceClose"] = task_data.UserForceClose;
data["OrderType"] = task_data.OrderType;
data["Direction"] = task_data.Direction;
data["ActiveTime"] = task_data.ActiveTime;
data["OffsetFlag"] = task_data.OffsetFlag;
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["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["SettlementID"] = task_data.SettlementID;
data["ForceCloseReason"] = task_data.ForceCloseReason;
data["UserID"] = task_data.UserID;
data["UpdateTime"] = task_data.UpdateTime;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["InsertTime"] = task_data.InsertTime;
data["FrontID"] = task_data.FrontID;
data["ParticipantID"] = task_data.ParticipantID;
data["CancelTime"] = task_data.CancelTime;
data["GTDDate"] = task_data.GTDDate;
data["OrderLocalID"] = task_data.OrderLocalID;
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;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPTradeField task_data = any_cast<CKSOTPTradeField>(task.task_data);
dict data;
data["TradeType"] = task_data.TradeType;
data["TraderID"] = task_data.TraderID;
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["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
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["TradeSource"] = task_data.TradeSource;
data["PriceSource"] = task_data.PriceSource;
data["TradingRole"] = task_data.TradingRole;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPInvestorPositionField task_data = any_cast<CKSOTPInvestorPositionField>(task.task_data);
dict data;
data["ShortFrozenAmount"] = task_data.ShortFrozenAmount;
data["FrozenMargin"] = task_data.FrozenMargin;
data["HedgeFlag"] = task_data.HedgeFlag;
data["PositionProfit"] = task_data.PositionProfit;
data["Commission"] = task_data.Commission;
data["MarginRateByVolume"] = task_data.MarginRateByVolume;
data["CashIn"] = task_data.CashIn;
data["PreSettlementPrice"] = task_data.PreSettlementPrice;
data["CloseAmount"] = task_data.CloseAmount;
data["PosiDirection"] = task_data.PosiDirection;
data["YdPosition"] = task_data.YdPosition;
data["MarginRateByMoney"] = task_data.MarginRateByMoney;
data["OpenVolume"] = task_data.OpenVolume;
data["ExchangeMargin"] = task_data.ExchangeMargin;
data["InstrumentID"] = task_data.InstrumentID;
data["PositionDate"] = task_data.PositionDate;
data["ExchangeID"] = task_data.ExchangeID;
data["CloseProfitByTrade"] = task_data.CloseProfitByTrade;
data["StrikeFrozen"] = task_data.StrikeFrozen;
data["SettlementID"] = task_data.SettlementID;
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["Position"] = task_data.Position;
data["FrozenCommission"] = task_data.FrozenCommission;
data["CloseProfitByDate"] = task_data.CloseProfitByDate;
data["SettlementPrice"] = task_data.SettlementPrice;
data["LongFrozenAmount"] = task_data.LongFrozenAmount;
data["InvestorID"] = task_data.InvestorID;
data["StrikeFrozenAmount"] = task_data.StrikeFrozenAmount;
data["CloseProfit"] = task_data.CloseProfit;
data["UseMargin"] = task_data.UseMargin;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspQryTradingAccount(Task task)
{
PyLock lock;
CKSOTPTradingAccountField task_data = any_cast<CKSOTPTradingAccountField>(task.task_data);
dict data;
data["Mortgage"] = task_data.Mortgage;
data["ExchangeDeliveryMargin"] = task_data.ExchangeDeliveryMargin;
data["FrozenMargin"] = task_data.FrozenMargin;
data["WithdrawQuota"] = task_data.WithdrawQuota;
data["PositionProfit"] = task_data.PositionProfit;
data["Commission"] = task_data.Commission;
data["CashIn"] = task_data.CashIn;
data["AccountID"] = task_data.AccountID;
data["Available"] = task_data.Available;
data["ExchangeMargin"] = task_data.ExchangeMargin;
data["PreMargin"] = task_data.PreMargin;
data["SettlementID"] = task_data.SettlementID;
data["DeliveryMargin"] = task_data.DeliveryMargin;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["FrozenCash"] = task_data.FrozenCash;
data["Withdraw"] = task_data.Withdraw;
data["Balance"] = task_data.Balance;
data["Reserve"] = task_data.Reserve;
data["Credit"] = task_data.Credit;
data["PreBalance"] = task_data.PreBalance;
data["CurrMargin"] = task_data.CurrMargin;
data["FrozenCommission"] = task_data.FrozenCommission;
data["CloseProfit"] = task_data.CloseProfit;
data["Deposit"] = task_data.Deposit;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspQryInvestor(Task task)
{
PyLock lock;
CKSOTPInvestorField task_data = any_cast<CKSOTPInvestorField>(task.task_data);
dict data;
data["InvestorName"] = task_data.InvestorName;
data["Mobile"] = task_data.Mobile;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["Telephone"] = task_data.Telephone;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["Address"] = task_data.Address;
data["OpenDate"] = task_data.OpenDate;
data["IsActive"] = task_data.IsActive;
data["IdentifiedCardType"] = task_data.IdentifiedCardType;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPTradingCodeField task_data = any_cast<CKSOTPTradingCodeField>(task.task_data);
dict data;
data["ExchangeID"] = task_data.ExchangeID;
data["ClientID"] = task_data.ClientID;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["ClientIDType"] = task_data.ClientIDType;
data["IsActive"] = task_data.IsActive;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspQryExchange(Task task)
{
PyLock lock;
CKSOTPExchangeField task_data = any_cast<CKSOTPExchangeField>(task.task_data);
dict data;
data["ExchangeID"] = task_data.ExchangeID;
data["ExchangeName"] = task_data.ExchangeName;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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;
CKSOTPInstrumentField task_data = any_cast<CKSOTPInstrumentField>(task.task_data);
dict data;
data["IsTrading"] = task_data.IsTrading;
data["ExpireDate"] = task_data.ExpireDate;
data["PositionDateType"] = task_data.PositionDateType;
data["LongMarginRatio"] = task_data.LongMarginRatio;
data["StrikePrice"] = task_data.StrikePrice;
data["UnderlyingMultiple"] = task_data.UnderlyingMultiple;
data["PositionType"] = task_data.PositionType;
data["ProductClass"] = task_data.ProductClass;
data["InstrumentName"] = task_data.InstrumentName;
data["ShortMarginRatio"] = task_data.ShortMarginRatio;
data["VolumeMultiple"] = task_data.VolumeMultiple;
data["DeliveryYear"] = task_data.DeliveryYear;
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["OptionsType"] = task_data.OptionsType;
data["StartDelivDate"] = task_data.StartDelivDate;
data["DeliveryMonth"] = task_data.DeliveryMonth;
data["InstrumentCode"] = task_data.InstrumentCode;
data["PriceTick"] = task_data.PriceTick;
data["InstLifePhase"] = task_data.InstLifePhase;
data["ExchangeInstID"] = task_data.ExchangeInstID;
data["MinMarketOrderVolume"] = task_data.MinMarketOrderVolume;
data["EndDelivDate"] = task_data.EndDelivDate;
data["UnderlyingInstrID"] = task_data.UnderlyingInstrID;
data["OpenDate"] = task_data.OpenDate;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspQryInvestorPositionDetail(Task task)
{
PyLock lock;
CKSOTPInvestorPositionDetailField task_data = any_cast<CKSOTPInvestorPositionDetailField>(task.task_data);
dict data;
data["PositionProfitByDate"] = task_data.PositionProfitByDate;
data["ExchMargin"] = task_data.ExchMargin;
data["TradeType"] = task_data.TradeType;
data["MarginRateByMoney"] = task_data.MarginRateByMoney;
data["HedgeFlag"] = task_data.HedgeFlag;
data["MarginRateByVolume"] = task_data.MarginRateByVolume;
data["Direction"] = task_data.Direction;
data["OpenPrice"] = task_data.OpenPrice;
data["Volume"] = task_data.Volume;
data["LastSettlementPrice"] = task_data.LastSettlementPrice;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["CloseProfitByTrade"] = task_data.CloseProfitByTrade;
data["SettlementID"] = task_data.SettlementID;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["Margin"] = task_data.Margin;
data["TradeID"] = task_data.TradeID;
data["PositionProfitByTrade"] = task_data.PositionProfitByTrade;
data["CloseProfitByDate"] = task_data.CloseProfitByDate;
data["SettlementPrice"] = task_data.SettlementPrice;
data["InvestorID"] = task_data.InvestorID;
data["OpenDate"] = task_data.OpenDate;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryInvestorPositionDetail(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryTradingNotice(Task task)
{
PyLock lock;
CKSOTPTradingNoticeField task_data = any_cast<CKSOTPTradingNoticeField>(task.task_data);
dict data;
data["SequenceSeries"] = task_data.SequenceSeries;
data["SequenceNo"] = task_data.SequenceNo;
data["UserID"] = task_data.UserID;
data["FieldContent"] = task_data.FieldContent;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["SendTime"] = task_data.SendTime;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryTradingNotice(data, error, task.task_id, task.task_last);
};
void TdApi::processRspExecOrderInsert(Task task)
{
PyLock lock;
CKSOTPInputExecOrderField task_data = any_cast<CKSOTPInputExecOrderField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ExecOrderRef"] = task_data.ExecOrderRef;
data["ExchangeID"] = task_data.ExchangeID;
data["CloseFlag"] = task_data.CloseFlag;
data["OffsetFlag"] = task_data.OffsetFlag;
data["PosiDirection"] = task_data.PosiDirection;
data["BusinessUnit"] = task_data.BusinessUnit;
data["HedgeFlag"] = task_data.HedgeFlag;
data["UserID"] = task_data.UserID;
data["Volume"] = task_data.Volume;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["RequestID"] = task_data.RequestID;
data["ActionType"] = task_data.ActionType;
data["ReservePositionFlag"] = task_data.ReservePositionFlag;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspExecOrderInsert(data, error, task.task_id, task.task_last);
};
void TdApi::processRspLockInsert(Task task)
{
PyLock lock;
CKSOTPInputLockField task_data = any_cast<CKSOTPInputLockField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["BusinessUnit"] = task_data.BusinessUnit;
data["UserID"] = task_data.UserID;
data["LockRef"] = task_data.LockRef;
data["Volume"] = task_data.Volume;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["RequestID"] = task_data.RequestID;
data["LockType"] = task_data.LockType;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspLockInsert(data, error, task.task_id, task.task_last);
};
void TdApi::processRspExecOrderAction(Task task)
{
PyLock lock;
CKSOTPInputExecOrderActionField task_data = any_cast<CKSOTPInputExecOrderActionField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ExecOrderSysID"] = task_data.ExecOrderSysID;
data["ExchangeID"] = task_data.ExchangeID;
data["UserID"] = task_data.UserID;
data["ExecOrderRef"] = task_data.ExecOrderRef;
data["InvestorID"] = task_data.InvestorID;
data["SessionID"] = task_data.SessionID;
data["BrokerID"] = task_data.BrokerID;
data["RequestID"] = task_data.RequestID;
data["ActionFlag"] = task_data.ActionFlag;
data["ExecOrderActionRef"] = task_data.ExecOrderActionRef;
data["FrontID"] = task_data.FrontID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspExecOrderAction(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryExecOrder(Task task)
{
PyLock lock;
CKSOTPExecOrderField task_data = any_cast<CKSOTPExecOrderField>(task.task_data);
dict data;
data["NotifySequence"] = task_data.NotifySequence;
data["CloseFlag"] = task_data.CloseFlag;
data["ActiveUserID"] = task_data.ActiveUserID;
data["UserProductInfo"] = task_data.UserProductInfo;
data["TraderID"] = task_data.TraderID;
data["HedgeFlag"] = task_data.HedgeFlag;
data["ExecResult"] = task_data.ExecResult;
data["ReservePositionFlag"] = task_data.ReservePositionFlag;
data["Volume"] = task_data.Volume;
data["InstallID"] = task_data.InstallID;
data["OffsetFlag"] = task_data.OffsetFlag;
data["PosiDirection"] = task_data.PosiDirection;
data["ClientID"] = task_data.ClientID;
data["ExecOrderRef"] = task_data.ExecOrderRef;
data["SessionID"] = task_data.SessionID;
data["ActionType"] = task_data.ActionType;
data["OrderSubmitStatus"] = task_data.OrderSubmitStatus;
data["ClearingPartID"] = task_data.ClearingPartID;
data["InstrumentID"] = task_data.InstrumentID;
data["ExecOrderSysID"] = task_data.ExecOrderSysID;
data["ExchangeID"] = task_data.ExchangeID;
data["StatusMsg"] = task_data.StatusMsg;
data["SettlementID"] = task_data.SettlementID;
data["UserID"] = task_data.UserID;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["InsertTime"] = task_data.InsertTime;
data["ExecOrderLocalID"] = task_data.ExecOrderLocalID;
data["ParticipantID"] = task_data.ParticipantID;
data["CancelTime"] = task_data.CancelTime;
data["BranchID"] = task_data.BranchID;
data["BusinessUnit"] = task_data.BusinessUnit;
data["InsertDate"] = task_data.InsertDate;
data["SequenceNo"] = task_data.SequenceNo;
data["InvestorID"] = task_data.InvestorID;
data["ExchangeInstID"] = task_data.ExchangeInstID;
data["RequestID"] = task_data.RequestID;
data["BrokerExecOrderSeq"] = task_data.BrokerExecOrderSeq;
data["FrontID"] = task_data.FrontID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryExecOrder(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryExecOrderVolume(Task task)
{
PyLock lock;
CKSOTPExecOrderVolumeField task_data = any_cast<CKSOTPExecOrderVolumeField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["Direction"] = task_data.Direction;
data["HedgeFlag"] = task_data.HedgeFlag;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["ActionVolume"] = task_data.ActionVolume;
data["ActionedVolume"] = task_data.ActionedVolume;
data["ExecedVolume"] = task_data.ExecedVolume;
data["ExecVolume"] = task_data.ExecVolume;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryExecOrderVolume(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryLock(Task task)
{
PyLock lock;
CKSOTPLockField task_data = any_cast<CKSOTPLockField>(task.task_data);
dict data;
data["LockStatus"] = task_data.LockStatus;
data["NotifySequence"] = task_data.NotifySequence;
data["ActiveUserID"] = task_data.ActiveUserID;
data["UserProductInfo"] = task_data.UserProductInfo;
data["TraderID"] = task_data.TraderID;
data["UserID"] = task_data.UserID;
data["LockLocalID"] = task_data.LockLocalID;
data["InstallID"] = task_data.InstallID;
data["ParticipantID"] = task_data.ParticipantID;
data["ClientID"] = task_data.ClientID;
data["Volume"] = task_data.Volume;
data["SessionID"] = task_data.SessionID;
data["OrderSubmitStatus"] = task_data.OrderSubmitStatus;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["StatusMsg"] = task_data.StatusMsg;
data["SettlementID"] = task_data.SettlementID;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["InsertTime"] = task_data.InsertTime;
data["ClearingPartID"] = task_data.ClearingPartID;
data["CancelTime"] = task_data.CancelTime;
data["BranchID"] = task_data.BranchID;
data["BusinessUnit"] = task_data.BusinessUnit;
data["InsertDate"] = task_data.InsertDate;
data["BrokerLockSeq"] = task_data.BrokerLockSeq;
data["SequenceNo"] = task_data.SequenceNo;
data["LockRef"] = task_data.LockRef;
data["InvestorID"] = task_data.InvestorID;
data["ExchangeInstID"] = task_data.ExchangeInstID;
data["RequestID"] = task_data.RequestID;
data["FrontID"] = task_data.FrontID;
data["LockSysID"] = task_data.LockSysID;
data["LockType"] = task_data.LockType;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryLock(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryLockPosition(Task task)
{
PyLock lock;
CKSOTPLockPositionField task_data = any_cast<CKSOTPLockPositionField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["FrozenVolume"] = task_data.FrozenVolume;
data["Volume"] = task_data.Volume;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryLockPosition(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryUnderlyingStockInfo(Task task)
{
PyLock lock;
CKSOTPUnderlyingStockInfoField task_data = any_cast<CKSOTPUnderlyingStockInfoField>(task.task_data);
dict data;
data["GuarantRatio"] = task_data.GuarantRatio;
data["ExchangeID"] = task_data.ExchangeID;
data["BrokerID"] = task_data.BrokerID;
data["PreClosePrice"] = task_data.PreClosePrice;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryUnderlyingStockInfo(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryOTPInsCommRate(Task task)
{
PyLock lock;
CKSOTPOTPInsCommRateField task_data = any_cast<CKSOTPOTPInsCommRateField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["OpenRatioByMoney"] = task_data.OpenRatioByMoney;
data["StrikeRatioByMoney"] = task_data.StrikeRatioByMoney;
data["CloseRatioByVolume"] = task_data.CloseRatioByVolume;
data["CloseTodayRatioByMoney"] = task_data.CloseTodayRatioByMoney;
data["ExchangeID"] = task_data.ExchangeID;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["InvestorRange"] = task_data.InvestorRange;
data["CloseRatioByMoney"] = task_data.CloseRatioByMoney;
data["OpenRatioByVolume"] = task_data.OpenRatioByVolume;
data["StrikeRatioByVolume"] = task_data.StrikeRatioByVolume;
data["CloseTodayRatioByVolume"] = task_data.CloseTodayRatioByVolume;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryOTPInsCommRate(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryInstrumentMarginRate(Task task)
{
PyLock lock;
CKSOTPInstrumentMarginRateField task_data = any_cast<CKSOTPInstrumentMarginRateField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ShortMarginRatioByMoney"] = task_data.ShortMarginRatioByMoney;
data["ExchangeID"] = task_data.ExchangeID;
data["LongMarginRatioByMoney"] = task_data.LongMarginRatioByMoney;
data["IsRelative"] = task_data.IsRelative;
data["HedgeFlag"] = task_data.HedgeFlag;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["InvestorRange"] = task_data.InvestorRange;
data["ShortMarginRatioByVolume"] = task_data.ShortMarginRatioByVolume;
data["LongMarginRatioByVolume"] = task_data.LongMarginRatioByVolume;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryInstrumentMarginRate(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryOTPAssignment(Task task)
{
PyLock lock;
CKSOTPOTPAssignmentField task_data = any_cast<CKSOTPOTPAssignmentField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["InstrumentName"] = task_data.InstrumentName;
data["Direction"] = task_data.Direction;
data["AssProVol"] = task_data.AssProVol;
data["OptionsType"] = task_data.OptionsType;
data["YdPosition"] = task_data.YdPosition;
data["HedgeFlag"] = task_data.HedgeFlag;
data["ExchangeID"] = task_data.ExchangeID;
data["AssInsVo"] = task_data.AssInsVo;
data["InvestorID"] = task_data.InvestorID;
data["FeePay"] = task_data.FeePay;
data["BrokerID"] = task_data.BrokerID;
data["StockID"] = task_data.StockID;
data["DeliveryDay"] = task_data.DeliveryDay;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryOTPAssignment(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryDepthMarketData(Task task)
{
PyLock lock;
CKSOTPDepthMarketDataField task_data = any_cast<CKSOTPDepthMarketDataField>(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;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRspFromBankToStockByStock(Task task)
{
PyLock lock;
CKSOTPReqTransferField task_data = any_cast<CKSOTPReqTransferField>(task.task_data);
dict data;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["UserID"] = task_data.UserID;
data["BankPassWord"] = task_data.BankPassWord;
data["TradeTime"] = task_data.TradeTime;
data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag;
data["TID"] = task_data.TID;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["InstallID"] = task_data.InstallID;
data["CustomerName"] = task_data.CustomerName;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["Password"] = task_data.Password;
data["BankPwdFlag"] = task_data.BankPwdFlag;
data["RequestID"] = task_data.RequestID;
data["CustType"] = task_data.CustType;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["FeePayFlag"] = task_data.FeePayFlag;
data["BankSerial"] = task_data.BankSerial;
data["OperNo"] = task_data.OperNo;
data["TradingDay"] = task_data.TradingDay;
data["BankSecuAcc"] = task_data.BankSecuAcc;
data["BrokerID"] = task_data.BrokerID;
data["DeviceID"] = task_data.DeviceID;
data["TransferStatus"] = task_data.TransferStatus;
data["IdCardType"] = task_data.IdCardType;
data["PlateSerial"] = task_data.PlateSerial;
data["FutureFetchAmount"] = task_data.FutureFetchAmount;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["BrokerFee"] = task_data.BrokerFee;
data["BankAccType"] = task_data.BankAccType;
data["LastFragment"] = task_data.LastFragment;
data["FutureSerial"] = task_data.FutureSerial;
data["BankSecuAccType"] = task_data.BankSecuAccType;
data["BrokerIDByBank"] = task_data.BrokerIDByBank;
data["SecuPwdFlag"] = task_data.SecuPwdFlag;
data["Message"] = task_data.Message;
data["CustFee"] = task_data.CustFee;
data["TradeAmount"] = task_data.TradeAmount;
data["Digest"] = task_data.Digest;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspFromBankToStockByStock(data, error, task.task_id, task.task_last);
};
void TdApi::processRtnFromBankToStockByStock(Task task)
{
PyLock lock;
CKSOTPRspTransferField task_data = any_cast<CKSOTPRspTransferField>(task.task_data);
dict data;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["UserID"] = task_data.UserID;
data["BankPassWord"] = task_data.BankPassWord;
data["TradeTime"] = task_data.TradeTime;
data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag;
data["TID"] = task_data.TID;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["InstallID"] = task_data.InstallID;
data["CustomerName"] = task_data.CustomerName;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["Password"] = task_data.Password;
data["BankPwdFlag"] = task_data.BankPwdFlag;
data["ErrorID"] = task_data.ErrorID;
data["RequestID"] = task_data.RequestID;
data["CustType"] = task_data.CustType;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["FeePayFlag"] = task_data.FeePayFlag;
data["BankSerial"] = task_data.BankSerial;
data["OperNo"] = task_data.OperNo;
data["TradingDay"] = task_data.TradingDay;
data["BankSecuAcc"] = task_data.BankSecuAcc;
data["BrokerID"] = task_data.BrokerID;
data["DeviceID"] = task_data.DeviceID;
data["TransferStatus"] = task_data.TransferStatus;
data["IdCardType"] = task_data.IdCardType;
data["PlateSerial"] = task_data.PlateSerial;
data["FutureFetchAmount"] = task_data.FutureFetchAmount;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["BrokerFee"] = task_data.BrokerFee;
data["BankAccType"] = task_data.BankAccType;
data["LastFragment"] = task_data.LastFragment;
data["FutureSerial"] = task_data.FutureSerial;
data["ErrorMsg"] = task_data.ErrorMsg;
data["BankSecuAccType"] = task_data.BankSecuAccType;
data["BrokerIDByBank"] = task_data.BrokerIDByBank;
data["SecuPwdFlag"] = task_data.SecuPwdFlag;
data["Message"] = task_data.Message;
data["CustFee"] = task_data.CustFee;
data["TradeAmount"] = task_data.TradeAmount;
data["Digest"] = task_data.Digest;
this->onRtnFromBankToStockByStock(data);
};
void TdApi::processRspFromStockToBankByStock(Task task)
{
PyLock lock;
CKSOTPReqTransferField task_data = any_cast<CKSOTPReqTransferField>(task.task_data);
dict data;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["UserID"] = task_data.UserID;
data["BankPassWord"] = task_data.BankPassWord;
data["TradeTime"] = task_data.TradeTime;
data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag;
data["TID"] = task_data.TID;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["InstallID"] = task_data.InstallID;
data["CustomerName"] = task_data.CustomerName;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["Password"] = task_data.Password;
data["BankPwdFlag"] = task_data.BankPwdFlag;
data["RequestID"] = task_data.RequestID;
data["CustType"] = task_data.CustType;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["FeePayFlag"] = task_data.FeePayFlag;
data["BankSerial"] = task_data.BankSerial;
data["OperNo"] = task_data.OperNo;
data["TradingDay"] = task_data.TradingDay;
data["BankSecuAcc"] = task_data.BankSecuAcc;
data["BrokerID"] = task_data.BrokerID;
data["DeviceID"] = task_data.DeviceID;
data["TransferStatus"] = task_data.TransferStatus;
data["IdCardType"] = task_data.IdCardType;
data["PlateSerial"] = task_data.PlateSerial;
data["FutureFetchAmount"] = task_data.FutureFetchAmount;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["BrokerFee"] = task_data.BrokerFee;
data["BankAccType"] = task_data.BankAccType;
data["LastFragment"] = task_data.LastFragment;
data["FutureSerial"] = task_data.FutureSerial;
data["BankSecuAccType"] = task_data.BankSecuAccType;
data["BrokerIDByBank"] = task_data.BrokerIDByBank;
data["SecuPwdFlag"] = task_data.SecuPwdFlag;
data["Message"] = task_data.Message;
data["CustFee"] = task_data.CustFee;
data["TradeAmount"] = task_data.TradeAmount;
data["Digest"] = task_data.Digest;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspFromStockToBankByStock(data, error, task.task_id, task.task_last);
};
void TdApi::processRtnFromStockToBankByStock(Task task)
{
PyLock lock;
CKSOTPRspTransferField task_data = any_cast<CKSOTPRspTransferField>(task.task_data);
dict data;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["UserID"] = task_data.UserID;
data["BankPassWord"] = task_data.BankPassWord;
data["TradeTime"] = task_data.TradeTime;
data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag;
data["TID"] = task_data.TID;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["InstallID"] = task_data.InstallID;
data["CustomerName"] = task_data.CustomerName;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["Password"] = task_data.Password;
data["BankPwdFlag"] = task_data.BankPwdFlag;
data["ErrorID"] = task_data.ErrorID;
data["RequestID"] = task_data.RequestID;
data["CustType"] = task_data.CustType;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["FeePayFlag"] = task_data.FeePayFlag;
data["BankSerial"] = task_data.BankSerial;
data["OperNo"] = task_data.OperNo;
data["TradingDay"] = task_data.TradingDay;
data["BankSecuAcc"] = task_data.BankSecuAcc;
data["BrokerID"] = task_data.BrokerID;
data["DeviceID"] = task_data.DeviceID;
data["TransferStatus"] = task_data.TransferStatus;
data["IdCardType"] = task_data.IdCardType;
data["PlateSerial"] = task_data.PlateSerial;
data["FutureFetchAmount"] = task_data.FutureFetchAmount;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["BrokerFee"] = task_data.BrokerFee;
data["BankAccType"] = task_data.BankAccType;
data["LastFragment"] = task_data.LastFragment;
data["FutureSerial"] = task_data.FutureSerial;
data["ErrorMsg"] = task_data.ErrorMsg;
data["BankSecuAccType"] = task_data.BankSecuAccType;
data["BrokerIDByBank"] = task_data.BrokerIDByBank;
data["SecuPwdFlag"] = task_data.SecuPwdFlag;
data["Message"] = task_data.Message;
data["CustFee"] = task_data.CustFee;
data["TradeAmount"] = task_data.TradeAmount;
data["Digest"] = task_data.Digest;
this->onRtnFromStockToBankByStock(data);
};
void TdApi::processRtnQueryBankBalanceByStock(Task task)
{
PyLock lock;
CKSOTPNotifyQueryAccountField task_data = any_cast<CKSOTPNotifyQueryAccountField>(task.task_data);
dict data;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["UserID"] = task_data.UserID;
data["BankPassWord"] = task_data.BankPassWord;
data["TradeTime"] = task_data.TradeTime;
data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag;
data["TID"] = task_data.TID;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["InstallID"] = task_data.InstallID;
data["CustomerName"] = task_data.CustomerName;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["Password"] = task_data.Password;
data["BankPwdFlag"] = task_data.BankPwdFlag;
data["ErrorID"] = task_data.ErrorID;
data["RequestID"] = task_data.RequestID;
data["CustType"] = task_data.CustType;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["BankSerial"] = task_data.BankSerial;
data["OperNo"] = task_data.OperNo;
data["TradingDay"] = task_data.TradingDay;
data["BankSecuAcc"] = task_data.BankSecuAcc;
data["BrokerID"] = task_data.BrokerID;
data["DeviceID"] = task_data.DeviceID;
data["BankUseAmount"] = task_data.BankUseAmount;
data["IdCardType"] = task_data.IdCardType;
data["PlateSerial"] = task_data.PlateSerial;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["ErrorMsg"] = task_data.ErrorMsg;
data["BankAccType"] = task_data.BankAccType;
data["LastFragment"] = task_data.LastFragment;
data["FutureSerial"] = task_data.FutureSerial;
data["BankSecuAccType"] = task_data.BankSecuAccType;
data["BrokerIDByBank"] = task_data.BrokerIDByBank;
data["SecuPwdFlag"] = task_data.SecuPwdFlag;
data["Digest"] = task_data.Digest;
data["BankFetchAmount"] = task_data.BankFetchAmount;
this->onRtnQueryBankBalanceByStock(data);
};
void TdApi::processRspQryContractBank(Task task)
{
PyLock lock;
CKSOTPContractBankField task_data = any_cast<CKSOTPContractBankField>(task.task_data);
dict data;
data["BankName"] = task_data.BankName;
data["BrokerID"] = task_data.BrokerID;
data["BankBrchID"] = task_data.BankBrchID;
data["BankID"] = task_data.BankID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryContractBank(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQueryBankAccountMoneyByStock(Task task)
{
PyLock lock;
CKSOTPReqQueryAccountField task_data = any_cast<CKSOTPReqQueryAccountField>(task.task_data);
dict data;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["UserID"] = task_data.UserID;
data["BankPassWord"] = task_data.BankPassWord;
data["TradeTime"] = task_data.TradeTime;
data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag;
data["TID"] = task_data.TID;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["InstallID"] = task_data.InstallID;
data["CustomerName"] = task_data.CustomerName;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["Password"] = task_data.Password;
data["BankPwdFlag"] = task_data.BankPwdFlag;
data["RequestID"] = task_data.RequestID;
data["CustType"] = task_data.CustType;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["BankSerial"] = task_data.BankSerial;
data["OperNo"] = task_data.OperNo;
data["TradingDay"] = task_data.TradingDay;
data["BankSecuAcc"] = task_data.BankSecuAcc;
data["BrokerID"] = task_data.BrokerID;
data["DeviceID"] = task_data.DeviceID;
data["IdCardType"] = task_data.IdCardType;
data["PlateSerial"] = task_data.PlateSerial;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["BankAccType"] = task_data.BankAccType;
data["LastFragment"] = task_data.LastFragment;
data["FutureSerial"] = task_data.FutureSerial;
data["BankSecuAccType"] = task_data.BankSecuAccType;
data["BrokerIDByBank"] = task_data.BrokerIDByBank;
data["SecuPwdFlag"] = task_data.SecuPwdFlag;
data["Digest"] = task_data.Digest;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQueryBankAccountMoneyByStock(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryTransferSerial(Task task)
{
PyLock lock;
CKSOTPTransferSerialField task_data = any_cast<CKSOTPTransferSerialField>(task.task_data);
dict data;
data["BankNewAccount"] = task_data.BankNewAccount;
data["BrokerBranchID"] = task_data.BrokerBranchID;
data["TradeTime"] = task_data.TradeTime;
data["OperatorCode"] = task_data.OperatorCode;
data["AccountID"] = task_data.AccountID;
data["BankAccount"] = task_data.BankAccount;
data["TradeCode"] = task_data.TradeCode;
data["BankBranchID"] = task_data.BankBranchID;
data["SessionID"] = task_data.SessionID;
data["BankID"] = task_data.BankID;
data["PlateSerial"] = task_data.PlateSerial;
data["FutureAccType"] = task_data.FutureAccType;
data["ErrorID"] = task_data.ErrorID;
data["BankSerial"] = task_data.BankSerial;
data["IdentifiedCardNo"] = task_data.IdentifiedCardNo;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["IdCardType"] = task_data.IdCardType;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["BrokerFee"] = task_data.BrokerFee;
data["BankAccType"] = task_data.BankAccType;
data["FutureSerial"] = task_data.FutureSerial;
data["InvestorID"] = task_data.InvestorID;
data["ErrorMsg"] = task_data.ErrorMsg;
data["CustFee"] = task_data.CustFee;
data["TradeAmount"] = task_data.TradeAmount;
data["AvailabilityFlag"] = task_data.AvailabilityFlag;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryTransferSerial(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQrySettlementInfoConfirm(Task task)
{
PyLock lock;
CKSOTPSettlementInfoConfirmField task_data = any_cast<CKSOTPSettlementInfoConfirmField>(task.task_data);
dict data;
data["ConfirmTime"] = task_data.ConfirmTime;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["ConfirmDate"] = task_data.ConfirmDate;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQrySettlementInfoConfirm(data, error, task.task_id, task.task_last);
};
void TdApi::processRspSettlementInfoConfirm(Task task)
{
PyLock lock;
CKSOTPSettlementInfoConfirmField task_data = any_cast<CKSOTPSettlementInfoConfirmField>(task.task_data);
dict data;
data["ConfirmTime"] = task_data.ConfirmTime;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["ConfirmDate"] = task_data.ConfirmDate;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspSettlementInfoConfirm(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQrySettlementInfo(Task task)
{
PyLock lock;
CKSOTPSettlementInfoField task_data = any_cast<CKSOTPSettlementInfoField>(task.task_data);
dict data;
data["SettlementID"] = task_data.SettlementID;
data["InvestorID"] = task_data.InvestorID;
data["SequenceNo"] = task_data.SequenceNo;
data["Content"] = task_data.Content;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQrySettlementInfo(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryInvestorTradeLevel(Task task)
{
PyLock lock;
CKSOTPInvestorTradeLevelField task_data = any_cast<CKSOTPInvestorTradeLevelField>(task.task_data);
dict data;
data["InvestorID"] = task_data.InvestorID;
data["ExchangeID"] = task_data.ExchangeID;
data["BrokerID"] = task_data.BrokerID;
data["TradeLevel"] = task_data.TradeLevel;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryInvestorTradeLevel(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryPurchaseLimitAmt(Task task)
{
PyLock lock;
CKSOTPPurchaseLimitAmtField task_data = any_cast<CKSOTPPurchaseLimitAmtField>(task.task_data);
dict data;
data["InvestorID"] = task_data.InvestorID;
data["ExchangeID"] = task_data.ExchangeID;
data["PurLimitAmt"] = task_data.PurLimitAmt;
data["BrokerID"] = task_data.BrokerID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryPurchaseLimitAmt(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryPositionLimitVol(Task task)
{
PyLock lock;
CKSOTPPositionLimitVolField task_data = any_cast<CKSOTPPositionLimitVolField>(task.task_data);
dict data;
data["ProtectFlag"] = task_data.ProtectFlag;
data["ExchangeID"] = task_data.ExchangeID;
data["OptionsType"] = task_data.OptionsType;
data["PosiLimitVol"] = task_data.PosiLimitVol;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["ControlRange"] = task_data.ControlRange;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryPositionLimitVol(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryHistoryOrder(Task task)
{
PyLock lock;
CKSOTPHistoryOrderField task_data = any_cast<CKSOTPHistoryOrderField>(task.task_data);
dict data;
data["VolumeTraded"] = task_data.VolumeTraded;
data["UserProductInfo"] = task_data.UserProductInfo;
data["ProductClass"] = task_data.ProductClass;
data["ProductName"] = task_data.ProductName;
data["Direction"] = task_data.Direction;
data["CustomerName"] = task_data.CustomerName;
data["InvestorID"] = task_data.InvestorID;
data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal;
data["SessionID"] = task_data.SessionID;
data["OrderStatus"] = task_data.OrderStatus;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["FunctionName"] = task_data.FunctionName;
data["OrderPrice"] = task_data.OrderPrice;
data["TradePrice"] = task_data.TradePrice;
data["OrderSource"] = task_data.OrderSource;
data["InsertTime"] = task_data.InsertTime;
data["FrontID"] = task_data.FrontID;
data["OffsetFlag"] = task_data.OffsetFlag;
data["OrderTime"] = task_data.OrderTime;
data["OrderLocalID"] = task_data.OrderLocalID;
data["CurrencyID"] = task_data.CurrencyID;
data["InsertDate"] = task_data.InsertDate;
data["SequenceNo"] = task_data.SequenceNo;
data["FrozenAmount"] = task_data.FrozenAmount;
data["OrderRef"] = task_data.OrderRef;
data["BusinessUnit"] = task_data.BusinessUnit;
data["RequestID"] = task_data.RequestID;
data["BrokerID"] = task_data.BrokerID;
data["TradeAmount"] = task_data.TradeAmount;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryHistoryOrder(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryHistoryTrade(Task task)
{
PyLock lock;
CKSOTPHistoryTradeField task_data = any_cast<CKSOTPHistoryTradeField>(task.task_data);
dict data;
data["VolumeTraded"] = task_data.VolumeTraded;
data["HedgeFlag"] = task_data.HedgeFlag;
data["Commission"] = task_data.Commission;
data["TradeTime"] = task_data.TradeTime;
data["CustomerName"] = task_data.CustomerName;
data["Memo"] = task_data.Memo;
data["ClientID"] = task_data.ClientID;
data["BusinessUnit"] = task_data.BusinessUnit;
data["TradePrice;"] = task_data.TradePrice;;
data["ExchangeID"] = task_data.ExchangeID;
data["FunctionName"] = task_data.FunctionName;
data["OptionsType"] = task_data.OptionsType;
data["BrokerID"] = task_data.BrokerID;
data["RoyaltyAmount"] = task_data.RoyaltyAmount;
data["TraderOfferTime"] = task_data.TraderOfferTime;
data["OffsetFlag"] = task_data.OffsetFlag;
data["TradeID"] = task_data.TradeID;
data["OrderLocalID"] = task_data.OrderLocalID;
data["TradeDate"] = task_data.TradeDate;
data["CurrencyID"] = task_data.CurrencyID;
data["ProductName"] = task_data.ProductName;
data["InvestorID"] = task_data.InvestorID;
data["ObligationVolume"] = task_data.ObligationVolume;
data["RoyaltyVolume"] = task_data.RoyaltyVolume;
data["ObligationAmount"] = task_data.ObligationAmount;
data["TradeAmount"] = task_data.TradeAmount;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryHistoryTrade(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryHistoryAssignment(Task task)
{
PyLock lock;
CKSOTPHistoryAssignmentField task_data = any_cast<CKSOTPHistoryAssignmentField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["OptionsType"] = task_data.OptionsType;
data["DelivDate"] = task_data.DelivDate;
data["TradingDay"] = task_data.TradingDay;
data["PosiDirection"] = task_data.PosiDirection;
data["HedgeFlag"] = task_data.HedgeFlag;
data["StrikePrice"] = task_data.StrikePrice;
data["ClientID"] = task_data.ClientID;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["StockInstr"] = task_data.StockInstr;
data["IOVol"] = task_data.IOVol;
data["IOAmt"] = task_data.IOAmt;
data["ExecVol"] = task_data.ExecVol;
data["ProductID"] = task_data.ProductID;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryHistoryAssignment(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryDelivDetail(Task task)
{
PyLock lock;
CKSOTPDelivDetailField task_data = any_cast<CKSOTPDelivDetailField>(task.task_data);
dict data;
data["ExchangeID"] = task_data.ExchangeID;
data["FunctionName"] = task_data.FunctionName;
data["SettlementAmt"] = task_data.SettlementAmt;
data["SettlementPrice"] = task_data.SettlementPrice;
data["StockInstr"] = task_data.StockInstr;
data["IOVolInFact"] = task_data.IOVolInFact;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["IOVol"] = task_data.IOVol;
data["DelivDate"] = task_data.DelivDate;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryDelivDetail(data, error, task.task_id, task.task_last);
};
void TdApi::processRspAutoExecOrderAction(Task task)
{
PyLock lock;
CKSOTPAutoExecOrderActionField task_data = any_cast<CKSOTPAutoExecOrderActionField>(task.task_data);
dict data;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["RangeVol"] = task_data.RangeVol;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspAutoExecOrderAction(data, error, task.task_id, task.task_last);
};
void TdApi::processRspCombActionInsert(Task task)
{
PyLock lock;
CKSOTPInputCombActionField task_data = any_cast<CKSOTPInputCombActionField>(task.task_data);
dict data;
data["ExchangeID"] = task_data.ExchangeID;
data["CombDirection"] = task_data.CombDirection;
data["CombActionRef"] = task_data.CombActionRef;
data["ComTradeID"] = task_data.ComTradeID;
data[" CombActionFlag"] = task_data.CombActionFlag;
data["UserID"] = task_data.UserID;
data["Direction1"] = task_data.Direction1;
data["Direction3"] = task_data.Direction3;
data["InstrumentID4"] = task_data.InstrumentID4;
data["Volume"] = task_data.Volume;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["InstrumentID1"] = task_data.InstrumentID1;
data["Direction2"] = task_data.Direction2;
data["StrategyID"] = task_data.StrategyID;
data["InstrumentID2"] = task_data.InstrumentID2;
data["InstrumentID3"] = task_data.InstrumentID3;
data["HedgeFlag"] = task_data.HedgeFlag;
data["Direction4"] = task_data.Direction4;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspCombActionInsert(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryInvestorCombinePosition(Task task)
{
PyLock lock;
CKSOTPInvestorPositionCombineDetailField task_data = any_cast<CKSOTPInvestorPositionCombineDetailField>(task.task_data);
dict data;
data["ExchangeID"] = task_data.ExchangeID;
data["CombActionVolume"] = task_data.CombActionVolume;
data["Direction3"] = task_data.Direction3;
data["ComTradeID"] = task_data.ComTradeID;
data["TotalAmt"] = task_data.TotalAmt;
data["HedgeFlag"] = task_data.HedgeFlag;
data["Direction1"] = task_data.Direction1;
data["ClientID"] = task_data.ClientID;
data["InstrumentID4"] = task_data.InstrumentID4;
data["CombDirection"] = task_data.CombDirection;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["InstrumentID1"] = task_data.InstrumentID1;
data["Direction2"] = task_data.Direction2;
data["StrategyID"] = task_data.StrategyID;
data["InstrumentID2"] = task_data.InstrumentID2;
data["Margin"] = task_data.Margin;
data["InstrumentID3"] = task_data.InstrumentID3;
data["Direction4"] = task_data.Direction4;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryInvestorCombinePosition(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryCombActionVolume(Task task)
{
PyLock lock;
CKSOTPCombActionVolumeField task_data = any_cast<CKSOTPCombActionVolumeField>(task.task_data);
dict data;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["MaxActionVolume"] = task_data.MaxActionVolume;
data["MaxCombVolume"] = task_data.MaxCombVolume;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryCombActionVolume(data, error, task.task_id, task.task_last);
};
void TdApi::processRspFundOutCreditApply(Task task)
{
PyLock lock;
CKSOTPInputFundOutCreditApplyField task_data = any_cast<CKSOTPInputFundOutCreditApplyField>(task.task_data);
dict data;
data["CreditApplyFlag"] = task_data.CreditApplyFlag;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["FundOutCredit"] = task_data.FundOutCredit;
data["CreditSerial"] = task_data.CreditSerial;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspFundOutCreditApply(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryFundOutCredit(Task task)
{
PyLock lock;
CKSOTPRspQryFundOutCreditField task_data = any_cast<CKSOTPRspQryFundOutCreditField>(task.task_data);
dict data;
data["FundOutCredit"] = task_data.FundOutCredit;
data["FundOutedCredit"] = task_data.FundOutedCredit;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["UpdateDate"] = task_data.UpdateDate;
data["SetTime"] = task_data.SetTime;
data["SetDate"] = task_data.SetDate;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryFundOutCredit(data, error, task.task_id, task.task_last);
};
void TdApi::processRspQryFundOutCreditApply(Task task)
{
PyLock lock;
CKSOTPRspQryFundOutCreditApplyField task_data = any_cast<CKSOTPRspQryFundOutCreditApplyField>(task.task_data);
dict data;
data["DealStatus"] = task_data.DealStatus;
data["FundOutCredit"] = task_data.FundOutCredit;
data["ApplyTime"] = task_data.ApplyTime;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["ConfirmDate"] = task_data.ConfirmDate;
data["ConfirmTime"] = task_data.ConfirmTime;
data["ApplyDate"] = task_data.ApplyDate;
data["CreditSerial"] = task_data.CreditSerial;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(task.task_error);
dict error;
error["ErrorMsg"] = task_error.ErrorMsg;
error["ErrorID"] = task_error.ErrorID;
this->onRspQryFundOutCreditApply(data, error, task.task_id, task.task_last);
};
void TdApi::processRspError(Task task)
{
PyLock lock;
CKSOTPRspInfoField task_error = any_cast<CKSOTPRspInfoField>(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::processRtnOrder(Task task)
{
PyLock lock;
CKSOTPOrderField task_data = any_cast<CKSOTPOrderField>(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["TraderID"] = task_data.TraderID;
data["HedgeFlag"] = task_data.HedgeFlag;
data["LimitPrice"] = task_data.LimitPrice;
data["UserForceClose"] = task_data.UserForceClose;
data["OrderType"] = task_data.OrderType;
data["Direction"] = task_data.Direction;
data["ActiveTime"] = task_data.ActiveTime;
data["OffsetFlag"] = task_data.OffsetFlag;
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["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["SettlementID"] = task_data.SettlementID;
data["ForceCloseReason"] = task_data.ForceCloseReason;
data["UserID"] = task_data.UserID;
data["UpdateTime"] = task_data.UpdateTime;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["InsertTime"] = task_data.InsertTime;
data["FrontID"] = task_data.FrontID;
data["ParticipantID"] = task_data.ParticipantID;
data["CancelTime"] = task_data.CancelTime;
data["GTDDate"] = task_data.GTDDate;
data["OrderLocalID"] = task_data.OrderLocalID;
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;
this->onRtnOrder(data);
};
void TdApi::processRtnTrade(Task task)
{
PyLock lock;
CKSOTPTradeField task_data = any_cast<CKSOTPTradeField>(task.task_data);
dict data;
data["TradeType"] = task_data.TradeType;
data["TraderID"] = task_data.TraderID;
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["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
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["TradeSource"] = task_data.TradeSource;
data["PriceSource"] = task_data.PriceSource;
data["TradingRole"] = task_data.TradingRole;
this->onRtnTrade(data);
};
void TdApi::processRtnExecOrder(Task task)
{
PyLock lock;
CKSOTPExecOrderField task_data = any_cast<CKSOTPExecOrderField>(task.task_data);
dict data;
data["NotifySequence"] = task_data.NotifySequence;
data["CloseFlag"] = task_data.CloseFlag;
data["ActiveUserID"] = task_data.ActiveUserID;
data["UserProductInfo"] = task_data.UserProductInfo;
data["TraderID"] = task_data.TraderID;
data["HedgeFlag"] = task_data.HedgeFlag;
data["ExecResult"] = task_data.ExecResult;
data["ReservePositionFlag"] = task_data.ReservePositionFlag;
data["Volume"] = task_data.Volume;
data["InstallID"] = task_data.InstallID;
data["OffsetFlag"] = task_data.OffsetFlag;
data["PosiDirection"] = task_data.PosiDirection;
data["ClientID"] = task_data.ClientID;
data["ExecOrderRef"] = task_data.ExecOrderRef;
data["SessionID"] = task_data.SessionID;
data["ActionType"] = task_data.ActionType;
data["OrderSubmitStatus"] = task_data.OrderSubmitStatus;
data["ClearingPartID"] = task_data.ClearingPartID;
data["InstrumentID"] = task_data.InstrumentID;
data["ExecOrderSysID"] = task_data.ExecOrderSysID;
data["ExchangeID"] = task_data.ExchangeID;
data["StatusMsg"] = task_data.StatusMsg;
data["SettlementID"] = task_data.SettlementID;
data["UserID"] = task_data.UserID;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["InsertTime"] = task_data.InsertTime;
data["ExecOrderLocalID"] = task_data.ExecOrderLocalID;
data["ParticipantID"] = task_data.ParticipantID;
data["CancelTime"] = task_data.CancelTime;
data["BranchID"] = task_data.BranchID;
data["BusinessUnit"] = task_data.BusinessUnit;
data["InsertDate"] = task_data.InsertDate;
data["SequenceNo"] = task_data.SequenceNo;
data["InvestorID"] = task_data.InvestorID;
data["ExchangeInstID"] = task_data.ExchangeInstID;
data["RequestID"] = task_data.RequestID;
data["BrokerExecOrderSeq"] = task_data.BrokerExecOrderSeq;
data["FrontID"] = task_data.FrontID;
this->onRtnExecOrder(data);
};
void TdApi::processRtnLock(Task task)
{
PyLock lock;
CKSOTPLockField task_data = any_cast<CKSOTPLockField>(task.task_data);
dict data;
data["LockStatus"] = task_data.LockStatus;
data["NotifySequence"] = task_data.NotifySequence;
data["ActiveUserID"] = task_data.ActiveUserID;
data["UserProductInfo"] = task_data.UserProductInfo;
data["TraderID"] = task_data.TraderID;
data["UserID"] = task_data.UserID;
data["LockLocalID"] = task_data.LockLocalID;
data["InstallID"] = task_data.InstallID;
data["ParticipantID"] = task_data.ParticipantID;
data["ClientID"] = task_data.ClientID;
data["Volume"] = task_data.Volume;
data["SessionID"] = task_data.SessionID;
data["OrderSubmitStatus"] = task_data.OrderSubmitStatus;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["StatusMsg"] = task_data.StatusMsg;
data["SettlementID"] = task_data.SettlementID;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["InsertTime"] = task_data.InsertTime;
data["ClearingPartID"] = task_data.ClearingPartID;
data["CancelTime"] = task_data.CancelTime;
data["BranchID"] = task_data.BranchID;
data["BusinessUnit"] = task_data.BusinessUnit;
data["InsertDate"] = task_data.InsertDate;
data["BrokerLockSeq"] = task_data.BrokerLockSeq;
data["SequenceNo"] = task_data.SequenceNo;
data["LockRef"] = task_data.LockRef;
data["InvestorID"] = task_data.InvestorID;
data["ExchangeInstID"] = task_data.ExchangeInstID;
data["RequestID"] = task_data.RequestID;
data["FrontID"] = task_data.FrontID;
data["LockSysID"] = task_data.LockSysID;
data["LockType"] = task_data.LockType;
this->onRtnLock(data);
};
void TdApi::processRtnInstrumentStatus(Task task)
{
PyLock lock;
CKSOTPInstrumentStatusField task_data = any_cast<CKSOTPInstrumentStatusField>(task.task_data);
dict data;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["EnterTime"] = task_data.EnterTime;
data["TradingSegmentSN"] = task_data.TradingSegmentSN;
data["EnterReason"] = task_data.EnterReason;
data["InstrumentStatus"] = task_data.InstrumentStatus;
data["ExchangeInstID"] = task_data.ExchangeInstID;
this->onRtnInstrumentStatus(data);
};
void TdApi::processRtnTradingNotice(Task task)
{
PyLock lock;
CKSOTPTradingNoticeInfoField task_data = any_cast<CKSOTPTradingNoticeInfoField>(task.task_data);
dict data;
data["SequenceSeries"] = task_data.SequenceSeries;
data["SequenceNo"] = task_data.SequenceNo;
data["FieldContent"] = task_data.FieldContent;
data["InvestorID"] = task_data.InvestorID;
data["BrokerID"] = task_data.BrokerID;
data["SendTime"] = task_data.SendTime;
this->onRtnTradingNotice(data);
};
void TdApi::processRtnCombAction(Task task)
{
PyLock lock;
CKSOTPCombActionField task_data = any_cast<CKSOTPCombActionField>(task.task_data);
dict data;
data["NotifySequence"] = task_data.NotifySequence;
data["ComTradeID"] = task_data.ComTradeID;
data["UserProductInfo"] = task_data.UserProductInfo;
data["OrderSource"] = task_data.OrderSource;
data["TraderID"] = task_data.TraderID;
data[" CombActionFlag"] = task_data.CombActionFlag;
data["ActionStatus"] = task_data.ActionStatus;
data["StrategyID"] = task_data.StrategyID;
data["CombDirection"] = task_data.CombDirection;
data["InstallID"] = task_data.InstallID;
data["ParticipantID"] = task_data.ParticipantID;
data["InvestorID"] = task_data.InvestorID;
data["ClientID"] = task_data.ClientID;
data["Volume"] = task_data.Volume;
data["SessionID"] = task_data.SessionID;
data["InstrumentID"] = task_data.InstrumentID;
data["ExchangeID"] = task_data.ExchangeID;
data["StatusMsg"] = task_data.StatusMsg;
data["SettlementID"] = task_data.SettlementID;
data["UserID"] = task_data.UserID;
data["TradingDay"] = task_data.TradingDay;
data["BrokerID"] = task_data.BrokerID;
data["FrontID"] = task_data.FrontID;
data["InstrumentID1"] = task_data.InstrumentID1;
data["InstrumentID3"] = task_data.InstrumentID3;
data["InstrumentID2"] = task_data.InstrumentID2;
data["InstrumentID4"] = task_data.InstrumentID4;
data["HedgeFlag"] = task_data.HedgeFlag;
data["CombActionRef"] = task_data.CombActionRef;
data["SequenceNo"] = task_data.SequenceNo;
data["ActionLocalID"] = task_data.ActionLocalID;
data["ExchangeInstID"] = task_data.ExchangeInstID;
data["Direction3"] = task_data.Direction3;
data["Direction2"] = task_data.Direction2;
data["Direction1"] = task_data.Direction1;
data["Direction4"] = task_data.Direction4;
this->onRtnCombAction(data);
};
///-------------------------------------------------------------------------------------
///主动函数
///-------------------------------------------------------------------------------------
void TdApi::createOTPTraderApi(string pszFlowPath)
{
this->api = CKSOTPTraderApi::CreateOTPTraderApi(pszFlowPath.c_str());
this->api->RegisterSpi(this);
};
void TdApi::release()
{
this->api->Release();
};
void TdApi::init()
{
this->api->Init();
};
int TdApi::exit()
{
//该函数在原生API里没有用于安全退出API用原生的join似乎不太稳定
this->api->RegisterSpi(NULL);
this->api->Release();
this->api = NULL;
return 1;
};
string TdApi::getTradingDay()
{
string day = this->api->GetTradingDay();
return day;
};
void TdApi::registerFront(string pszFrontAddress)
{
this->api->RegisterFront((char*)pszFrontAddress.c_str());
};
void TdApi::subscribePrivateTopic(int nType)
{
//该函数为手动编写
KSOTP_TE_RESUME_TYPE type;
switch (nType)
{
case 0:
{
type = KSOTP_TERT_RESTART;
break;
};
case 1:
{
type = KSOTP_TERT_RESUME;
break;
};
case 2:
{
type = KSOTP_TERT_QUICK;
break;
};
}
this->api->SubscribePrivateTopic(type);
};
void TdApi::subscribePublicTopic(int nType)
{
//该函数为手动编写
KSOTP_TE_RESUME_TYPE type;
switch (nType)
{
case 0:
{
type = KSOTP_TERT_RESTART;
break;
};
case 1:
{
type = KSOTP_TERT_RESUME;
break;
};
case 2:
{
type = KSOTP_TERT_QUICK;
break;
};
}
this->api->SubscribePublicTopic(type);
};
int TdApi::reqUserLogin(dict req, int nRequestID)
{
CKSOTPReqUserLoginField myreq = CKSOTPReqUserLoginField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "MacAddress", myreq.MacAddress);
getChar(req, "UserProductInfo", myreq.UserProductInfo);
getChar(req, "UserID", myreq.UserID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ClientIPAddress", myreq.ClientIPAddress);
getChar(req, "Password", myreq.Password);
int i = this->api->ReqUserLogin(&myreq, nRequestID);
return i;
};
int TdApi::reqUserLogout(dict req, int nRequestID)
{
CKSOTPUserLogoutField myreq = CKSOTPUserLogoutField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "UserID", myreq.UserID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqUserLogout(&myreq, nRequestID);
return i;
};
int TdApi::reqUserPasswordUpdate(dict req, int nRequestID)
{
CKSOTPUserPasswordUpdateField myreq = CKSOTPUserPasswordUpdateField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "UserID", myreq.UserID);
getChar(req, "NewPassword", myreq.NewPassword);
getChar(req, "OldPassword", myreq.OldPassword);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqUserPasswordUpdate(&myreq, nRequestID);
return i;
};
int TdApi::reqTradingAccountPasswordUpdate(dict req, int nRequestID)
{
CKSOTPTradingAccountPasswordUpdateField myreq = CKSOTPTradingAccountPasswordUpdateField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "NewPassword", myreq.NewPassword);
getChar(req, "OldPassword", myreq.OldPassword);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "AccountID", myreq.AccountID);
int i = this->api->ReqTradingAccountPasswordUpdate(&myreq, nRequestID);
return i;
};
int TdApi::reqOrderInsert(dict req, int nRequestID)
{
CKSOTPInputOrderField myreq = CKSOTPInputOrderField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ContingentCondition", &myreq.ContingentCondition);
getInt(req, "IsAutoSuspend", &myreq.IsAutoSuspend);
getInt(req, "UserForceClose", &myreq.UserForceClose);
getInt(req, "IsSwapOrder", &myreq.IsSwapOrder);
getInt(req, "VolumeTotalOriginal", &myreq.VolumeTotalOriginal);
getChar(req, "OrderPriceType", &myreq.OrderPriceType);
getChar(req, "TimeCondition", &myreq.TimeCondition);
getChar(req, "TimeCondition", &myreq.TimeCondition);
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getInt(req, "MinVolume", &myreq.MinVolume);
getChar(req, "UserID", myreq.UserID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "GTDDate", myreq.GTDDate);
getChar(req, "BusinessUnit", myreq.BusinessUnit);
getChar(req, "OrderRef", myreq.OrderRef);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "VolumeCondition", &myreq.VolumeCondition);
getInt(req, "RequestID", &myreq.RequestID);
getDouble(req, "LimitPrice", &myreq.LimitPrice);
getChar(req, "ForceCloseReason", &myreq.ForceCloseReason);
getChar(req, "Direction", &myreq.Direction);
getChar(req, "OffsetFlag", &myreq.OffsetFlag);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
int i = this->api->ReqOrderInsert(&myreq, nRequestID);
return i;
};
int TdApi::reqOrderAction(dict req, int nRequestID)
{
CKSOTPInputOrderActionField myreq = CKSOTPInputOrderActionField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "ActionFlag", &myreq.ActionFlag);
getChar(req, "UserID", myreq.UserID);
getChar(req, "UserID", myreq.UserID);
getChar(req, "OrderRef", myreq.OrderRef);
getChar(req, "InvestorID", myreq.InvestorID);
getInt(req, "SessionID", &myreq.SessionID);
getInt(req, "VolumeChange", &myreq.VolumeChange);
getChar(req, "BrokerID", myreq.BrokerID);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "OrderSysID", myreq.OrderSysID);
getInt(req, "FrontID", &myreq.FrontID);
int i = this->api->ReqOrderAction(&myreq, nRequestID);
return i;
};
int TdApi::reqQryOrder(dict req, int nRequestID)
{
CKSOTPQryOrderField myreq = CKSOTPQryOrderField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "OrderSysID", myreq.OrderSysID);
int i = this->api->ReqQryOrder(&myreq, nRequestID);
return i;
};
int TdApi::reqQryTrade(dict req, int nRequestID)
{
CKSOTPQryTradeField myreq = CKSOTPQryTradeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "TradeTimeEnd", myreq.TradeTimeEnd);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "TradeTimeStart", myreq.TradeTimeStart);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryTrade(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInvestorPosition(dict req, int nRequestID)
{
CKSOTPQryInvestorPositionField myreq = CKSOTPQryInvestorPositionField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryInvestorPosition(&myreq, nRequestID);
return i;
};
int TdApi::reqQryTradingAccount(dict req, int nRequestID)
{
CKSOTPQryTradingAccountField myreq = CKSOTPQryTradingAccountField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryTradingAccount(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInvestor(dict req, int nRequestID)
{
CKSOTPQryInvestorField myreq = CKSOTPQryInvestorField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryInvestor(&myreq, nRequestID);
return i;
};
int TdApi::reqQryTradingCode(dict req, int nRequestID)
{
CKSOTPQryTradingCodeField myreq = CKSOTPQryTradingCodeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryTradingCode(&myreq, nRequestID);
return i;
};
int TdApi::reqQryExchange(dict req, int nRequestID)
{
CKSOTPQryExchangeField myreq = CKSOTPQryExchangeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
int i = this->api->ReqQryExchange(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInstrument(dict req, int nRequestID)
{
CKSOTPQryInstrumentField myreq = CKSOTPQryInstrumentField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
int i = this->api->ReqQryInstrument(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInvestorPositionDetail(dict req, int nRequestID)
{
CKSOTPQryInvestorPositionDetailField myreq = CKSOTPQryInvestorPositionDetailField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryInvestorPositionDetail(&myreq, nRequestID);
return i;
};
int TdApi::reqQryTradingNotice(dict req, int nRequestID)
{
CKSOTPQryTradingNoticeField myreq = CKSOTPQryTradingNoticeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryTradingNotice(&myreq, nRequestID);
return i;
};
int TdApi::reqExecOrderInsert(dict req, int nRequestID)
{
CKSOTPInputExecOrderField myreq = CKSOTPInputExecOrderField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExecOrderRef", myreq.ExecOrderRef);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "CloseFlag", &myreq.CloseFlag);
getChar(req, "OffsetFlag", &myreq.OffsetFlag);
getChar(req, "PosiDirection", &myreq.PosiDirection);
getChar(req, "BusinessUnit", myreq.BusinessUnit);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
getChar(req, "UserID", myreq.UserID);
getInt(req, "Volume", &myreq.Volume);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "ActionType", &myreq.ActionType);
getChar(req, "ReservePositionFlag", &myreq.ReservePositionFlag);
int i = this->api->ReqExecOrderInsert(&myreq, nRequestID);
return i;
};
int TdApi::reqExecOrderAction(dict req, int nRequestID)
{
CKSOTPInputExecOrderActionField myreq = CKSOTPInputExecOrderActionField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExecOrderSysID", myreq.ExecOrderSysID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "UserID", myreq.UserID);
getChar(req, "ExecOrderRef", myreq.ExecOrderRef);
getChar(req, "InvestorID", myreq.InvestorID);
getInt(req, "SessionID", &myreq.SessionID);
getChar(req, "BrokerID", myreq.BrokerID);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "ActionFlag", &myreq.ActionFlag);
getInt(req, "ExecOrderActionRef", &myreq.ExecOrderActionRef);
getInt(req, "FrontID", &myreq.FrontID);
int i = this->api->ReqExecOrderAction(&myreq, nRequestID);
return i;
};
int TdApi::reqLockInsert(dict req, int nRequestID)
{
CKSOTPInputLockField myreq = CKSOTPInputLockField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BusinessUnit", myreq.BusinessUnit);
getChar(req, "UserID", myreq.UserID);
getChar(req, "LockRef", myreq.LockRef);
getInt(req, "Volume", &myreq.Volume);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "LockType", &myreq.LockType);
int i = this->api->ReqLockInsert(&myreq, nRequestID);
return i;
};
int TdApi::reqQryExecOrder(dict req, int nRequestID)
{
CKSOTPQryExecOrderField myreq = CKSOTPQryExecOrderField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ExecOrderSysID", myreq.ExecOrderSysID);
int i = this->api->ReqQryExecOrder(&myreq, nRequestID);
return i;
};
int TdApi::reqQryExecOrderVolume(dict req, int nRequestID)
{
CKSOTPQryExecOrderVolumeField myreq = CKSOTPQryExecOrderVolumeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
getChar(req, "Direction", &myreq.Direction);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryExecOrderVolume(&myreq, nRequestID);
return i;
};
int TdApi::reqQryLock(dict req, int nRequestID)
{
CKSOTPQryLockField myreq = CKSOTPQryLockField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "LockSysID", myreq.LockSysID);
int i = this->api->ReqQryLock(&myreq, nRequestID);
return i;
};
int TdApi::reqQryLockPosition(dict req, int nRequestID)
{
CKSOTPQryLockPositionField myreq = CKSOTPQryLockPositionField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryLockPosition(&myreq, nRequestID);
return i;
};
int TdApi::reqQryUnderlyingStockInfo(dict req, int nRequestID)
{
CKSOTPQryUnderlyingStockInfoField myreq = CKSOTPQryUnderlyingStockInfoField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryUnderlyingStockInfo(&myreq, nRequestID);
return i;
};
int TdApi::reqQryOTPInsCommRate(dict req, int nRequestID)
{
CKSOTPQryOTPInsCommRateField myreq = CKSOTPQryOTPInsCommRateField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryOTPInsCommRate(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInstrumentMarginRate(dict req, int nRequestID)
{
CKSOTPQryInstrumentMarginRateField myreq = CKSOTPQryInstrumentMarginRateField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
int i = this->api->ReqQryInstrumentMarginRate(&myreq, nRequestID);
return i;
};
int TdApi::reqQryOTPAssignment(dict req, int nRequestID)
{
CKSOTPQryOTPAssignmentField myreq = CKSOTPQryOTPAssignmentField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "Direction", &myreq.Direction);
int i = this->api->ReqQryOTPAssignment(&myreq, nRequestID);
return i;
};
int TdApi::reqQryDepthMarketData(dict req, int nRequestID)
{
CKSOTPQryDepthMarketDataField myreq = CKSOTPQryDepthMarketDataField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
int i = this->api->ReqQryDepthMarketData(&myreq, nRequestID);
return i;
};
int TdApi::reqFromBankToStockByStock(dict req, int nRequestID)
{
CKSOTPReqTransferField myreq = CKSOTPReqTransferField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "BrokerBranchID", myreq.BrokerBranchID);
getChar(req, "UserID", myreq.UserID);
getChar(req, "BankPassWord", myreq.BankPassWord);
getChar(req, "TradeTime", myreq.TradeTime);
getChar(req, "VerifyCertNoFlag", &myreq.VerifyCertNoFlag);
getInt(req, "TID", &myreq.TID);
getChar(req, "AccountID", myreq.AccountID);
getChar(req, "BankAccount", myreq.BankAccount);
getInt(req, "InstallID", &myreq.InstallID);
getChar(req, "CustomerName", myreq.CustomerName);
getChar(req, "TradeCode", myreq.TradeCode);
getChar(req, "BankBranchID", myreq.BankBranchID);
getInt(req, "SessionID", &myreq.SessionID);
getChar(req, "BankID", myreq.BankID);
getChar(req, "Password", myreq.Password);
getChar(req, "BankPwdFlag", &myreq.BankPwdFlag);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "CustType", &myreq.CustType);
getChar(req, "IdentifiedCardNo", myreq.IdentifiedCardNo);
getChar(req, "FeePayFlag", &myreq.FeePayFlag);
getChar(req, "BankSerial", myreq.BankSerial);
getChar(req, "OperNo", myreq.OperNo);
getChar(req, "TradingDay", myreq.TradingDay);
getChar(req, "BankSecuAcc", myreq.BankSecuAcc);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "DeviceID", myreq.DeviceID);
getChar(req, "TransferStatus", &myreq.TransferStatus);
getChar(req, "IdCardType", &myreq.IdCardType);
getInt(req, "PlateSerial", &myreq.PlateSerial);
getInt(req, "PlateSerial", &myreq.PlateSerial);
getChar(req, "TradeDate", myreq.TradeDate);
getChar(req, "CurrencyID", myreq.CurrencyID);
getChar(req, "CurrencyID", myreq.CurrencyID);
getChar(req, "BankAccType", &myreq.BankAccType);
getChar(req, "LastFragment", &myreq.LastFragment);
getInt(req, "FutureSerial", &myreq.FutureSerial);
getChar(req, "BankSecuAccType", &myreq.BankSecuAccType);
getChar(req, "BrokerIDByBank", myreq.BrokerIDByBank);
getChar(req, "SecuPwdFlag", &myreq.SecuPwdFlag);
getChar(req, "Message", myreq.Message);
getChar(req, "Message", myreq.Message);
getChar(req, "Message", myreq.Message);
getChar(req, "Digest", myreq.Digest);
int i = this->api->ReqFromBankToStockByStock(&myreq, nRequestID);
return i;
};
int TdApi::reqFromStockToBankByStock(dict req, int nRequestID)
{
CKSOTPReqTransferField myreq = CKSOTPReqTransferField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "BrokerBranchID", myreq.BrokerBranchID);
getChar(req, "UserID", myreq.UserID);
getChar(req, "BankPassWord", myreq.BankPassWord);
getChar(req, "TradeTime", myreq.TradeTime);
getChar(req, "VerifyCertNoFlag", &myreq.VerifyCertNoFlag);
getInt(req, "TID", &myreq.TID);
getChar(req, "AccountID", myreq.AccountID);
getChar(req, "BankAccount", myreq.BankAccount);
getInt(req, "InstallID", &myreq.InstallID);
getChar(req, "CustomerName", myreq.CustomerName);
getChar(req, "TradeCode", myreq.TradeCode);
getChar(req, "BankBranchID", myreq.BankBranchID);
getInt(req, "SessionID", &myreq.SessionID);
getChar(req, "BankID", myreq.BankID);
getChar(req, "Password", myreq.Password);
getChar(req, "BankPwdFlag", &myreq.BankPwdFlag);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "CustType", &myreq.CustType);
getChar(req, "IdentifiedCardNo", myreq.IdentifiedCardNo);
getChar(req, "FeePayFlag", &myreq.FeePayFlag);
getChar(req, "BankSerial", myreq.BankSerial);
getChar(req, "OperNo", myreq.OperNo);
getChar(req, "TradingDay", myreq.TradingDay);
getChar(req, "BankSecuAcc", myreq.BankSecuAcc);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "DeviceID", myreq.DeviceID);
getChar(req, "TransferStatus", &myreq.TransferStatus);
getChar(req, "IdCardType", &myreq.IdCardType);
getInt(req, "PlateSerial", &myreq.PlateSerial);
getInt(req, "PlateSerial", &myreq.PlateSerial);
getChar(req, "TradeDate", myreq.TradeDate);
getChar(req, "CurrencyID", myreq.CurrencyID);
getChar(req, "CurrencyID", myreq.CurrencyID);
getChar(req, "BankAccType", &myreq.BankAccType);
getChar(req, "LastFragment", &myreq.LastFragment);
getInt(req, "FutureSerial", &myreq.FutureSerial);
getChar(req, "BankSecuAccType", &myreq.BankSecuAccType);
getChar(req, "BrokerIDByBank", myreq.BrokerIDByBank);
getChar(req, "SecuPwdFlag", &myreq.SecuPwdFlag);
getChar(req, "Message", myreq.Message);
getChar(req, "Message", myreq.Message);
getChar(req, "Message", myreq.Message);
getChar(req, "Digest", myreq.Digest);
int i = this->api->ReqFromStockToBankByStock(&myreq, nRequestID);
return i;
};
int TdApi::reqQryContractBank(dict req, int nRequestID)
{
CKSOTPQryContractBankField myreq = CKSOTPQryContractBankField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "BankBrchID", myreq.BankBrchID);
getChar(req, "BankID", myreq.BankID);
int i = this->api->ReqQryContractBank(&myreq, nRequestID);
return i;
};
int TdApi::reqQueryBankAccountMoneyByStock(dict req, int nRequestID)
{
CKSOTPReqQueryAccountField myreq = CKSOTPReqQueryAccountField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "BrokerBranchID", myreq.BrokerBranchID);
getChar(req, "UserID", myreq.UserID);
getChar(req, "BankPassWord", myreq.BankPassWord);
getChar(req, "TradeTime", myreq.TradeTime);
getChar(req, "VerifyCertNoFlag", &myreq.VerifyCertNoFlag);
getInt(req, "TID", &myreq.TID);
getChar(req, "AccountID", myreq.AccountID);
getChar(req, "BankAccount", myreq.BankAccount);
getInt(req, "InstallID", &myreq.InstallID);
getChar(req, "CustomerName", myreq.CustomerName);
getChar(req, "TradeCode", myreq.TradeCode);
getChar(req, "BankBranchID", myreq.BankBranchID);
getInt(req, "SessionID", &myreq.SessionID);
getChar(req, "BankID", myreq.BankID);
getChar(req, "Password", myreq.Password);
getChar(req, "BankPwdFlag", &myreq.BankPwdFlag);
getInt(req, "RequestID", &myreq.RequestID);
getChar(req, "CustType", &myreq.CustType);
getChar(req, "IdentifiedCardNo", myreq.IdentifiedCardNo);
getChar(req, "BankSerial", myreq.BankSerial);
getChar(req, "OperNo", myreq.OperNo);
getChar(req, "TradingDay", myreq.TradingDay);
getChar(req, "BankSecuAcc", myreq.BankSecuAcc);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "DeviceID", myreq.DeviceID);
getChar(req, "IdCardType", &myreq.IdCardType);
getInt(req, "PlateSerial", &myreq.PlateSerial);
getChar(req, "TradeDate", myreq.TradeDate);
getChar(req, "CurrencyID", myreq.CurrencyID);
getChar(req, "BankAccType", &myreq.BankAccType);
getChar(req, "LastFragment", &myreq.LastFragment);
getInt(req, "FutureSerial", &myreq.FutureSerial);
getChar(req, "BankSecuAccType", &myreq.BankSecuAccType);
getChar(req, "BrokerIDByBank", myreq.BrokerIDByBank);
getChar(req, "SecuPwdFlag", &myreq.SecuPwdFlag);
getChar(req, "Digest", myreq.Digest);
int i = this->api->ReqQueryBankAccountMoneyByStock(&myreq, nRequestID);
return i;
};
int TdApi::reqQryTransferSerial(dict req, int nRequestID)
{
CKSOTPQryTransferSerialField myreq = CKSOTPQryTransferSerialField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "CurrencyID", myreq.CurrencyID);
getChar(req, "BankID", myreq.BankID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "AccountID", myreq.AccountID);
int i = this->api->ReqQryTransferSerial(&myreq, nRequestID);
return i;
};
int TdApi::reqQrySettlementInfoConfirm(dict req, int nRequestID)
{
CKSOTPQrySettlementInfoConfirmField myreq = CKSOTPQrySettlementInfoConfirmField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQrySettlementInfoConfirm(&myreq, nRequestID);
return i;
};
int TdApi::reqSettlementInfoConfirm(dict req, int nRequestID)
{
CKSOTPSettlementInfoConfirmField myreq = CKSOTPSettlementInfoConfirmField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ConfirmTime", myreq.ConfirmTime);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ConfirmDate", myreq.ConfirmDate);
int i = this->api->ReqSettlementInfoConfirm(&myreq, nRequestID);
return i;
};
int TdApi::reqQrySettlementInfo(dict req, int nRequestID)
{
CKSOTPQrySettlementInfoField myreq = CKSOTPQrySettlementInfoField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "TradingDay", myreq.TradingDay);
int i = this->api->ReqQrySettlementInfo(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInvestorTradeLevel(dict req, int nRequestID)
{
CKSOTPQryInvestorTradeLevelField myreq = CKSOTPQryInvestorTradeLevelField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryInvestorTradeLevel(&myreq, nRequestID);
return i;
};
int TdApi::reqQryPurchaseLimitAmt(dict req, int nRequestID)
{
CKSOTPQryPurchaseLimitAmtField myreq = CKSOTPQryPurchaseLimitAmtField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryPurchaseLimitAmt(&myreq, nRequestID);
return i;
};
int TdApi::reqQryPositionLimitVol(dict req, int nRequestID)
{
CKSOTPQryPositionLimitVolField myreq = CKSOTPQryPositionLimitVolField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ProtectFlag", &myreq.ProtectFlag);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "OptionsType", &myreq.OptionsType);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ControlRange", &myreq.ControlRange);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryPositionLimitVol(&myreq, nRequestID);
return i;
};
int TdApi::reqQryHistoryOrder(dict req, int nRequestID)
{
CKSOTPQryHistoryOrderField myreq = CKSOTPQryHistoryOrderField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "OrderLocalID", myreq.OrderLocalID);
getChar(req, "OrderDataStart", myreq.OrderDataStart);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "OrderDataEnd", myreq.OrderDataEnd);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryHistoryOrder(&myreq, nRequestID);
return i;
};
int TdApi::reqQryHistoryTrade(dict req, int nRequestID)
{
CKSOTPQryHistoryTradeField myreq = CKSOTPQryHistoryTradeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "TradeDataEnd", myreq.TradeDataEnd);
getChar(req, "TradeDataStart", myreq.TradeDataStart);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryHistoryTrade(&myreq, nRequestID);
return i;
};
int TdApi::reqQryHistoryAssignment(dict req, int nRequestID)
{
CKSOTPQryHistoryAssignmentField myreq = CKSOTPQryHistoryAssignmentField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InstrumentID", myreq.InstrumentID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "OptionsType", &myreq.OptionsType);
getChar(req, "PosiDirection", &myreq.PosiDirection);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "DeliveryMonth", myreq.DeliveryMonth);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryHistoryAssignment(&myreq, nRequestID);
return i;
};
int TdApi::reqQryDelivDetail(dict req, int nRequestID)
{
CKSOTPQryDelivDetailField myreq = CKSOTPQryDelivDetailField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "DelivMode", &myreq.DelivMode);
getChar(req, "ProductID", myreq.ProductID);
getChar(req, "DeliveryMonth", myreq.DeliveryMonth);
int i = this->api->ReqQryDelivDetail(&myreq, nRequestID);
return i;
};
int TdApi::reqAutoExecOrderAction(dict req, int nRequestID)
{
CKSOTPAutoExecOrderActionField myreq = CKSOTPAutoExecOrderActionField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getInt(req, "RangeVol", &myreq.RangeVol);
int i = this->api->ReqAutoExecOrderAction(&myreq, nRequestID);
return i;
};
int TdApi::reqCombActionInsert(dict req, int nRequestID)
{
CKSOTPInputCombActionField myreq = CKSOTPInputCombActionField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "CombDirection", &myreq.CombDirection);
getChar(req, "CombActionRef", myreq.CombActionRef);
getChar(req, "ComTradeID", myreq.ComTradeID);
getChar(req, " CombActionFlag", &myreq.CombActionFlag);
getChar(req, "UserID", myreq.UserID);
getChar(req, "Direction1", &myreq.Direction1);
getChar(req, "Direction3", &myreq.Direction3);
getChar(req, "InstrumentID4", myreq.InstrumentID4);
getInt(req, "Volume", &myreq.Volume);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "InstrumentID1", myreq.InstrumentID1);
getChar(req, "Direction2", &myreq.Direction2);
getChar(req, "StrategyID", myreq.StrategyID);
getChar(req, "InstrumentID2", myreq.InstrumentID2);
getChar(req, "InstrumentID3", myreq.InstrumentID3);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
getChar(req, "Direction4", &myreq.Direction4);
int i = this->api->ReqCombActionInsert(&myreq, nRequestID);
return i;
};
int TdApi::reqQryInvestorCombinePosition(dict req, int nRequestID)
{
CKSOTPQryInvestorPositionCombineDetailField myreq = CKSOTPQryInvestorPositionCombineDetailField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "ComTradeID", myreq.ComTradeID);
getChar(req, "ProductID", myreq.ProductID);
int i = this->api->ReqQryInvestorCombinePosition(&myreq, nRequestID);
return i;
};
int TdApi::reqQryCombActionVolume(dict req, int nRequestID)
{
CKSOTPQryCombActionVolumeField myreq = CKSOTPQryCombActionVolumeField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "ExchangeID", myreq.ExchangeID);
getChar(req, "CombDirection", &myreq.CombDirection);
getChar(req, "Direction3", &myreq.Direction3);
getChar(req, "ComTradeID", myreq.ComTradeID);
getChar(req, " CombActionFlag", &myreq.CombActionFlag);
getChar(req, "HedgeFlag", &myreq.HedgeFlag);
getChar(req, "Direction1", &myreq.Direction1);
getChar(req, "InstrumentID4", myreq.InstrumentID4);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "InstrumentID1", myreq.InstrumentID1);
getChar(req, "Direction2", &myreq.Direction2);
getChar(req, "StrategyID", myreq.StrategyID);
getChar(req, "InstrumentID2", myreq.InstrumentID2);
getChar(req, "InstrumentID3", myreq.InstrumentID3);
getChar(req, "Direction4", &myreq.Direction4);
int i = this->api->ReqQryCombActionVolume(&myreq, nRequestID);
return i;
};
int TdApi::reqFundOutCreditApply(dict req, int nRequestID)
{
CKSOTPInputFundOutCreditApplyField myreq = CKSOTPInputFundOutCreditApplyField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "CreditApplyFlag", &myreq.CreditApplyFlag);
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "BrokerID", myreq.BrokerID);
getInt(req, "CreditSerial", &myreq.CreditSerial);
int i = this->api->ReqFundOutCreditApply(&myreq, nRequestID);
return i;
};
int TdApi::reqQryFundOutCredit(dict req, int nRequestID)
{
CKSOTPQryFundOutCreditField myreq = CKSOTPQryFundOutCreditField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "BrokerID", myreq.BrokerID);
int i = this->api->ReqQryFundOutCredit(&myreq, nRequestID);
return i;
};
int TdApi::reqQryFundOutCreditApply(dict req, int nRequestID)
{
CKSOTPQryFundOutCreditApplyField myreq = CKSOTPQryFundOutCreditApplyField();
memset(&myreq, 0, sizeof(myreq));
getChar(req, "InvestorID", myreq.InvestorID);
getChar(req, "QryCreditEnd", myreq.QryCreditEnd);
getChar(req, "DealStatus", &myreq.DealStatus);
getChar(req, "BrokerID", myreq.BrokerID);
getChar(req, "QryCreditStart", myreq.QryCreditStart);
int i = this->api->ReqQryFundOutCreditApply(&myreq, nRequestID);
return i;
};
///-------------------------------------------------------------------------------------
///Boost.Python封装
///-------------------------------------------------------------------------------------
struct TdApiWrap : TdApi, wrapper < TdApi >
{
virtual void onFrontConnected()
{
//在向python环境中调用回调函数推送数据前需要先获取全局锁GIL防止解释器崩溃
PyLock lock;
//以下的try...catch...可以实现捕捉python环境中错误的功能防止C++直接出现原因未知的崩溃
try
{
this->get_override("onFrontConnected")();
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onFrontDisconnected(int i)
{
PyLock lock;
try
{
this->get_override("onFrontDisconnected")(i);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspError(dict error, int id, bool last)
{
try
{
this->get_override("onRspError")(error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspUserLogin(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspUserLogin")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspUserLogout(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspUserLogout")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspUserPasswordUpdate(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspUserPasswordUpdate")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspTradingAccountPasswordUpdate(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspTradingAccountPasswordUpdate")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspOrderInsert(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspOrderInsert")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspOrderAction(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspOrderAction")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryOrder(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryOrder")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryTrade(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryTrade")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInvestorPosition(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInvestorPosition")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryTradingAccount(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryTradingAccount")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInvestor(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInvestor")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryTradingCode(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryTradingCode")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryExchange(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryExchange")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInstrument(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInstrument")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInvestorPositionDetail(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInvestorPositionDetail")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryTradingNotice(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryTradingNotice")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspExecOrderInsert(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspExecOrderInsert")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspLockInsert(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspLockInsert")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspExecOrderAction(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspExecOrderAction")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryExecOrder(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryExecOrder")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryExecOrderVolume(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryExecOrderVolume")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryLock(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryLock")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryLockPosition(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryLockPosition")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryUnderlyingStockInfo(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryUnderlyingStockInfo")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryOTPInsCommRate(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryOTPInsCommRate")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInstrumentMarginRate(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInstrumentMarginRate")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryOTPAssignment(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryOTPAssignment")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryDepthMarketData(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryDepthMarketData")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspFromBankToStockByStock(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspFromBankToStockByStock")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnFromBankToStockByStock(dict data)
{
try
{
this->get_override("onRtnFromBankToStockByStock")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspFromStockToBankByStock(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspFromStockToBankByStock")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnFromStockToBankByStock(dict data)
{
try
{
this->get_override("onRtnFromStockToBankByStock")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnQueryBankBalanceByStock(dict data)
{
try
{
this->get_override("onRtnQueryBankBalanceByStock")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryContractBank(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryContractBank")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQueryBankAccountMoneyByStock(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQueryBankAccountMoneyByStock")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryTransferSerial(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryTransferSerial")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQrySettlementInfoConfirm(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQrySettlementInfoConfirm")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspSettlementInfoConfirm(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspSettlementInfoConfirm")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQrySettlementInfo(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQrySettlementInfo")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInvestorTradeLevel(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInvestorTradeLevel")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryPurchaseLimitAmt(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryPurchaseLimitAmt")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryPositionLimitVol(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryPositionLimitVol")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryHistoryOrder(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryHistoryOrder")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryHistoryTrade(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryHistoryTrade")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryHistoryAssignment(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryHistoryAssignment")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryDelivDetail(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryDelivDetail")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspAutoExecOrderAction(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspAutoExecOrderAction")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspCombActionInsert(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspCombActionInsert")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryInvestorCombinePosition(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryInvestorCombinePosition")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryCombActionVolume(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryCombActionVolume")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspFundOutCreditApply(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspFundOutCreditApply")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryFundOutCredit(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryFundOutCredit")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRspQryFundOutCreditApply(dict data, dict error, int id, bool last)
{
try
{
this->get_override("onRspQryFundOutCreditApply")(data, error, id, last);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnOrder(dict data)
{
try
{
this->get_override("onRtnOrder")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnTrade(dict data)
{
try
{
this->get_override("onRtnTrade")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnExecOrder(dict data)
{
try
{
this->get_override("onRtnExecOrder")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnLock(dict data)
{
try
{
this->get_override("onRtnLock")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnInstrumentStatus(dict data)
{
try
{
this->get_override("onRtnInstrumentStatus")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnTradingNotice(dict data)
{
try
{
this->get_override("onRtnTradingNotice")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
virtual void onRtnCombAction(dict data)
{
try
{
this->get_override("onRtnCombAction")(data);
}
catch (error_already_set const &)
{
PyErr_Print();
}
};
};
BOOST_PYTHON_MODULE(vnksotptd)
{
PyEval_InitThreads(); //导入时运行保证先创建GIL
class_<TdApiWrap, boost::noncopyable>("TdApi")
.def("createOTPTraderApi", &TdApiWrap::createOTPTraderApi)
.def("release", &TdApiWrap::release)
.def("init", &TdApiWrap::init)
.def("exit", &TdApiWrap::exit)
.def("getTradingDay", &TdApiWrap::getTradingDay)
.def("registerFront", &TdApiWrap::registerFront)
.def("subscribePrivateTopic", &TdApiWrap::subscribePrivateTopic)
.def("subscribePublicTopic", &TdApiWrap::subscribePublicTopic)
.def("reqUserLogin", &TdApiWrap::reqUserLogin)
.def("reqUserLogout", &TdApiWrap::reqUserLogout)
.def("reqUserPasswordUpdate", &TdApiWrap::reqUserPasswordUpdate)
.def("reqTradingAccountPasswordUpdate", &TdApiWrap::reqTradingAccountPasswordUpdate)
.def("reqOrderInsert", &TdApiWrap::reqOrderInsert)
.def("reqOrderAction", &TdApiWrap::reqOrderAction)
.def("reqQryOrder", &TdApiWrap::reqQryOrder)
.def("reqQryTrade", &TdApiWrap::reqQryTrade)
.def("reqQryInvestorPosition", &TdApiWrap::reqQryInvestorPosition)
.def("reqQryTradingAccount", &TdApiWrap::reqQryTradingAccount)
.def("reqQryInvestor", &TdApiWrap::reqQryInvestor)
.def("reqQryTradingCode", &TdApiWrap::reqQryTradingCode)
.def("reqQryExchange", &TdApiWrap::reqQryExchange)
.def("reqQryInstrument", &TdApiWrap::reqQryInstrument)
.def("reqQryInvestorPositionDetail", &TdApiWrap::reqQryInvestorPositionDetail)
.def("reqQryTradingNotice", &TdApiWrap::reqQryTradingNotice)
.def("reqExecOrderInsert", &TdApiWrap::reqExecOrderInsert)
.def("reqExecOrderAction", &TdApiWrap::reqExecOrderAction)
.def("reqLockInsert", &TdApiWrap::reqLockInsert)
.def("reqQryExecOrder", &TdApiWrap::reqQryExecOrder)
.def("reqQryExecOrderVolume", &TdApiWrap::reqQryExecOrderVolume)
.def("reqQryLock", &TdApiWrap::reqQryLock)
.def("reqQryLockPosition", &TdApiWrap::reqQryLockPosition)
.def("reqQryUnderlyingStockInfo", &TdApiWrap::reqQryUnderlyingStockInfo)
.def("reqQryOTPInsCommRate", &TdApiWrap::reqQryOTPInsCommRate)
.def("reqQryInstrumentMarginRate", &TdApiWrap::reqQryInstrumentMarginRate)
.def("reqQryOTPAssignment", &TdApiWrap::reqQryOTPAssignment)
.def("reqQryDepthMarketData", &TdApiWrap::reqQryDepthMarketData)
.def("reqFromBankToStockByStock", &TdApiWrap::reqFromBankToStockByStock)
.def("reqFromStockToBankByStock", &TdApiWrap::reqFromStockToBankByStock)
.def("reqQryContractBank", &TdApiWrap::reqQryContractBank)
.def("reqQueryBankAccountMoneyByStock", &TdApiWrap::reqQueryBankAccountMoneyByStock)
.def("reqQryTransferSerial", &TdApiWrap::reqQryTransferSerial)
.def("reqQrySettlementInfoConfirm", &TdApiWrap::reqQrySettlementInfoConfirm)
.def("reqSettlementInfoConfirm", &TdApiWrap::reqSettlementInfoConfirm)
.def("reqQrySettlementInfo", &TdApiWrap::reqQrySettlementInfo)
.def("reqQryInvestorTradeLevel", &TdApiWrap::reqQryInvestorTradeLevel)
.def("reqQryPurchaseLimitAmt", &TdApiWrap::reqQryPurchaseLimitAmt)
.def("reqQryPositionLimitVol", &TdApiWrap::reqQryPositionLimitVol)
.def("reqQryHistoryOrder", &TdApiWrap::reqQryHistoryOrder)
.def("reqQryHistoryTrade", &TdApiWrap::reqQryHistoryTrade)
.def("reqQryHistoryAssignment", &TdApiWrap::reqQryHistoryAssignment)
.def("reqQryDelivDetail", &TdApiWrap::reqQryDelivDetail)
.def("reqAutoExecOrderAction", &TdApiWrap::reqAutoExecOrderAction)
.def("reqCombActionInsert", &TdApiWrap::reqCombActionInsert)
.def("reqQryInvestorCombinePosition", &TdApiWrap::reqQryInvestorCombinePosition)
.def("reqQryCombActionVolume", &TdApiWrap::reqQryCombActionVolume)
.def("reqFundOutCreditApply", &TdApiWrap::reqFundOutCreditApply)
.def("reqQryFundOutCredit", &TdApiWrap::reqQryFundOutCredit)
.def("reqQryFundOutCreditApply", &TdApiWrap::reqQryFundOutCreditApply)
.def("onFrontConnected", pure_virtual(&TdApiWrap::onFrontConnected))
.def("onFrontDisconnected", pure_virtual(&TdApiWrap::onFrontDisconnected))
.def("onRspError", pure_virtual(&TdApiWrap::onRspError))
.def("onRspUserLogin", pure_virtual(&TdApiWrap::onRspUserLogin))
.def("onRspUserLogout", pure_virtual(&TdApiWrap::onRspUserLogout))
.def("onRspUserPasswordUpdate", pure_virtual(&TdApiWrap::onRspUserPasswordUpdate))
.def("onRspTradingAccountPasswordUpdate", pure_virtual(&TdApiWrap::onRspTradingAccountPasswordUpdate))
.def("onRspOrderInsert", pure_virtual(&TdApiWrap::onRspOrderInsert))
.def("onRspOrderAction", pure_virtual(&TdApiWrap::onRspOrderAction))
.def("onRspQryOrder", pure_virtual(&TdApiWrap::onRspQryOrder))
.def("onRspQryTrade", pure_virtual(&TdApiWrap::onRspQryTrade))
.def("onRspQryInvestorPosition", pure_virtual(&TdApiWrap::onRspQryInvestorPosition))
.def("onRspQryTradingAccount", pure_virtual(&TdApiWrap::onRspQryTradingAccount))
.def("onRspQryInvestor", pure_virtual(&TdApiWrap::onRspQryInvestor))
.def("onRspQryTradingCode", pure_virtual(&TdApiWrap::onRspQryTradingCode))
.def("onRspQryExchange", pure_virtual(&TdApiWrap::onRspQryExchange))
.def("onRspQryInstrument", pure_virtual(&TdApiWrap::onRspQryInstrument))
.def("onRspQryInvestorPositionDetail", pure_virtual(&TdApiWrap::onRspQryInvestorPositionDetail))
.def("onRspQryTradingNotice", pure_virtual(&TdApiWrap::onRspQryTradingNotice))
.def("onRspExecOrderInsert", pure_virtual(&TdApiWrap::onRspExecOrderInsert))
.def("onRspLockInsert", pure_virtual(&TdApiWrap::onRspLockInsert))
.def("onRspExecOrderAction", pure_virtual(&TdApiWrap::onRspExecOrderAction))
.def("onRspQryExecOrder", pure_virtual(&TdApiWrap::onRspQryExecOrder))
.def("onRspQryExecOrderVolume", pure_virtual(&TdApiWrap::onRspQryExecOrderVolume))
.def("onRspQryLock", pure_virtual(&TdApiWrap::onRspQryLock))
.def("onRspQryLockPosition", pure_virtual(&TdApiWrap::onRspQryLockPosition))
.def("onRspQryUnderlyingStockInfo", pure_virtual(&TdApiWrap::onRspQryUnderlyingStockInfo))
.def("onRspQryOTPInsCommRate", pure_virtual(&TdApiWrap::onRspQryOTPInsCommRate))
.def("onRspQryInstrumentMarginRate", pure_virtual(&TdApiWrap::onRspQryInstrumentMarginRate))
.def("onRspQryOTPAssignment", pure_virtual(&TdApiWrap::onRspQryOTPAssignment))
.def("onRspQryDepthMarketData", pure_virtual(&TdApiWrap::onRspQryDepthMarketData))
.def("onRspFromBankToStockByStock", pure_virtual(&TdApiWrap::onRspFromBankToStockByStock))
.def("onRtnFromBankToStockByStock", pure_virtual(&TdApiWrap::onRtnFromBankToStockByStock))
.def("onRspFromStockToBankByStock", pure_virtual(&TdApiWrap::onRspFromStockToBankByStock))
.def("onRtnFromStockToBankByStock", pure_virtual(&TdApiWrap::onRtnFromStockToBankByStock))
.def("onRtnQueryBankBalanceByStock", pure_virtual(&TdApiWrap::onRtnQueryBankBalanceByStock))
.def("onRspQryContractBank", pure_virtual(&TdApiWrap::onRspQryContractBank))
.def("onRspQueryBankAccountMoneyByStock", pure_virtual(&TdApiWrap::onRspQueryBankAccountMoneyByStock))
.def("onRspQryTransferSerial", pure_virtual(&TdApiWrap::onRspQryTransferSerial))
.def("onRspQrySettlementInfoConfirm", pure_virtual(&TdApiWrap::onRspQrySettlementInfoConfirm))
.def("onRspSettlementInfoConfirm", pure_virtual(&TdApiWrap::onRspSettlementInfoConfirm))
.def("onRspQrySettlementInfo", pure_virtual(&TdApiWrap::onRspQrySettlementInfo))
.def("onRspQryInvestorTradeLevel", pure_virtual(&TdApiWrap::onRspQryInvestorTradeLevel))
.def("onRspQryPurchaseLimitAmt", pure_virtual(&TdApiWrap::onRspQryPurchaseLimitAmt))
.def("onRspQryPositionLimitVol", pure_virtual(&TdApiWrap::onRspQryPositionLimitVol))
.def("onRspQryHistoryOrder", pure_virtual(&TdApiWrap::onRspQryHistoryOrder))
.def("onRspQryHistoryTrade", pure_virtual(&TdApiWrap::onRspQryHistoryTrade))
.def("onRspQryHistoryAssignment", pure_virtual(&TdApiWrap::onRspQryHistoryAssignment))
.def("onRspQryDelivDetail", pure_virtual(&TdApiWrap::onRspQryDelivDetail))
.def("onRspAutoExecOrderAction", pure_virtual(&TdApiWrap::onRspAutoExecOrderAction))
.def("onRspCombActionInsert", pure_virtual(&TdApiWrap::onRspCombActionInsert))
.def("onRspQryInvestorCombinePosition", pure_virtual(&TdApiWrap::onRspQryInvestorCombinePosition))
.def("onRspQryCombActionVolume", pure_virtual(&TdApiWrap::onRspQryCombActionVolume))
.def("onRspFundOutCreditApply", pure_virtual(&TdApiWrap::onRspFundOutCreditApply))
.def("onRspQryFundOutCredit", pure_virtual(&TdApiWrap::onRspQryFundOutCredit))
.def("onRspQryFundOutCreditApply", pure_virtual(&TdApiWrap::onRspQryFundOutCreditApply))
.def("onRspError", pure_virtual(&TdApiWrap::onRspError))
.def("onRtnOrder", pure_virtual(&TdApiWrap::onRtnOrder))
.def("onRtnTrade", pure_virtual(&TdApiWrap::onRtnTrade))
.def("onRtnExecOrder", pure_virtual(&TdApiWrap::onRtnExecOrder))
.def("onRtnLock", pure_virtual(&TdApiWrap::onRtnLock))
.def("onRtnInstrumentStatus", pure_virtual(&TdApiWrap::onRtnInstrumentStatus))
.def("onRtnTradingNotice", pure_virtual(&TdApiWrap::onRtnTradingNotice))
.def("onRtnCombAction", pure_virtual(&TdApiWrap::onRtnCombAction))
;
}