vnpy/vn.api/vn.ctp/py3/vnctptd/vnctptd/vnctptd.h

1257 lines
43 KiB
C
Raw Normal View History

2017-03-10 13:17:25 +00:00
//˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>CTP API<EFBFBD>к<EFBFBD><EFBFBD>ʽ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĺ<EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>
ͬʱҲ<EFBFBD>Ѿ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀͻ<EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Python<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱѡ<EFBFBD><EFBFBD>ֻ֧<EFBFBD>ֽ<EFBFBD><EFBFBD>׹<EFBFBD><EFBFBD><EFBFBD>
*/
//ϵͳ
#ifdef WIN32
#include "stdafx.h"
#endif
#include <string>
#include <queue>
//Boost
#define BOOST_PYTHON_STATIC_LIB
#include <boost/python/module.hpp> //python<6F><6E>װ
#include <boost/python/def.hpp> //python<6F><6E>װ
#include <boost/python/dict.hpp> //python<6F><6E>װ
#include <boost/python/object.hpp> //python<6F><6E>װ
#include <boost/python.hpp> //python<6F><6E>װ
#include <boost/thread.hpp> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>̹߳<DFB3><CCB9><EFBFBD>
#include <boost/bind.hpp> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>̹߳<DFB3><CCB9><EFBFBD>
#include <boost/any.hpp> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
#include <boost/locale.hpp> //<2F>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>
//API
#include "ThostFtdcTraderApi.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
using namespace std;
using namespace boost::python;
using namespace boost;
//<2F><><EFBFBD><EFBFBD>
#define ONFRONTCONNECTED 1
#define ONFRONTDISCONNECTED 2
#define ONHEARTBEATWARNING 3
#define ONRSPAUTHENTICATE 4
#define ONRSPUSERLOGIN 5
#define ONRSPUSERLOGOUT 6
#define ONRSPUSERPASSWORDUPDATE 7
#define ONRSPTRADINGACCOUNTPASSWORDUPDATE 8
#define ONRSPORDERINSERT 9
#define ONRSPPARKEDORDERINSERT 10
#define ONRSPPARKEDORDERACTION 11
#define ONRSPORDERACTION 12
#define ONRSPQUERYMAXORDERVOLUME 13
#define ONRSPSETTLEMENTINFOCONFIRM 14
#define ONRSPREMOVEPARKEDORDER 15
#define ONRSPREMOVEPARKEDORDERACTION 16
#define ONRSPEXECORDERINSERT 17
#define ONRSPEXECORDERACTION 18
#define ONRSPFORQUOTEINSERT 19
#define ONRSPQUOTEINSERT 20
#define ONRSPQUOTEACTION 21
#define ONRSPLOCKINSERT 22
#define ONRSPCOMBACTIONINSERT 23
#define ONRSPQRYORDER 24
#define ONRSPQRYTRADE 25
#define ONRSPQRYINVESTORPOSITION 26
#define ONRSPQRYTRADINGACCOUNT 27
#define ONRSPQRYINVESTOR 28
#define ONRSPQRYTRADINGCODE 29
#define ONRSPQRYINSTRUMENTMARGINRATE 30
#define ONRSPQRYINSTRUMENTCOMMISSIONRATE 31
#define ONRSPQRYEXCHANGE 32
#define ONRSPQRYPRODUCT 33
#define ONRSPQRYINSTRUMENT 34
#define ONRSPQRYDEPTHMARKETDATA 35
#define ONRSPQRYSETTLEMENTINFO 36
#define ONRSPQRYTRANSFERBANK 37
#define ONRSPQRYINVESTORPOSITIONDETAIL 38
#define ONRSPQRYNOTICE 39
#define ONRSPQRYSETTLEMENTINFOCONFIRM 40
#define ONRSPQRYINVESTORPOSITIONCOMBINEDETAIL 41
#define ONRSPQRYCFMMCTRADINGACCOUNTKEY 42
#define ONRSPQRYEWARRANTOFFSET 43
#define ONRSPQRYINVESTORPRODUCTGROUPMARGIN 44
#define ONRSPQRYEXCHANGEMARGINRATE 45
#define ONRSPQRYEXCHANGEMARGINRATEADJUST 46
#define ONRSPQRYEXCHANGERATE 47
#define ONRSPQRYSECAGENTACIDMAP 48
#define ONRSPQRYPRODUCTEXCHRATE 49
#define ONRSPQRYPRODUCTGROUP 50
#define ONRSPQRYOPTIONINSTRTRADECOST 51
#define ONRSPQRYOPTIONINSTRCOMMRATE 52
#define ONRSPQRYEXECORDER 53
#define ONRSPQRYFORQUOTE 54
#define ONRSPQRYQUOTE 55
#define ONRSPQRYLOCK 56
#define ONRSPQRYLOCKPOSITION 57
#define ONRSPQRYINVESTORLEVEL 58
#define ONRSPQRYEXECFREEZE 59
#define ONRSPQRYCOMBINSTRUMENTGUARD 60
#define ONRSPQRYCOMBACTION 61
#define ONRSPQRYTRANSFERSERIAL 62
#define ONRSPQRYACCOUNTREGISTER 63
#define ONRSPERROR 64
#define ONRTNORDER 65
#define ONRTNTRADE 66
#define ONERRRTNORDERINSERT 67
#define ONERRRTNORDERACTION 68
#define ONRTNINSTRUMENTSTATUS 69
#define ONRTNTRADINGNOTICE 70
#define ONRTNERRORCONDITIONALORDER 71
#define ONRTNEXECORDER 72
#define ONERRRTNEXECORDERINSERT 73
#define ONERRRTNEXECORDERACTION 74
#define ONERRRTNFORQUOTEINSERT 75
#define ONRTNQUOTE 76
#define ONERRRTNQUOTEINSERT 77
#define ONERRRTNQUOTEACTION 78
#define ONRTNFORQUOTERSP 79
#define ONRTNCFMMCTRADINGACCOUNTTOKEN 80
#define ONRTNLOCK 81
#define ONERRRTNLOCKINSERT 82
#define ONRTNCOMBACTION 83
#define ONERRRTNCOMBACTIONINSERT 84
#define ONRSPQRYCONTRACTBANK 85
#define ONRSPQRYPARKEDORDER 86
#define ONRSPQRYPARKEDORDERACTION 87
#define ONRSPQRYTRADINGNOTICE 88
#define ONRSPQRYBROKERTRADINGPARAMS 89
#define ONRSPQRYBROKERTRADINGALGOS 90
#define ONRSPQUERYCFMMCTRADINGACCOUNTTOKEN 91
#define ONRTNFROMBANKTOFUTUREBYBANK 92
#define ONRTNFROMFUTURETOBANKBYBANK 93
#define ONRTNREPEALFROMBANKTOFUTUREBYBANK 94
#define ONRTNREPEALFROMFUTURETOBANKBYBANK 95
#define ONRTNFROMBANKTOFUTUREBYFUTURE 96
#define ONRTNFROMFUTURETOBANKBYFUTURE 97
#define ONRTNREPEALFROMBANKTOFUTUREBYFUTUREMANUAL 98
#define ONRTNREPEALFROMFUTURETOBANKBYFUTUREMANUAL 99
#define ONRTNQUERYBANKBALANCEBYFUTURE 100
#define ONERRRTNBANKTOFUTUREBYFUTURE 101
#define ONERRRTNFUTURETOBANKBYFUTURE 102
#define ONERRRTNREPEALBANKTOFUTUREBYFUTUREMANUAL 103
#define ONERRRTNREPEALFUTURETOBANKBYFUTUREMANUAL 104
#define ONERRRTNQUERYBANKBALANCEBYFUTURE 105
#define ONRTNREPEALFROMBANKTOFUTUREBYFUTURE 106
#define ONRTNREPEALFROMFUTURETOBANKBYFUTURE 107
#define ONRSPFROMBANKTOFUTUREBYFUTURE 108
#define ONRSPFROMFUTURETOBANKBYFUTURE 109
#define ONRSPQUERYBANKACCOUNTMONEYBYFUTURE 110
#define ONRTNOPENACCOUNTBYBANK 111
#define ONRTNCANCELACCOUNTBYBANK 112
#define ONRTNCHANGEACCOUNTBYBANK 113
///-------------------------------------------------------------------------------------
///API<50>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///-------------------------------------------------------------------------------------
//GILȫ<4C><C8AB><EFBFBD><EFBFBD><EFBFBD>򻯻<EFBFBD>ȡ<EFBFBD>ã<EFBFBD>
//<2F><><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD>C++<2B>̻߳<DFB3><CCBB><EFBFBD>GIL<49><4C><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>ֹpython<6F><6E><EFBFBD><EFBFBD>
class PyLock
{
private:
PyGILState_STATE gil_state;
public:
//<2F><>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GIL<49><4C>
PyLock()
{
gil_state = PyGILState_Ensure();
}
//<2F><>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD>ٸö<D9B8><C3B6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GIL<49><4C>
~PyLock()
{
PyGILState_Release(gil_state);
}
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
struct Task
{
int task_name; //<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ӧ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
any task_data; //<2F><><EFBFBD>ݽṹ<DDBD><E1B9B9>
any task_error; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
int task_id; //<2F><><EFBFBD><EFBFBD>id
bool task_last; //<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>󷵻<EFBFBD>
};
///<2F>̰߳<DFB3>ȫ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
template<typename Data>
class ConcurrentQueue
{
private:
queue<Data> the_queue; //<2F><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mutable mutex the_mutex; //boost<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
condition_variable the_condition_variable; //boost<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
void push(Data const& data)
{
mutex::scoped_lock lock(the_mutex); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
the_queue.push(data); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lock.unlock(); //<2F>ͷ<EFBFBD><CDB7><EFBFBD>
the_condition_variable.notify_one(); //֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>߳<EFBFBD>
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
bool empty() const
{
mutex::scoped_lock lock(the_mutex);
return the_queue.empty();
}
//ȡ<><C8A1>
Data wait_and_pop()
{
mutex::scoped_lock lock(the_mutex);
while (the_queue.empty()) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ
{
the_condition_variable.wait(lock); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
}
Data popped_value = the_queue.front(); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
the_queue.pop(); //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return popped_value; //<2F><><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
}
};
//<2F><><EFBFBD>ֵ<EFBFBD><D6B5>л<EFBFBD>ȡij<C8A1><C4B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
void getInt(dict d, string key, int* value);
//<2F><><EFBFBD>ֵ<EFBFBD><D6B5>л<EFBFBD>ȡij<C8A1><C4B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ӧ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
void getDouble(dict d, string key, double* value);
//<2F><><EFBFBD>ֵ<EFBFBD><D6B5>л<EFBFBD>ȡij<C8A1><C4B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ӧ<EFBFBD><D3A6><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
void getChar(dict d, string key, char* value);
//<2F><><EFBFBD>ֵ<EFBFBD><D6B5>л<EFBFBD>ȡij<C8A1><C4B3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ӧ<EFBFBD><D3A6><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
void getStr(dict d, string key, char* value);
///-------------------------------------------------------------------------------------
///C++ SPI<50>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
///-------------------------------------------------------------------------------------
//API<50>ļ̳<C4BC>ʵ<EFBFBD><CAB5>
class TdApi : public CThostFtdcTraderSpi
{
private:
CThostFtdcTraderApi* api; //API<50><49><EFBFBD><EFBFBD>
thread *task_thread; //<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>ָ<EFBFBD><EFBFBD><EBA3A8>python<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
ConcurrentQueue<Task> task_queue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
TdApi()
{
function0<void> f = boost::bind(&TdApi::processTask, this);
thread t(f);
this->task_thread = &t;
};
~TdApi()
{
};
//-------------------------------------------------------------------------------------
//API<50>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------
///<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>׺<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>¼ǰ<C2BC><C7B0><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
virtual void OnFrontConnected();
///<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>׺<EFBFBD>̨ͨ<CCA8><CDA8><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>ʱ<EFBFBD><CAB1><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<50><49><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3>ͻ<EFBFBD><CDBB>˿ɲ<CBBF><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///@param nReason <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
/// 0x1001 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
/// 0x1002 <20><><EFBFBD><EFBFBD>дʧ<D0B4><CAA7>
/// 0x2001 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
/// 0x2002 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
/// 0x2003 <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void OnFrontDisconnected(int nReason);
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E6A1A3><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>δ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
///@param nTimeLapse <20><><EFBFBD><EFBFBD><EFBFBD>ϴν<CFB4><CEBD>ձ<EFBFBD><D5B1>ĵ<EFBFBD>ʱ<EFBFBD><CAB1>
virtual void OnHeartBeatWarning(int nTimeLapse);
///<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>Ӧ
virtual void OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F>ʽ<EFBFBD><CABD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///Ԥ<><D4A4><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspParkedOrderInsert(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///Ԥ<>񳷵<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><>ѯ<EFBFBD><D1AF><EFBFBD>󱨵<EFBFBD><F3B1A8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///Ͷ<><CDB6><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ӧ
virtual void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///ɾ<><C9BE>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspRemoveParkedOrder(CThostFtdcRemoveParkedOrderField *pRemoveParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///ɾ<><C9BE>Ԥ<EFBFBD>񳷵<EFBFBD><F1B3B7B5><EFBFBD>Ӧ
virtual void OnRspRemoveParkedOrderAction(CThostFtdcRemoveParkedOrderActionField *pRemoveParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspExecOrderAction(CThostFtdcInputExecOrderActionField *pInputExecOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///ѯ<><D1AF>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQuoteAction(CThostFtdcInputQuoteActionField *pInputQuoteAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
virtual void OnRspLockInsert(CThostFtdcInputLockField *pInputLock, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryOrder(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD>Ӧ
virtual void OnRspQryTrade(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD>ֲ߳<DFB3><D6B2><EFBFBD>Ӧ
virtual void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ʽ<EFBFBD><CABD>˻<EFBFBD><CBBB><EFBFBD>Ӧ
virtual void OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryInvestor(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>ױ<EFBFBD><D7B1><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryTradingCode(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Լ<EFBFBD><D4BC>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryInstrumentMarginRate(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryInstrumentCommissionRate(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryExchange(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Ʒ<EFBFBD><C6B7>Ӧ
virtual void OnRspQryProduct(CThostFtdcProductField *pProduct, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Լ<EFBFBD><D4BC>Ӧ
virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQrySettlementInfo(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯת<D1AF><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryTransferBank(CThostFtdcTransferBankField *pTransferBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD>ֲ߳<DFB3><D6B2><EFBFBD>ϸ<EFBFBD><CFB8>Ӧ
virtual void OnRspQryInvestorPositionDetail(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ͻ<EFBFBD>֪ͨ<CDA8><D6AA>Ӧ
virtual void OnRspQryNotice(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣȷ<CFA2><C8B7><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQrySettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD>ֲ߳<DFB3><D6B2><EFBFBD>ϸ<EFBFBD><CFB8>Ӧ
virtual void OnRspQryInvestorPositionCombineDetail(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><>ѯ<EFBFBD><D1AF>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>͹<EFBFBD>˾<EFBFBD>ʽ<EFBFBD><CABD>˻<EFBFBD><CBBB><EFBFBD>Կ<EFBFBD><D4BF>Ӧ
virtual void OnRspQryCFMMCTradingAccountKey(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ֵ<EFBFBD><D6B5>۵<EFBFBD><DBB5><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ
virtual void OnRspQryEWarrantOffset(CThostFtdcEWarrantOffsetField *pEWarrantOffset, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>/<2F><>Ʒ<EFBFBD>ֱ<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryInvestorProductGroupMargin(CThostFtdcInvestorProductGroupMarginField *pInvestorProductGroupMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryExchangeMarginRate(CThostFtdcExchangeMarginRateField *pExchangeMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryExchangeMarginRateAdjust(CThostFtdcExchangeMarginRateAdjustField *pExchangeMarginRateAdjust, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryExchangeRate(CThostFtdcExchangeRateField *pExchangeRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQrySecAgentACIDMap(CThostFtdcSecAgentACIDMapField *pSecAgentACIDMap, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Ʒ<EFBFBD><C6B7><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD>
virtual void OnRspQryProductExchRate(CThostFtdcProductExchRateField *pProductExchRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Ʒ<EFBFBD><C6B7>
virtual void OnRspQryProductGroup(CThostFtdcProductGroupField *pProductGroup, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Ȩ<EFBFBD><C8A8><EFBFBD>׳ɱ<D7B3><C9B1><EFBFBD>Ӧ
virtual void OnRspQryOptionInstrTradeCost(CThostFtdcOptionInstrTradeCostField *pOptionInstrTradeCost, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>Ȩ<EFBFBD><C8A8>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryOptionInstrCommRate(CThostFtdcOptionInstrCommRateField *pOptionInstrCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯִ<D1AF><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryExecOrder(CThostFtdcExecOrderField *pExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯѯ<D1AF><D1AF><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryForQuote(CThostFtdcForQuoteField *pForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryQuote(CThostFtdcQuoteField *pQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
virtual void OnRspQryLock(CThostFtdcLockField *pLock, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>֤ȯ<D6A4><C8AF>λӦ<CEBB><D3A6>
virtual void OnRspQryLockPosition(CThostFtdcLockPositionField *pLockPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯͶ<D1AF><CDB6><EFBFBD>߷ּ<DFB7>
virtual void OnRspQryInvestorLevel(CThostFtdcInvestorLevelField *pInvestorLevel, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯE+1<><31><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryExecFreeze(CThostFtdcExecFreezeField *pExecFreeze, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>Ϻ<EFBFBD>Լ<EFBFBD><D4BC>ȫϵ<C8AB><CFB5><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryCombInstrumentGuard(CThostFtdcCombInstrumentGuardField *pCombInstrumentGuard, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryCombAction(CThostFtdcCombActionField *pCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯת<D1AF><D7AA><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>Ӧ
virtual void OnRspQryTransferSerial(CThostFtdcTransferSerialField *pTransferSerial, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ǩԼ<C7A9><D4BC>ϵ<EFBFBD><CFB5>Ӧ
virtual void OnRspQryAccountregister(CThostFtdcAccountregisterField *pAccountregister, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnOrder(CThostFtdcOrderField *pOrder) ;
///<2F>ɽ<EFBFBD>֪ͨ
virtual void OnRtnTrade(CThostFtdcTradeField *pTrade) ;
///<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo) ;
///<2F><>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>״̬֪ͨ
virtual void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField *pInstrumentStatus) ;
///<2F><><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnTradingNotice(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo) ;
///<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void OnRtnErrorConditionalOrder(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder) ;
///ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnExecOrder(CThostFtdcExecOrderField *pExecOrder) ;
///ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo) ;
///ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnExecOrderAction(CThostFtdcExecOrderActionField *pExecOrderAction, CThostFtdcRspInfoField *pRspInfo) ;
///ѯ<><D1AF>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo) ;
///<2F><><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnQuote(CThostFtdcQuoteField *pQuote) ;
///<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo) ;
///<2F><><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnQuoteAction(CThostFtdcQuoteActionField *pQuoteAction, CThostFtdcRspInfoField *pRspInfo) ;
///ѯ<><D1AF>֪ͨ
virtual void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp) ;
///<2F><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnRtnCFMMCTradingAccountToken(CThostFtdcCFMMCTradingAccountTokenField *pCFMMCTradingAccountToken) ;
///<2F><><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnLock(CThostFtdcLockField *pLock) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
virtual void OnErrRtnLockInsert(CThostFtdcInputLockField *pInputLock, CThostFtdcRspInfoField *pRspInfo) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnCombAction(CThostFtdcCombActionField *pCombAction) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯǩԼ<C7A9><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryContractBank(CThostFtdcContractBankField *pContractBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯԤ<D1AF><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryParkedOrder(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯԤ<D1AF>񳷵<EFBFBD><F1B3B7B5><EFBFBD>Ӧ
virtual void OnRspQryParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA>Ӧ
virtual void OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>͹<EFBFBD>˾<EFBFBD><CBBE><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>Ӧ
virtual void OnRspQryBrokerTradingParams(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>͹<EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8>Ӧ
virtual void OnRspQryBrokerTradingAlgos(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual void OnRspQueryCFMMCTradingAccountToken(CThostFtdcQueryCFMMCTradingAccountTokenField *pQueryCFMMCTradingAccountToken, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ת<EFBFBD>ڻ<EFBFBD>֪ͨ
virtual void OnRtnFromBankToFutureByBank(CThostFtdcRspTransferField *pRspTransfer) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>ʽ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnFromFutureToBankByBank(CThostFtdcRspTransferField *pRspTransfer) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ڻ<EFBFBD>֪ͨ
virtual void OnRtnRepealFromBankToFutureByBank(CThostFtdcRspRepealField *pRspRepeal) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnRepealFromFutureToBankByBank(CThostFtdcRspRepealField *pRspRepeal) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ת<EFBFBD>ڻ<EFBFBD>֪ͨ
virtual void OnRtnFromBankToFutureByFuture(CThostFtdcRspTransferField *pRspTransfer) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>ʽ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnFromFutureToBankByFuture(CThostFtdcRspTransferField *pRspTransfer) ;
///ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ʱ<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD>̷<EFBFBD><CCB7>ص<EFBFBD>֪ͨ
virtual void OnRtnRepealFromBankToFutureByFutureManual(CThostFtdcRspRepealField *pRspRepeal) ;
///ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ʱ<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD>̷<EFBFBD><CCB7>ص<EFBFBD>֪ͨ
virtual void OnRtnRepealFromFutureToBankByFutureManual(CThostFtdcRspRepealField *pRspRepeal) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnQueryBankBalanceByFuture(CThostFtdcNotifyQueryAccountField *pNotifyQueryAccount) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ת<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>ʽ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo) ;
///ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ʱ<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnRepealBankToFutureByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo) ;
///ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ʱ<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnRepealFutureToBankByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
virtual void OnErrRtnQueryBankBalanceByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD>̷<EFBFBD><CCB7>ص<EFBFBD>֪ͨ
virtual void OnRtnRepealFromBankToFutureByFuture(CThostFtdcRspRepealField *pRspRepeal) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD>̷<EFBFBD><CCB7>ص<EFBFBD>֪ͨ
virtual void OnRtnRepealFromFutureToBankByFuture(CThostFtdcRspRepealField *pRspRepeal) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ת<EFBFBD>ڻ<EFBFBD>Ӧ<EFBFBD><D3A6>
virtual void OnRspFromBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>ʽ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
virtual void OnRspFromFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
virtual void OnRspQueryBankAccountMoneyByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>֪ͨ
virtual void OnRtnOpenAccountByBank(CThostFtdcOpenAccountField *pOpenAccount) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
virtual void OnRtnCancelAccountByBank(CThostFtdcCancelAccountField *pCancelAccount) ;
///<2F><><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>֪ͨ
virtual void OnRtnChangeAccountByBank(CThostFtdcChangeAccountField *pChangeAccount) ;
//-------------------------------------------------------------------------------------
//task<73><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------
void processTask();
void processFrontConnected(Task task);
void processFrontDisconnected(Task task);
void processHeartBeatWarning(Task task);
void processRspAuthenticate(Task task);
void processRspUserLogin(Task task);
void processRspUserLogout(Task task);
void processRspUserPasswordUpdate(Task task);
void processRspTradingAccountPasswordUpdate(Task task);
void processRspOrderInsert(Task task);
void processRspParkedOrderInsert(Task task);
void processRspParkedOrderAction(Task task);
void processRspOrderAction(Task task);
void processRspQueryMaxOrderVolume(Task task);
void processRspSettlementInfoConfirm(Task task);
void processRspRemoveParkedOrder(Task task);
void processRspRemoveParkedOrderAction(Task task);
void processRspExecOrderInsert(Task task);
void processRspExecOrderAction(Task task);
void processRspForQuoteInsert(Task task);
void processRspQuoteInsert(Task task);
void processRspQuoteAction(Task task);
void processRspLockInsert(Task task);
void processRspCombActionInsert(Task task);
void processRspQryOrder(Task task);
void processRspQryTrade(Task task);
void processRspQryInvestorPosition(Task task);
void processRspQryTradingAccount(Task task);
void processRspQryInvestor(Task task);
void processRspQryTradingCode(Task task);
void processRspQryInstrumentMarginRate(Task task);
void processRspQryInstrumentCommissionRate(Task task);
void processRspQryExchange(Task task);
void processRspQryProduct(Task task);
void processRspQryInstrument(Task task);
void processRspQryDepthMarketData(Task task);
void processRspQrySettlementInfo(Task task);
void processRspQryTransferBank(Task task);
void processRspQryInvestorPositionDetail(Task task);
void processRspQryNotice(Task task);
void processRspQrySettlementInfoConfirm(Task task);
void processRspQryInvestorPositionCombineDetail(Task task);
void processRspQryCFMMCTradingAccountKey(Task task);
void processRspQryEWarrantOffset(Task task);
void processRspQryInvestorProductGroupMargin(Task task);
void processRspQryExchangeMarginRate(Task task);
void processRspQryExchangeMarginRateAdjust(Task task);
void processRspQryExchangeRate(Task task);
void processRspQrySecAgentACIDMap(Task task);
void processRspQryProductExchRate(Task task);
void processRspQryProductGroup(Task task);
void processRspQryOptionInstrTradeCost(Task task);
void processRspQryOptionInstrCommRate(Task task);
void processRspQryExecOrder(Task task);
void processRspQryForQuote(Task task);
void processRspQryQuote(Task task);
void processRspQryLock(Task task);
void processRspQryLockPosition(Task task);
void processRspQryInvestorLevel(Task task);
void processRspQryExecFreeze(Task task);
void processRspQryCombInstrumentGuard(Task task);
void processRspQryCombAction(Task task);
void processRspQryTransferSerial(Task task);
void processRspQryAccountregister(Task task);
void processRspError(Task task);
void processRtnOrder(Task task);
void processRtnTrade(Task task);
void processErrRtnOrderInsert(Task task);
void processErrRtnOrderAction(Task task);
void processRtnInstrumentStatus(Task task);
void processRtnTradingNotice(Task task);
void processRtnErrorConditionalOrder(Task task);
void processRtnExecOrder(Task task);
void processErrRtnExecOrderInsert(Task task);
void processErrRtnExecOrderAction(Task task);
void processErrRtnForQuoteInsert(Task task);
void processRtnQuote(Task task);
void processErrRtnQuoteInsert(Task task);
void processErrRtnQuoteAction(Task task);
void processRtnForQuoteRsp(Task task);
void processRtnCFMMCTradingAccountToken(Task task);
void processRtnLock(Task task);
void processErrRtnLockInsert(Task task);
void processRtnCombAction(Task task);
void processErrRtnCombActionInsert(Task task);
void processRspQryContractBank(Task task);
void processRspQryParkedOrder(Task task);
void processRspQryParkedOrderAction(Task task);
void processRspQryTradingNotice(Task task);
void processRspQryBrokerTradingParams(Task task);
void processRspQryBrokerTradingAlgos(Task task);
void processRspQueryCFMMCTradingAccountToken(Task task);
void processRtnFromBankToFutureByBank(Task task);
void processRtnFromFutureToBankByBank(Task task);
void processRtnRepealFromBankToFutureByBank(Task task);
void processRtnRepealFromFutureToBankByBank(Task task);
void processRtnFromBankToFutureByFuture(Task task);
void processRtnFromFutureToBankByFuture(Task task);
void processRtnRepealFromBankToFutureByFutureManual(Task task);
void processRtnRepealFromFutureToBankByFutureManual(Task task);
void processRtnQueryBankBalanceByFuture(Task task);
void processErrRtnBankToFutureByFuture(Task task);
void processErrRtnFutureToBankByFuture(Task task);
void processErrRtnRepealBankToFutureByFutureManual(Task task);
void processErrRtnRepealFutureToBankByFutureManual(Task task);
void processErrRtnQueryBankBalanceByFuture(Task task);
void processRtnRepealFromBankToFutureByFuture(Task task);
void processRtnRepealFromFutureToBankByFuture(Task task);
void processRspFromBankToFutureByFuture(Task task);
void processRspFromFutureToBankByFuture(Task task);
void processRspQueryBankAccountMoneyByFuture(Task task);
void processRtnOpenAccountByBank(Task task);
void processRtnCancelAccountByBank(Task task);
void processRtnChangeAccountByBank(Task task);
//-------------------------------------------------------------------------------------
//data<74><61><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>
//error<6F><72><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ֵ<EFBFBD>
//id<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
//last<73><74><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>󷵻<EFBFBD>
//i<><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------
virtual void onFrontConnected(){};
virtual void onFrontDisconnected(int i){};
virtual void onHeartBeatWarning(int i){};
virtual void onRspAuthenticate(dict data, dict error, int id, bool last) {};
virtual void onRspUserLogin(dict data, dict error, int id, bool last) {};
virtual void onRspUserLogout(dict data, dict error, int id, bool last) {};
virtual void onRspUserPasswordUpdate(dict data, dict error, int id, bool last) {};
virtual void onRspTradingAccountPasswordUpdate(dict data, dict error, int id, bool last) {};
virtual void onRspOrderInsert(dict data, dict error, int id, bool last) {};
virtual void onRspParkedOrderInsert(dict data, dict error, int id, bool last) {};
virtual void onRspParkedOrderAction(dict data, dict error, int id, bool last) {};
virtual void onRspOrderAction(dict data, dict error, int id, bool last) {};
virtual void onRspQueryMaxOrderVolume(dict data, dict error, int id, bool last) {};
virtual void onRspSettlementInfoConfirm(dict data, dict error, int id, bool last) {};
virtual void onRspRemoveParkedOrder(dict data, dict error, int id, bool last) {};
virtual void onRspRemoveParkedOrderAction(dict data, dict error, int id, bool last) {};
virtual void onRspExecOrderInsert(dict data, dict error, int id, bool last) {};
virtual void onRspExecOrderAction(dict data, dict error, int id, bool last) {};
virtual void onRspForQuoteInsert(dict data, dict error, int id, bool last) {};
virtual void onRspQuoteInsert(dict data, dict error, int id, bool last) {};
virtual void onRspQuoteAction(dict data, dict error, int id, bool last) {};
virtual void onRspLockInsert(dict data, dict error, int id, bool last) {};
virtual void onRspCombActionInsert(dict data, dict error, int id, bool last) {};
virtual void onRspQryOrder(dict data, dict error, int id, bool last) {};
virtual void onRspQryTrade(dict data, dict error, int id, bool last) {};
virtual void onRspQryInvestorPosition(dict data, dict error, int id, bool last) {};
virtual void onRspQryTradingAccount(dict data, dict error, int id, bool last) {};
virtual void onRspQryInvestor(dict data, dict error, int id, bool last) {};
virtual void onRspQryTradingCode(dict data, dict error, int id, bool last) {};
virtual void onRspQryInstrumentMarginRate(dict data, dict error, int id, bool last) {};
virtual void onRspQryInstrumentCommissionRate(dict data, dict error, int id, bool last) {};
virtual void onRspQryExchange(dict data, dict error, int id, bool last) {};
virtual void onRspQryProduct(dict data, dict error, int id, bool last) {};
virtual void onRspQryInstrument(dict data, dict error, int id, bool last) {};
virtual void onRspQryDepthMarketData(dict data, dict error, int id, bool last) {};
virtual void onRspQrySettlementInfo(dict data, dict error, int id, bool last) {};
virtual void onRspQryTransferBank(dict data, dict error, int id, bool last) {};
virtual void onRspQryInvestorPositionDetail(dict data, dict error, int id, bool last) {};
virtual void onRspQryNotice(dict data, dict error, int id, bool last) {};
virtual void onRspQrySettlementInfoConfirm(dict data, dict error, int id, bool last) {};
virtual void onRspQryInvestorPositionCombineDetail(dict data, dict error, int id, bool last) {};
virtual void onRspQryCFMMCTradingAccountKey(dict data, dict error, int id, bool last) {};
virtual void onRspQryEWarrantOffset(dict data, dict error, int id, bool last) {};
virtual void onRspQryInvestorProductGroupMargin(dict data, dict error, int id, bool last) {};
virtual void onRspQryExchangeMarginRate(dict data, dict error, int id, bool last) {};
virtual void onRspQryExchangeMarginRateAdjust(dict data, dict error, int id, bool last) {};
virtual void onRspQryExchangeRate(dict data, dict error, int id, bool last) {};
virtual void onRspQrySecAgentACIDMap(dict data, dict error, int id, bool last) {};
virtual void onRspQryProductExchRate(dict data, dict error, int id, bool last) {};
virtual void onRspQryProductGroup(dict data, dict error, int id, bool last) {};
virtual void onRspQryOptionInstrTradeCost(dict data, dict error, int id, bool last) {};
virtual void onRspQryOptionInstrCommRate(dict data, dict error, int id, bool last) {};
virtual void onRspQryExecOrder(dict data, dict error, int id, bool last) {};
virtual void onRspQryForQuote(dict data, dict error, int id, bool last) {};
virtual void onRspQryQuote(dict data, dict error, int id, bool last) {};
virtual void onRspQryLock(dict data, dict error, int id, bool last) {};
virtual void onRspQryLockPosition(dict data, dict error, int id, bool last) {};
virtual void onRspQryInvestorLevel(dict data, dict error, int id, bool last) {};
virtual void onRspQryExecFreeze(dict data, dict error, int id, bool last) {};
virtual void onRspQryCombInstrumentGuard(dict data, dict error, int id, bool last) {};
virtual void onRspQryCombAction(dict data, dict error, int id, bool last) {};
virtual void onRspQryTransferSerial(dict data, dict error, int id, bool last) {};
virtual void onRspQryAccountregister(dict data, dict error, int id, bool last) {};
virtual void onRspError(dict error, int id, bool last) {};
virtual void onRtnOrder(dict data) {};
virtual void onRtnTrade(dict data) {};
virtual void onErrRtnOrderInsert(dict data, dict error) {};
virtual void onErrRtnOrderAction(dict data, dict error) {};
virtual void onRtnInstrumentStatus(dict data) {};
virtual void onRtnTradingNotice(dict data) {};
virtual void onRtnErrorConditionalOrder(dict data) {};
virtual void onRtnExecOrder(dict data) {};
virtual void onErrRtnExecOrderInsert(dict data, dict error) {};
virtual void onErrRtnExecOrderAction(dict data, dict error) {};
virtual void onErrRtnForQuoteInsert(dict data, dict error) {};
virtual void onRtnQuote(dict data) {};
virtual void onErrRtnQuoteInsert(dict data, dict error) {};
virtual void onErrRtnQuoteAction(dict data, dict error) {};
virtual void onRtnForQuoteRsp(dict data) {};
virtual void onRtnCFMMCTradingAccountToken(dict data) {};
virtual void onRtnLock(dict data) {};
virtual void onErrRtnLockInsert(dict data, dict error) {};
virtual void onRtnCombAction(dict data) {};
virtual void onErrRtnCombActionInsert(dict data, dict error) {};
virtual void onRspQryContractBank(dict data, dict error, int id, bool last) {};
virtual void onRspQryParkedOrder(dict data, dict error, int id, bool last) {};
virtual void onRspQryParkedOrderAction(dict data, dict error, int id, bool last) {};
virtual void onRspQryTradingNotice(dict data, dict error, int id, bool last) {};
virtual void onRspQryBrokerTradingParams(dict data, dict error, int id, bool last) {};
virtual void onRspQryBrokerTradingAlgos(dict data, dict error, int id, bool last) {};
virtual void onRspQueryCFMMCTradingAccountToken(dict data, dict error, int id, bool last) {};
virtual void onRtnFromBankToFutureByBank(dict data) {};
virtual void onRtnFromFutureToBankByBank(dict data) {};
virtual void onRtnRepealFromBankToFutureByBank(dict data) {};
virtual void onRtnRepealFromFutureToBankByBank(dict data) {};
virtual void onRtnFromBankToFutureByFuture(dict data) {};
virtual void onRtnFromFutureToBankByFuture(dict data) {};
virtual void onRtnRepealFromBankToFutureByFutureManual(dict data) {};
virtual void onRtnRepealFromFutureToBankByFutureManual(dict data) {};
virtual void onRtnQueryBankBalanceByFuture(dict data) {};
virtual void onErrRtnBankToFutureByFuture(dict data, dict error) {};
virtual void onErrRtnFutureToBankByFuture(dict data, dict error) {};
virtual void onErrRtnRepealBankToFutureByFutureManual(dict data, dict error) {};
virtual void onErrRtnRepealFutureToBankByFutureManual(dict data, dict error) {};
virtual void onErrRtnQueryBankBalanceByFuture(dict data, dict error) {};
virtual void onRtnRepealFromBankToFutureByFuture(dict data) {};
virtual void onRtnRepealFromFutureToBankByFuture(dict data) {};
virtual void onRspFromBankToFutureByFuture(dict data, dict error, int id, bool last) {};
virtual void onRspFromFutureToBankByFuture(dict data, dict error, int id, bool last) {};
virtual void onRspQueryBankAccountMoneyByFuture(dict data, dict error, int id, bool last) {};
virtual void onRtnOpenAccountByBank(dict data) {};
virtual void onRtnCancelAccountByBank(dict data) {};
virtual void onRtnChangeAccountByBank(dict data) {};
//-------------------------------------------------------------------------------------
//req:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>
//-------------------------------------------------------------------------------------
void createFtdcTraderApi(string pszFlowPath = "");
void release();
void init();
int join();
int exit();
string getTradingDay();
void registerFront(string pszFrontAddress);
void subscribePrivateTopic(int nType);
void subscribePublicTopic(int nType);
int reqAuthenticate(dict req, int nRequestID);
int reqUserLogin(dict req, int nRequestID);
int reqUserLogout(dict req, int nRequestID);
int reqUserPasswordUpdate(dict req, int nRequestID);
int reqTradingAccountPasswordUpdate(dict req, int nRequestID);
int reqOrderInsert(dict req, int nRequestID);
int reqParkedOrderInsert(dict req, int nRequestID);
int reqParkedOrderAction(dict req, int nRequestID);
int reqOrderAction(dict req, int nRequestID);
int reqQueryMaxOrderVolume(dict req, int nRequestID);
int reqSettlementInfoConfirm(dict req, int nRequestID);
int reqRemoveParkedOrder(dict req, int nRequestID);
int reqRemoveParkedOrderAction(dict req, int nRequestID);
int reqExecOrderInsert(dict req, int nRequestID);
int reqExecOrderAction(dict req, int nRequestID);
int reqForQuoteInsert(dict req, int nRequestID);
int reqQuoteInsert(dict req, int nRequestID);
int reqQuoteAction(dict req, int nRequestID);
int reqLockInsert(dict req, int nRequestID);
int reqCombActionInsert(dict req, int nRequestID);
int reqQryOrder(dict req, int nRequestID);
int reqQryTrade(dict req, int nRequestID);
int reqQryInvestorPosition(dict req, int nRequestID);
int reqQryTradingAccount(dict req, int nRequestID);
int reqQryInvestor(dict req, int nRequestID);
int reqQryTradingCode(dict req, int nRequestID);
int reqQryInstrumentMarginRate(dict req, int nRequestID);
int reqQryInstrumentCommissionRate(dict req, int nRequestID);
int reqQryExchange(dict req, int nRequestID);
int reqQryProduct(dict req, int nRequestID);
int reqQryInstrument(dict req, int nRequestID);
int reqQryDepthMarketData(dict req, int nRequestID);
int reqQrySettlementInfo(dict req, int nRequestID);
int reqQryTransferBank(dict req, int nRequestID);
int reqQryInvestorPositionDetail(dict req, int nRequestID);
int reqQryNotice(dict req, int nRequestID);
int reqQrySettlementInfoConfirm(dict req, int nRequestID);
int reqQryInvestorPositionCombineDetail(dict req, int nRequestID);
int reqQryCFMMCTradingAccountKey(dict req, int nRequestID);
int reqQryEWarrantOffset(dict req, int nRequestID);
int reqQryInvestorProductGroupMargin(dict req, int nRequestID);
int reqQryExchangeMarginRate(dict req, int nRequestID);
int reqQryExchangeMarginRateAdjust(dict req, int nRequestID);
int reqQryExchangeRate(dict req, int nRequestID);
int reqQrySecAgentACIDMap(dict req, int nRequestID);
int reqQryProductExchRate(dict req, int nRequestID);
int reqQryProductGroup(dict req, int nRequestID);
int reqQryOptionInstrTradeCost(dict req, int nRequestID);
int reqQryOptionInstrCommRate(dict req, int nRequestID);
int reqQryExecOrder(dict req, int nRequestID);
int reqQryForQuote(dict req, int nRequestID);
int reqQryQuote(dict req, int nRequestID);
int reqQryLock(dict req, int nRequestID);
int reqQryLockPosition(dict req, int nRequestID);
int reqQryInvestorLevel(dict req, int nRequestID);
int reqQryExecFreeze(dict req, int nRequestID);
int reqQryCombInstrumentGuard(dict req, int nRequestID);
int reqQryCombAction(dict req, int nRequestID);
int reqQryTransferSerial(dict req, int nRequestID);
int reqQryAccountregister(dict req, int nRequestID);
int reqQryContractBank(dict req, int nRequestID);
int reqQryParkedOrder(dict req, int nRequestID);
int reqQryParkedOrderAction(dict req, int nRequestID);
int reqQryTradingNotice(dict req, int nRequestID);
int reqQryBrokerTradingParams(dict req, int nRequestID);
int reqQryBrokerTradingAlgos(dict req, int nRequestID);
int reqQueryCFMMCTradingAccountToken(dict req, int nRequestID);
int reqFromBankToFutureByFuture(dict req, int nRequestID);
int reqFromFutureToBankByFuture(dict req, int nRequestID);
int reqQueryBankAccountMoneyByFuture(dict req, int nRequestID);
};