From 49d704f80175a1c407f00376e474bd24ee8e86f4 Mon Sep 17 00:00:00 2001 From: chenxy123 Date: Sun, 11 Dec 2016 17:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90QDP=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=9A=84=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=B0=9A?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 + vn.qdp/.build.sh.swp | Bin 12288 -> 0 bytes vn.qdp/CMakeLists.txt | 106 - vn.qdp/build.sh | 17 - vn.qdp/docs/QDP和CTP开发异同性分析.docx | Bin 0 -> 219919 bytes vn.qdp/docs/量投科技QDP交易API开发手册.docx | Bin 0 -> 221043 bytes vn.qdp/docs/量投科技QDP行情API开发手册.docx | Bin 0 -> 140890 bytes vn.qdp/pyscript/.generate_td_functions.py.swp | Bin 16384 -> 0 bytes vn.qdp/pyscript/QdpFtdcMduserApi.h | 219 - vn.qdp/pyscript/QdpFtdcUserApiStruct.h | 2 +- vn.qdp/pyscript/qdp_data_type.py~ | 6576 ----------------- vn.qdp/pyscript/qdp_md_process.cpp | 42 +- vn.qdp/pyscript/qdp_struct.py | 2 +- vn.qdp/qdpapi/QdpFtdcMduserApi.h | 219 - vn.qdp/qdpapi/QdpFtdcMduserApi.h~ | 219 - vn.qdp/qdpapi/QdpFtdcTraderApi.h~ | 345 - vn.qdp/qdpapi/QdpFtdcUserApiDataType.h~ | 840 --- vn.qdp/readme.md | 82 +- .../settings/Windows Azure Subscriptions.xml | 5 + vn.qdp/vnqdpmd/vnqdpmd.sln | 22 + .../settings/Windows Azure Subscriptions.xml | 5 + vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.cpp | 879 ++- vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.h | 159 +- vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj | 120 + .../vnqdpmd/vnqdpmd/vnqdpmd.vcxproj.filters | 70 + .../settings/Windows Azure Subscriptions.xml | 5 + vn.qdp/vnqdptd/vnqdptd.sln | 22 + vn.qdp/vnqdptd/vnqdptd/vnqdptd.cpp | 3684 +++++---- vn.qdp/vnqdptd/vnqdptd/vnqdptd.h | 585 +- vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj | 120 + .../vnqdptd/vnqdptd/vnqdptd.vcxproj.filters | 70 + vn.trader/qdpGateway/QDP_connect.json | 1 - vn.trader/qdpGateway/qdpGateway.py | 1342 ++-- vn.trader/qdpGateway/vnqdpmd.pyd | Bin 261120 -> 300032 bytes vn.trader/qdpGateway/vnqdptd.pyd | Bin 402944 -> 462848 bytes vn.trader/uiBasicWidget.py | 1 - vn.trader/uiMainWindow.py | 16 +- vn.trader/vtEngine.py | 7 + 38 files changed, 4447 insertions(+), 11337 deletions(-) delete mode 100644 vn.qdp/.build.sh.swp delete mode 100644 vn.qdp/CMakeLists.txt delete mode 100644 vn.qdp/build.sh create mode 100644 vn.qdp/docs/QDP和CTP开发异同性分析.docx create mode 100644 vn.qdp/docs/量投科技QDP交易API开发手册.docx create mode 100644 vn.qdp/docs/量投科技QDP行情API开发手册.docx delete mode 100644 vn.qdp/pyscript/.generate_td_functions.py.swp delete mode 100644 vn.qdp/pyscript/QdpFtdcMduserApi.h delete mode 100644 vn.qdp/pyscript/qdp_data_type.py~ delete mode 100644 vn.qdp/qdpapi/QdpFtdcMduserApi.h delete mode 100644 vn.qdp/qdpapi/QdpFtdcMduserApi.h~ delete mode 100644 vn.qdp/qdpapi/QdpFtdcTraderApi.h~ delete mode 100644 vn.qdp/qdpapi/QdpFtdcUserApiDataType.h~ create mode 100644 vn.qdp/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml create mode 100644 vn.qdp/vnqdpmd/vnqdpmd.sln create mode 100644 vn.qdp/vnqdpmd/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml create mode 100644 vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj create mode 100644 vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj.filters create mode 100644 vn.qdp/vnqdptd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml create mode 100644 vn.qdp/vnqdptd/vnqdptd.sln create mode 100644 vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj create mode 100644 vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj.filters diff --git a/README.md b/README.md index 64572e5f..0fb8ca7f 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,8 @@ vn.py使用github托管其源代码,贡献代码使用github的PR(Pull Request * 飞鼠(vn.sgit) * 飞创(vn.xspeed) + + * QDP(vn.qdp) * OANDA(vn.oanda) diff --git a/vn.qdp/.build.sh.swp b/vn.qdp/.build.sh.swp deleted file mode 100644 index dad5d8db23a7bc01282b041cc2a63c7dfc548c84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&L2lDP6b9f|HmoQVIKT@*YK7!+oFb4wU8GG_MFN3ZwNyet?aYL@jqSlRZWXS; z8CbL70Nj8b>^KQ~c#c}I5D}X$5d0(kiap~u9(~LBC7r#&L%yqSlZ-1w7nfJ|>&y4o ziF!Iq^VIn=_C;Aw&KbR4FL=B$XR$HezZcr+sPa{5f-H94l;Lr%hTeurl}@yB3z8+t!fE6O z0|F3$00bZa0SG_<0uX=z1Rwx`e?%bG^38vd=!K;I{$KwG@bxm$XUQkYN681tJINb~ zm%Nh1l6^^Ea!K+<>fcKA>0Zz4{V*T^0SG_<0uX=z1Rwwb2teR}5wL~TG_`!~J(9)~kR3 diff --git a/vn.qdp/CMakeLists.txt b/vn.qdp/CMakeLists.txt deleted file mode 100644 index b4fd52b4..00000000 --- a/vn.qdp/CMakeLists.txt +++ /dev/null @@ -1,106 +0,0 @@ -cmake_minimum_required(VERSION 2.8) -project(vn_qdp_api) - -# 设置使用的编译器 -set(CMAKE_BUILD_TYPE "Release") -if (CMAKE_COMPILER_IS_GNUC OR CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++11") -endif () - -# 设置输出目录 -set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) -set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) - -# 使用64位编译 -option(USE_64BITS "comiple 64bits" ON) -if (USE_64BITS) - add_definitions(-DUSE_64BITS) - #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") -endif() - -# 设置C++ API源文件的所在目录 -if (WIN32) - set(QDPAPI_PATH qdpapi) -elseif (UNIX) - message("Under unix: " ${CMAKE_SIZEOF_VOID_P}) - if (CMAKE_SIZEOF_VOID_P MATCHES "8") - set(QDPAPI_PATH qdpapi/x64_linux) - endif() -endif() -include_directories(${QDPAPI_PATH}) -set(QDPAPI_LIBRARY ) -find_library(QDPAPI_MD_LIBRARY - NAMES qdpmdapi - PATHS ${QDPAPI_PATH}) -find_library(QDPAPI_TD_LIBRARY - NAMES qdptraderapi - PATHS ${QDPAPI_PATH}) - - -# 设置编译源文件 -set (vnqdpmd ) -set (vnqdptd ) - -option(BUILD_QDP_MD "build qdp md" ON) -if (BUILD_QDP_MD) - add_definitions(-DBUILD_QDP_MD) - set(QDP_MD_PATH vnqdpmd/vnqdpmd) - include_directories(QDP_MD_PATH) - set(VN_QDP_MD_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/vnqdpmd/vnqdpmd/vnqdpmd.cpp) - add_library(vnqdpmd SHARED ${VN_QDP_MD_SOURCE}) -endif() -option(BUILD_QDP_TD "build qdp td" ON) -if (BUILD_QDP_TD) - add_definitions(-DBUILD_QDP_TD) - set(QDP_TD_PATH vnqdptd/vnqdptd) - include_directories(QDP_TD_PATH) - set(VN_QDP_TD_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/vnqdptd/vnqdptd/vnqdptd.cpp) - add_library(vnqdptd SHARED ${VN_QDP_TD_SOURCE}) -endif() - -# 设置Python所在的目录 -set(PYTHON_LIBRARY ) -if (WIN32) -set(PYTHON_INCLUDE_PATH D:/Anaconda2/include) -find_library(PYTHON_LIBRARY - NAMES python27 - PATHS D:/Anaconda2/libs) -include_directories(${PYTHON_INCLUDE_PATH}) -else() -set(PYTHON_INCLUDE_PATH /usr/include/python2.7/) -find_library(PYTHON_LIBRARY - NAMES python2.7 - PATHS /usr/lib/x86_64-linux-gnu) -include_directories(${PYTHON_INCLUDE_PATH}) -endif() - -# 链接boost库,anaconda -if (WIN32) - set(Boost_USE_STATIC_LIBS ON) #链接boost静态库 -endif() -set(Boost_USE_MULTITHREADED ON) -find_package(Boost 1.55.0 COMPONENTS python thread date_time system chrono REQUIRED) # 如果boost库没有完全编译,需要将编译的库明确地指出,否者message(${Boost_LIBRARIES})会出错 -if(Boost_FOUND) - include_directories(${Boost_INCLUDE_DIRS}) -endif() - -# 去掉生成的so文件名中前缀的lib -set_target_properties(vnqdpmd PROPERTIES PREFIX "") - -# 链接生成.so文件 -target_link_libraries(vnqdpmd ${Boost_LIBRARIES} ${PYTHON_LIBRARY} ${QDPAPI_MD_LIBRARY}) - -# 将生成的dll文件后缀名修改为pyd(仅在windows下) -set(MD_DLL "${LIBRARY_OUTPUT_PATH}/Release/vnqdpmd.dll") -if (EXISTS ${MD_DLL}) - file(RENAME ${MD_DLL} ${LIBRARY_OUTPUT_PATH}/Release/vnqdpmd.pyd) -endif() - -# 和上面的MD相同 -set_target_properties(vnqdptd PROPERTIES PREFIX "") -target_link_libraries(vnqdptd ${Boost_LIBRARIES} ${PYTHON_LIBRARY} ${QDPAPI_TD_LIBRARY}) -set(TD_DLL ${LIBRARY_OUTPUT_PATH}/Release/vnqdptd.dll) -if (EXISTS ${TD_DLL}) - file(RENAME ${TD_DLL} ${LIBRARY_OUTPUT_PATH}/Release/vnqdptd.pyd) -endif() diff --git a/vn.qdp/build.sh b/vn.qdp/build.sh deleted file mode 100644 index 83858574..00000000 --- a/vn.qdp/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Written by Suzhengchun on 20160213 - -set -e -BUILDDIR=build -rm -rf $BUILDDIR -if [ ! -f $BUILDDIR ]; then - mkdir -p $BUILDDIR -fi -pushd $BUILDDIR -cmake .. -make VERBOSE=1 -j 1 -ln -fs `pwd`/lib/vnctpmd.so ../vnctpmd/test/vnctpmd.so -ln -fs `pwd`/lib/vnctptd.so ../vnctptd/test/vnctptd.so -cp ../vnctpmd/test/vnctpmd.* ../../vn.trader/ctpGateway/ -cp ../vnctptd/test/vnctptd.* ../../vn.trader/ctpGateway/ -popd diff --git a/vn.qdp/docs/QDP和CTP开发异同性分析.docx b/vn.qdp/docs/QDP和CTP开发异同性分析.docx new file mode 100644 index 0000000000000000000000000000000000000000..41af410a5801f196b12390b84d1e40c8abb0bef0 GIT binary patch literal 219919 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 z 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 z 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�e?B{QZd2R%UKZlM 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

`k7BKa{_A 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 literal 0 HcmV?d00001 diff --git a/vn.qdp/docs/量投科技QDP交易API开发手册.docx b/vn.qdp/docs/量投科技QDP交易API开发手册.docx new file mode 100644 index 0000000000000000000000000000000000000000..8dc8ddf3db5a79a992e305255596cd578e236780 GIT binary patch literal 221043 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 z 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%0AJEbA;cvJXlrDiMhw2Cz?&sPe) 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

QO)5B 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

q+qPH$=Z-1VSX*~%vCVaYQsBog&k4z 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⁡k+1K~$Rdl;EnMEF~xwepEttlu3>dt_r_$+yTGL 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Μ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

HngQM-)2-G~qlWbPO@W**)Q1Hw(iWUb!De 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

}S%Ds(x`^;&LS+(>ra?)nZ}==-$jx4YJm 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 E?;xt&y#N3J literal 402944 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𝔭-~# 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 I|4aY;f1DKt7ytkO diff --git a/vn.trader/uiBasicWidget.py b/vn.trader/uiBasicWidget.py index d28b48bf..95e61866 100644 --- a/vn.trader/uiBasicWidget.py +++ b/vn.trader/uiBasicWidget.py @@ -474,7 +474,6 @@ class ErrorMonitor(BasicMonitor): d['errorTime'] = {'chinese':u'错误时间', 'cellType':BasicCell} d['errorID'] = {'chinese':u'错误代码', 'cellType':BasicCell} d['errorMsg'] = {'chinese':u'错误信息', 'cellType':BasicCell} - d['additionalInfo'] = {'chinese':u'补充信息', 'cellType':BasicCell} d['gatewayName'] = {'chinese':u'接口', 'cellType':BasicCell} self.setHeaderDict(d) diff --git a/vn.trader/uiMainWindow.py b/vn.trader/uiMainWindow.py index f8804b1f..09aa651e 100644 --- a/vn.trader/uiMainWindow.py +++ b/vn.trader/uiMainWindow.py @@ -75,7 +75,10 @@ class MainWindow(QtGui.QMainWindow): connectFemasAction.triggered.connect(self.connectFemas) connectXspeedAction = QtGui.QAction(u'连接飞创', self) - connectXspeedAction.triggered.connect(self.connectXspeed) + connectXspeedAction.triggered.connect(self.connectXspeed) + + connectQdpAction = QtGui.QAction(u'连接QDP', self) + connectQdpAction.triggered.connect(self.connectQdp) connectKsgoldAction = QtGui.QAction(u'连接金仕达黄金', self) connectKsgoldAction.triggered.connect(self.connectKsgold) @@ -138,6 +141,8 @@ class MainWindow(QtGui.QMainWindow): sysMenu.addAction(connectFemasAction) if 'XSPEED' in self.mainEngine.gatewayDict: sysMenu.addAction(connectXspeedAction) + if 'QDP' in self.mainEngine.gatewayDict: + sysMenu.addAction(connectQdpAction) if 'KSOTP' in self.mainEngine.gatewayDict: sysMenu.addAction(connectKsotpAction) if 'KSGOLD' in self.mainEngine.gatewayDict: @@ -228,8 +233,13 @@ class MainWindow(QtGui.QMainWindow): #---------------------------------------------------------------------- def connectXspeed(self): - """连接飞马接口""" - self.mainEngine.connect('XSPEED') + """连接飞创接口""" + self.mainEngine.connect('XSPEED') + + #---------------------------------------------------------------------- + def connectQdp(self): + """连接QDP接口""" + self.mainEngine.connect('QDP') #---------------------------------------------------------------------- def connectKsgold(self): diff --git a/vn.trader/vtEngine.py b/vn.trader/vtEngine.py index c4a21248..522a2e6b 100644 --- a/vn.trader/vtEngine.py +++ b/vn.trader/vtEngine.py @@ -88,6 +88,13 @@ class MainEngine(object): self.gatewayDict['XSPEED'].setQryEnabled(True) except Exception, e: print e + + try: + from qdpGateway.qdpGateway import QdpGateway + self.addGateway(QdpGateway, 'QDP') + self.gatewayDict['QDP'].setQryEnabled(True) + except Exception, e: + print e try: from ksgoldGateway.ksgoldGateway import KsgoldGateway

R{+6FSIj?kP$M{~sQme$3RxUCTg*ZIc5V1e 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­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 z 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 j5)|@769|7yc7>sdFudWtE 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include "QdpFtdcUserApiStruct.h" - -#if defined(ISLIB) && defined(WIN32) -#ifdef LIB_MDUSER_API_EXPORT -#define MDUSER_API_EXPORT __declspec(dllexport) -#else -#define MDUSER_API_EXPORT __declspec(dllimport) -#endif -#else -#define MDUSER_API_EXPORT -#endif - -class CQdpFtdcMduserSpi -{ -public: - ///ͻ뽻׺̨ͨʱδ¼ǰ÷á - virtual void OnFrontConnected(){}; - - ///ͻ뽻׺̨ͨӶϿʱ÷áAPIԶӣͻ˿ɲ - ///@param nReason ԭ - /// 0x1001 ʧ - /// 0x1002 дʧ - /// 0x2001 ʱ - /// 0x2002 ʧ - /// 0x2003 յ - virtual void OnFrontDisconnected(int nReason){}; - - ///ʱ档ʱδյʱ÷á - ///@param nTimeLapse ϴνձĵʱ - virtual void OnHeartBeatWarning(int nTimeLapse){}; - - ///Ļصʼ֪ͨAPIյһĺȵñȻǸĻصDZĻص֪ͨ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageStart(int nTopicID, int nSequenceNo){}; - - ///Ļص֪ͨAPIյһĺȵñĻصʼ֪ͨȻǸĻصñ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageEnd(int nTopicID, int nSequenceNo){}; - - //ಥӿ add by zbz 20150304 - virtual void OnMultiHeartbeat(char *CurrTime,char *MultiCastIP) {}; - - //㲥յֵʱ򣬻صãqmdata - virtual void UdpMarketData(CQdpFtdcDepthMarketDataField *qmdata){}; - - ///Ӧ - virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û¼Ӧ - virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û˳Ӧ - virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֣ݺԼ״̬ - virtual void OnRtnQmdInstrumentStatu(CQdpFtdcQmdInstrumentStateField *pQmdInstrumentState) {}; - - ///Ӧ - virtual void OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֪ͨ - virtual void OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData) {}; - - ///ĺԼϢ - virtual void OnRspSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///˶ԼϢ - virtual void OnRspUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryDepthMarketData(CQdpFtdcRspMarketDataField *pRspMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; -}; - -class MDUSER_API_EXPORT CQdpFtdcMduserApi -{ -public: - ///MduserApi - ///@param pszFlowPath ϢļĿ¼ĬΪǰĿ¼ - ///@return UserApi - static CQdpFtdcMduserApi *CreateFtdcMduserApi(const char *pszFlowPath = ""); - - ///ȡϵͳ汾 - ///@param nMajorVersion 汾 - ///@param nMinorVersion Ӱ汾 - ///@return ϵͳʶַ - static const char *GetVersion(int &nMajorVersion, int &nMinorVersion); - - ///ɾӿڶ - ///@remark ʹñӿڶʱ,øúɾӿڶ - virtual void Release() = 0; - - //ಥÿ - virtual void SetMultiCast(bool bMultiCast=false) = 0; - - //עಥַ - virtual void RegTopicMultiAddr(char *pMultiAddr)=0; - - - ///ʼ - ///@remark ʼл,ֻеú,ӿڲſʼ - virtual void Init() = 0; - - ///ȴӿ߳̽ - ///@return ߳˳ - virtual int Join() = 0; - - ///ȡǰ - ///@retrun ȡĽ - ///@remark ֻе¼ɹ,ܵõȷĽ - virtual const char *GetTradingDay() = 0; - - ///עǰûַ - ///@param pszFrontAddressǰûַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:17001 - ///@remark tcpЭ飬127.0.0.1ַ17001˿ںš - virtual void RegisterFront(char *pszFrontAddress) = 0; - - ///עַַ - ///@param pszNsAddressַַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:12001 - ///@remark tcpЭ飬127.0.0.1ַ12001˿ںš - ///@remark RegisterFrontRegisterNameServer - virtual void RegisterNameServer(char *pszNsAddress) = 0; - - ///עصӿ - ///@param pSpi Իصӿʵ - virtual void RegisterSpi(CQdpFtdcMduserSpi *pSpi) = 0; - - ///г顣 - ///@param nTopicID г - ///@param nResumeType гشʽ - /// QDP_TERT_RESTART:ӱտʼش - /// QDP_TERT_RESUME:ϴյ(ǶȫԼʱ֧ģʽ) - /// QDP_TERT_QUICK:ȴ͵ǰ,ٴ͵¼г - ///@remark ÷ҪInitǰá򲻻յ˽ݡ - virtual void SubscribeMarketDataTopic(int nTopicID, QDP_TE_RESUME_TYPE nResumeType) = 0; - - ///ĺԼ顣 - ///@param ppInstrumentID ԼID - ///@param nCount Ҫ/˶ĺԼ - ///@remark - virtual int SubMarketData(char *ppInstrumentID[], int nCount)=0; - - ///˶Լ顣 - ///@param ppInstrumentID ԼID - ///@param nCount Ҫ/˶ĺԼ - ///@remark - virtual int UnSubMarketData(char *ppInstrumentID[], int nCount)=0; - - ///ʱʱ䡣 - ///@param timeout ʱʱ() - virtual void SetHeartbeatTimeout(unsigned int timeout) = 0; - - - ///ڴȡֵ - ///@param CQdpFtdcShmDepthMarketDataField - ///@param CQdpFtdcDepthMarketDataField ѯֵ - ///@return 0 ɹ - ///@return -1 ־ļʧ - virtual void ShmMarketData(CQdpFtdcShmDepthMarketDataField *reqfield,CQdpFtdcDepthMarketDataField *defdata) = 0; - - ///UDP - ///@param udpip㲥ַ - ///@return 0 ɹ - ///@return -1 ȡUDPʧ - virtual void setudpchannel(char *udpip)= 0; - - ///û¼ - virtual int ReqUserLogin(CQdpFtdcReqUserLoginField *pReqUserLogin, int nRequestID) = 0; - - ///û˳ - virtual int ReqUserLogout(CQdpFtdcReqUserLogoutField *pReqUserLogout, int nRequestID) = 0; - - /// - virtual int ReqSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ĺԼϢ - virtual int ReqSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, int nRequestID) = 0; - - ///˶ԼϢ - virtual int ReqUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryDepthMarketData(CQdpFtdcQryMarketDataField *pQryMarketData, int nRequestID) = 0; - - //ಥ - //޷¼£ô˽ӿڿԽ鲥 - //ڿԵ¼ô˽ӿ - //@param TradingDay գûе¼£ȻգҪע⽻Ľ - virtual void ActiveMultiMarketData(char * TradingDay) = 0; -protected: - ~CQdpFtdcMduserApi(){}; -}; - -#endif diff --git a/vn.qdp/pyscript/QdpFtdcUserApiStruct.h b/vn.qdp/pyscript/QdpFtdcUserApiStruct.h index 52c06e5f..7e335756 100644 --- a/vn.qdp/pyscript/QdpFtdcUserApiStruct.h +++ b/vn.qdp/pyscript/QdpFtdcUserApiStruct.h @@ -156,7 +156,7 @@ struct CQdpFtdcInputOrderField TQdpFtdcBoolType IsAutoSuspend; ///ҵԪ TQdpFtdcBusinessUnitType BusinessUnit; - ///ûԶ + ///ûԶ` TQdpFtdcCustomType UserCustom; ///Ӫҵ TQdpFtdcBranchIDType BranchID; diff --git a/vn.qdp/pyscript/qdp_data_type.py~ b/vn.qdp/pyscript/qdp_data_type.py~ deleted file mode 100644 index 043adad4..00000000 --- a/vn.qdp/pyscript/qdp_data_type.py~ +++ /dev/null @@ -1,6576 +0,0 @@ -# encoding: UTF-8 - -defineDict = {} -typedefDict = {} - -#////////////////////////////////////////////////////////////////////// -#@system 新一代交易所系统 -#@company 上海期货信息技术有限公司 -#@file QdpFtdcUserApiDataType.h -#@brief 定义了客户端接口使用的业务数据类型 -#@history -#20060106 赵鸿昊 创建该文件 -#////////////////////////////////////////////////////////////////////// - - - -#////////////////////////////////////////////////////////////////////// -#TFtdcTraderIDType是一个交易所交易员代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTraderIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorIDType是一个投资者代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvestorIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerIDType是一个经纪公司代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBrokerIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerAbbrType是一个经纪公司简称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBrokerAbbrType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerNameType是一个经纪公司名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBrokerNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeInstIDType是一个合约在交易所的代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExchangeInstIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderRefType是一个报单引用类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrderRefType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserOrderLocalIDType是一个报单引用类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserOrderLocalIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradingSystemNameType是一个交易系统名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradingSystemNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcCustomType是一个用户自定义域类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCustomType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcAccountSeqNoType是一个资金流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAccountSeqNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcAccountDirectionType是一个出入金方向类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAccountDirectionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcMemTableNameType是一个内存表名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMemTableNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcTradingDayType是一个交易日类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradingDayType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcClientNameType是一个客户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClientNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcIdentifiedCardTypeType是一个证件类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIdentifiedCardTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcFeePayFlagType是一个费用支付标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFeePayFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcFeeType是一个费用类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFeeType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcAbstractType是一个消息摘要类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAbstractType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcProductIDType是一个品种编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProductIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcPriceTickType是一个最小变动价位类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPriceTickType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcCurrencyType是一个币种类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencyType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcClientHedgeFlagType是一个客户投机套保标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClientHedgeFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcIsActiveType是一个是否活跃类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIsActiveType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcDepartmentType是一个营业部类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDepartmentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcGrantFuncSetType是一个授权功能号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcGrantFuncSetType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcDiffSndType是一个偏差时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDiffSndType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcNameType是一个名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcSeatIDType是一个席位号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSeatIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcIdentifiedCardTypeType是一个证件类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#///TFtdcTotalNumsType是一个累加次数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTotalNumsType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParticipantIDType是一个会员代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcParticipantIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserIDType是一个用户代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPasswordType是一个密码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPasswordType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientIDType是一个交易编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClientIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentIDType是一个合约代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstrumentIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentCodeType是一个合约标识码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstrumentCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMarketIDType是一个市场代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMarketIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProductNameType是一个产品名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProductNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeIDType是一个交易所代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExchangeIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeNameType是一个交易所名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExchangeNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeAbbrType是一个交易所简称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExchangeAbbrType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeFlagType是一个交易所标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExchangeFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMacAddressType是一个Mac地址类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMacAddressType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSystemIDType是一个系统编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSystemIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangePropertyType是一个交易所属性类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_EXP_Normal"] = '0' -#根据成交生成报单 -defineDict["QDP_FTDC_EXP_GenOrderByTrade"] = '1' - -typedefDict["TQdpFtdcExchangePropertyType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDateType是一个日期类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTimeType是一个时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLongTimeType是一个长时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLongTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentNameType是一个合约名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstrumentNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettlementGroupIDType是一个结算组代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSettlementGroupIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderSysIDType是一个报单编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrderSysIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeIDType是一个成交编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommandTypeType是一个DB命令类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommandTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIPAddressType是一个IP地址类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIPAddressType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIPPortType是一个IP端口类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIPPortType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProductInfoType是一个产品信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProductInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProtocolInfoType是一个协议信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProtocolInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBusinessUnitType是一个业务单元类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBusinessUnitType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDepositSeqNoType是一个出入金流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDepositSeqNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIdentifiedCardNoType是一个证件号码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIdentifiedCardNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIdCardTypeType是一个证件类型类型 -#////////////////////////////////////////////////////////////////////// -#组织机构代码 -defineDict["QDP_FTDC_ICT_EID"] = '0' -#中国公民身份证 -defineDict["QDP_FTDC_ICT_IDCard"] = '1' -#军官证 -defineDict["QDP_FTDC_ICT_OfficerIDCard"] = '2' -#警官证 -defineDict["QDP_FTDC_ICT_PoliceIDCard"] = '3' -#士兵证 -defineDict["QDP_FTDC_ICT_SoldierIDCard"] = '4' -#户口簿 -defineDict["QDP_FTDC_ICT_HouseholdRegister"] = '5' -#护照 -defineDict["QDP_FTDC_ICT_Passport"] = '6' -#台胞证 -defineDict["QDP_FTDC_ICT_TaiwanCompatriotIDCard"] = '7' -#回乡证 -defineDict["QDP_FTDC_ICT_HomeComingCard"] = '8' -#营业执照号 -defineDict["QDP_FTDC_ICT_LicenseNo"] = '9' -#税务登记号/当地纳税ID -defineDict["QDP_FTDC_ICT_TaxNo"] = 'A' -#港澳居民来往内地通行证 -defineDict["QDP_FTDC_ICT_HMMainlandTravelPermit"] = 'B' -#台湾居民来往大陆通行证 -defineDict["QDP_FTDC_ICT_TwMainlandTravelPermit"] = 'C' -#驾照 -defineDict["QDP_FTDC_ICT_DrivingLicense"] = 'D' -#当地社保ID -defineDict["QDP_FTDC_ICT_SocialID"] = 'F' -#当地身份证 -defineDict["QDP_FTDC_ICT_LocalID"] = 'G' -#商业登记证 -defineDict["QDP_FTDC_ICT_BusinessRegistration"] = 'H' -#港澳永久性居民身份证 -defineDict["QDP_FTDC_ICT_HKMCIDCard"] = 'I' -#人行开户许可证 -defineDict["QDP_FTDC_ICT_AccountsPermits"] = 'J' -#其他证件 -defineDict["QDP_FTDC_ICT_OtherCard"] = 'x' - -typedefDict["TQdpFtdcIdCardTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderLocalIDType是一个本地报单编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrderLocalIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserNameType是一个用户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPartyNameType是一个参与人名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPartyNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcErrorMsgType是一个错误信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcErrorMsgType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFieldNameType是一个字段名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFieldNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFieldContentType是一个字段内容类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFieldContentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSystemNameType是一个系统名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSystemNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcContentType是一个消息正文类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcContentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorRangeType是一个投资者范围类型 -#////////////////////////////////////////////////////////////////////// -#所有 -defineDict["QDP_FTDC_IR_All"] = '1' -#投资者组 -defineDict["QDP_FTDC_IR_Group"] = '2' -#单一投资者 -defineDict["QDP_FTDC_IR_Single"] = '3' - -typedefDict["TQdpFtdcInvestorRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDepartmentRangeType是一个投资者范围类型 -#////////////////////////////////////////////////////////////////////// -#所有 -defineDict["QDP_FTDC_DR_All"] = '1' -#组织架构 -defineDict["QDP_FTDC_DR_Group"] = '2' -#单一投资者 -defineDict["QDP_FTDC_DR_Single"] = '3' - -typedefDict["TQdpFtdcDepartmentRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDataSyncStatusType是一个数据同步状态类型 -#////////////////////////////////////////////////////////////////////// -#未同步 -defineDict["QDP_FTDC_DS_Asynchronous"] = '1' -#同步中 -defineDict["QDP_FTDC_DS_Synchronizing"] = '2' -#已同步 -defineDict["QDP_FTDC_DS_Synchronized"] = '3' - -typedefDict["TQdpFtdcDataSyncStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerDataSyncStatusType是一个经纪公司数据同步状态类型 -#////////////////////////////////////////////////////////////////////// -#已同步 -defineDict["QDP_FTDC_BDS_Synchronized"] = '1' -#同步中 -defineDict["QDP_FTDC_BDS_Synchronizing"] = '2' - -typedefDict["TQdpFtdcBrokerDataSyncStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeConnectStatusType是一个交易所连接状态类型 -#////////////////////////////////////////////////////////////////////// -#没有任何连接 -defineDict["QDP_FTDC_ECS_NoConnection"] = '1' -#已经发出合约查询请求 -defineDict["QDP_FTDC_ECS_QryInstrumentSent"] = '2' -#已经获取信息 -defineDict["QDP_FTDC_ECS_GotInformation"] = '9' - -typedefDict["TQdpFtdcExchangeConnectStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTraderConnectStatusType是一个交易所交易员连接状态类型 -#////////////////////////////////////////////////////////////////////// -#没有任何连接 -defineDict["QDP_FTDC_TCS_NotConnected"] = '1' -#已经连接 -defineDict["QDP_FTDC_TCS_Connected"] = '2' -#已经发出合约查询请求 -defineDict["QDP_FTDC_TCS_QryInstrumentSent"] = '3' -#订阅私有流 -defineDict["QDP_FTDC_TCS_SubPrivateFlow"] = '4' - -typedefDict["TQdpFtdcTraderConnectStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFunctionCodeType是一个功能代码类型 -#////////////////////////////////////////////////////////////////////// -#数据异步化 -defineDict["QDP_FTDC_FC_DataAsync"] = '1' -#强制用户登出 -defineDict["QDP_FTDC_FC_ForceUserLogout"] = '2' -#变更管理用户口令 -defineDict["QDP_FTDC_FC_UserPasswordUpdate"] = '3' -#变更经纪公司口令 -defineDict["QDP_FTDC_FC_BrokerPasswordUpdate"] = '4' -#变更投资者口令 -defineDict["QDP_FTDC_FC_InvestorPasswordUpdate"] = '5' -#报单插入 -defineDict["QDP_FTDC_FC_OrderInsert"] = '6' -#报单操作 -defineDict["QDP_FTDC_FC_OrderAction"] = '7' -#同步系统数据 -defineDict["QDP_FTDC_FC_SyncSystemData"] = '8' -#同步经纪公司数据 -defineDict["QDP_FTDC_FC_SyncBrokerData"] = '9' -#批量同步经纪公司数据 -defineDict["QDP_FTDC_FC_BachSyncBrokerData"] = 'A' -#超级查询 -defineDict["QDP_FTDC_FC_SuperQuery"] = 'B' -#预埋报单插入 -defineDict["QDP_FTDC_FC_ParkedOrderInsert"] = 'C' -#预埋报单操作 -defineDict["QDP_FTDC_FC_ParkedOrderAction"] = 'D' -#同步动态令牌 -defineDict["QDP_FTDC_FC_SyncOTP"] = 'E' -#删除未知单 -defineDict["QDP_FTDC_FC_DeleteOrder"] = 'F' - -typedefDict["TQdpFtdcFunctionCodeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerFunctionCodeType是一个经纪公司功能代码类型 -#////////////////////////////////////////////////////////////////////// -#强制用户登出 -defineDict["QDP_FTDC_BFC_ForceUserLogout"] = '1' -#变更用户口令 -defineDict["QDP_FTDC_BFC_UserPasswordUpdate"] = '2' -#同步经纪公司数据 -defineDict["QDP_FTDC_BFC_SyncBrokerData"] = '3' -#批量同步经纪公司数据 -defineDict["QDP_FTDC_BFC_BachSyncBrokerData"] = '4' -#报单插入 -defineDict["QDP_FTDC_BFC_OrderInsert"] = '5' -#报单操作 -defineDict["QDP_FTDC_BFC_OrderAction"] = '6' -#全部查询 -defineDict["QDP_FTDC_BFC_AllQuery"] = '7' -#系统功能:登入/登出/修改密码等 -defineDict["QDP_FTDC_BFC_log"] = 'a' -#基本查询:查询基础数据,如合约,交易所等常量 -defineDict["QDP_FTDC_BFC_BaseQry"] = 'b' -#交易查询:如查成交,委托 -defineDict["QDP_FTDC_BFC_TradeQry"] = 'c' -#交易功能:报单,撤单 -defineDict["QDP_FTDC_BFC_Trade"] = 'd' -#银期转账 -defineDict["QDP_FTDC_BFC_Virement"] = 'e' -#风险监控 -defineDict["QDP_FTDC_BFC_Risk"] = 'f' -#查询/管理:查询会话,踢人等 -defineDict["QDP_FTDC_BFC_Session"] = 'g' -#风控通知控制 -defineDict["QDP_FTDC_BFC_RiskNoticeCtl"] = 'h' -#风控通知发送 -defineDict["QDP_FTDC_BFC_RiskNotice"] = 'i' -#察看经纪公司资金权限 -defineDict["QDP_FTDC_BFC_BrokerDeposit"] = 'j' -#资金查询 -defineDict["QDP_FTDC_BFC_QueryFund"] = 'k' -#报单查询 -defineDict["QDP_FTDC_BFC_QueryOrder"] = 'l' -#成交查询 -defineDict["QDP_FTDC_BFC_QueryTrade"] = 'm' -#持仓查询 -defineDict["QDP_FTDC_BFC_QueryPosition"] = 'n' -#行情查询 -defineDict["QDP_FTDC_BFC_QueryMarketData"] = 'o' -#用户事件查询 -defineDict["QDP_FTDC_BFC_QueryUserEvent"] = 'p' -#风险通知查询 -defineDict["QDP_FTDC_BFC_QueryRiskNotify"] = 'q' -#出入金查询 -defineDict["QDP_FTDC_BFC_QueryFundChange"] = 'r' -#投资者信息查询 -defineDict["QDP_FTDC_BFC_QueryInvestor"] = 's' -#交易编码查询 -defineDict["QDP_FTDC_BFC_QueryTradingCode"] = 't' -#强平 -defineDict["QDP_FTDC_BFC_ForceClose"] = 'u' -#压力测试 -defineDict["QDP_FTDC_BFC_PressTest"] = 'v' -#权益反算 -defineDict["QDP_FTDC_BFC_RemainCalc"] = 'w' -#净持仓保证金指标 -defineDict["QDP_FTDC_BFC_NetPositionInd"] = 'x' -#风险预算 -defineDict["QDP_FTDC_BFC_RiskPredict"] = 'y' -#数据导出 -defineDict["QDP_FTDC_BFC_DataExport"] = 'z' -#风控指标设置 -defineDict["QDP_FTDC_BFC_RiskTargetSetup"] = 'A' -#行情预警 -defineDict["QDP_FTDC_BFC_MarketDataWarn"] = 'B' -#业务通知查询 -defineDict["QDP_FTDC_BFC_QryBizNotice"] = 'C' -#业务通知模板设置 -defineDict["QDP_FTDC_BFC_CfgBizNotice"] = 'D' -#同步动态令牌 -defineDict["QDP_FTDC_BFC_SyncOTP"] = 'E' -#发送业务通知 -defineDict["QDP_FTDC_BFC_SendBizNotice"] = 'F' -#风险级别标准设置 -defineDict["QDP_FTDC_BFC_CfgRiskLevelStd"] = 'G' -#交易终端应急功能 -defineDict["QDP_FTDC_BFC_TbCommand"] = 'H' -#删除未知单 -defineDict["QDP_FTDC_BFC_DeleteOrder"] = 'J' -#预埋报单插入 -defineDict["QDP_FTDC_BFC_ParkedOrderInsert"] = 'K' -#预埋报单操作 -defineDict["QDP_FTDC_BFC_ParkedOrderAction"] = 'L' - -typedefDict["TQdpFtdcBrokerFunctionCodeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderActionStatusType是一个报单操作状态类型 -#////////////////////////////////////////////////////////////////////// -#已经提交 -defineDict["QDP_FTDC_OAS_Submitted"] = 'a' -#已经接受 -defineDict["QDP_FTDC_OAS_Accepted"] = 'b' -#已经被拒绝 -defineDict["QDP_FTDC_OAS_Rejected"] = 'c' - -typedefDict["TQdpFtdcOrderActionStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderStatusType是一个报单状态类型 -#////////////////////////////////////////////////////////////////////// -#全部成交 -defineDict["QDP_FTDC_OST_AllTraded"] = '0' -#部分成交还在队列中 -defineDict["QDP_FTDC_OST_PartTradedQueueing"] = '1' -#部分成交不在队列中 -defineDict["QDP_FTDC_OST_PartTradedNotQueueing"] = '2' -#未成交还在队列中 -defineDict["QDP_FTDC_OST_NoTradeQueueing"] = '3' -#未成交不在队列中 -defineDict["QDP_FTDC_OST_NoTradeNotQueueing"] = '4' -#撤单 -defineDict["QDP_FTDC_OST_Canceled"] = '5' -#未知 -defineDict["QDP_FTDC_OST_Unknown"] = 'a' -#尚未触发 -defineDict["QDP_FTDC_OST_NotTouched"] = 'b' -#已触发 -defineDict["QDP_FTDC_OST_Touched"] = 'c' - -typedefDict["TQdpFtdcOrderStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderSubmitStatusType是一个报单提交状态类型 -#////////////////////////////////////////////////////////////////////// -#已经提交 -defineDict["QDP_FTDC_OSS_InsertSubmitted"] = '0' -#撤单已经提交 -defineDict["QDP_FTDC_OSS_CancelSubmitted"] = '1' -#修改已经提交 -defineDict["QDP_FTDC_OSS_ModifySubmitted"] = '2' -#已经接受 -defineDict["QDP_FTDC_OSS_Accepted"] = '3' -#报单已经被拒绝 -defineDict["QDP_FTDC_OSS_InsertRejected"] = '4' -#撤单已经被拒绝 -defineDict["QDP_FTDC_OSS_CancelRejected"] = '5' -#改单已经被拒绝 -defineDict["QDP_FTDC_OSS_ModifyRejected"] = '6' - -typedefDict["TQdpFtdcOrderSubmitStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPositionDateType是一个持仓日期类型 -#////////////////////////////////////////////////////////////////////// -#今日持仓 -defineDict["QDP_FTDC_PSD_Today"] = '1' -#历史持仓 -defineDict["QDP_FTDC_PSD_History"] = '2' - -typedefDict["TQdpFtdcPositionDateType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPositionDateTypeType是一个持仓日期类型类型 -#////////////////////////////////////////////////////////////////////// -#使用历史持仓 -defineDict["QDP_FTDC_PDT_UseHistory"] = '1' -#不使用历史持仓 -defineDict["QDP_FTDC_PDT_NoUseHistory"] = '2' - -typedefDict["TQdpFtdcPositionDateTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradingRoleType是一个交易角色类型 -#////////////////////////////////////////////////////////////////////// -#代理 -defineDict["QDP_FTDC_ER_Broker"] = '1' -#自营 -defineDict["QDP_FTDC_ER_Host"] = '2' -#做市商 -defineDict["QDP_FTDC_ER_Maker"] = '3' - -typedefDict["TQdpFtdcTradingRoleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProductClassType是一个产品类型类型 -#////////////////////////////////////////////////////////////////////// -#期货 -defineDict["QDP_FTDC_PC_Futures"] = '1' -#期货期权 -defineDict["QDP_FTDC_PC_Options"] = '2' -#组合 -defineDict["QDP_FTDC_PC_Combination"] = '3' -#即期 -defineDict["QDP_FTDC_PC_Spot"] = '4' -#期转现 -defineDict["QDP_FTDC_PC_EFP"] = '5' -#现货期权 -defineDict["QDP_FTDC_PC_SpotOption"] = '6' -#个股期权 -defineDict["QDP_FTDC_PC_ETFOption"] = '7' -#证券 -defineDict["QDP_FTDC_PC_Stock"] = '8' - -typedefDict["TQdpFtdcProductClassType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstLifePhaseType是一个合约生命周期状态类型 -#////////////////////////////////////////////////////////////////////// -#未上市 -defineDict["QDP_FTDC_IP_NotStart"] = '0' -#上市 -defineDict["QDP_FTDC_IP_Started"] = '1' -#停牌 -defineDict["QDP_FTDC_IP_Pause"] = '2' -#到期 -defineDict["QDP_FTDC_IP_Expired"] = '3' - -typedefDict["TQdpFtdcInstLifePhaseType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDirectionType是一个买卖方向类型 -#////////////////////////////////////////////////////////////////////// -#买 -defineDict["QDP_FTDC_D_Buy"] = '0' -#卖 -defineDict["QDP_FTDC_D_Sell"] = '1' - -typedefDict["TQdpFtdcDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPositionTypeType是一个持仓类型类型 -#////////////////////////////////////////////////////////////////////// -#净持仓 -defineDict["QDP_FTDC_PT_Net"] = '1' -#综合持仓 -defineDict["QDP_FTDC_PT_Gross"] = '2' - -typedefDict["TQdpFtdcPositionTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPosiDirectionType是一个持仓多空方向类型 -#////////////////////////////////////////////////////////////////////// -#净 -defineDict["QDP_FTDC_PD_Net"] = '1' -#多头 -defineDict["QDP_FTDC_PD_Long"] = '2' -#空头 -defineDict["QDP_FTDC_PD_Short"] = '3' - -typedefDict["TQdpFtdcPosiDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSysSettlementStatusType是一个系统结算状态类型 -#////////////////////////////////////////////////////////////////////// -#不活跃 -defineDict["QDP_FTDC_SS_NonActive"] = '1' -#启动 -defineDict["QDP_FTDC_SS_Startup"] = '2' -#操作 -defineDict["QDP_FTDC_SS_Operating"] = '3' -#结算 -defineDict["QDP_FTDC_SS_Settlement"] = '4' -#结算完成 -defineDict["QDP_FTDC_SS_SettlementFinished"] = '5' - -typedefDict["TQdpFtdcSysSettlementStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRatioAttrType是一个费率属性类型 -#////////////////////////////////////////////////////////////////////// -#交易费率 -defineDict["QDP_FTDC_RA_Trade"] = '0' -#结算费率 -defineDict["QDP_FTDC_RA_Settlement"] = '1' - -typedefDict["TQdpFtdcRatioAttrType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcHedgeFlagType是一个投机套保标志类型 -#////////////////////////////////////////////////////////////////////// -#投机 -defineDict["QDP_FTDC_HF_Speculation"] = '1' -#套利 -defineDict["QDP_FTDC_HF_Arbitrage"] = '2' -#套保 -defineDict["QDP_FTDC_HF_Hedge"] = '3' -#备兑 -defineDict["QDP_FTDC_HF_Covered"] = '4' - -typedefDict["TQdpFtdcHedgeFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBillHedgeFlagType是一个投机套保标志类型 -#////////////////////////////////////////////////////////////////////// -#投机 -defineDict["QDP_FTDC_BHF_Speculation"] = '1' -#套利 -defineDict["QDP_FTDC_BHF_Arbitrage"] = '2' -#套保 -defineDict["QDP_FTDC_BHF_Hedge"] = '3' - -typedefDict["TQdpFtdcBillHedgeFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientIDTypeType是一个交易编码类型类型 -#////////////////////////////////////////////////////////////////////// -#投机 -defineDict["QDP_FTDC_CIDT_Speculation"] = '1' -#套利 -defineDict["QDP_FTDC_CIDT_Arbitrage"] = '2' -#套保 -defineDict["QDP_FTDC_CIDT_Hedge"] = '3' - -typedefDict["TQdpFtdcClientIDTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderPriceTypeType是一个报单价格条件类型 -#////////////////////////////////////////////////////////////////////// -#任意价 -defineDict["QDP_FTDC_OPT_AnyPrice"] = '1' -#限价 -defineDict["QDP_FTDC_OPT_LimitPrice"] = '2' -#最优价 -defineDict["QDP_FTDC_OPT_BestPrice"] = '3' -#最新价 -defineDict["QDP_FTDC_OPT_LastPrice"] = '4' -#最新价浮动上浮1个ticks -defineDict["QDP_FTDC_OPT_LastPricePlusOneTicks"] = '5' -#最新价浮动上浮2个ticks -defineDict["QDP_FTDC_OPT_LastPricePlusTwoTicks"] = '6' -#最新价浮动上浮3个ticks -defineDict["QDP_FTDC_OPT_LastPricePlusThreeTicks"] = '7' -#卖一价 -defineDict["QDP_FTDC_OPT_AskPrice1"] = '8' -#卖一价浮动上浮1个ticks -defineDict["QDP_FTDC_OPT_AskPrice1PlusOneTicks"] = '9' -#卖一价浮动上浮2个ticks -defineDict["QDP_FTDC_OPT_AskPrice1PlusTwoTicks"] = 'A' -#卖一价浮动上浮3个ticks -defineDict["QDP_FTDC_OPT_AskPrice1PlusThreeTicks"] = 'B' -#买一价 -defineDict["QDP_FTDC_OPT_BidPrice1"] = 'C' -#买一价浮动上浮1个ticks -defineDict["QDP_FTDC_OPT_BidPrice1PlusOneTicks"] = 'D' -#买一价浮动上浮2个ticks -defineDict["QDP_FTDC_OPT_BidPrice1PlusTwoTicks"] = 'E' -#买一价浮动上浮3个ticks -defineDict["QDP_FTDC_OPT_BidPrice1PlusThreeTicks"] = 'F' -#五档价 -defineDict["QDP_FTDC_OPT_FiveLevelPrice"] = 'G' -#本方最优价 -defineDict["QDP_FTDC_OPT_BestPriceThisSide"] = 'H' - -typedefDict["TQdpFtdcOrderPriceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOffsetFlagType是一个开平标志类型 -#////////////////////////////////////////////////////////////////////// -#开仓 -defineDict["QDP_FTDC_OF_Open"] = '0' -#平仓 -defineDict["QDP_FTDC_OF_Close"] = '1' -#强平 -defineDict["QDP_FTDC_OF_ForceClose"] = '2' -#平今 -defineDict["QDP_FTDC_OF_CloseToday"] = '3' -#平昨 -defineDict["QDP_FTDC_OF_CloseYesterday"] = '4' -#强减 -defineDict["QDP_FTDC_OF_ForceOff"] = '5' -#本地强平 -defineDict["QDP_FTDC_OF_LocalForceClose"] = '6' - -typedefDict["TQdpFtdcOffsetFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcForceCloseReasonType是一个强平原因类型 -#////////////////////////////////////////////////////////////////////// -#非强平 -defineDict["QDP_FTDC_FCC_NotForceClose"] = '0' -#资金不足 -defineDict["QDP_FTDC_FCC_LackDeposit"] = '1' -#客户超仓 -defineDict["QDP_FTDC_FCC_ClientOverPositionLimit"] = '2' -#会员超仓 -defineDict["QDP_FTDC_FCC_MemberOverPositionLimit"] = '3' -#持仓非整数倍 -defineDict["QDP_FTDC_FCC_NotMultiple"] = '4' -#违规 -defineDict["QDP_FTDC_FCC_Violation"] = '5' -#其它 -defineDict["QDP_FTDC_FCC_Other"] = '6' -#自然人临近交割 -defineDict["QDP_FTDC_FCC_PersonDeliv"] = '7' - -typedefDict["TQdpFtdcForceCloseReasonType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderTypeType是一个报单类型类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_ORDT_Normal"] = '0' -#报价衍生 -defineDict["QDP_FTDC_ORDT_DeriveFromQuote"] = '1' -#组合衍生 -defineDict["QDP_FTDC_ORDT_DeriveFromCombination"] = '2' -#组合报单 -defineDict["QDP_FTDC_ORDT_Combination"] = '3' -#条件单 -defineDict["QDP_FTDC_ORDT_ConditionalOrder"] = '4' -#互换单 -defineDict["QDP_FTDC_ORDT_Swap"] = '5' - -typedefDict["TQdpFtdcOrderTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTimeConditionType是一个有效期类型类型 -#////////////////////////////////////////////////////////////////////// -#立即完成,否则撤销 -defineDict["QDP_FTDC_TC_IOC"] = '1' -#本节有效 -defineDict["QDP_FTDC_TC_GFS"] = '2' -#当日有效 -defineDict["QDP_FTDC_TC_GFD"] = '3' -#指定日期前有效 -defineDict["QDP_FTDC_TC_GTD"] = '4' -#撤销前有效 -defineDict["QDP_FTDC_TC_GTC"] = '5' -#集合竞价有效 -defineDict["QDP_FTDC_TC_GFA"] = '6' - -typedefDict["TQdpFtdcTimeConditionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVolumeConditionType是一个成交量类型类型 -#////////////////////////////////////////////////////////////////////// -#任何数量 -defineDict["QDP_FTDC_VC_AV"] = '1' -#最小数量 -defineDict["QDP_FTDC_VC_MV"] = '2' -#全部数量 -defineDict["QDP_FTDC_VC_CV"] = '3' - -typedefDict["TQdpFtdcVolumeConditionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcContingentConditionType是一个触发条件类型 -#////////////////////////////////////////////////////////////////////// -#立即 -defineDict["QDP_FTDC_CC_Immediately"] = '1' -#止损 -defineDict["QDP_FTDC_CC_Touch"] = '2' -#止赢 -defineDict["QDP_FTDC_CC_TouchProfit"] = '3' -#预埋单 -defineDict["QDP_FTDC_CC_ParkedOrder"] = '4' -#最新价大于条件价 -defineDict["QDP_FTDC_CC_LastPriceGreaterThanStopPrice"] = '5' -#最新价大于等于条件价 -defineDict["QDP_FTDC_CC_LastPriceGreaterEqualStopPrice"] = '6' -#最新价小于条件价 -defineDict["QDP_FTDC_CC_LastPriceLesserThanStopPrice"] = '7' -#最新价小于等于条件价 -defineDict["QDP_FTDC_CC_LastPriceLesserEqualStopPrice"] = '8' -#卖一价大于条件价 -defineDict["QDP_FTDC_CC_AskPriceGreaterThanStopPrice"] = '9' -#卖一价大于等于条件价 -defineDict["QDP_FTDC_CC_AskPriceGreaterEqualStopPrice"] = 'A' -#卖一价小于条件价 -defineDict["QDP_FTDC_CC_AskPriceLesserThanStopPrice"] = 'B' -#卖一价小于等于条件价 -defineDict["QDP_FTDC_CC_AskPriceLesserEqualStopPrice"] = 'C' -#买一价大于条件价 -defineDict["QDP_FTDC_CC_BidPriceGreaterThanStopPrice"] = 'D' -#买一价大于等于条件价 -defineDict["QDP_FTDC_CC_BidPriceGreaterEqualStopPrice"] = 'E' -#买一价小于条件价 -defineDict["QDP_FTDC_CC_BidPriceLesserThanStopPrice"] = 'F' -#买一价小于等于条件价 -defineDict["QDP_FTDC_CC_BidPriceLesserEqualStopPrice"] = 'H' - -typedefDict["TQdpFtdcContingentConditionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcActionFlagType是一个操作标志类型 -#////////////////////////////////////////////////////////////////////// -#删除 -defineDict["QDP_FTDC_AF_Delete"] = '0' -#修改 -defineDict["QDP_FTDC_AF_Modify"] = '3' - -typedefDict["TQdpFtdcActionFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradingRightType是一个交易权限类型 -#////////////////////////////////////////////////////////////////////// -#可以交易 -defineDict["QDP_FTDC_TR_Allow"] = '0' -#只能平仓 -defineDict["QDP_FTDC_TR_CloseOnly"] = '1' -#不能交易 -defineDict["QDP_FTDC_TR_Forbidden"] = '2' - -typedefDict["TQdpFtdcTradingRightType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderSourceType是一个报单来源类型 -#////////////////////////////////////////////////////////////////////// -#来自参与者 -defineDict["QDP_FTDC_OSRC_Participant"] = '0' -#来自管理员 -defineDict["QDP_FTDC_OSRC_Administrator"] = '1' - -typedefDict["TQdpFtdcOrderSourceType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeTypeType是一个成交类型类型 -#////////////////////////////////////////////////////////////////////// -#组合持仓拆分为单一持仓,初始化不应包含该类型的持仓 -defineDict["QDP_FTDC_TRDT_SplitCombination"] = '#' -#普通成交 -defineDict["QDP_FTDC_TRDT_Common"] = '0' -#期权执行 -defineDict["QDP_FTDC_TRDT_OptionsExecution"] = '1' -#OTC成交 -defineDict["QDP_FTDC_TRDT_OTC"] = '2' -#期转现衍生成交 -defineDict["QDP_FTDC_TRDT_EFPDerived"] = '3' -#组合衍生成交 -defineDict["QDP_FTDC_TRDT_CombinationDerived"] = '4' - -typedefDict["TQdpFtdcTradeTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPriceSourceType是一个成交价来源类型 -#////////////////////////////////////////////////////////////////////// -#前成交价 -defineDict["QDP_FTDC_PSRC_LastPrice"] = '0' -#买委托价 -defineDict["QDP_FTDC_PSRC_Buy"] = '1' -#卖委托价 -defineDict["QDP_FTDC_PSRC_Sell"] = '2' - -typedefDict["TQdpFtdcPriceSourceType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentStatusType是一个合约交易状态类型 -#////////////////////////////////////////////////////////////////////// -#开盘前 -defineDict["QDP_FTDC_IS_BeforeTrading"] = '0' -#非交易 -defineDict["QDP_FTDC_IS_NoTrading"] = '1' -#连续交易 -defineDict["QDP_FTDC_IS_Continous"] = '2' -#集合竞价报单 -defineDict["QDP_FTDC_IS_AuctionOrdering"] = '3' -#集合竞价价格平衡 -defineDict["QDP_FTDC_IS_AuctionBalance"] = '4' -#集合竞价撮合 -defineDict["QDP_FTDC_IS_AuctionMatch"] = '5' -#收盘 -defineDict["QDP_FTDC_IS_Closed"] = '6' - -typedefDict["TQdpFtdcInstrumentStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstStatusEnterReasonType是一个品种进入交易状态原因类型 -#////////////////////////////////////////////////////////////////////// -#自动切换 -defineDict["QDP_FTDC_IER_Automatic"] = '1' -#手动切换 -defineDict["QDP_FTDC_IER_Manual"] = '2' -#熔断 -defineDict["QDP_FTDC_IER_Fuse"] = '3' - -typedefDict["TQdpFtdcInstStatusEnterReasonType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrderActionRefType是一个报单操作引用类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrderActionRefType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstallCountType是一个安装数量类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstallCountType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstallIDType是一个安装编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstallIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcErrorIDType是一个错误代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcErrorIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettlementIDType是一个结算编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSettlementIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVolumeType是一个数量类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcVolumeType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFrontIDType是一个前置编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFrontIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSessionIDType是一个会话编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSessionIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSequenceNoType是一个序号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSequenceNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommandNoType是一个DB命令序号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommandNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMillisecType是一个时间(毫秒)类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMillisecType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVolumeMultipleType是一个合约数量乘数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcVolumeMultipleType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradingSegmentSNType是一个交易阶段编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradingSegmentSNType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRequestIDType是一个请求编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRequestIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcYearType是一个年份类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcYearType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMonthType是一个月份类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMonthType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBoolType是一个布尔型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBoolType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPriceType是一个价格类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPriceType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombOffsetFlagType是一个组合开平标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCombOffsetFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombHedgeFlagType是一个组合投机套保标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCombHedgeFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRatioType是一个比率类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRatioType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMoneyType是一个资金类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMoneyType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLargeVolumeType是一个大额数量类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLargeVolumeType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSequenceSeriesType是一个序列系列号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSequenceSeriesType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommPhaseNoType是一个通讯时段编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommPhaseNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSequenceLabelType是一个序列编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSequenceLabelType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUnderlyingMultipleType是一个基础商品乘数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUnderlyingMultipleType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPriorityType是一个优先级类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPriorityType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcContractCodeType是一个合同编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcContractCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCityType是一个市类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCityType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIsStockType是一个是否股民类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIsStockType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcChannelType是一个渠道类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcChannelType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAddressType是一个通讯地址类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAddressType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcZipCodeType是一个邮政编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcZipCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTelephoneType是一个联系电话类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTelephoneType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFaxType是一个传真类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFaxType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMobileType是一个手机类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMobileType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEMailType是一个电子邮件类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcEMailType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMemoType是一个备注类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCompanyCodeType是一个企业代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCompanyCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcWebsiteType是一个网站地址类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcWebsiteType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTaxNoType是一个税务登记号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTaxNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBatchStatusType是一个处理状态类型 -#////////////////////////////////////////////////////////////////////// -#未上传 -defineDict["QDP_FTDC_BS_NoUpload"] = '1' -#已上传 -defineDict["QDP_FTDC_BS_Uploaded"] = '2' -#审核失败 -defineDict["QDP_FTDC_BS_Failed"] = '3' - -typedefDict["TQdpFtdcBatchStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPropertyIDType是一个属性代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPropertyIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPropertyNameType是一个属性名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPropertyNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLicenseNoType是一个营业执照号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLicenseNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAgentIDType是一个经纪人代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAgentIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAgentNameType是一个经纪人名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAgentNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAgentGroupIDType是一个经纪人组代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAgentGroupIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAgentGroupNameType是一个经纪人组名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAgentGroupNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReturnStyleType是一个按品种返还方式类型 -#////////////////////////////////////////////////////////////////////// -#按所有品种 -defineDict["QDP_FTDC_RS_All"] = '1' -#按品种 -defineDict["QDP_FTDC_RS_ByProduct"] = '2' - -typedefDict["TQdpFtdcReturnStyleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReturnPatternType是一个返还模式类型 -#////////////////////////////////////////////////////////////////////// -#按成交手数 -defineDict["QDP_FTDC_RP_ByVolume"] = '1' -#按留存手续费 -defineDict["QDP_FTDC_RP_ByFeeOnHand"] = '2' - -typedefDict["TQdpFtdcReturnPatternType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReturnLevelType是一个返还级别类型 -#////////////////////////////////////////////////////////////////////// -#级别1 -defineDict["QDP_FTDC_RL_Level1"] = '1' -#级别2 -defineDict["QDP_FTDC_RL_Level2"] = '2' -#级别3 -defineDict["QDP_FTDC_RL_Level3"] = '3' -#级别4 -defineDict["QDP_FTDC_RL_Level4"] = '4' -#级别5 -defineDict["QDP_FTDC_RL_Level5"] = '5' -#级别6 -defineDict["QDP_FTDC_RL_Level6"] = '6' -#级别7 -defineDict["QDP_FTDC_RL_Level7"] = '7' -#级别8 -defineDict["QDP_FTDC_RL_Level8"] = '8' -#级别9 -defineDict["QDP_FTDC_RL_Level9"] = '9' - -typedefDict["TQdpFtdcReturnLevelType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReturnStandardType是一个返还标准类型 -#////////////////////////////////////////////////////////////////////// -#分阶段返还 -defineDict["QDP_FTDC_RSD_ByPeriod"] = '1' -#按某一标准 -defineDict["QDP_FTDC_RSD_ByStandard"] = '2' - -typedefDict["TQdpFtdcReturnStandardType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMortgageTypeType是一个质押类型类型 -#////////////////////////////////////////////////////////////////////// -#质出 -defineDict["QDP_FTDC_MT_Out"] = '0' -#质入 -defineDict["QDP_FTDC_MT_In"] = '1' - -typedefDict["TQdpFtdcMortgageTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorSettlementParamIDType是一个投资者结算参数代码类型 -#////////////////////////////////////////////////////////////////////// -#质押比例 -defineDict["QDP_FTDC_ISPI_MortgageRatio"] = '4' -#保证金算法 -defineDict["QDP_FTDC_ISPI_MarginWay"] = '5' -#结算单结存是否包含质押 -defineDict["QDP_FTDC_ISPI_BillDeposit"] = '9' - -typedefDict["TQdpFtdcInvestorSettlementParamIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeSettlementParamIDType是一个交易所结算参数代码类型 -#////////////////////////////////////////////////////////////////////// -#质押比例 -defineDict["QDP_FTDC_ESPI_MortgageRatio"] = '1' -#分项资金导入项 -defineDict["QDP_FTDC_ESPI_OtherFundItem"] = '2' -#分项资金入交易所出入金 -defineDict["QDP_FTDC_ESPI_OtherFundImport"] = '3' -#中金所开户最低可用金额 -defineDict["QDP_FTDC_ESPI_CFFEXMinPrepa"] = '6' -#郑商所结算方式 -defineDict["QDP_FTDC_ESPI_CZCESettlementType"] = '7' -#交易所交割手续费收取方式 -defineDict["QDP_FTDC_ESPI_ExchDelivFeeMode"] = '9' -#投资者交割手续费收取方式 -defineDict["QDP_FTDC_ESPI_DelivFeeMode"] = '0' -#郑商所组合持仓保证金收取方式 -defineDict["QDP_FTDC_ESPI_CZCEComMarginType"] = 'A' -#大商所套利保证金是否优惠 -defineDict["QDP_FTDC_ESPI_DceComMarginType"] = 'B' -#虚值期权保证金优惠比率 -defineDict["QDP_FTDC_ESPI_OptOutDisCountRate"] = 'a' -#最低保障系数 -defineDict["QDP_FTDC_ESPI_OptMiniGuarantee"] = 'b' - -typedefDict["TQdpFtdcExchangeSettlementParamIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSystemParamIDType是一个系统参数代码类型 -#////////////////////////////////////////////////////////////////////// -#投资者代码最小长度 -defineDict["QDP_FTDC_SPI_InvestorIDMinLength"] = '1' -#投资者帐号代码最小长度 -defineDict["QDP_FTDC_SPI_AccountIDMinLength"] = '2' -#投资者开户默认登录权限 -defineDict["QDP_FTDC_SPI_UserRightLogon"] = '3' -#投资者交易结算单成交汇总方式 -defineDict["QDP_FTDC_SPI_SettlementBillTrade"] = '4' -#统一开户更新交易编码方式 -defineDict["QDP_FTDC_SPI_TradingCode"] = '5' -#结算是否判断存在未复核的出入金和分项资金 -defineDict["QDP_FTDC_SPI_CheckFund"] = '6' -#是否启用手续费模板数据权限 -defineDict["QDP_FTDC_SPI_CommModelRight"] = '7' -#是否启用保证金率模板数据权限 -defineDict["QDP_FTDC_SPI_MarginModelRight"] = '9' -#是否规范用户才能激活 -defineDict["QDP_FTDC_SPI_IsStandardActive"] = '8' -#上传的交易所结算文件路径 -defineDict["QDP_FTDC_SPI_UploadSettlementFile"] = 'U' -#上报保证金监控中心文件路径 -defineDict["QDP_FTDC_SPI_DownloadCSRCFile"] = 'D' -#生成的结算单文件路径 -defineDict["QDP_FTDC_SPI_SettlementBillFile"] = 'S' -#证监会文件标识 -defineDict["QDP_FTDC_SPI_CSRCOthersFile"] = 'C' -#投资者照片路径 -defineDict["QDP_FTDC_SPI_InvestorPhoto"] = 'P' -#全结经纪公司上传文件路径 -defineDict["QDP_FTDC_SPI_CSRCData"] = 'R' -#开户密码录入方式 -defineDict["QDP_FTDC_SPI_InvestorPwdModel"] = 'I' -#投资者中金所结算文件下载路径 -defineDict["QDP_FTDC_SPI_CFFEXInvestorSettleFile"] = 'F' -#投资者代码编码方式 -defineDict["QDP_FTDC_SPI_InvestorIDType"] = 'a' -#休眠户最高权益 -defineDict["QDP_FTDC_SPI_FreezeMaxReMain"] = 'r' -#手续费相关操作实时上场开关 -defineDict["QDP_FTDC_SPI_IsSync"] = 'A' -#解除开仓权限限制 -defineDict["QDP_FTDC_SPI_RelieveOpenLimit"] = 'O' -#是否规范用户才能休眠 -defineDict["QDP_FTDC_SPI_IsStandardFreeze"] = 'X' -#郑商所是否开放所有品种套保交易 -defineDict["QDP_FTDC_SPI_CZCENormalProductHedge"] = 'B' - -typedefDict["TQdpFtdcSystemParamIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeParamIDType是一个交易系统参数代码类型 -#////////////////////////////////////////////////////////////////////// -#系统加密算法 -defineDict["QDP_FTDC_TPID_EncryptionStandard"] = 'E' -#系统风险算法 -defineDict["QDP_FTDC_TPID_RiskMode"] = 'R' -#系统风险算法是否全局 0-否 1-是 -defineDict["QDP_FTDC_TPID_RiskModeGlobal"] = 'G' -#密码加密算法 -defineDict["QDP_FTDC_TPID_modeEncode"] = 'P' -#价格小数位数参数 -defineDict["QDP_FTDC_TPID_tickMode"] = 'T' -#用户最大会话数 -defineDict["QDP_FTDC_TPID_SingleUserSessionMaxNum"] = 'S' -#最大连续登录失败数 -defineDict["QDP_FTDC_TPID_LoginFailMaxNum"] = 'L' -#是否强制认证 -defineDict["QDP_FTDC_TPID_IsAuthForce"] = 'A' -#是否冻结证券持仓 -defineDict["QDP_FTDC_TPID_IsPosiFreeze"] = 'F' -#是否限仓 -defineDict["QDP_FTDC_TPID_IsPosiLimit"] = 'M' -#郑商所询价时间间隔 -defineDict["QDP_FTDC_TPID_ForQuoteTimeInterval"] = 'Q' - -typedefDict["TQdpFtdcTradeParamIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettlementParamValueType是一个参数代码值类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSettlementParamValueType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCounterIDType是一个计数器代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCounterIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorGroupNameType是一个投资者分组名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvestorGroupNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrandCodeType是一个牌号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBrandCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcWarehouseType是一个仓库类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcWarehouseType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProductDateType是一个产期类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProductDateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcGradeType是一个等级类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcGradeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClassifyType是一个类别类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClassifyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPositionType是一个货位类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPositionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcYieldlyType是一个产地类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcYieldlyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcWeightType是一个公定重量类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcWeightType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSubEntryFundNoType是一个分项资金流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSubEntryFundNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileIDType是一个文件标识类型 -#////////////////////////////////////////////////////////////////////// -#资金数据 -defineDict["QDP_FTDC_FI_SettlementFund"] = 'F' -#成交数据 -defineDict["QDP_FTDC_FI_Trade"] = 'T' -#投资者持仓数据 -defineDict["QDP_FTDC_FI_InvestorPosition"] = 'P' -#投资者分项资金数据 -defineDict["QDP_FTDC_FI_SubEntryFund"] = 'O' -#组合持仓数据 -defineDict["QDP_FTDC_FI_CZCECombinationPos"] = 'C' -#上报保证金监控中心数据 -defineDict["QDP_FTDC_FI_CSRCData"] = 'R' -#郑商所平仓了结数据 -defineDict["QDP_FTDC_FI_CZCEClose"] = 'L' -#郑商所非平仓了结数据 -defineDict["QDP_FTDC_FI_CZCENoClose"] = 'N' -#持仓明细数据 -defineDict["QDP_FTDC_FI_PositionDtl"] = 'D' -#期权执行文件 -defineDict["QDP_FTDC_FI_OptionStrike"] = 'S' -#结算价比对文件 -defineDict["QDP_FTDC_FI_SettlementPriceComparison"] = 'M' -#上期所非持仓变动明细 -defineDict["QDP_FTDC_FI_NonTradePosChange"] = 'B' - -typedefDict["TQdpFtdcFileIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileNameType是一个文件名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFileNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileTypeType是一个文件上传类型类型 -#////////////////////////////////////////////////////////////////////// -#结算 -defineDict["QDP_FTDC_FUT_Settlement"] = '0' -#核对 -defineDict["QDP_FTDC_FUT_Check"] = '1' - -typedefDict["TQdpFtdcFileTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileFormatType是一个文件格式类型 -#////////////////////////////////////////////////////////////////////// -#文本文件(.txt) -defineDict["QDP_FTDC_FFT_Txt"] = '0' -#压缩文件(.zip) -defineDict["QDP_FTDC_FFT_Zip"] = '1' -#DBF文件(.dbf) -defineDict["QDP_FTDC_FFT_DBF"] = '2' - -typedefDict["TQdpFtdcFileFormatType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileUploadStatusType是一个文件状态类型 -#////////////////////////////////////////////////////////////////////// -#上传成功 -defineDict["QDP_FTDC_FUS_SucceedUpload"] = '1' -#上传失败 -defineDict["QDP_FTDC_FUS_FailedUpload"] = '2' -#导入成功 -defineDict["QDP_FTDC_FUS_SucceedLoad"] = '3' -#导入部分成功 -defineDict["QDP_FTDC_FUS_PartSucceedLoad"] = '4' -#导入失败 -defineDict["QDP_FTDC_FUS_FailedLoad"] = '5' - -typedefDict["TQdpFtdcFileUploadStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTransferDirectionType是一个移仓方向类型 -#////////////////////////////////////////////////////////////////////// -#移出 -defineDict["QDP_FTDC_TD_Out"] = '0' -#移入 -defineDict["QDP_FTDC_TD_In"] = '1' - -typedefDict["TQdpFtdcTransferDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUploadModeType是一个上传文件类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUploadModeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAccountIDType是一个投资者帐号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAccountIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankFlagType是一个银行统一标识类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankAccountType是一个银行账户类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankAccountType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOpenNameType是一个银行账户的开户人名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOpenNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOpenBankType是一个银行账户的开户行类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOpenBankType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankNameType是一个银行名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPublishPathType是一个发布路径类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPublishPathType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOperatorIDType是一个操作员代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOperatorIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMonthCountType是一个月份数量类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMonthCountType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAdvanceMonthArrayType是一个月份提前数组类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAdvanceMonthArrayType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDateExprType是一个日期表达式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDateExprType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentIDExprType是一个合约代码表达式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstrumentIDExprType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentNameExprType是一个合约名称表达式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstrumentNameExprType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSpecialCreateRuleType是一个特殊的创建规则类型 -#////////////////////////////////////////////////////////////////////// -#没有特殊创建规则 -defineDict["QDP_FTDC_SC_NoSpecialRule"] = '0' -#不包含春节 -defineDict["QDP_FTDC_SC_NoSpringFestival"] = '1' - -typedefDict["TQdpFtdcSpecialCreateRuleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBasisPriceTypeType是一个挂牌基准价类型类型 -#////////////////////////////////////////////////////////////////////// -#上一合约结算价 -defineDict["QDP_FTDC_IPT_LastSettlement"] = '1' -#上一合约收盘价 -defineDict["QDP_FTDC_IPT_LaseClose"] = '2' - -typedefDict["TQdpFtdcBasisPriceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProductLifePhaseType是一个产品生命周期状态类型 -#////////////////////////////////////////////////////////////////////// -#活跃 -defineDict["QDP_FTDC_PLP_Active"] = '1' -#不活跃 -defineDict["QDP_FTDC_PLP_NonActive"] = '2' -#注销 -defineDict["QDP_FTDC_PLP_Canceled"] = '3' - -typedefDict["TQdpFtdcProductLifePhaseType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDeliveryModeType是一个交割方式类型 -#////////////////////////////////////////////////////////////////////// -#现金交割 -defineDict["QDP_FTDC_DM_CashDeliv"] = '1' -#实物交割 -defineDict["QDP_FTDC_DM_CommodityDeliv"] = '2' - -typedefDict["TQdpFtdcDeliveryModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLogLevelType是一个日志级别类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLogLevelType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProcessNameType是一个存储过程名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProcessNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOperationMemoType是一个操作摘要类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOperationMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundIOTypeType是一个出入金类型类型 -#////////////////////////////////////////////////////////////////////// -#出入金 -defineDict["QDP_FTDC_FIOT_FundIO"] = '1' -#银期转帐 -defineDict["QDP_FTDC_FIOT_Transfer"] = '2' -#银期换汇 -defineDict["QDP_FTDC_FIOT_SwapCurrency"] = '3' - -typedefDict["TQdpFtdcFundIOTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundTypeType是一个资金类型类型 -#////////////////////////////////////////////////////////////////////// -#银行存款 -defineDict["QDP_FTDC_FT_Deposite"] = '1' -#分项资金 -defineDict["QDP_FTDC_FT_ItemFund"] = '2' -#公司调整 -defineDict["QDP_FTDC_FT_Company"] = '3' -#资金内转 -defineDict["QDP_FTDC_FT_InnerTransfer"] = '4' - -typedefDict["TQdpFtdcFundTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundDirectionType是一个出入金方向类型 -#////////////////////////////////////////////////////////////////////// -#入金 -defineDict["QDP_FTDC_FD_In"] = '1' -#出金 -defineDict["QDP_FTDC_FD_Out"] = '2' - -typedefDict["TQdpFtdcFundDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundStatusType是一个资金状态类型 -#////////////////////////////////////////////////////////////////////// -#已录入 -defineDict["QDP_FTDC_FS_Record"] = '1' -#已复核 -defineDict["QDP_FTDC_FS_Check"] = '2' -#已冲销 -defineDict["QDP_FTDC_FS_Charge"] = '3' - -typedefDict["TQdpFtdcFundStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBillNoType是一个票据号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBillNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBillNameType是一个票据名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBillNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPublishStatusType是一个发布状态类型 -#////////////////////////////////////////////////////////////////////// -#未发布 -defineDict["QDP_FTDC_PS_None"] = '1' -#正在发布 -defineDict["QDP_FTDC_PS_Publishing"] = '2' -#已发布 -defineDict["QDP_FTDC_PS_Published"] = '3' - -typedefDict["TQdpFtdcPublishStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEnumValueIDType是一个枚举值代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcEnumValueIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEnumValueTypeType是一个枚举值类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcEnumValueTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEnumValueLabelType是一个枚举值名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcEnumValueLabelType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEnumValueResultType是一个枚举值结果类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcEnumValueResultType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSystemStatusType是一个系统状态类型 -#////////////////////////////////////////////////////////////////////// -#不活跃 -defineDict["QDP_FTDC_ES_NonActive"] = '1' -#启动 -defineDict["QDP_FTDC_ES_Startup"] = '2' -#交易开始初始化 -defineDict["QDP_FTDC_ES_Initialize"] = '3' -#交易完成初始化 -defineDict["QDP_FTDC_ES_Initialized"] = '4' -#收市开始 -defineDict["QDP_FTDC_ES_Close"] = '5' -#收市完成 -defineDict["QDP_FTDC_ES_Closed"] = '6' -#结算 -defineDict["QDP_FTDC_ES_Settlement"] = '7' - -typedefDict["TQdpFtdcSystemStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettlementStatusType是一个结算状态类型 -#////////////////////////////////////////////////////////////////////// -#初始 -defineDict["QDP_FTDC_STS_Initialize"] = '0' -#结算中 -defineDict["QDP_FTDC_STS_Settlementing"] = '1' -#已结算 -defineDict["QDP_FTDC_STS_Settlemented"] = '2' -#结算完成 -defineDict["QDP_FTDC_STS_Finished"] = '3' - -typedefDict["TQdpFtdcSettlementStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRangeIntTypeType是一个限定值类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRangeIntTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRangeIntFromType是一个限定值下限类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRangeIntFromType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRangeIntToType是一个限定值上限类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRangeIntToType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFunctionIDType是一个功能代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFunctionIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFunctionValueCodeType是一个功能编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFunctionValueCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFunctionNameType是一个功能名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFunctionNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRoleIDType是一个角色编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRoleIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRoleNameType是一个角色名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRoleNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDescriptionType是一个描述类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDescriptionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombineIDType是一个组合编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCombineIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombineTypeType是一个组合类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCombineTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorTypeType是一个投资者类型类型 -#////////////////////////////////////////////////////////////////////// -#自然人 -defineDict["QDP_FTDC_CT_Person"] = '0' -#法人 -defineDict["QDP_FTDC_CT_Company"] = '1' -#投资基金 -defineDict["QDP_FTDC_CT_Fund"] = '2' -#特殊法人 -defineDict["QDP_FTDC_CT_SpecialOrgan"] = '3' -#资管户 -defineDict["QDP_FTDC_CT_Asset"] = '4' - -typedefDict["TQdpFtdcInvestorTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerTypeType是一个经纪公司类型类型 -#////////////////////////////////////////////////////////////////////// -#交易会员 -defineDict["QDP_FTDC_BT_Trade"] = '0' -#交易结算会员 -defineDict["QDP_FTDC_BT_TradeSettle"] = '1' - -typedefDict["TQdpFtdcBrokerTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRiskLevelType是一个风险等级类型 -#////////////////////////////////////////////////////////////////////// -#低风险客户 -defineDict["QDP_FTDC_FAS_Low"] = '1' -#普通客户 -defineDict["QDP_FTDC_FAS_Normal"] = '2' -#关注客户 -defineDict["QDP_FTDC_FAS_Focus"] = '3' -#风险客户 -defineDict["QDP_FTDC_FAS_Risk"] = '4' - -typedefDict["TQdpFtdcRiskLevelType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFeeAcceptStyleType是一个手续费收取方式类型 -#////////////////////////////////////////////////////////////////////// -#按交易收取 -defineDict["QDP_FTDC_FAS_ByTrade"] = '1' -#按交割收取 -defineDict["QDP_FTDC_FAS_ByDeliv"] = '2' -#不收 -defineDict["QDP_FTDC_FAS_None"] = '3' -#按指定手续费收取 -defineDict["QDP_FTDC_FAS_FixFee"] = '4' - -typedefDict["TQdpFtdcFeeAcceptStyleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPasswordTypeType是一个密码类型类型 -#////////////////////////////////////////////////////////////////////// -#交易密码 -defineDict["QDP_FTDC_PWDT_Trade"] = '1' -#资金密码 -defineDict["QDP_FTDC_PWDT_Account"] = '2' - -typedefDict["TQdpFtdcPasswordTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAlgorithmType是一个盈亏算法类型 -#////////////////////////////////////////////////////////////////////// -#浮盈浮亏都计算 -defineDict["QDP_FTDC_AG_All"] = '1' -#浮盈不计,浮亏计 -defineDict["QDP_FTDC_AG_OnlyLost"] = '2' -#浮盈计,浮亏不计 -defineDict["QDP_FTDC_AG_OnlyGain"] = '3' -#浮盈浮亏都不计算 -defineDict["QDP_FTDC_AG_None"] = '4' - -typedefDict["TQdpFtdcAlgorithmType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIncludeCloseProfitType是一个是否包含平仓盈利类型 -#////////////////////////////////////////////////////////////////////// -#包含平仓盈利 -defineDict["QDP_FTDC_ICP_Include"] = '0' -#不包含平仓盈利 -defineDict["QDP_FTDC_ICP_NotInclude"] = '2' - -typedefDict["TQdpFtdcIncludeCloseProfitType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAllWithoutTradeType是一个是否受可提比例限制类型 -#////////////////////////////////////////////////////////////////////// -#无仓无成交不受可提比例限制 -defineDict["QDP_FTDC_AWT_Enable"] = '0' -#受可提比例限制 -defineDict["QDP_FTDC_AWT_Disable"] = '2' -#无仓不受可提比例限制 -defineDict["QDP_FTDC_AWT_NoHoldEnable"] = '3' - -typedefDict["TQdpFtdcAllWithoutTradeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommentType是一个盈亏算法说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVersionType是一个版本号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcVersionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeCodeType是一个交易代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeDateType是一个交易日期类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeDateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeTimeType是一个交易时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeSerialType是一个发起方流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeSerialType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeSerialNoType是一个发起方流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeSerialNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureIDType是一个期货公司代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankIDType是一个银行代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankBrchIDType是一个银行分中心代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankBrchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankBranchIDType是一个分中心代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankBranchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOperNoType是一个交易柜员类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOperNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDeviceIDType是一个渠道标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDeviceIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRecordNumType是一个记录数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRecordNumType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureAccountType是一个期货资金账号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureAccountType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFuturePwdFlagType是一个资金密码核对标志类型 -#////////////////////////////////////////////////////////////////////// -#不核对 -defineDict["QDP_FTDC_FPWD_UnCheck"] = '0' -#核对 -defineDict["QDP_FTDC_FPWD_Check"] = '1' - -typedefDict["TQdpFtdcFuturePwdFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTransferTypeType是一个银期转账类型类型 -#////////////////////////////////////////////////////////////////////// -#银行转期货 -defineDict["QDP_FTDC_TT_BankToFuture"] = '0' -#期货转银行 -defineDict["QDP_FTDC_TT_FutureToBank"] = '1' - -typedefDict["TQdpFtdcTransferTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureAccPwdType是一个期货资金密码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureAccPwdType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencyCodeType是一个币种类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencyCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRetCodeType是一个响应代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRetCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRetInfoType是一个响应信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRetInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeAmtType是一个银行总余额类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeAmtType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUseAmtType是一个银行可用余额类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUseAmtType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFetchAmtType是一个银行可取余额类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFetchAmtType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTransferValidFlagType是一个转账有效标志类型 -#////////////////////////////////////////////////////////////////////// -#无效或失败 -defineDict["QDP_FTDC_TVF_Invalid"] = '0' -#有效 -defineDict["QDP_FTDC_TVF_Valid"] = '1' -#冲正 -defineDict["QDP_FTDC_TVF_Reverse"] = '2' - -typedefDict["TQdpFtdcTransferValidFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCertCodeType是一个证件号码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCertCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReasonType是一个事由类型 -#////////////////////////////////////////////////////////////////////// -#错单 -defineDict["QDP_FTDC_RN_CD"] = '0' -#资金在途 -defineDict["QDP_FTDC_RN_ZT"] = '1' -#其它 -defineDict["QDP_FTDC_RN_QT"] = '2' - -typedefDict["TQdpFtdcReasonType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundProjectIDType是一个资金项目编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFundProjectIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSexType是一个性别类型 -#////////////////////////////////////////////////////////////////////// -#未知 -defineDict["QDP_FTDC_SEX_None"] = '0' -#男 -defineDict["QDP_FTDC_SEX_Man"] = '1' -#女 -defineDict["QDP_FTDC_SEX_Woman"] = '2' - -typedefDict["TQdpFtdcSexType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProfessionType是一个职业类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProfessionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcNationalType是一个国籍类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcNationalType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProvinceType是一个省类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProvinceType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRegionType是一个区类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRegionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCountryType是一个国家类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCountryType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLicenseNOType是一个营业执照类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLicenseNOType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCompanyTypeType是一个企业性质类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCompanyTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBusinessScopeType是一个经营范围类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBusinessScopeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCapitalCurrencyType是一个注册资本币种类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCapitalCurrencyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserTypeType是一个用户类型类型 -#////////////////////////////////////////////////////////////////////// -#投资者 -defineDict["QDP_FTDC_UT_Investor"] = '0' -#操作员 -defineDict["QDP_FTDC_UT_Operator"] = '1' -#管理员 -defineDict["QDP_FTDC_UT_SuperUser"] = '2' - -typedefDict["TQdpFtdcUserTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBranchIDType是一个营业部编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBranchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRateTypeType是一个费率类型类型 -#////////////////////////////////////////////////////////////////////// -#保证金率 -defineDict["QDP_FTDC_RATETYPE_MarginRate"] = '2' - -typedefDict["TQdpFtdcRateTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcNoteTypeType是一个通知类型类型 -#////////////////////////////////////////////////////////////////////// -#交易结算单 -defineDict["QDP_FTDC_NOTETYPE_TradeSettleBill"] = '1' -#交易结算月报 -defineDict["QDP_FTDC_NOTETYPE_TradeSettleMonth"] = '2' -#追加保证金通知书 -defineDict["QDP_FTDC_NOTETYPE_CallMarginNotes"] = '3' -#强行平仓通知书 -defineDict["QDP_FTDC_NOTETYPE_ForceCloseNotes"] = '4' -#成交通知书 -defineDict["QDP_FTDC_NOTETYPE_TradeNotes"] = '5' -#交割通知书 -defineDict["QDP_FTDC_NOTETYPE_DelivNotes"] = '6' - -typedefDict["TQdpFtdcNoteTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettlementStyleType是一个结算单方式类型 -#////////////////////////////////////////////////////////////////////// -#逐日盯市 -defineDict["QDP_FTDC_SBS_Day"] = '1' -#逐笔对冲 -defineDict["QDP_FTDC_SBS_Volume"] = '2' - -typedefDict["TQdpFtdcSettlementStyleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerDNSType是一个域名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBrokerDNSType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSentenceType是一个语句类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSentenceType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettlementBillTypeType是一个结算单类型类型 -#////////////////////////////////////////////////////////////////////// -#日报 -defineDict["QDP_FTDC_ST_Day"] = '0' -#月报 -defineDict["QDP_FTDC_ST_Month"] = '1' - -typedefDict["TQdpFtdcSettlementBillTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserRightTypeType是一个客户权限类型类型 -#////////////////////////////////////////////////////////////////////// -#登录 -defineDict["QDP_FTDC_URT_Logon"] = '1' -#银期转帐 -defineDict["QDP_FTDC_URT_Transfer"] = '2' -#邮寄结算单 -defineDict["QDP_FTDC_URT_EMail"] = '3' -#传真结算单 -defineDict["QDP_FTDC_URT_Fax"] = '4' -#条件单 -defineDict["QDP_FTDC_URT_ConditionOrder"] = '5' - -typedefDict["TQdpFtdcUserRightTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMarginPriceTypeType是一个保证金价格类型类型 -#////////////////////////////////////////////////////////////////////// -#昨结算价 -defineDict["QDP_FTDC_MPT_PreSettlementPrice"] = '1' -#最新价 -defineDict["QDP_FTDC_MPT_SettlementPrice"] = '2' -#成交均价 -defineDict["QDP_FTDC_MPT_AveragePrice"] = '3' -#开仓价 -defineDict["QDP_FTDC_MPT_OpenPrice"] = '4' - -typedefDict["TQdpFtdcMarginPriceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBillGenStatusType是一个结算单生成状态类型 -#////////////////////////////////////////////////////////////////////// -#未生成 -defineDict["QDP_FTDC_BGS_None"] = '0' -#生成中 -defineDict["QDP_FTDC_BGS_NoGenerated"] = '1' -#已生成 -defineDict["QDP_FTDC_BGS_Generated"] = '2' - -typedefDict["TQdpFtdcBillGenStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAlgoTypeType是一个算法类型类型 -#////////////////////////////////////////////////////////////////////// -#持仓处理算法 -defineDict["QDP_FTDC_AT_HandlePositionAlgo"] = '1' -#寻找保证金率算法 -defineDict["QDP_FTDC_AT_FindMarginRateAlgo"] = '2' - -typedefDict["TQdpFtdcAlgoTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcHandlePositionAlgoIDType是一个持仓处理算法编号类型 -#////////////////////////////////////////////////////////////////////// -#基本 -defineDict["QDP_FTDC_HPA_Base"] = '1' -#大连商品交易所 -defineDict["QDP_FTDC_HPA_DCE"] = '2' -#郑州商品交易所 -defineDict["QDP_FTDC_HPA_CZCE"] = '3' - -typedefDict["TQdpFtdcHandlePositionAlgoIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFindMarginRateAlgoIDType是一个寻找保证金率算法编号类型 -#////////////////////////////////////////////////////////////////////// -#基本 -defineDict["QDP_FTDC_FMRA_Base"] = '1' -#大连商品交易所 -defineDict["QDP_FTDC_FMRA_DCE"] = '2' -#郑州商品交易所 -defineDict["QDP_FTDC_FMRA_CZCE"] = '3' - -typedefDict["TQdpFtdcFindMarginRateAlgoIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcHandleTradingAccountAlgoIDType是一个资金处理算法编号类型 -#////////////////////////////////////////////////////////////////////// -#基本 -defineDict["QDP_FTDC_HTAA_Base"] = '1' -#大连商品交易所 -defineDict["QDP_FTDC_HTAA_DCE"] = '2' -#郑州商品交易所 -defineDict["QDP_FTDC_HTAA_CZCE"] = '3' - -typedefDict["TQdpFtdcHandleTradingAccountAlgoIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPersonTypeType是一个联系人类型类型 -#////////////////////////////////////////////////////////////////////// -#指定下单人 -defineDict["QDP_FTDC_PST_Order"] = '1' -#开户授权人 -defineDict["QDP_FTDC_PST_Open"] = '2' -#资金调拨人 -defineDict["QDP_FTDC_PST_Fund"] = '3' -#结算单确认人 -defineDict["QDP_FTDC_PST_Settlement"] = '4' -#法人 -defineDict["QDP_FTDC_PST_Company"] = '5' -#法人代表 -defineDict["QDP_FTDC_PST_Corporation"] = '6' -#投资者联系人 -defineDict["QDP_FTDC_PST_LinkMan"] = '7' -#分户管理资产负责人 -defineDict["QDP_FTDC_PST_Ledger"] = '8' -#托(保)管人 -defineDict["QDP_FTDC_PST_Trustee"] = '9' -#托(保)管机构法人代表 -defineDict["QDP_FTDC_PST_TrusteeCorporation"] = 'A' -#托(保)管机构开户授权人 -defineDict["QDP_FTDC_PST_TrusteeOpen"] = 'B' -#托(保)管机构联系人 -defineDict["QDP_FTDC_PST_TrusteeContact"] = 'C' -#境外自然人参考证件 -defineDict["QDP_FTDC_PST_ForeignerRefer"] = 'D' -#法人代表参考证件 -defineDict["QDP_FTDC_PST_CorporationRefer"] = 'E' - -typedefDict["TQdpFtdcPersonTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcQueryInvestorRangeType是一个查询范围类型 -#////////////////////////////////////////////////////////////////////// -#所有 -defineDict["QDP_FTDC_QIR_All"] = '1' -#查询分类 -defineDict["QDP_FTDC_QIR_Group"] = '2' -#单一投资者 -defineDict["QDP_FTDC_QIR_Single"] = '3' - -typedefDict["TQdpFtdcQueryInvestorRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorRiskStatusType是一个投资者风险状态类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_IRS_Normal"] = '1' -#警告 -defineDict["QDP_FTDC_IRS_Warn"] = '2' -#追保 -defineDict["QDP_FTDC_IRS_Call"] = '3' -#强平 -defineDict["QDP_FTDC_IRS_Force"] = '4' -#异常 -defineDict["QDP_FTDC_IRS_Exception"] = '5' - -typedefDict["TQdpFtdcInvestorRiskStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLegIDType是一个单腿编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLegIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLegMultipleType是一个单腿乘数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLegMultipleType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcImplyLevelType是一个派生层数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcImplyLevelType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClearAccountType是一个结算账户类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClearAccountType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganNOType是一个结算账户类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrganNOType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClearbarchIDType是一个结算账户联行号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClearbarchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserEventTypeType是一个用户事件类型类型 -#////////////////////////////////////////////////////////////////////// -#登录 -defineDict["QDP_FTDC_UET_Login"] = '1' -#登出 -defineDict["QDP_FTDC_UET_Logout"] = '2' -#交易成功 -defineDict["QDP_FTDC_UET_Trading"] = '3' -#交易失败 -defineDict["QDP_FTDC_UET_TradingError"] = '4' -#修改密码 -defineDict["QDP_FTDC_UET_UpdatePassword"] = '5' -#客户端认证 -defineDict["QDP_FTDC_UET_Authenticate"] = '6' -#其他 -defineDict["QDP_FTDC_UET_Other"] = '9' - -typedefDict["TQdpFtdcUserEventTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserEventInfoType是一个用户事件信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserEventInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCloseStyleType是一个平仓方式类型 -#////////////////////////////////////////////////////////////////////// -#先开先平 -defineDict["QDP_FTDC_ICS_Close"] = '0' -#先平今再平昨 -defineDict["QDP_FTDC_ICS_CloseToday"] = '1' - -typedefDict["TQdpFtdcCloseStyleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStatModeType是一个统计方式类型 -#////////////////////////////////////////////////////////////////////// -#---- -defineDict["QDP_FTDC_SM_Non"] = '0' -#按合约统计 -defineDict["QDP_FTDC_SM_Instrument"] = '1' -#按产品统计 -defineDict["QDP_FTDC_SM_Product"] = '2' -#按投资者统计 -defineDict["QDP_FTDC_SM_Investor"] = '3' - -typedefDict["TQdpFtdcStatModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParkedOrderStatusType是一个预埋单状态类型 -#////////////////////////////////////////////////////////////////////// -#未发送 -defineDict["QDP_FTDC_PAOS_NotSend"] = '1' -#已发送 -defineDict["QDP_FTDC_PAOS_Send"] = '2' -#已删除 -defineDict["QDP_FTDC_PAOS_Deleted"] = '3' - -typedefDict["TQdpFtdcParkedOrderStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParkedOrderIDType是一个预埋报单编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcParkedOrderIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParkedOrderActionIDType是一个预埋撤单编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcParkedOrderActionIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVirDealStatusType是一个处理状态类型 -#////////////////////////////////////////////////////////////////////// -#正在处理 -defineDict["QDP_FTDC_VDS_Dealing"] = '1' -#处理成功 -defineDict["QDP_FTDC_VDS_DeaclSucceed"] = '2' - -typedefDict["TQdpFtdcVirDealStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrgSystemIDType是一个原有系统代码类型 -#////////////////////////////////////////////////////////////////////// -#综合交易平台 -defineDict["QDP_FTDC_ORGS_Standard"] = '0' -#易盛系统 -defineDict["QDP_FTDC_ORGS_ESunny"] = '1' -#金仕达V6系统 -defineDict["QDP_FTDC_ORGS_KingStarV6"] = '2' - -typedefDict["TQdpFtdcOrgSystemIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVirTradeStatusType是一个交易状态类型 -#////////////////////////////////////////////////////////////////////// -#正常处理中 -defineDict["QDP_FTDC_VTS_NaturalDeal"] = '0' -#成功结束 -defineDict["QDP_FTDC_VTS_SucceedEnd"] = '1' -#失败结束 -defineDict["QDP_FTDC_VTS_FailedEND"] = '2' -#异常中 -defineDict["QDP_FTDC_VTS_Exception"] = '3' -#已人工异常处理 -defineDict["QDP_FTDC_VTS_ManualDeal"] = '4' -#通讯异常 ,请人工处理 -defineDict["QDP_FTDC_VTS_MesException"] = '5' -#系统出错,请人工处理 -defineDict["QDP_FTDC_VTS_SysException"] = '6' - -typedefDict["TQdpFtdcVirTradeStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVirBankAccTypeType是一个银行帐户类型类型 -#////////////////////////////////////////////////////////////////////// -#存折 -defineDict["QDP_FTDC_VBAT_BankBook"] = '1' -#储蓄卡 -defineDict["QDP_FTDC_VBAT_BankCard"] = '2' -#信用卡 -defineDict["QDP_FTDC_VBAT_CreditCard"] = '3' - -typedefDict["TQdpFtdcVirBankAccTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVirementStatusType是一个银行帐户类型类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_VMS_Natural"] = '0' -#销户 -defineDict["QDP_FTDC_VMS_Canceled"] = '9' - -typedefDict["TQdpFtdcVirementStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVirementAvailAbilityType是一个有效标志类型 -#////////////////////////////////////////////////////////////////////// -#未确认 -defineDict["QDP_FTDC_VAA_NoAvailAbility"] = '0' -#有效 -defineDict["QDP_FTDC_VAA_AvailAbility"] = '1' -#冲正 -defineDict["QDP_FTDC_VAA_Repeal"] = '2' - -typedefDict["TQdpFtdcVirementAvailAbilityType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcVirementTradeCodeType是一个交易代码类型 -#////////////////////////////////////////////////////////////////////// -#银行发起银行资金转期货 -defineDict["QDP_FTDC_VTC_BankBankToFuture"] = '102001' -#银行发起期货资金转银行 -defineDict["QDP_FTDC_VTC_BankFutureToBank"] = '102002' -#期货发起银行资金转期货 -defineDict["QDP_FTDC_VTC_FutureBankToFuture"] = '202001' -#期货发起期货资金转银行 -defineDict["QDP_FTDC_VTC_FutureFutureToBank"] = '202002' - -typedefDict["TQdpFtdcVirementTradeCodeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPhotoTypeNameType是一个影像类型名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPhotoTypeNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPhotoTypeIDType是一个影像类型代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPhotoTypeIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPhotoNameType是一个影像名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPhotoNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTopicIDType是一个主题代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTopicIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReportTypeIDType是一个交易报告类型标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcReportTypeIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCharacterIDType是一个交易特征代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCharacterIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLParamIDType是一个参数代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLParamIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLInvestorTypeType是一个投资者类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLInvestorTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLIdCardTypeType是一个证件类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLIdCardTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLTradeDirectType是一个资金进出方向类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLTradeDirectType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLTradeModelType是一个资金进出方式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLTradeModelType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLParamIDType是一个参数代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLParamIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLOpParamValueType是一个业务参数代码值类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLOpParamValueType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLCustomerCardTypeType是一个客户身份证件/证明文件类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLCustomerCardTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLInstitutionNameType是一个金融机构网点名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLInstitutionNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLDistrictIDType是一个金融机构网点所在地区行政区划代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLDistrictIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLRelationShipType是一个金融机构网点与大额交易的关系类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLRelationShipType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLInstitutionTypeType是一个金融机构网点代码类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLInstitutionTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLInstitutionIDType是一个金融机构网点代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLInstitutionIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLAccountTypeType是一个账户类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLAccountTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLTradingTypeType是一个交易方式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLTradingTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLTransactClassType是一个涉外收支交易分类与代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLTransactClassType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLCapitalIOType是一个资金收付标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLCapitalIOType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLSiteType是一个交易地点类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLSiteType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLCapitalPurposeType是一个资金用途类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLCapitalPurposeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLReportTypeType是一个报文类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLReportTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLSerialNoType是一个编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLSerialNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLStatusType是一个状态类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLStatusType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLGenStatusType是一个Aml生成方式类型 -#////////////////////////////////////////////////////////////////////// -#程序生成 -defineDict["QDP_FTDC_GEN_Program"] = '0' -#人工生成 -defineDict["QDP_FTDC_GEN_HandWork"] = '1' - -typedefDict["TQdpFtdcAMLGenStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLSeqCodeType是一个业务标识号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLSeqCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLFileNameType是一个AML文件名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLFileNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLMoneyType是一个反洗钱资金类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLMoneyType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLFileAmountType是一个反洗钱资金类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLFileAmountType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCFMMCKeyType是一个密钥类型(保证金监管)类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCFMMCKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCFMMCTokenType是一个令牌类型(保证金监管)类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCFMMCTokenType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCFMMCKeyKindType是一个动态密钥类别(保证金监管)类型 -#////////////////////////////////////////////////////////////////////// -#主动请求更新 -defineDict["QDP_FTDC_CFMMCKK_REQUEST"] = 'R' -#CFMMC自动更新 -defineDict["QDP_FTDC_CFMMCKK_AUTO"] = 'A' -#CFMMC手动更新 -defineDict["QDP_FTDC_CFMMCKK_MANUAL"] = 'M' - -typedefDict["TQdpFtdcCFMMCKeyKindType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLReportNameType是一个报文名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAMLReportNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBFComdTypeType是一个DBF命令类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBFComdTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBFComTimeType是一个DBF时间类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBFComTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBFComNoType是一个DBF流水号类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBFComNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBFFdNameType是一个DBF字段类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBFFdNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBFFdContentType是一个DBF字段内容类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBFFdContentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIndividualNameType是一个个人姓名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIndividualNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencyIDType是一个币种代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencyIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCustNumberType是一个客户编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCustNumberType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganCodeType是一个机构编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrganCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganNameType是一个机构名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrganNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSuperOrganCodeType是一个上级机构编码,即期货公司总部、银行总行类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSuperOrganCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSubBranchIDType是一个分支机构类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSubBranchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSubBranchNameType是一个分支机构名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSubBranchNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBranchNetCodeType是一个机构网点号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBranchNetCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBranchNetNameType是一个机构网点名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBranchNetNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganFlagType是一个机构标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOrganFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankCodingForFutureType是一个银行对期货公司的编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankCodingForFutureType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankReturnCodeType是一个银行对返回码的定义类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankReturnCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPlateReturnCodeType是一个银期转帐平台对返回码的定义类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPlateReturnCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankSubBranchIDType是一个银行分支机构编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankSubBranchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureBranchIDType是一个期货分支机构编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureBranchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReturnCodeType是一个返回代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcReturnCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOperatorCodeType是一个操作员类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOperatorCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClearDepIDType是一个机构结算帐户机构号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClearDepIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClearBrchIDType是一个机构结算帐户联行号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClearBrchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClearNameType是一个机构结算帐户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClearNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankAccountNameType是一个银行帐户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankAccountNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvDepIDType是一个机构投资人账号机构号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvDepIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvBrchIDType是一个机构投资人联行号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvBrchIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMessageFormatVersionType是一个信息格式版本类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMessageFormatVersionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDigestType是一个摘要类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDigestType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAuthenticDataType是一个认证数据类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAuthenticDataType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPasswordKeyType是一个密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPasswordKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureAccountNameType是一个期货帐户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureAccountNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMobilePhoneType是一个手机类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcMobilePhoneType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureMainKeyType是一个期货公司主密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureMainKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureWorkKeyType是一个期货公司工作密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureWorkKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureTransKeyType是一个期货公司传输密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureTransKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankMainKeyType是一个银行主密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankMainKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankWorkKeyType是一个银行工作密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankWorkKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankTransKeyType是一个银行传输密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankTransKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankServerDescriptionType是一个银行服务器描述信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankServerDescriptionType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAddInfoType是一个附加信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAddInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDescrInfoForReturnCodeType是一个返回码描述类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDescrInfoForReturnCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCountryCodeType是一个国家代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCountryCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSerialType是一个流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSerialType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPlateSerialType是一个平台流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPlateSerialType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankSerialType是一个银行流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankSerialType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCorrectSerialType是一个被冲正交易流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCorrectSerialType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureSerialType是一个期货公司流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureSerialType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcApplicationIDType是一个应用标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcApplicationIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankProxyIDType是一个银行代理标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankProxyIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTCoreIDType是一个银期转帐核心系统标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBTCoreIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcServerPortType是一个服务端口号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcServerPortType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRepealedTimesType是一个已经冲正次数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRepealedTimesType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRepealTimeIntervalType是一个冲正时间间隔类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRepealTimeIntervalType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTotalTimesType是一个每日累计转帐次数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTotalTimesType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTRequestIDType是一个请求ID类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBTRequestIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTIDType是一个交易ID类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeAmountType是一个交易金额(元)类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeAmountType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCustFeeType是一个应收客户费用(元)类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCustFeeType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureFeeType是一个应收期货公司费用(元)类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFutureFeeType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSingleMaxAmtType是一个单笔最高限额类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSingleMaxAmtType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSingleMinAmtType是一个单笔最低限额类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSingleMinAmtType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTotalAmtType是一个每日累计转帐额度类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTotalAmtType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCertificationTypeType是一个证件类型类型 -#////////////////////////////////////////////////////////////////////// -#身份证 -defineDict["QDP_FTDC_CFT_IDCard"] = '0' -#护照 -defineDict["QDP_FTDC_CFT_Passport"] = '1' -#军官证 -defineDict["QDP_FTDC_CFT_OfficerIDCard"] = '2' -#士兵证 -defineDict["QDP_FTDC_CFT_SoldierIDCard"] = '3' -#回乡证 -defineDict["QDP_FTDC_CFT_HomeComingCard"] = '4' -#户口簿 -defineDict["QDP_FTDC_CFT_HouseholdRegister"] = '5' -#营业执照号 -defineDict["QDP_FTDC_CFT_LicenseNo"] = '6' -#组织机构代码证 -defineDict["QDP_FTDC_CFT_InstitutionCodeCard"] = '7' -#临时营业执照号 -defineDict["QDP_FTDC_CFT_TempLicenseNo"] = '8' -#民办非企业登记证书 -defineDict["QDP_FTDC_CFT_NoEnterpriseLicenseNo"] = '9' -#其他证件 -defineDict["QDP_FTDC_CFT_OtherCard"] = 'x' -#主管部门批文 -defineDict["QDP_FTDC_CFT_SuperDepAgree"] = 'a' - -typedefDict["TQdpFtdcCertificationTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileBusinessCodeType是一个文件业务功能类型 -#////////////////////////////////////////////////////////////////////// -#其他 -defineDict["QDP_FTDC_FBC_Others"] = '0' -#转账交易明细对账 -defineDict["QDP_FTDC_FBC_TransferDetails"] = '1' -#客户账户状态对账 -defineDict["QDP_FTDC_FBC_CustAccStatus"] = '2' -#账户类交易明细对账 -defineDict["QDP_FTDC_FBC_AccountTradeDetails"] = '3' -#期货账户信息变更明细对账 -defineDict["QDP_FTDC_FBC_FutureAccountChangeInfoDetails"] = '4' -#客户资金台账余额明细对账 -defineDict["QDP_FTDC_FBC_CustMoneyDetail"] = '5' -#客户销户结息明细对账 -defineDict["QDP_FTDC_FBC_CustCancelAccountInfo"] = '6' -#客户资金余额对账结果 -defineDict["QDP_FTDC_FBC_CustMoneyResult"] = '7' -#其它对账异常结果文件 -defineDict["QDP_FTDC_FBC_OthersExceptionResult"] = '8' -#客户结息净额明细 -defineDict["QDP_FTDC_FBC_CustInterestNetMoneyDetails"] = '9' -#客户资金交收明细 -defineDict["QDP_FTDC_FBC_CustMoneySendAndReceiveDetails"] = 'a' -#法人存管银行资金交收汇总 -defineDict["QDP_FTDC_FBC_CorporationMoneyTotal"] = 'b' -#主体间资金交收汇总 -defineDict["QDP_FTDC_FBC_MainbodyMoneyTotal"] = 'c' -#总分平衡监管数据 -defineDict["QDP_FTDC_FBC_MainPartMonitorData"] = 'd' -#存管银行备付金余额 -defineDict["QDP_FTDC_FBC_PreparationMoney"] = 'e' -#协办存管银行资金监管数据 -defineDict["QDP_FTDC_FBC_BankMoneyMonitorData"] = 'f' - -typedefDict["TQdpFtdcFileBusinessCodeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCashExchangeCodeType是一个汇钞标志类型 -#////////////////////////////////////////////////////////////////////// -#汇 -defineDict["QDP_FTDC_CEC_Exchange"] = '1' -#钞 -defineDict["QDP_FTDC_CEC_Cash"] = '2' - -typedefDict["TQdpFtdcCashExchangeCodeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcYesNoIndicatorType是一个是或否标识类型 -#////////////////////////////////////////////////////////////////////// -#是 -defineDict["QDP_FTDC_YNI_Yes"] = '0' -#否 -defineDict["QDP_FTDC_YNI_No"] = '1' - -typedefDict["TQdpFtdcYesNoIndicatorType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBanlanceTypeType是一个余额类型类型 -#////////////////////////////////////////////////////////////////////// -#当前余额 -defineDict["QDP_FTDC_BLT_CurrentMoney"] = '0' -#可用余额 -defineDict["QDP_FTDC_BLT_UsableMoney"] = '1' -#可取余额 -defineDict["QDP_FTDC_BLT_FetchableMoney"] = '2' -#冻结余额 -defineDict["QDP_FTDC_BLT_FreezeMoney"] = '3' - -typedefDict["TQdpFtdcBanlanceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcGenderType是一个性别类型 -#////////////////////////////////////////////////////////////////////// -#未知状态 -defineDict["QDP_FTDC_GD_Unknown"] = '0' -#男 -defineDict["QDP_FTDC_GD_Male"] = '1' -#女 -defineDict["QDP_FTDC_GD_Female"] = '2' - -typedefDict["TQdpFtdcGenderType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFeePayFlagType是一个费用支付标志类型 -#////////////////////////////////////////////////////////////////////// -#由受益方支付费用 -defineDict["QDP_FTDC_FPF_BEN"] = '0' -#由发送方支付费用 -defineDict["QDP_FTDC_FPF_OUR"] = '1' -#由发送方支付发起的费用,受益方支付接受的费用 -defineDict["QDP_FTDC_FPF_SHA"] = '2' - -typedefDict["TQdpFtdcFeePayFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPassWordKeyTypeType是一个密钥类型类型 -#////////////////////////////////////////////////////////////////////// -#交换密钥 -defineDict["QDP_FTDC_PWKT_ExchangeKey"] = '0' -#密码密钥 -defineDict["QDP_FTDC_PWKT_PassWordKey"] = '1' -#MAC密钥 -defineDict["QDP_FTDC_PWKT_MACKey"] = '2' -#报文密钥 -defineDict["QDP_FTDC_PWKT_MessageKey"] = '3' - -typedefDict["TQdpFtdcPassWordKeyTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTPassWordTypeType是一个密码类型类型 -#////////////////////////////////////////////////////////////////////// -#查询 -defineDict["QDP_FTDC_PWT_Query"] = '0' -#取款 -defineDict["QDP_FTDC_PWT_Fetch"] = '1' -#转帐 -defineDict["QDP_FTDC_PWT_Transfer"] = '2' -#交易 -defineDict["QDP_FTDC_PWT_Trade"] = '3' - -typedefDict["TQdpFtdcFBTPassWordTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTEncryModeType是一个加密方式类型 -#////////////////////////////////////////////////////////////////////// -#不加密 -defineDict["QDP_FTDC_EM_NoEncry"] = '0' -#DES -defineDict["QDP_FTDC_EM_DES"] = '1' -#3DES -defineDict["QDP_FTDC_EM_3DES"] = '2' - -typedefDict["TQdpFtdcFBTEncryModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankRepealFlagType是一个银行冲正标志类型 -#////////////////////////////////////////////////////////////////////// -#银行无需自动冲正 -defineDict["QDP_FTDC_BRF_BankNotNeedRepeal"] = '0' -#银行待自动冲正 -defineDict["QDP_FTDC_BRF_BankWaitingRepeal"] = '1' -#银行已自动冲正 -defineDict["QDP_FTDC_BRF_BankBeenRepealed"] = '2' - -typedefDict["TQdpFtdcBankRepealFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerRepealFlagType是一个期商冲正标志类型 -#////////////////////////////////////////////////////////////////////// -#期商无需自动冲正 -defineDict["QDP_FTDC_BRORF_BrokerNotNeedRepeal"] = '0' -#期商待自动冲正 -defineDict["QDP_FTDC_BRORF_BrokerWaitingRepeal"] = '1' -#期商已自动冲正 -defineDict["QDP_FTDC_BRORF_BrokerBeenRepealed"] = '2' - -typedefDict["TQdpFtdcBrokerRepealFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstitutionTypeType是一个机构类别类型 -#////////////////////////////////////////////////////////////////////// -#银行 -defineDict["QDP_FTDC_TS_Bank"] = '0' -#期商 -defineDict["QDP_FTDC_TS_Future"] = '1' -#券商 -defineDict["QDP_FTDC_TS_Store"] = '2' - -typedefDict["TQdpFtdcInstitutionTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLastFragmentType是一个最后分片标志类型 -#////////////////////////////////////////////////////////////////////// -#是最后分片 -defineDict["QDP_FTDC_LF_Yes"] = '0' -#不是最后分片 -defineDict["QDP_FTDC_LF_No"] = '1' - -typedefDict["TQdpFtdcLastFragmentType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankAccStatusType是一个银行账户状态类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_BAS_Normal"] = '0' -#冻结 -defineDict["QDP_FTDC_BAS_Freeze"] = '1' -#挂失 -defineDict["QDP_FTDC_BAS_ReportLoss"] = '2' - -typedefDict["TQdpFtdcBankAccStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMoneyAccountStatusType是一个资金账户状态类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_MAS_Normal"] = '0' -#销户 -defineDict["QDP_FTDC_MAS_Cancel"] = '1' - -typedefDict["TQdpFtdcMoneyAccountStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcManageStatusType是一个存管状态类型 -#////////////////////////////////////////////////////////////////////// -#指定存管 -defineDict["QDP_FTDC_MSS_Point"] = '0' -#预指定 -defineDict["QDP_FTDC_MSS_PrePoint"] = '1' -#撤销指定 -defineDict["QDP_FTDC_MSS_CancelPoint"] = '2' - -typedefDict["TQdpFtdcManageStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSystemTypeType是一个应用系统类型类型 -#////////////////////////////////////////////////////////////////////// -#银期转帐 -defineDict["QDP_FTDC_SYT_FutureBankTransfer"] = '0' -#银证转帐 -defineDict["QDP_FTDC_SYT_StockBankTransfer"] = '1' -#第三方存管 -defineDict["QDP_FTDC_SYT_TheThirdPartStore"] = '2' - -typedefDict["TQdpFtdcSystemTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTxnEndFlagType是一个银期转帐划转结果标志类型 -#////////////////////////////////////////////////////////////////////// -#正常处理中 -defineDict["QDP_FTDC_TEF_NormalProcessing"] = '0' -#成功结束 -defineDict["QDP_FTDC_TEF_Success"] = '1' -#失败结束 -defineDict["QDP_FTDC_TEF_Failed"] = '2' -#异常中 -defineDict["QDP_FTDC_TEF_Abnormal"] = '3' -#已人工异常处理 -defineDict["QDP_FTDC_TEF_ManualProcessedForException"] = '4' -#通讯异常 ,请人工处理 -defineDict["QDP_FTDC_TEF_CommuFailedNeedManualProcess"] = '5' -#系统出错,请人工处理 -defineDict["QDP_FTDC_TEF_SysErrorNeedManualProcess"] = '6' - -typedefDict["TQdpFtdcTxnEndFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProcessStatusType是一个银期转帐服务处理状态类型 -#////////////////////////////////////////////////////////////////////// -#未处理 -defineDict["QDP_FTDC_PSS_NotProcess"] = '0' -#开始处理 -defineDict["QDP_FTDC_PSS_StartProcess"] = '1' -#处理完成 -defineDict["QDP_FTDC_PSS_Finished"] = '2' - -typedefDict["TQdpFtdcProcessStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCustTypeType是一个客户类型类型 -#////////////////////////////////////////////////////////////////////// -#自然人 -defineDict["QDP_FTDC_CUSTT_Person"] = '0' -#机构户 -defineDict["QDP_FTDC_CUSTT_Institution"] = '1' - -typedefDict["TQdpFtdcCustTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTTransferDirectionType是一个银期转帐方向类型 -#////////////////////////////////////////////////////////////////////// -#入金,银行转期货 -defineDict["QDP_FTDC_FBTTD_FromBankToFuture"] = '1' -#出金,期货转银行 -defineDict["QDP_FTDC_FBTTD_FromFutureToBank"] = '2' - -typedefDict["TQdpFtdcFBTTransferDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOpenOrDestroyType是一个开销户类别类型 -#////////////////////////////////////////////////////////////////////// -#开户 -defineDict["QDP_FTDC_OOD_Open"] = '1' -#销户 -defineDict["QDP_FTDC_OOD_Destroy"] = '0' - -typedefDict["TQdpFtdcOpenOrDestroyType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAvailabilityFlagType是一个有效标志类型 -#////////////////////////////////////////////////////////////////////// -#未确认 -defineDict["QDP_FTDC_AVAF_Invalid"] = '0' -#有效 -defineDict["QDP_FTDC_AVAF_Valid"] = '1' -#冲正 -defineDict["QDP_FTDC_AVAF_Repeal"] = '2' - -typedefDict["TQdpFtdcAvailabilityFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganTypeType是一个机构类型类型 -#////////////////////////////////////////////////////////////////////// -#银行代理 -defineDict["QDP_FTDC_OT_Bank"] = '1' -#交易前置 -defineDict["QDP_FTDC_OT_Future"] = '2' -#银期转帐平台管理 -defineDict["QDP_FTDC_OT_PlateForm"] = '9' - -typedefDict["TQdpFtdcOrganTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganLevelType是一个机构级别类型 -#////////////////////////////////////////////////////////////////////// -#银行总行或期商总部 -defineDict["QDP_FTDC_OL_HeadQuarters"] = '1' -#银行分中心或期货公司营业部 -defineDict["QDP_FTDC_OL_Branch"] = '2' - -typedefDict["TQdpFtdcOrganLevelType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProtocalIDType是一个协议类型类型 -#////////////////////////////////////////////////////////////////////// -#期商协议 -defineDict["QDP_FTDC_PID_FutureProtocal"] = '0' -#工行协议 -defineDict["QDP_FTDC_PID_ICBCProtocal"] = '1' -#农行协议 -defineDict["QDP_FTDC_PID_ABCProtocal"] = '2' -#中国银行协议 -defineDict["QDP_FTDC_PID_CBCProtocal"] = '3' -#建行协议 -defineDict["QDP_FTDC_PID_CCBProtocal"] = '4' -#交行协议 -defineDict["QDP_FTDC_PID_BOCOMProtocal"] = '5' -#银期转帐平台协议 -defineDict["QDP_FTDC_PID_FBTPlateFormProtocal"] = 'X' - -typedefDict["TQdpFtdcProtocalIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcConnectModeType是一个套接字连接方式类型 -#////////////////////////////////////////////////////////////////////// -#短连接 -defineDict["QDP_FTDC_CM_ShortConnect"] = '0' -#长连接 -defineDict["QDP_FTDC_CM_LongConnect"] = '1' - -typedefDict["TQdpFtdcConnectModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSyncModeType是一个套接字通信方式类型 -#////////////////////////////////////////////////////////////////////// -#异步 -defineDict["QDP_FTDC_SRM_ASync"] = '0' -#同步 -defineDict["QDP_FTDC_SRM_Sync"] = '1' - -typedefDict["TQdpFtdcSyncModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankAccTypeType是一个银行帐号类型类型 -#////////////////////////////////////////////////////////////////////// -#银行存折 -defineDict["QDP_FTDC_BAT_BankBook"] = '1' -#储蓄卡 -defineDict["QDP_FTDC_BAT_SavingCard"] = '2' -#信用卡 -defineDict["QDP_FTDC_BAT_CreditCard"] = '3' - -typedefDict["TQdpFtdcBankAccTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureAccTypeType是一个期货公司帐号类型类型 -#////////////////////////////////////////////////////////////////////// -#银行存折 -defineDict["QDP_FTDC_FAT_BankBook"] = '1' -#储蓄卡 -defineDict["QDP_FTDC_FAT_SavingCard"] = '2' -#信用卡 -defineDict["QDP_FTDC_FAT_CreditCard"] = '3' - -typedefDict["TQdpFtdcFutureAccTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOrganStatusType是一个接入机构状态类型 -#////////////////////////////////////////////////////////////////////// -#启用 -defineDict["QDP_FTDC_OS_Ready"] = '0' -#签到 -defineDict["QDP_FTDC_OS_CheckIn"] = '1' -#签退 -defineDict["QDP_FTDC_OS_CheckOut"] = '2' -#对帐文件到达 -defineDict["QDP_FTDC_OS_CheckFileArrived"] = '3' -#对帐 -defineDict["QDP_FTDC_OS_CheckDetail"] = '4' -#日终清理 -defineDict["QDP_FTDC_OS_DayEndClean"] = '5' -#注销 -defineDict["QDP_FTDC_OS_Invalid"] = '9' - -typedefDict["TQdpFtdcOrganStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCCBFeeModeType是一个建行收费模式类型 -#////////////////////////////////////////////////////////////////////// -#按金额扣收 -defineDict["QDP_FTDC_CCBFM_ByAmount"] = '1' -#按月扣收 -defineDict["QDP_FTDC_CCBFM_ByMonth"] = '2' - -typedefDict["TQdpFtdcCCBFeeModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommApiTypeType是一个通讯API类型类型 -#////////////////////////////////////////////////////////////////////// -#客户端 -defineDict["QDP_FTDC_CAPIT_Client"] = '1' -#服务端 -defineDict["QDP_FTDC_CAPIT_Server"] = '2' -#交易系统的UserApi -defineDict["QDP_FTDC_CAPIT_UserApi"] = '3' - -typedefDict["TQdpFtdcCommApiTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcServiceIDType是一个服务编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcServiceIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcServiceLineNoType是一个服务线路编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcServiceLineNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcServiceNameType是一个服务名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcServiceNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLinkStatusType是一个连接状态类型 -#////////////////////////////////////////////////////////////////////// -#已经连接 -defineDict["QDP_FTDC_LS_Connected"] = '1' -#没有连接 -defineDict["QDP_FTDC_LS_Disconnected"] = '2' - -typedefDict["TQdpFtdcLinkStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommApiPointerType是一个通讯API指针类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommApiPointerType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPwdFlagType是一个密码核对标志类型 -#////////////////////////////////////////////////////////////////////// -#不核对 -defineDict["QDP_FTDC_BPWDF_NoCheck"] = '0' -#明文核对 -defineDict["QDP_FTDC_BPWDF_BlankCheck"] = '1' -#密文核对 -defineDict["QDP_FTDC_BPWDF_EncryptCheck"] = '2' - -typedefDict["TQdpFtdcPwdFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSecuAccTypeType是一个期货帐号类型类型 -#////////////////////////////////////////////////////////////////////// -#资金帐号 -defineDict["QDP_FTDC_SAT_AccountID"] = '1' -#资金卡号 -defineDict["QDP_FTDC_SAT_CardID"] = '2' -#上海股东帐号 -defineDict["QDP_FTDC_SAT_SHStockholderID"] = '3' -#深圳股东帐号 -defineDict["QDP_FTDC_SAT_SZStockholderID"] = '4' - -typedefDict["TQdpFtdcSecuAccTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTransferStatusType是一个转账交易状态类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_TRFS_Normal"] = '0' -#被冲正 -defineDict["QDP_FTDC_TRFS_Repealed"] = '1' - -typedefDict["TQdpFtdcTransferStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSponsorTypeType是一个发起方类型 -#////////////////////////////////////////////////////////////////////// -#期商 -defineDict["QDP_FTDC_SPTYPE_Broker"] = '0' -#银行 -defineDict["QDP_FTDC_SPTYPE_Bank"] = '1' - -typedefDict["TQdpFtdcSponsorTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReqRspTypeType是一个请求响应类别类型 -#////////////////////////////////////////////////////////////////////// -#请求 -defineDict["QDP_FTDC_REQRSP_Request"] = '0' -#响应 -defineDict["QDP_FTDC_REQRSP_Response"] = '1' - -typedefDict["TQdpFtdcReqRspTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTUserEventTypeType是一个银期转帐用户事件类型类型 -#////////////////////////////////////////////////////////////////////// -#签到 -defineDict["QDP_FTDC_FBTUET_SignIn"] = '0' -#银行转期货 -defineDict["QDP_FTDC_FBTUET_FromBankToFuture"] = '1' -#期货转银行 -defineDict["QDP_FTDC_FBTUET_FromFutureToBank"] = '2' -#开户 -defineDict["QDP_FTDC_FBTUET_OpenAccount"] = '3' -#销户 -defineDict["QDP_FTDC_FBTUET_CancelAccount"] = '4' -#变更银行账户 -defineDict["QDP_FTDC_FBTUET_ChangeAccount"] = '5' -#冲正银行转期货 -defineDict["QDP_FTDC_FBTUET_RepealFromBankToFuture"] = '6' -#冲正期货转银行 -defineDict["QDP_FTDC_FBTUET_RepealFromFutureToBank"] = '7' -#查询银行账户 -defineDict["QDP_FTDC_FBTUET_QueryBankAccount"] = '8' -#查询期货账户 -defineDict["QDP_FTDC_FBTUET_QueryFutureAccount"] = '9' -#签退 -defineDict["QDP_FTDC_FBTUET_SignOut"] = 'A' -#密钥同步 -defineDict["QDP_FTDC_FBTUET_SyncKey"] = 'B' -#其他 -defineDict["QDP_FTDC_FBTUET_Other"] = 'Z' - -typedefDict["TQdpFtdcFBTUserEventTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankIDByBankType是一个银行自己的编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankIDByBankType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankOperNoType是一个银行操作员号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankOperNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankCustNoType是一个银行客户号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankCustNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBOPSeqNoType是一个递增的序列号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBOPSeqNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTableNameType是一个FBT表名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTableNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPKNameType是一个FBT表操作主键名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPKNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPKValueType是一个FBT表操作主键值类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPKValueType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBOperationType是一个记录操作类型类型 -#////////////////////////////////////////////////////////////////////// -#插入 -defineDict["QDP_FTDC_DBOP_Insert"] = '0' -#更新 -defineDict["QDP_FTDC_DBOP_Update"] = '1' -#删除 -defineDict["QDP_FTDC_DBOP_Delete"] = '2' - -typedefDict["TQdpFtdcDBOperationType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSyncFlagType是一个同步标记类型 -#////////////////////////////////////////////////////////////////////// -#已同步 -defineDict["QDP_FTDC_SYNF_Yes"] = '0' -#未同步 -defineDict["QDP_FTDC_SYNF_No"] = '1' - -typedefDict["TQdpFtdcSyncFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTargetIDType是一个同步目标编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTargetIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSyncTypeType是一个同步类型类型 -#////////////////////////////////////////////////////////////////////// -#一次同步 -defineDict["QDP_FTDC_SYNT_OneOffSync"] = '0' -#定时同步 -defineDict["QDP_FTDC_SYNT_TimerSync"] = '1' -#定时完全同步 -defineDict["QDP_FTDC_SYNT_TimerFullSync"] = '2' - -typedefDict["TQdpFtdcSyncTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBETimeType是一个各种换汇时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBETimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEBankNoType是一个换汇银行行号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEBankNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBECertNoType是一个换汇凭证号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBECertNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExDirectionType是一个换汇方向类型 -#////////////////////////////////////////////////////////////////////// -#结汇 -defineDict["QDP_FTDC_FBEDIR_Settlement"] = '0' -#售汇 -defineDict["QDP_FTDC_FBEDIR_Sale"] = '1' - -typedefDict["TQdpFtdcExDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEBankAccountType是一个换汇银行账户类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEBankAccountType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEBankAccountNameType是一个换汇银行账户名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEBankAccountNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEAmtType是一个各种换汇金额类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEAmtType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEBusinessTypeType是一个换汇业务类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEBusinessTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEPostScriptType是一个换汇附言类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEPostScriptType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBERemarkType是一个换汇备注类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBERemarkType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExRateType是一个换汇汇率类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExRateType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEResultFlagType是一个换汇成功标志类型 -#////////////////////////////////////////////////////////////////////// -#成功 -defineDict["QDP_FTDC_FBERES_Success"] = '0' -#账户余额不足 -defineDict["QDP_FTDC_FBERES_InsufficientBalance"] = '1' -#交易结果未知 -defineDict["QDP_FTDC_FBERES_UnknownTrading"] = '8' -#失败 -defineDict["QDP_FTDC_FBERES_Fail"] = 'x' - -typedefDict["TQdpFtdcFBEResultFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBERtnMsgType是一个换汇返回信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBERtnMsgType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEExtendMsgType是一个换汇扩展信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEExtendMsgType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEBusinessSerialType是一个换汇记账流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEBusinessSerialType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBESystemSerialType是一个换汇流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBESystemSerialType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBETotalExCntType是一个换汇交易总笔数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBETotalExCntType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEExchStatusType是一个换汇交易状态类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_FBEES_Normal"] = '0' -#交易重发 -defineDict["QDP_FTDC_FBEES_ReExchange"] = '1' - -typedefDict["TQdpFtdcFBEExchStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEFileFlagType是一个换汇文件标志类型 -#////////////////////////////////////////////////////////////////////// -#数据包 -defineDict["QDP_FTDC_FBEFG_DataPackage"] = '0' -#文件 -defineDict["QDP_FTDC_FBEFG_File"] = '1' - -typedefDict["TQdpFtdcFBEFileFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEAlreadyTradeType是一个换汇已交易标志类型 -#////////////////////////////////////////////////////////////////////// -#未交易 -defineDict["QDP_FTDC_FBEAT_NotTrade"] = '0' -#已交易 -defineDict["QDP_FTDC_FBEAT_Trade"] = '1' - -typedefDict["TQdpFtdcFBEAlreadyTradeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEOpenBankType是一个换汇账户开户行类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEOpenBankType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEUserEventTypeType是一个银期换汇用户事件类型类型 -#////////////////////////////////////////////////////////////////////// -#签到 -defineDict["QDP_FTDC_FBEUET_SignIn"] = '0' -#换汇 -defineDict["QDP_FTDC_FBEUET_Exchange"] = '1' -#换汇重发 -defineDict["QDP_FTDC_FBEUET_ReExchange"] = '2' -#银行账户查询 -defineDict["QDP_FTDC_FBEUET_QueryBankAccount"] = '3' -#换汇明细查询 -defineDict["QDP_FTDC_FBEUET_QueryExchDetial"] = '4' -#换汇汇总查询 -defineDict["QDP_FTDC_FBEUET_QueryExchSummary"] = '5' -#换汇汇率查询 -defineDict["QDP_FTDC_FBEUET_QueryExchRate"] = '6' -#对账文件通知 -defineDict["QDP_FTDC_FBEUET_CheckBankAccount"] = '7' -#签退 -defineDict["QDP_FTDC_FBEUET_SignOut"] = '8' -#其他 -defineDict["QDP_FTDC_FBEUET_Other"] = 'Z' - -typedefDict["TQdpFtdcFBEUserEventTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEFileNameType是一个换汇相关文件名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEFileNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEBatchSerialType是一个换汇批次号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFBEBatchSerialType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBEReqFlagType是一个换汇发送标志类型 -#////////////////////////////////////////////////////////////////////// -#未处理 -defineDict["QDP_FTDC_FBERF_UnProcessed"] = '0' -#等待发送 -defineDict["QDP_FTDC_FBERF_WaitSend"] = '1' -#发送成功 -defineDict["QDP_FTDC_FBERF_SendSuccess"] = '2' -#发送失败 -defineDict["QDP_FTDC_FBERF_SendFailed"] = '3' -#等待重发 -defineDict["QDP_FTDC_FBERF_WaitReSend"] = '4' - -typedefDict["TQdpFtdcFBEReqFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcNotifyClassType是一个风险通知类型类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_NC_NOERROR"] = '0' -#警示 -defineDict["QDP_FTDC_NC_Warn"] = '1' -#追保 -defineDict["QDP_FTDC_NC_Call"] = '2' -#强平 -defineDict["QDP_FTDC_NC_Force"] = '3' -#穿仓 -defineDict["QDP_FTDC_NC_CHUANCANG"] = '4' -#异常 -defineDict["QDP_FTDC_NC_Exception"] = '5' - -typedefDict["TQdpFtdcNotifyClassType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRiskNofityInfoType是一个客户风险通知消息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRiskNofityInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcForceCloseSceneIdType是一个强平场景编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcForceCloseSceneIdType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcForceCloseTypeType是一个强平单类型类型 -#////////////////////////////////////////////////////////////////////// -#手工强平 -defineDict["QDP_FTDC_FCT_Manual"] = '0' -#单一投资者辅助强平 -defineDict["QDP_FTDC_FCT_Single"] = '1' -#批量投资者辅助强平 -defineDict["QDP_FTDC_FCT_Group"] = '2' - -typedefDict["TQdpFtdcForceCloseTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstrumentIDsType是一个多个产品代码,用+分隔,如cu+zn类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInstrumentIDsType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRiskNotifyMethodType是一个风险通知途径类型 -#////////////////////////////////////////////////////////////////////// -#系统通知 -defineDict["QDP_FTDC_RNM_System"] = '0' -#短信通知 -defineDict["QDP_FTDC_RNM_SMS"] = '1' -#邮件通知 -defineDict["QDP_FTDC_RNM_EMail"] = '2' -#人工通知 -defineDict["QDP_FTDC_RNM_Manual"] = '3' - -typedefDict["TQdpFtdcRiskNotifyMethodType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRiskNotifyStatusType是一个风险通知状态类型 -#////////////////////////////////////////////////////////////////////// -#未生成 -defineDict["QDP_FTDC_RNS_NotGen"] = '0' -#已生成未发送 -defineDict["QDP_FTDC_RNS_Generated"] = '1' -#发送失败 -defineDict["QDP_FTDC_RNS_SendError"] = '2' -#已发送未接收 -defineDict["QDP_FTDC_RNS_SendOk"] = '3' -#已接收未确认 -defineDict["QDP_FTDC_RNS_Received"] = '4' -#已确认 -defineDict["QDP_FTDC_RNS_Confirmed"] = '5' - -typedefDict["TQdpFtdcRiskNotifyStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRiskUserEventType是一个风控用户操作事件类型 -#////////////////////////////////////////////////////////////////////// -#导出数据 -defineDict["QDP_FTDC_RUE_ExportData"] = '0' - -typedefDict["TQdpFtdcRiskUserEventType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParamIDType是一个参数代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcParamIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParamNameType是一个参数名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcParamNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcParamValueType是一个参数值类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcParamValueType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcConditionalOrderSortTypeType是一个条件单索引条件类型 -#////////////////////////////////////////////////////////////////////// -#使用最新价升序 -defineDict["QDP_FTDC_COST_LastPriceAsc"] = '0' -#使用最新价降序 -defineDict["QDP_FTDC_COST_LastPriceDesc"] = '1' -#使用卖价升序 -defineDict["QDP_FTDC_COST_AskPriceAsc"] = '2' -#使用卖价降序 -defineDict["QDP_FTDC_COST_AskPriceDesc"] = '3' -#使用买价升序 -defineDict["QDP_FTDC_COST_BidPriceAsc"] = '4' -#使用买价降序 -defineDict["QDP_FTDC_COST_BidPriceDesc"] = '5' - -typedefDict["TQdpFtdcConditionalOrderSortTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSendTypeType是一个报送状态类型 -#////////////////////////////////////////////////////////////////////// -#未发送 -defineDict["QDP_FTDC_UOAST_NoSend"] = '0' -#已发送 -defineDict["QDP_FTDC_UOAST_Sended"] = '1' -#已生成 -defineDict["QDP_FTDC_UOAST_Generated"] = '2' -#报送失败 -defineDict["QDP_FTDC_UOAST_SendFail"] = '3' -#接收成功 -defineDict["QDP_FTDC_UOAST_Success"] = '4' -#接收失败 -defineDict["QDP_FTDC_UOAST_Fail"] = '5' -#取消报送 -defineDict["QDP_FTDC_UOAST_Cancel"] = '6' - -typedefDict["TQdpFtdcSendTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientIDStatusType是一个交易编码状态类型 -#////////////////////////////////////////////////////////////////////// -#未申请 -defineDict["QDP_FTDC_UOACS_NoApply"] = '1' -#已提交申请 -defineDict["QDP_FTDC_UOACS_Submited"] = '2' -#已发送申请 -defineDict["QDP_FTDC_UOACS_Sended"] = '3' -#完成 -defineDict["QDP_FTDC_UOACS_Success"] = '4' -#拒绝 -defineDict["QDP_FTDC_UOACS_Refuse"] = '5' -#已撤销编码 -defineDict["QDP_FTDC_UOACS_Cancel"] = '6' - -typedefDict["TQdpFtdcClientIDStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIndustryIDType是一个行业编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIndustryIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcQuestionIDType是一个特有信息编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcQuestionIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcQuestionContentType是一个特有信息说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcQuestionContentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOptionIDType是一个选项编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOptionIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOptionContentType是一个选项说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOptionContentType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcQuestionTypeType是一个特有信息类型类型 -#////////////////////////////////////////////////////////////////////// -#单选 -defineDict["QDP_FTDC_QT_Radio"] = '1' -#多选 -defineDict["QDP_FTDC_QT_Option"] = '2' -#填空 -defineDict["QDP_FTDC_QT_Blank"] = '3' - -typedefDict["TQdpFtdcQuestionTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProcessIDType是一个业务流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProcessIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSeqNoType是一个流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSeqNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAProcessStatusType是一个流程状态类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOAProcessStatusType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProcessTypeType是一个流程功能类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcProcessTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBusinessTypeType是一个业务类型类型 -#////////////////////////////////////////////////////////////////////// -#请求 -defineDict["QDP_FTDC_BT_Request"] = '1' -#应答 -defineDict["QDP_FTDC_BT_Response"] = '2' -#通知 -defineDict["QDP_FTDC_BT_Notice"] = '3' - -typedefDict["TQdpFtdcBusinessTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCfmmcReturnCodeType是一个监控中心返回码类型 -#////////////////////////////////////////////////////////////////////// -#成功 -defineDict["QDP_FTDC_CRC_Success"] = '0' -#该客户已经有流程在处理中 -defineDict["QDP_FTDC_CRC_Working"] = '1' -#监控中客户资料检查失败 -defineDict["QDP_FTDC_CRC_InfoFail"] = '2' -#监控中实名制检查失败 -defineDict["QDP_FTDC_CRC_IDCardFail"] = '3' -#其他错误 -defineDict["QDP_FTDC_CRC_OtherFail"] = '4' - -typedefDict["TQdpFtdcCfmmcReturnCodeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExReturnCodeType是一个交易所返回码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExReturnCodeType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientTypeType是一个客户类型类型 -#////////////////////////////////////////////////////////////////////// -#所有 -defineDict["QDP_FTDC_CfMMCCT_All"] = '0' -#个人 -defineDict["QDP_FTDC_CfMMCCT_Person"] = '1' -#单位 -defineDict["QDP_FTDC_CfMMCCT_Company"] = '2' -#其他 -defineDict["QDP_FTDC_CfMMCCT_Other"] = '3' -#特殊法人 -defineDict["QDP_FTDC_CfMMCCT_SpecialOrgan"] = '4' -#资管户 -defineDict["QDP_FTDC_CfMMCCT_Asset"] = '5' - -typedefDict["TQdpFtdcClientTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeIDTypeType是一个交易所编号类型 -#////////////////////////////////////////////////////////////////////// -#上海期货交易所 -defineDict["QDP_FTDC_EIDT_SHFE"] = 'S' -#郑州商品交易所 -defineDict["QDP_FTDC_EIDT_CZCE"] = 'Z' -#大连商品交易所 -defineDict["QDP_FTDC_EIDT_DCE"] = 'D' -#中国金融期货交易所 -defineDict["QDP_FTDC_EIDT_CFFEX"] = 'J' -#上海国际能源交易中心股份有限公司 -defineDict["QDP_FTDC_EIDT_INE"] = 'N' -#上海证券交易所 -defineDict["QDP_FTDC_EIDT_SSE"] = 'A' -#深圳证券交易所 -defineDict["QDP_FTDC_EIDT_SZSE"] = 'E' - -typedefDict["TQdpFtdcExchangeIDTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExClientIDTypeType是一个交易编码类型类型 -#////////////////////////////////////////////////////////////////////// -#套保 -defineDict["QDP_FTDC_ECIDT_Hedge"] = '1' -#套利 -defineDict["QDP_FTDC_ECIDT_Arbitrage"] = '2' -#投机 -defineDict["QDP_FTDC_ECIDT_Speculation"] = '3' - -typedefDict["TQdpFtdcExClientIDTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientClassifyType是一个客户分类码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClientClassifyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAOrganTypeType是一个单位性质类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOAOrganTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOACountryCodeType是一个国家代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOACountryCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAreaCodeType是一个区号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAreaCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFuturesIDType是一个监控中心为客户分配的代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFuturesIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCffmcDateType是一个日期类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCffmcDateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCffmcTimeType是一个时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCffmcTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcNocIDType是一个组织机构代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcNocIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUpdateFlagType是一个更新状态类型 -#////////////////////////////////////////////////////////////////////// -#未更新 -defineDict["QDP_FTDC_UF_NoUpdate"] = '0' -#更新全部信息成功 -defineDict["QDP_FTDC_UF_Success"] = '1' -#更新全部信息失败 -defineDict["QDP_FTDC_UF_Fail"] = '2' -#更新交易编码成功 -defineDict["QDP_FTDC_UF_TCSuccess"] = '3' -#更新交易编码失败 -defineDict["QDP_FTDC_UF_TCFail"] = '4' -#已丢弃 -defineDict["QDP_FTDC_UF_Cancel"] = '5' - -typedefDict["TQdpFtdcUpdateFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcApplyOperateIDType是一个申请动作类型 -#////////////////////////////////////////////////////////////////////// -#开户 -defineDict["QDP_FTDC_AOID_OpenInvestor"] = '1' -#修改身份信息 -defineDict["QDP_FTDC_AOID_ModifyIDCard"] = '2' -#修改一般信息 -defineDict["QDP_FTDC_AOID_ModifyNoIDCard"] = '3' -#申请交易编码 -defineDict["QDP_FTDC_AOID_ApplyTradingCode"] = '4' -#撤销交易编码 -defineDict["QDP_FTDC_AOID_CancelTradingCode"] = '5' -#销户 -defineDict["QDP_FTDC_AOID_CancelInvestor"] = '6' -#账户休眠 -defineDict["QDP_FTDC_AOID_FreezeAccount"] = '8' -#激活休眠账户 -defineDict["QDP_FTDC_AOID_ActiveFreezeAccount"] = '9' - -typedefDict["TQdpFtdcApplyOperateIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcApplyStatusIDType是一个申请状态类型 -#////////////////////////////////////////////////////////////////////// -#未补全 -defineDict["QDP_FTDC_ASID_NoComplete"] = '1' -#已提交 -defineDict["QDP_FTDC_ASID_Submited"] = '2' -#已审核 -defineDict["QDP_FTDC_ASID_Checked"] = '3' -#已拒绝 -defineDict["QDP_FTDC_ASID_Refused"] = '4' -#已删除 -defineDict["QDP_FTDC_ASID_Deleted"] = '5' - -typedefDict["TQdpFtdcApplyStatusIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSendMethodType是一个发送方式类型 -#////////////////////////////////////////////////////////////////////// -#文件发送 -defineDict["QDP_FTDC_UOASM_ByAPI"] = '1' -#电子发送 -defineDict["QDP_FTDC_UOASM_ByFile"] = '2' - -typedefDict["TQdpFtdcSendMethodType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEventTypeType是一个业务操作类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcEventTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcEventModeType是一个操作方法类型 -#////////////////////////////////////////////////////////////////////// -#增加 -defineDict["QDP_FTDC_EvM_ADD"] = '1' -#修改 -defineDict["QDP_FTDC_EvM_UPDATE"] = '2' -#删除 -defineDict["QDP_FTDC_EvM_DELETE"] = '3' -#复核 -defineDict["QDP_FTDC_EvM_CHECK"] = '4' -#复制 -defineDict["QDP_FTDC_EvM_COPY"] = '5' -#注销 -defineDict["QDP_FTDC_EvM_CANCEL"] = '6' -#冲销 -defineDict["QDP_FTDC_EvM_Reverse"] = '7' - -typedefDict["TQdpFtdcEventModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAAutoSendType是一个统一开户申请自动发送类型 -#////////////////////////////////////////////////////////////////////// -#自动发送并接收 -defineDict["QDP_FTDC_UOAA_ASR"] = '1' -#自动发送,不自动接收 -defineDict["QDP_FTDC_UOAA_ASNR"] = '2' -#不自动发送,自动接收 -defineDict["QDP_FTDC_UOAA_NSAR"] = '3' -#不自动发送,也不自动接收 -defineDict["QDP_FTDC_UOAA_NSR"] = '4' - -typedefDict["TQdpFtdcUOAAutoSendType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcQueryDepthType是一个查询深度类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcQueryDepthType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDataCenterIDType是一个数据中心代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDataCenterIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFlowIDType是一个流程ID类型 -#////////////////////////////////////////////////////////////////////// -#投资者对应投资者组设置 -defineDict["QDP_FTDC_EvM_InvestorGroupFlow"] = '1' -#投资者手续费率设置 -defineDict["QDP_FTDC_EvM_InvestorRate"] = '2' -#投资者手续费率模板关系设置 -defineDict["QDP_FTDC_EvM_InvestorCommRateModel"] = '3' - -typedefDict["TQdpFtdcFlowIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCheckLevelType是一个复核级别类型 -#////////////////////////////////////////////////////////////////////// -#零级复核 -defineDict["QDP_FTDC_CL_Zero"] = '0' -#一级复核 -defineDict["QDP_FTDC_CL_One"] = '1' -#二级复核 -defineDict["QDP_FTDC_CL_Two"] = '2' - -typedefDict["TQdpFtdcCheckLevelType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCheckNoType是一个操作次数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCheckNoType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCheckStatusType是一个复核级别类型 -#////////////////////////////////////////////////////////////////////// -#未复核 -defineDict["QDP_FTDC_CHS_Init"] = '0' -#复核中 -defineDict["QDP_FTDC_CHS_Checking"] = '1' -#已复核 -defineDict["QDP_FTDC_CHS_Checked"] = '2' -#拒绝 -defineDict["QDP_FTDC_CHS_Refuse"] = '3' -#作废 -defineDict["QDP_FTDC_CHS_Cancel"] = '4' - -typedefDict["TQdpFtdcCheckStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUsedStatusType是一个生效状态类型 -#////////////////////////////////////////////////////////////////////// -#未生效 -defineDict["QDP_FTDC_CHU_Unused"] = '0' -#已生效 -defineDict["QDP_FTDC_CHU_Used"] = '1' -#生效失败 -defineDict["QDP_FTDC_CHU_Fail"] = '2' - -typedefDict["TQdpFtdcUsedStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRateTemplateNameType是一个模型名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRateTemplateNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPropertyStringType是一个用于查询的投资属性字段类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPropertyStringType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankAcountOriginType是一个账户来源类型 -#////////////////////////////////////////////////////////////////////// -#手工录入 -defineDict["QDP_FTDC_BAO_ByAccProperty"] = '0' -#银期转账 -defineDict["QDP_FTDC_BAO_ByFBTransfer"] = '1' - -typedefDict["TQdpFtdcBankAcountOriginType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMonthBillTradeSumType是一个结算单月报成交汇总方式类型 -#////////////////////////////////////////////////////////////////////// -#同日同合约 -defineDict["QDP_FTDC_MBTS_ByInstrument"] = '0' -#同日同合约同价格 -defineDict["QDP_FTDC_MBTS_ByDayInsPrc"] = '1' -#同合约 -defineDict["QDP_FTDC_MBTS_ByDayIns"] = '2' - -typedefDict["TQdpFtdcMonthBillTradeSumType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFBTTradeCodeEnumType是一个银期交易代码枚举类型 -#////////////////////////////////////////////////////////////////////// -#银行发起银行转期货 -defineDict["QDP_FTDC_FTC_BankLaunchBankToBroker"] = '102001' -#期货发起银行转期货 -defineDict["QDP_FTDC_FTC_BrokerLaunchBankToBroker"] = '202001' -#银行发起期货转银行 -defineDict["QDP_FTDC_FTC_BankLaunchBrokerToBank"] = '102002' -#期货发起期货转银行 -defineDict["QDP_FTDC_FTC_BrokerLaunchBrokerToBank"] = '202002' - -typedefDict["TQdpFtdcFBTTradeCodeEnumType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRateTemplateIDType是一个模型代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRateTemplateIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRiskRateType是一个风险度类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRiskRateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTimestampType是一个时间戳类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTimestampType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorIDRuleNameType是一个号段规则名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvestorIDRuleNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorIDRuleExprType是一个号段规则表达式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvestorIDRuleExprType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLastDriftType是一个上次OTP漂移值类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLastDriftType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLastSuccessType是一个上次OTP成功值类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLastSuccessType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAuthKeyType是一个令牌密钥类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAuthKeyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSerialNumberType是一个序列号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSerialNumberType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOTPTypeType是一个动态令牌类型类型 -#////////////////////////////////////////////////////////////////////// -#无动态令牌 -defineDict["QDP_FTDC_OTP_NONE"] = '0' -#时间令牌 -defineDict["QDP_FTDC_OTP_TOTP"] = '1' - -typedefDict["TQdpFtdcOTPTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOTPVendorsIDType是一个动态令牌提供商类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOTPVendorsIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOTPVendorsNameType是一个动态令牌提供商名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOTPVendorsNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOTPStatusType是一个动态令牌状态类型 -#////////////////////////////////////////////////////////////////////// -#未使用 -defineDict["QDP_FTDC_OTPS_Unused"] = '0' -#已使用 -defineDict["QDP_FTDC_OTPS_Used"] = '1' -#注销 -defineDict["QDP_FTDC_OTPS_Disuse"] = '2' - -typedefDict["TQdpFtdcOTPStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBrokerUserTypeType是一个经济公司用户类型类型 -#////////////////////////////////////////////////////////////////////// -#投资者 -defineDict["QDP_FTDC_BUT_Investor"] = '1' -#操作员 -defineDict["QDP_FTDC_BUT_BrokerUser"] = '2' - -typedefDict["TQdpFtdcBrokerUserTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFutureTypeType是一个期货类型类型 -#////////////////////////////////////////////////////////////////////// -#商品期货 -defineDict["QDP_FTDC_FUTT_Commodity"] = '1' -#金融期货 -defineDict["QDP_FTDC_FUTT_Financial"] = '2' - -typedefDict["TQdpFtdcFutureTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundEventTypeType是一个资金管理操作类型类型 -#////////////////////////////////////////////////////////////////////// -#转账限额 -defineDict["QDP_FTDC_FET_Restriction"] = '0' -#当日转账限额 -defineDict["QDP_FTDC_FET_TodayRestriction"] = '1' -#期商流水 -defineDict["QDP_FTDC_FET_Transfer"] = '2' -#资金冻结 -defineDict["QDP_FTDC_FET_Credit"] = '3' -#投资者可提资金比例 -defineDict["QDP_FTDC_FET_InvestorWithdrawAlm"] = '4' -#单个银行帐户转账限额 -defineDict["QDP_FTDC_FET_BankRestriction"] = '5' -#银期签约账户 -defineDict["QDP_FTDC_FET_Accountregister"] = '6' -#交易所出入金 -defineDict["QDP_FTDC_FET_ExchangeFundIO"] = '7' -#投资者出入金 -defineDict["QDP_FTDC_FET_InvestorFundIO"] = '8' - -typedefDict["TQdpFtdcFundEventTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAccountSourceTypeType是一个资金账户来源类型 -#////////////////////////////////////////////////////////////////////// -#银期同步 -defineDict["QDP_FTDC_AST_FBTransfer"] = '0' -#手工录入 -defineDict["QDP_FTDC_AST_ManualEntry"] = '1' - -typedefDict["TQdpFtdcAccountSourceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCodeSourceTypeType是一个交易编码来源类型 -#////////////////////////////////////////////////////////////////////// -#统一开户(已规范) -defineDict["QDP_FTDC_CST_UnifyAccount"] = '0' -#手工录入(未规范) -defineDict["QDP_FTDC_CST_ManualEntry"] = '1' - -typedefDict["TQdpFtdcCodeSourceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserRangeType是一个操作员范围类型 -#////////////////////////////////////////////////////////////////////// -#所有 -defineDict["QDP_FTDC_UR_All"] = '0' -#单一操作员 -defineDict["QDP_FTDC_UR_Single"] = '1' - -typedefDict["TQdpFtdcUserRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTimeSpanType是一个时间跨度类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTimeSpanType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcImportSequenceIDType是一个动态令牌导入批次编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcImportSequenceIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcByGroupType是一个交易统计表按客户统计方式类型 -#////////////////////////////////////////////////////////////////////// -#按投资者统计 -defineDict["QDP_FTDC_BG_Investor"] = '2' -#按类统计 -defineDict["QDP_FTDC_BG_Group"] = '1' - -typedefDict["TQdpFtdcByGroupType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeSumStatModeType是一个交易统计表按范围统计方式类型 -#////////////////////////////////////////////////////////////////////// -#按合约统计 -defineDict["QDP_FTDC_TSSM_Instrument"] = '1' -#按产品统计 -defineDict["QDP_FTDC_TSSM_Product"] = '2' -#按交易所统计 -defineDict["QDP_FTDC_TSSM_Exchange"] = '3' - -typedefDict["TQdpFtdcTradeSumStatModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcComTypeType是一个组合成交类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcComTypeType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserProductIDType是一个产品标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserProductIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserProductNameType是一个产品名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserProductNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUserProductMemoType是一个产品说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUserProductMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCCancelFlagType是一个新增或变更标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCCancelFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCDateType是一个日期类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCDateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCInvestorNameType是一个客户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCInvestorNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCOpenInvestorNameType是一个客户名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCOpenInvestorNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCInvestorIDType是一个客户代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCInvestorIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCIdentifiedCardNoType是一个证件号码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCIdentifiedCardNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCClientIDType是一个交易编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCClientIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCBankFlagType是一个银行标识类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCBankFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCBankAccountType是一个银行账户类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCBankAccountType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCOpenNameType是一个开户人类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCOpenNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCMemoType是一个说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCTimeType是一个时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCTradeIDType是一个成交流水号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCTradeIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCExchangeInstIDType是一个合约代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCExchangeInstIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCMortgageNameType是一个质押品名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCMortgageNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCReasonType是一个事由类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCReasonType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIsSettlementType是一个是否为非结算会员类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIsSettlementType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCMoneyType是一个资金类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCMoneyType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCPriceType是一个价格类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCPriceType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCOptionsTypeType是一个期权类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCOptionsTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCStrikePriceType是一个执行价类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCStrikePriceType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCTargetProductIDType是一个标的品种类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCTargetProductIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCTargetInstrIDType是一个标的合约类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCTargetInstrIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommModelNameType是一个手续费率模板名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommModelNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCommModelMemoType是一个手续费率模板备注类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCommModelMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExprSetModeType是一个日期表达式设置类型类型 -#////////////////////////////////////////////////////////////////////// -#相对已有规则设置 -defineDict["QDP_FTDC_ESM_Relative"] = '1' -#典型设置 -defineDict["QDP_FTDC_ESM_Typical"] = '2' - -typedefDict["TQdpFtdcExprSetModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRateInvestorRangeType是一个投资者范围类型 -#////////////////////////////////////////////////////////////////////// -#公司标准 -defineDict["QDP_FTDC_RIR_All"] = '1' -#模板 -defineDict["QDP_FTDC_RIR_Model"] = '2' -#单一投资者 -defineDict["QDP_FTDC_RIR_Single"] = '3' - -typedefDict["TQdpFtdcRateInvestorRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAgentBrokerIDType是一个代理经纪公司代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAgentBrokerIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDRIdentityIDType是一个交易中心代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDRIdentityIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDRIdentityNameType是一个交易中心名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDRIdentityNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDBLinkIDType是一个DBLink标识号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDBLinkIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSyncDataStatusType是一个主次用系统数据同步状态类型 -#////////////////////////////////////////////////////////////////////// -#未同步 -defineDict["QDP_FTDC_SDS_Initialize"] = '0' -#同步中 -defineDict["QDP_FTDC_SDS_Settlementing"] = '1' -#已同步 -defineDict["QDP_FTDC_SDS_Settlemented"] = '2' - -typedefDict["TQdpFtdcSyncDataStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeSourceType是一个成交来源类型 -#////////////////////////////////////////////////////////////////////// -#来自交易所普通回报 -defineDict["QDP_FTDC_TSRC_NORMAL"] = '0' -#来自查询 -defineDict["QDP_FTDC_TSRC_QUERY"] = '1' - -typedefDict["TQdpFtdcTradeSourceType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFlexStatModeType是一个产品合约统计方式类型 -#////////////////////////////////////////////////////////////////////// -#产品统计 -defineDict["QDP_FTDC_FSM_Product"] = '1' -#交易所统计 -defineDict["QDP_FTDC_FSM_Exchange"] = '2' -#统计所有 -defineDict["QDP_FTDC_FSM_All"] = '3' - -typedefDict["TQdpFtdcFlexStatModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcByInvestorRangeType是一个投资者范围统计方式类型 -#////////////////////////////////////////////////////////////////////// -#属性统计 -defineDict["QDP_FTDC_BIR_Property"] = '1' -#统计所有 -defineDict["QDP_FTDC_BIR_All"] = '2' - -typedefDict["TQdpFtdcByInvestorRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSRiskRateType是一个风险度类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSRiskRateType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSequenceNo12Type是一个序号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSequenceNo12Type"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPropertyInvestorRangeType是一个投资者范围类型 -#////////////////////////////////////////////////////////////////////// -#所有 -defineDict["QDP_FTDC_PIR_All"] = '1' -#投资者属性 -defineDict["QDP_FTDC_PIR_Property"] = '2' -#单一投资者 -defineDict["QDP_FTDC_PIR_Single"] = '3' - -typedefDict["TQdpFtdcPropertyInvestorRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileStatusType是一个文件状态类型 -#////////////////////////////////////////////////////////////////////// -#未生成 -defineDict["QDP_FTDC_FIS_NoCreate"] = '0' -#已生成 -defineDict["QDP_FTDC_FIS_Created"] = '1' -#生成失败 -defineDict["QDP_FTDC_FIS_Failed"] = '2' - -typedefDict["TQdpFtdcFileStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFileGenStyleType是一个文件生成方式类型 -#////////////////////////////////////////////////////////////////////// -#下发 -defineDict["QDP_FTDC_FGS_FileTransmit"] = '0' -#生成 -defineDict["QDP_FTDC_FGS_FileGen"] = '1' - -typedefDict["TQdpFtdcFileGenStyleType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSysOperModeType是一个系统日志操作方法类型 -#////////////////////////////////////////////////////////////////////// -#增加 -defineDict["QDP_FTDC_SoM_Add"] = '1' -#修改 -defineDict["QDP_FTDC_SoM_Update"] = '2' -#删除 -defineDict["QDP_FTDC_SoM_Delete"] = '3' -#复制 -defineDict["QDP_FTDC_SoM_Copy"] = '4' -#激活 -defineDict["QDP_FTDC_SoM_AcTive"] = '5' -#注销 -defineDict["QDP_FTDC_SoM_CanCel"] = '6' -#重置 -defineDict["QDP_FTDC_SoM_ReSet"] = '7' - -typedefDict["TQdpFtdcSysOperModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSysOperTypeType是一个系统日志操作类型类型 -#////////////////////////////////////////////////////////////////////// -#修改操作员密码 -defineDict["QDP_FTDC_SoT_UpdatePassword"] = '0' -#操作员组织架构关系 -defineDict["QDP_FTDC_SoT_UserDepartment"] = '1' -#角色管理 -defineDict["QDP_FTDC_SoT_RoleManager"] = '2' -#角色功能设置 -defineDict["QDP_FTDC_SoT_RoleFunction"] = '3' -#基础参数设置 -defineDict["QDP_FTDC_SoT_BaseParam"] = '4' -#设置操作员 -defineDict["QDP_FTDC_SoT_SetUserID"] = '5' -#用户角色设置 -defineDict["QDP_FTDC_SoT_SetUserRole"] = '6' -#用户IP限制 -defineDict["QDP_FTDC_SoT_UserIpRestriction"] = '7' -#组织架构管理 -defineDict["QDP_FTDC_SoT_DepartmentManager"] = '8' -#组织架构向查询分类复制 -defineDict["QDP_FTDC_SoT_DepartmentCopy"] = '9' -#交易编码管理 -defineDict["QDP_FTDC_SoT_Tradingcode"] = 'A' -#投资者状态维护 -defineDict["QDP_FTDC_SoT_InvestorStatus"] = 'B' -#投资者权限管理 -defineDict["QDP_FTDC_SoT_InvestorAuthority"] = 'C' -#属性设置 -defineDict["QDP_FTDC_SoT_PropertySet"] = 'D' -#重置投资者密码 -defineDict["QDP_FTDC_SoT_ReSetInvestorPasswd"] = 'E' -#投资者个性信息维护 -defineDict["QDP_FTDC_SoT_InvestorPersonalityInfo"] = 'F' - -typedefDict["TQdpFtdcSysOperTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCDataQueyTypeType是一个上报数据查询类型类型 -#////////////////////////////////////////////////////////////////////// -#查询当前交易日报送的数据 -defineDict["QDP_FTDC_CSRCQ_Current"] = '0' -#查询历史报送的代理经纪公司的数据 -defineDict["QDP_FTDC_CSRCQ_History"] = '1' - -typedefDict["TQdpFtdcCSRCDataQueyTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFreezeStatusType是一个休眠状态类型 -#////////////////////////////////////////////////////////////////////// -#活跃 -defineDict["QDP_FTDC_FRS_Normal"] = '1' -#休眠 -defineDict["QDP_FTDC_FRS_Freeze"] = '0' - -typedefDict["TQdpFtdcFreezeStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStandardStatusType是一个规范状态类型 -#////////////////////////////////////////////////////////////////////// -#已规范 -defineDict["QDP_FTDC_STST_Standard"] = '0' -#未规范 -defineDict["QDP_FTDC_STST_NonStandard"] = '1' - -typedefDict["TQdpFtdcStandardStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCFreezeStatusType是一个休眠状态类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCFreezeStatusType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRightParamTypeType是一个配置类型类型 -#////////////////////////////////////////////////////////////////////// -#休眠户 -defineDict["QDP_FTDC_RPT_Freeze"] = '1' -#激活休眠户 -defineDict["QDP_FTDC_RPT_FreezeActive"] = '2' -#开仓权限限制 -defineDict["QDP_FTDC_RPT_OpenLimit"] = '3' -#解除开仓权限限制 -defineDict["QDP_FTDC_RPT_RelieveOpenLimit"] = '4' - -typedefDict["TQdpFtdcRightParamTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRightTemplateIDType是一个模板代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRightTemplateIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRightTemplateNameType是一个模板名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRightTemplateNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDataStatusType是一个反洗钱审核表数据状态类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_AMLDS_Normal"] = '0' -#已删除 -defineDict["QDP_FTDC_AMLDS_Deleted"] = '1' - -typedefDict["TQdpFtdcDataStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAMLCheckStatusType是一个审核状态类型 -#////////////////////////////////////////////////////////////////////// -#未复核 -defineDict["QDP_FTDC_AMLCHS_Init"] = '0' -#复核中 -defineDict["QDP_FTDC_AMLCHS_Checking"] = '1' -#已复核 -defineDict["QDP_FTDC_AMLCHS_Checked"] = '2' -#拒绝上报 -defineDict["QDP_FTDC_AMLCHS_RefuseReport"] = '3' - -typedefDict["TQdpFtdcAMLCheckStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAmlDateTypeType是一个日期类型类型 -#////////////////////////////////////////////////////////////////////// -#检查日期 -defineDict["QDP_FTDC_AMLDT_DrawDay"] = '0' -#发生日期 -defineDict["QDP_FTDC_AMLDT_TouchDay"] = '1' - -typedefDict["TQdpFtdcAmlDateTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAmlCheckLevelType是一个审核级别类型 -#////////////////////////////////////////////////////////////////////// -#零级审核 -defineDict["QDP_FTDC_AMLCL_CheckLevel0"] = '0' -#一级审核 -defineDict["QDP_FTDC_AMLCL_CheckLevel1"] = '1' -#二级审核 -defineDict["QDP_FTDC_AMLCL_CheckLevel2"] = '2' -#三级审核 -defineDict["QDP_FTDC_AMLCL_CheckLevel3"] = '3' - -typedefDict["TQdpFtdcAmlCheckLevelType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAmlCheckFlowType是一个反洗钱数据抽取审核流程类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAmlCheckFlowType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDataTypeType是一个数据类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDataTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExportFileTypeType是一个导出文件类型类型 -#////////////////////////////////////////////////////////////////////// -#CSV -defineDict["QDP_FTDC_EFT_CSV"] = '0' -#Excel -defineDict["QDP_FTDC_EFT_EXCEL"] = '1' -#DBF -defineDict["QDP_FTDC_EFT_DBF"] = '2' - -typedefDict["TQdpFtdcExportFileTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettleManagerTypeType是一个结算配置类型类型 -#////////////////////////////////////////////////////////////////////// -#结算前准备 -defineDict["QDP_FTDC_SMT_Before"] = '1' -#结算 -defineDict["QDP_FTDC_SMT_Settlement"] = '2' -#结算后核对 -defineDict["QDP_FTDC_SMT_After"] = '3' -#结算后处理 -defineDict["QDP_FTDC_SMT_Settlemented"] = '4' - -typedefDict["TQdpFtdcSettleManagerTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettleManagerIDType是一个结算配置代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSettleManagerIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettleManagerNameType是一个结算配置名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSettleManagerNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettleManagerLevelType是一个结算配置等级类型 -#////////////////////////////////////////////////////////////////////// -#必要 -defineDict["QDP_FTDC_SML_Must"] = '1' -#警告 -defineDict["QDP_FTDC_SML_Alarm"] = '2' -#提示 -defineDict["QDP_FTDC_SML_Prompt"] = '3' -#不检查 -defineDict["QDP_FTDC_SML_Ignore"] = '4' - -typedefDict["TQdpFtdcSettleManagerLevelType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettleManagerGroupType是一个模块分组类型 -#////////////////////////////////////////////////////////////////////// -#交易所核对 -defineDict["QDP_FTDC_SMG_Exhcange"] = '1' -#内部核对 -defineDict["QDP_FTDC_SMG_ASP"] = '2' -#上报数据核对 -defineDict["QDP_FTDC_SMG_CSRC"] = '3' - -typedefDict["TQdpFtdcSettleManagerGroupType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCheckResultMemoType是一个核对结果说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCheckResultMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFunctionUrlType是一个功能链接类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcFunctionUrlType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAuthInfoType是一个客户端认证信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAuthInfoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAuthCodeType是一个客户端认证码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAuthCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLimitUseTypeType是一个保值额度使用类型类型 -#////////////////////////////////////////////////////////////////////// -#可重复使用 -defineDict["QDP_FTDC_LUT_Repeatable"] = '1' -#不可重复使用 -defineDict["QDP_FTDC_LUT_Unrepeatable"] = '2' - -typedefDict["TQdpFtdcLimitUseTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDataResourceType是一个数据来源类型 -#////////////////////////////////////////////////////////////////////// -#本系统 -defineDict["QDP_FTDC_DAR_Settle"] = '1' -#交易所 -defineDict["QDP_FTDC_DAR_Exchange"] = '2' -#报送数据 -defineDict["QDP_FTDC_DAR_CSRC"] = '3' - -typedefDict["TQdpFtdcDataResourceType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMarginTypeType是一个保证金类型类型 -#////////////////////////////////////////////////////////////////////// -#交易所保证金率 -defineDict["QDP_FTDC_MGT_ExchMarginRate"] = '0' -#投资者保证金率 -defineDict["QDP_FTDC_MGT_InstrMarginRate"] = '1' -#投资者交易保证金率 -defineDict["QDP_FTDC_MGT_InstrMarginRateTrade"] = '2' - -typedefDict["TQdpFtdcMarginTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcActiveTypeType是一个生效类型类型 -#////////////////////////////////////////////////////////////////////// -#仅当日生效 -defineDict["QDP_FTDC_ACT_Intraday"] = '1' -#长期生效 -defineDict["QDP_FTDC_ACT_Long"] = '2' - -typedefDict["TQdpFtdcActiveTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMarginRateTypeType是一个冲突保证金率类型类型 -#////////////////////////////////////////////////////////////////////// -#交易所保证金率 -defineDict["QDP_FTDC_MRT_Exchange"] = '1' -#投资者保证金率 -defineDict["QDP_FTDC_MRT_Investor"] = '2' -#投资者交易保证金率 -defineDict["QDP_FTDC_MRT_InvestorTrade"] = '3' - -typedefDict["TQdpFtdcMarginRateTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBackUpStatusType是一个备份数据状态类型 -#////////////////////////////////////////////////////////////////////// -#未生成备份数据 -defineDict["QDP_FTDC_BUS_UnBak"] = '0' -#备份数据生成中 -defineDict["QDP_FTDC_BUS_BakUp"] = '1' -#已生成备份数据 -defineDict["QDP_FTDC_BUS_BakUped"] = '2' -#备份数据失败 -defineDict["QDP_FTDC_BUS_BakFail"] = '3' - -typedefDict["TQdpFtdcBackUpStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInitSettlementType是一个结算初始化状态类型 -#////////////////////////////////////////////////////////////////////// -#结算初始化未开始 -defineDict["QDP_FTDC_SIS_UnInitialize"] = '0' -#结算初始化中 -defineDict["QDP_FTDC_SIS_Initialize"] = '1' -#结算初始化完成 -defineDict["QDP_FTDC_SIS_Initialized"] = '2' - -typedefDict["TQdpFtdcInitSettlementType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReportStatusType是一个报表数据生成状态类型 -#////////////////////////////////////////////////////////////////////// -#未生成报表数据 -defineDict["QDP_FTDC_SRS_NoCreate"] = '0' -#报表数据生成中 -defineDict["QDP_FTDC_SRS_Create"] = '1' -#已生成报表数据 -defineDict["QDP_FTDC_SRS_Created"] = '2' -#生成报表数据失败 -defineDict["QDP_FTDC_SRS_CreateFail"] = '3' - -typedefDict["TQdpFtdcReportStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSaveStatusType是一个数据归档状态类型 -#////////////////////////////////////////////////////////////////////// -#归档未完成 -defineDict["QDP_FTDC_SSS_UnSaveData"] = '0' -#归档完成 -defineDict["QDP_FTDC_SSS_SaveDatad"] = '1' - -typedefDict["TQdpFtdcSaveStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSettArchiveStatusType是一个结算确认数据归档状态类型 -#////////////////////////////////////////////////////////////////////// -#未归档数据 -defineDict["QDP_FTDC_SAS_UnArchived"] = '0' -#数据归档中 -defineDict["QDP_FTDC_SAS_Archiving"] = '1' -#已归档数据 -defineDict["QDP_FTDC_SAS_Archived"] = '2' -#归档数据失败 -defineDict["QDP_FTDC_SAS_ArchiveFail"] = '3' - -typedefDict["TQdpFtdcSettArchiveStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCTPTypeType是一个CTP交易系统类型类型 -#////////////////////////////////////////////////////////////////////// -#未知类型 -defineDict["QDP_FTDC_CTPT_Unkown"] = '0' -#主中心 -defineDict["QDP_FTDC_CTPT_MainCenter"] = '1' -#备中心 -defineDict["QDP_FTDC_CTPT_BackUp"] = '2' - -typedefDict["TQdpFtdcCTPTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcToolIDType是一个工具代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcToolIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcToolNameType是一个工具名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcToolNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCloseDealTypeType是一个平仓处理类型类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_CDT_Normal"] = '0' -#投机平仓优先 -defineDict["QDP_FTDC_CDT_SpecFirst"] = '1' - -typedefDict["TQdpFtdcCloseDealTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMortgageFundUseRangeType是一个货币质押资金可用范围类型 -#////////////////////////////////////////////////////////////////////// -#不能使用 -defineDict["QDP_FTDC_MFUR_None"] = '0' -#用于保证金 -defineDict["QDP_FTDC_MFUR_Margin"] = '1' -#用于手续费、盈亏、保证金 -defineDict["QDP_FTDC_MFUR_All"] = '2' - -typedefDict["TQdpFtdcMortgageFundUseRangeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencyUnitType是一个币种单位数量类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencyUnitType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExchangeRateType是一个汇率类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExchangeRateType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSpecProductTypeType是一个特殊产品类型类型 -#////////////////////////////////////////////////////////////////////// -#郑商所套保产品 -defineDict["QDP_FTDC_SPT_CzceHedge"] = '1' -#货币质押产品 -defineDict["QDP_FTDC_SPT_IneForeignCurrency"] = '2' -#大连短线开平仓产品 -defineDict["QDP_FTDC_SPT_DceOpenClose"] = '3' - -typedefDict["TQdpFtdcSpecProductTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundMortgageTypeType是一个货币质押类型类型 -#////////////////////////////////////////////////////////////////////// -#质押 -defineDict["QDP_FTDC_FMT_Mortgage"] = '1' -#解质 -defineDict["QDP_FTDC_FMT_Redemption"] = '2' - -typedefDict["TQdpFtdcFundMortgageTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAccountSettlementParamIDType是一个投资者账户结算参数代码类型 -#////////////////////////////////////////////////////////////////////// -#基础保证金 -defineDict["QDP_FTDC_ASPI_BaseMargin"] = '1' -#最低权益标准 -defineDict["QDP_FTDC_ASPI_LowestInterest"] = '2' - -typedefDict["TQdpFtdcAccountSettlementParamIDType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencyNameType是一个币种名称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencyNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencySignType是一个币种符号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencySignType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundMortDirectionType是一个货币质押方向类型 -#////////////////////////////////////////////////////////////////////// -#货币质入 -defineDict["QDP_FTDC_FMD_In"] = '1' -#货币质出 -defineDict["QDP_FTDC_FMD_Out"] = '2' - -typedefDict["TQdpFtdcFundMortDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBusinessClassType是一个换汇类别类型 -#////////////////////////////////////////////////////////////////////// -#盈利 -defineDict["QDP_FTDC_BT_Profit"] = '0' -#亏损 -defineDict["QDP_FTDC_BT_Loss"] = '1' -#其他 -defineDict["QDP_FTDC_BT_Other"] = 'Z' - -typedefDict["TQdpFtdcBusinessClassType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSwapSourceTypeType是一个换汇数据来源类型 -#////////////////////////////////////////////////////////////////////// -#手工 -defineDict["QDP_FTDC_SST_Manual"] = '0' -#自动生成 -defineDict["QDP_FTDC_SST_Automatic"] = '1' - -typedefDict["TQdpFtdcSwapSourceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrExDirectionType是一个换汇类型类型 -#////////////////////////////////////////////////////////////////////// -#结汇 -defineDict["QDP_FTDC_CED_Settlement"] = '0' -#售汇 -defineDict["QDP_FTDC_CED_Sale"] = '1' - -typedefDict["TQdpFtdcCurrExDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencySwapStatusType是一个申请状态类型 -#////////////////////////////////////////////////////////////////////// -#已录入 -defineDict["QDP_FTDC_CSS_Entry"] = '1' -#已审核 -defineDict["QDP_FTDC_CSS_Approve"] = '2' -#已拒绝 -defineDict["QDP_FTDC_CSS_Refuse"] = '3' -#已撤销 -defineDict["QDP_FTDC_CSS_Revoke"] = '4' -#已发送 -defineDict["QDP_FTDC_CSS_Send"] = '5' -#换汇成功 -defineDict["QDP_FTDC_CSS_Success"] = '6' -#换汇失败 -defineDict["QDP_FTDC_CSS_Failure"] = '7' - -typedefDict["TQdpFtdcCurrencySwapStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrExchCertNoType是一个凭证号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrExchCertNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBatchSerialNoType是一个批次号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBatchSerialNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcReqFlagType是一个换汇发送标志类型 -#////////////////////////////////////////////////////////////////////// -#未发送 -defineDict["QDP_FTDC_REQF_NoSend"] = '0' -#发送成功 -defineDict["QDP_FTDC_REQF_SendSuccess"] = '1' -#发送失败 -defineDict["QDP_FTDC_REQF_SendFailed"] = '2' -#等待重发 -defineDict["QDP_FTDC_REQF_WaitReSend"] = '3' - -typedefDict["TQdpFtdcReqFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcResFlagType是一个换汇返回成功标志类型 -#////////////////////////////////////////////////////////////////////// -#成功 -defineDict["QDP_FTDC_RESF_Success"] = '0' -#账户余额不足 -defineDict["QDP_FTDC_RESF_InsuffiCient"] = '1' -#交易结果未知 -defineDict["QDP_FTDC_RESF_UnKnown"] = '8' - -typedefDict["TQdpFtdcResFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPageControlType是一个换汇页面控制类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPageControlType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcRecordCountType是一个记录数类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcRecordCountType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCurrencySwapMemoType是一个换汇需确认信息类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCurrencySwapMemoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExStatusType是一个修改状态类型 -#////////////////////////////////////////////////////////////////////// -#修改前 -defineDict["QDP_FTDC_EXS_Before"] = '0' -#修改后 -defineDict["QDP_FTDC_EXS_After"] = '1' - -typedefDict["TQdpFtdcExStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientRegionType是一个开户客户地域类型 -#////////////////////////////////////////////////////////////////////// -#国内客户 -defineDict["QDP_FTDC_CR_Domestic"] = '1' -#港澳台客户 -defineDict["QDP_FTDC_CR_GMT"] = '2' -#国外客户 -defineDict["QDP_FTDC_CR_Foreign"] = '3' - -typedefDict["TQdpFtdcClientRegionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcWorkPlaceType是一个工作单位类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcWorkPlaceType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBusinessPeriodType是一个经营期限类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBusinessPeriodType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcWebSiteType是一个网址类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcWebSiteType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAIdCardTypeType是一个统一开户证件类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOAIdCardTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcClientModeType是一个开户模式类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcClientModeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestorFullNameType是一个投资者全称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvestorFullNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOABrokerIDType是一个境外中介机构ID类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOABrokerIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAZipCodeType是一个邮政编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOAZipCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAEMailType是一个电子邮箱类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOAEMailType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOldCityType是一个城市类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcOldCityType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCorporateIdentifiedCardNoType是一个法人代表证件号码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCorporateIdentifiedCardNoType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcHasBoardType是一个是否有董事会类型 -#////////////////////////////////////////////////////////////////////// -#没有 -defineDict["QDP_FTDC_HB_No"] = '0' -#有 -defineDict["QDP_FTDC_HB_Yes"] = '1' - -typedefDict["TQdpFtdcHasBoardType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStartModeType是一个启动模式类型 -#////////////////////////////////////////////////////////////////////// -#正常 -defineDict["QDP_FTDC_SM_Normal"] = '1' -#应急 -defineDict["QDP_FTDC_SM_Emerge"] = '2' -#恢复 -defineDict["QDP_FTDC_SM_Restore"] = '3' - -typedefDict["TQdpFtdcStartModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTemplateTypeType是一个模型类型类型 -#////////////////////////////////////////////////////////////////////// -#全量 -defineDict["QDP_FTDC_TPT_Full"] = '1' -#增量 -defineDict["QDP_FTDC_TPT_Increment"] = '2' -#备份 -defineDict["QDP_FTDC_TPT_BackUp"] = '3' - -typedefDict["TQdpFtdcTemplateTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLoginModeType是一个登录模式类型 -#////////////////////////////////////////////////////////////////////// -#交易 -defineDict["QDP_FTDC_LM_Trade"] = '0' -#转账 -defineDict["QDP_FTDC_LM_Transfer"] = '1' - -typedefDict["TQdpFtdcLoginModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPromptTypeType是一个日历提示类型类型 -#////////////////////////////////////////////////////////////////////// -#合约上下市 -defineDict["QDP_FTDC_CPT_Instrument"] = '1' -#保证金分段生效 -defineDict["QDP_FTDC_CPT_Margin"] = '2' - -typedefDict["TQdpFtdcPromptTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLedgerManageIDType是一个分户管理资产编码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLedgerManageIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInvestVarietyType是一个投资品种类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInvestVarietyType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBankAccountTypeType是一个账户类别类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBankAccountTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLedgerManageBankType是一个开户银行类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcLedgerManageBankType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCffexDepartmentNameType是一个开户营业部类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCffexDepartmentNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCffexDepartmentCodeType是一个营业部代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCffexDepartmentCodeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcHasTrusteeType是一个是否有托管人类型 -#////////////////////////////////////////////////////////////////////// -#有 -defineDict["QDP_FTDC_HT_Yes"] = '1' -#没有 -defineDict["QDP_FTDC_HT_No"] = '0' - -typedefDict["TQdpFtdcHasTrusteeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCMemo1Type是一个说明类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCMemo1Type"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAssetmgrCFullNameType是一个代理资产管理业务的期货公司全称类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAssetmgrCFullNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAssetmgrApprovalNOType是一个资产管理业务批文号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAssetmgrApprovalNOType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAssetmgrMgrNameType是一个资产管理业务负责人姓名类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAssetmgrMgrNameType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAmTypeType是一个机构类型类型 -#////////////////////////////////////////////////////////////////////// -#银行 -defineDict["QDP_FTDC_AMT_Bank"] = '1' -#证券公司 -defineDict["QDP_FTDC_AMT_Securities"] = '2' -#基金公司 -defineDict["QDP_FTDC_AMT_Fund"] = '3' -#保险公司 -defineDict["QDP_FTDC_AMT_Insurance"] = '4' -#信托公司 -defineDict["QDP_FTDC_AMT_Trust"] = '5' -#其他 -defineDict["QDP_FTDC_AMT_Other"] = '9' - -typedefDict["TQdpFtdcAmTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCAmTypeType是一个机构类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCAmTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCFundIOTypeType是一个出入金类型类型 -#////////////////////////////////////////////////////////////////////// -#出入金 -defineDict["QDP_FTDC_CFIOT_FundIO"] = '0' -#银期换汇 -defineDict["QDP_FTDC_CFIOT_SwapCurrency"] = '1' - -typedefDict["TQdpFtdcCSRCFundIOTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCusAccountTypeType是一个结算账户类型类型 -#////////////////////////////////////////////////////////////////////// -#期货结算账户 -defineDict["QDP_FTDC_CAT_Futures"] = '1' -#纯期货资管业务下的资管结算账户 -defineDict["QDP_FTDC_CAT_AssetmgrFuture"] = '2' -#综合类资管业务下的期货资管托管账户 -defineDict["QDP_FTDC_CAT_AssetmgrTrustee"] = '3' -#综合类资管业务下的资金中转账户 -defineDict["QDP_FTDC_CAT_AssetmgrTransfer"] = '4' - -typedefDict["TQdpFtdcCusAccountTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCNationalType是一个国籍类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCNationalType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCSRCSecAgentIDType是一个二级代理ID类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCSRCSecAgentIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLanguageTypeType是一个通知语言类型类型 -#////////////////////////////////////////////////////////////////////// -#中文 -defineDict["QDP_FTDC_LT_Chinese"] = '1' -#英文 -defineDict["QDP_FTDC_LT_English"] = '2' - -typedefDict["TQdpFtdcLanguageTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAmAccountType是一个投资账户类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcAmAccountType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAssetmgrClientTypeType是一个资产管理客户类型类型 -#////////////////////////////////////////////////////////////////////// -#个人资管客户 -defineDict["QDP_FTDC_AMCT_Person"] = '1' -#单位资管客户 -defineDict["QDP_FTDC_AMCT_Organ"] = '2' -#特殊单位资管客户 -defineDict["QDP_FTDC_AMCT_SpecialOrgan"] = '4' - -typedefDict["TQdpFtdcAssetmgrClientTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcAssetmgrTypeType是一个投资类型类型 -#////////////////////////////////////////////////////////////////////// -#期货类 -defineDict["QDP_FTDC_ASST_Futures"] = '3' -#综合类 -defineDict["QDP_FTDC_ASST_SpecialOrgan"] = '4' - -typedefDict["TQdpFtdcAssetmgrTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOMType是一个计量单位类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcUOMType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSHFEInstLifePhaseType是一个上期所合约生命周期状态类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSHFEInstLifePhaseType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSHFEProductClassType是一个产品类型类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSHFEProductClassType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcPriceDecimalType是一个价格小数位类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcPriceDecimalType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInTheMoneyFlagType是一个平值期权标志类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcInTheMoneyFlagType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCheckInstrTypeType是一个合约比较类型类型 -#////////////////////////////////////////////////////////////////////// -#合约交易所不存在 -defineDict["QDP_FTDC_CIT_HasExch"] = '0' -#合约本系统不存在 -defineDict["QDP_FTDC_CIT_HasATP"] = '1' -#合约比较不一致 -defineDict["QDP_FTDC_CIT_HasDiff"] = '2' - -typedefDict["TQdpFtdcCheckInstrTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDeliveryTypeType是一个交割类型类型 -#////////////////////////////////////////////////////////////////////// -#手工交割 -defineDict["QDP_FTDC_DT_HandDeliv"] = '1' -#到期交割 -defineDict["QDP_FTDC_DT_PersonDeliv"] = '2' - -typedefDict["TQdpFtdcDeliveryTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBigMoneyType是一个资金类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcBigMoneyType"] = "float" - -#////////////////////////////////////////////////////////////////////// -#TFtdcMaxMarginSideAlgorithmType是一个大额单边保证金算法类型 -#////////////////////////////////////////////////////////////////////// -#不使用大额单边保证金算法 -defineDict["QDP_FTDC_MMSA_NO"] = '0' -#使用大额单边保证金算法 -defineDict["QDP_FTDC_MMSA_YES"] = '1' - -typedefDict["TQdpFtdcMaxMarginSideAlgorithmType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDAClientTypeType是一个资产管理客户类型类型 -#////////////////////////////////////////////////////////////////////// -#自然人 -defineDict["QDP_FTDC_CACT_Person"] = '0' -#法人 -defineDict["QDP_FTDC_CACT_Company"] = '1' -#其他 -defineDict["QDP_FTDC_CACT_Other"] = '2' - -typedefDict["TQdpFtdcDAClientTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombinInstrIDType是一个套利合约代码类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCombinInstrIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombinSettlePriceType是一个各腿结算价类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcCombinSettlePriceType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDCEPriorityType是一个优先级类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcDCEPriorityType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeGroupIDType是一个成交组号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcTradeGroupIDType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcIsCheckPrepaType是一个是否校验开户可用资金类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcIsCheckPrepaType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcUOAAssetmgrTypeType是一个投资类型类型 -#////////////////////////////////////////////////////////////////////// -#期货类 -defineDict["QDP_FTDC_UOAAT_Futures"] = '1' -#综合类 -defineDict["QDP_FTDC_UOAAT_SpecialOrgan"] = '2' - -typedefDict["TQdpFtdcUOAAssetmgrTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDirectionEnType是一个买卖方向类型 -#////////////////////////////////////////////////////////////////////// -#Buy -defineDict["QDP_FTDC_DEN_Buy"] = '0' -#Sell -defineDict["QDP_FTDC_DEN_Sell"] = '1' - -typedefDict["TQdpFtdcDirectionEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOffsetFlagEnType是一个开平标志类型 -#////////////////////////////////////////////////////////////////////// -#Position Opening -defineDict["QDP_FTDC_OFEN_Open"] = '0' -#Position Close -defineDict["QDP_FTDC_OFEN_Close"] = '1' -#Forced Liquidation -defineDict["QDP_FTDC_OFEN_ForceClose"] = '2' -#Close Today -defineDict["QDP_FTDC_OFEN_CloseToday"] = '3' -#Close Prev. -defineDict["QDP_FTDC_OFEN_CloseYesterday"] = '4' -#Forced Reduction -defineDict["QDP_FTDC_OFEN_ForceOff"] = '5' -#Local Forced Liquidation -defineDict["QDP_FTDC_OFEN_LocalForceClose"] = '6' - -typedefDict["TQdpFtdcOffsetFlagEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcHedgeFlagEnType是一个投机套保标志类型 -#////////////////////////////////////////////////////////////////////// -#Speculation -defineDict["QDP_FTDC_HFEN_Speculation"] = '1' -#Arbitrage -defineDict["QDP_FTDC_HFEN_Arbitrage"] = '2' -#Hedge -defineDict["QDP_FTDC_HFEN_Hedge"] = '3' - -typedefDict["TQdpFtdcHedgeFlagEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundIOTypeEnType是一个出入金类型类型 -#////////////////////////////////////////////////////////////////////// -#Deposit/Withdrawal -defineDict["QDP_FTDC_FIOTEN_FundIO"] = '1' -#Bank-Futures Transfer -defineDict["QDP_FTDC_FIOTEN_Transfer"] = '2' -#Bank-Futures FX Exchange -defineDict["QDP_FTDC_FIOTEN_SwapCurrency"] = '3' - -typedefDict["TQdpFtdcFundIOTypeEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundTypeEnType是一个资金类型类型 -#////////////////////////////////////////////////////////////////////// -#Bank Deposit -defineDict["QDP_FTDC_FTEN_Deposite"] = '1' -#Payment/Fee -defineDict["QDP_FTDC_FTEN_ItemFund"] = '2' -#Brokerage Adj -defineDict["QDP_FTDC_FTEN_Company"] = '3' -#Internal Transfer -defineDict["QDP_FTDC_FTEN_InnerTransfer"] = '4' - -typedefDict["TQdpFtdcFundTypeEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundDirectionEnType是一个出入金方向类型 -#////////////////////////////////////////////////////////////////////// -#Deposit -defineDict["QDP_FTDC_FDEN_In"] = '1' -#Withdrawal -defineDict["QDP_FTDC_FDEN_Out"] = '2' - -typedefDict["TQdpFtdcFundDirectionEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFundMortDirectionEnType是一个货币质押方向类型 -#////////////////////////////////////////////////////////////////////// -#Pledge -defineDict["QDP_FTDC_FMDEN_In"] = '1' -#Redemption -defineDict["QDP_FTDC_FMDEN_Out"] = '2' - -typedefDict["TQdpFtdcFundMortDirectionEnType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSwapBusinessTypeType是一个换汇业务种类类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcSwapBusinessTypeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOptionsTypeType是一个期权类型类型 -#////////////////////////////////////////////////////////////////////// -#看涨 -defineDict["QDP_FTDC_CP_CallOptions"] = '1' -#看跌 -defineDict["QDP_FTDC_CP_PutOptions"] = '2' - -typedefDict["TQdpFtdcOptionsTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStrikeModeType是一个执行方式类型 -#////////////////////////////////////////////////////////////////////// -#欧式 -defineDict["QDP_FTDC_STM_Continental"] = '0' -#美式 -defineDict["QDP_FTDC_STM_American"] = '1' -#百慕大 -defineDict["QDP_FTDC_STM_Bermuda"] = '2' - -typedefDict["TQdpFtdcStrikeModeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStrikeTypeType是一个执行类型类型 -#////////////////////////////////////////////////////////////////////// -#自身对冲 -defineDict["QDP_FTDC_STT_Hedge"] = '0' -#匹配执行 -defineDict["QDP_FTDC_STT_Match"] = '1' - -typedefDict["TQdpFtdcStrikeTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcApplyTypeType是一个中金所期权放弃执行申请类型类型 -#////////////////////////////////////////////////////////////////////// -#不执行数量 -defineDict["QDP_FTDC_APPT_NotStrikeNum"] = '4' - -typedefDict["TQdpFtdcApplyTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcGiveUpDataSourceType是一个放弃执行申请数据来源类型 -#////////////////////////////////////////////////////////////////////// -#系统生成 -defineDict["QDP_FTDC_GUDS_Gen"] = '0' -#手工添加 -defineDict["QDP_FTDC_GUDS_Hand"] = '1' - -typedefDict["TQdpFtdcGiveUpDataSourceType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExecOrderSysIDType是一个执行宣告系统编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcExecOrderSysIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExecResultType是一个执行结果类型 -#////////////////////////////////////////////////////////////////////// -#没有执行 -defineDict["QDP_FTDC_OER_NoExec"] = 'n' -#已经取消 -defineDict["QDP_FTDC_OER_Canceled"] = 'c' -#执行成功 -defineDict["QDP_FTDC_OER_OK"] = '0' -#期权持仓不够 -defineDict["QDP_FTDC_OER_NoPosition"] = '1' -#资金不够 -defineDict["QDP_FTDC_OER_NoDeposit"] = '2' -#会员不存在 -defineDict["QDP_FTDC_OER_NoParticipant"] = '3' -#客户不存在 -defineDict["QDP_FTDC_OER_NoClient"] = '4' -#合约不存在 -defineDict["QDP_FTDC_OER_NoInstrument"] = '6' -#没有执行权限 -defineDict["QDP_FTDC_OER_NoRight"] = '7' -#不合理的数量 -defineDict["QDP_FTDC_OER_InvalidVolume"] = '8' -#没有足够的历史成交 -defineDict["QDP_FTDC_OER_NoEnoughHistoryTrade"] = '9' -#未知 -defineDict["QDP_FTDC_OER_Unknown"] = 'a' - -typedefDict["TQdpFtdcExecResultType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStrikeSequenceType是一个执行序号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcStrikeSequenceType"] = "int" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStrikeTimeType是一个执行时间类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcStrikeTimeType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombinationTypeType是一个组合类型类型 -#////////////////////////////////////////////////////////////////////// -#期货组合 -defineDict["QDP_FTDC_COMBT_Future"] = '0' -#垂直价差BUL -defineDict["QDP_FTDC_COMBT_BUL"] = '1' -#垂直价差BER -defineDict["QDP_FTDC_COMBT_BER"] = '2' -#跨式组合 -defineDict["QDP_FTDC_COMBT_STD"] = '3' -#宽跨式组合 -defineDict["QDP_FTDC_COMBT_STG"] = '4' -#备兑组合 -defineDict["QDP_FTDC_COMBT_PRT"] = '5' -#时间价差组合 -defineDict["QDP_FTDC_COMBT_CLD"] = '6' - -typedefDict["TQdpFtdcCombinationTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcOptionRoyaltyPriceTypeType是一个期权权利金价格类型类型 -#////////////////////////////////////////////////////////////////////// -#昨结算价 -defineDict["QDP_FTDC_ORPT_PreSettlementPrice"] = '1' -#开仓价 -defineDict["QDP_FTDC_ORPT_OpenPrice"] = '4' - -typedefDict["TQdpFtdcOptionRoyaltyPriceTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBalanceAlgorithmType是一个权益算法类型 -#////////////////////////////////////////////////////////////////////// -#不计算期权市值盈亏 -defineDict["QDP_FTDC_BLAG_Default"] = '1' -#计算期权市值亏损 -defineDict["QDP_FTDC_BLAG_IncludeOptValLost"] = '2' - -typedefDict["TQdpFtdcBalanceAlgorithmType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcActionTypeType是一个执行类型类型 -#////////////////////////////////////////////////////////////////////// -#执行 -defineDict["QDP_FTDC_ACTP_Exec"] = '1' -#放弃 -defineDict["QDP_FTDC_ACTP_Abandon"] = '2' - -typedefDict["TQdpFtdcActionTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcForQuoteStatusType是一个询价状态类型 -#////////////////////////////////////////////////////////////////////// -#已经提交 -defineDict["QDP_FTDC_FQST_Submitted"] = 'a' -#已经接受 -defineDict["QDP_FTDC_FQST_Accepted"] = 'b' -#已经被拒绝 -defineDict["QDP_FTDC_FQST_Rejected"] = 'c' - -typedefDict["TQdpFtdcForQuoteStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcValueMethodType是一个取值方式类型 -#////////////////////////////////////////////////////////////////////// -#按绝对值 -defineDict["QDP_FTDC_VM_Absolute"] = '0' -#按比率 -defineDict["QDP_FTDC_VM_Ratio"] = '1' - -typedefDict["TQdpFtdcValueMethodType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExecOrderPositionFlagType是一个期权行权后是否保留期货头寸的标记类型 -#////////////////////////////////////////////////////////////////////// -#保留 -defineDict["QDP_FTDC_EOPF_Reserve"] = '0' -#不保留 -defineDict["QDP_FTDC_EOPF_UnReserve"] = '1' - -typedefDict["TQdpFtdcExecOrderPositionFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcExecOrderCloseFlagType是一个期权行权后生成的头寸是否自动平仓类型 -#////////////////////////////////////////////////////////////////////// -#自动平仓 -defineDict["QDP_FTDC_EOCF_AutoClose"] = '0' -#免于自动平仓 -defineDict["QDP_FTDC_EOCF_NotToClose"] = '1' - -typedefDict["TQdpFtdcExecOrderCloseFlagType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcProductTypeType是一个产品类型类型 -#////////////////////////////////////////////////////////////////////// -#期货 -defineDict["QDP_FTDC_PTE_Futures"] = '1' -#期权 -defineDict["QDP_FTDC_PTE_Options"] = '2' - -typedefDict["TQdpFtdcProductTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCZCEUploadFileNameType是一个郑商所结算文件名类型 -#////////////////////////////////////////////////////////////////////// -#^\d{8}_zz_\d{4} -defineDict["QDP_FTDC_CUFN_CUFN_O"] = 'O' -#^\d{8}成交表 -defineDict["QDP_FTDC_CUFN_CUFN_T"] = 'T' -#^\d{8}单腿持仓表new -defineDict["QDP_FTDC_CUFN_CUFN_P"] = 'P' -#^\d{8}非平仓了结表 -defineDict["QDP_FTDC_CUFN_CUFN_N"] = 'N' -#^\d{8}平仓表 -defineDict["QDP_FTDC_CUFN_CUFN_L"] = 'L' -#^\d{8}资金表 -defineDict["QDP_FTDC_CUFN_CUFN_F"] = 'F' -#^\d{8}组合持仓表 -defineDict["QDP_FTDC_CUFN_CUFN_C"] = 'C' -#^\d{8}保证金参数表 -defineDict["QDP_FTDC_CUFN_CUFN_M"] = 'M' - -typedefDict["TQdpFtdcCZCEUploadFileNameType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDCEUploadFileNameType是一个大商所结算文件名类型 -#////////////////////////////////////////////////////////////////////// -#^\d{8}_dl_\d{3} -defineDict["QDP_FTDC_DUFN_DUFN_O"] = 'O' -#^\d{8}_成交表 -defineDict["QDP_FTDC_DUFN_DUFN_T"] = 'T' -#^\d{8}_持仓表 -defineDict["QDP_FTDC_DUFN_DUFN_P"] = 'P' -#^\d{8}_资金结算表 -defineDict["QDP_FTDC_DUFN_DUFN_F"] = 'F' -#^\d{8}_优惠组合持仓明细表 -defineDict["QDP_FTDC_DUFN_DUFN_C"] = 'C' -#^\d{8}_持仓明细表 -defineDict["QDP_FTDC_DUFN_DUFN_D"] = 'D' -#^\d{8}_保证金参数表 -defineDict["QDP_FTDC_DUFN_DUFN_M"] = 'M' -#^\d{8}_期权执行表 -defineDict["QDP_FTDC_DUFN_DUFN_S"] = 'S' - -typedefDict["TQdpFtdcDCEUploadFileNameType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcSHFEUploadFileNameType是一个上期所结算文件名类型 -#////////////////////////////////////////////////////////////////////// -#^\d{4}_\d{8}_\d{8}_DailyFundChg -defineDict["QDP_FTDC_SUFN_SUFN_O"] = 'O' -#^\d{4}_\d{8}_\d{8}_Trade -defineDict["QDP_FTDC_SUFN_SUFN_T"] = 'T' -#^\d{4}_\d{8}_\d{8}_SettlementDetail -defineDict["QDP_FTDC_SUFN_SUFN_P"] = 'P' -#^\d{4}_\d{8}_\d{8}_Capital -defineDict["QDP_FTDC_SUFN_SUFN_F"] = 'F' - -typedefDict["TQdpFtdcSHFEUploadFileNameType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCFFEXUploadFileNameType是一个中金所结算文件名类型 -#////////////////////////////////////////////////////////////////////// -#^\d{4}_SG\d{1}_\d{8}_\d{1}_Trade -defineDict["QDP_FTDC_CFUFN_SUFN_T"] = 'T' -#^\d{4}_SG\d{1}_\d{8}_\d{1}_SettlementDetail -defineDict["QDP_FTDC_CFUFN_SUFN_P"] = 'P' -#^\d{4}_SG\d{1}_\d{8}_\d{1}_Capital -defineDict["QDP_FTDC_CFUFN_SUFN_F"] = 'F' -#^\d{4}_SG\d{1}_\d{8}_\d{1}_OptionExec -defineDict["QDP_FTDC_CFUFN_SUFN_S"] = 'S' - -typedefDict["TQdpFtdcCFFEXUploadFileNameType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcCombDirectionType是一个组合指令方向类型 -#////////////////////////////////////////////////////////////////////// -#申请组合 -defineDict["QDP_FTDC_CMDR_Comb"] = '0' -#申请拆分 -defineDict["QDP_FTDC_CMDR_UnComb"] = '1' - -typedefDict["TQdpFtdcCombDirectionType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLockTypeType是一个锁定方向类型 -#////////////////////////////////////////////////////////////////////// -#锁定 -defineDict["QDP_FTDC_LCKT_Lock"] = '1' -#解锁 -defineDict["QDP_FTDC_LCKT_Unlock"] = '2' - -typedefDict["TQdpFtdcLockTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcBizTypeType是一个业务类型类型 -#////////////////////////////////////////////////////////////////////// -#期货 -defineDict["QDP_FTDC_BZTP_Future"] = '1' -#证券 -defineDict["QDP_FTDC_BZTP_Stock"] = '2' - -typedefDict["TQdpFtdcBizTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcDesignateTypeType是一个指定类型类型 -#////////////////////////////////////////////////////////////////////// -#指定登记 -defineDict["QDP_FTDC_DSTP_Register"] = '1' -#指定撤销 -defineDict["QDP_FTDC_DSTP_Cancel"] = '2' - -typedefDict["TQdpFtdcDesignateTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFreezeReasonTypeType是一个冻结原因类型 -#////////////////////////////////////////////////////////////////////// -#初始化 -defineDict["QDP_FTDC_FRTP_Init"] = '1' -#锁定 -defineDict["QDP_FTDC_FRTP_Lock"] = '2' -#执行 -defineDict["QDP_FTDC_FRTP_Exec"] = '3' -#仓位校验 -defineDict["QDP_FTDC_FRTP_Check"] = '4' -#E+1日执行冻结 -defineDict["QDP_FTDC_FRTP_ExecFreeze"] = '5' - -typedefDict["TQdpFtdcFreezeReasonTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcFreezeTypeType是一个冻结类型类型 -#////////////////////////////////////////////////////////////////////// -#冻结 -defineDict["QDP_FTDC_FZTP_Freeze"] = '1' -#解冻 -defineDict["QDP_FTDC_FZTP_Unfreeze"] = '2' -#强制执行 -defineDict["QDP_FTDC_FZTP_Force"] = '3' - -typedefDict["TQdpFtdcFreezeTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcTradeSystemTypeType是一个交易系统类型类型 -#////////////////////////////////////////////////////////////////////// -#未知系统 -defineDict["QDP_FTDC_TSTP_Unknow"] = '0' -#期货系统 -defineDict["QDP_FTDC_TSTP_Future"] = '1' -#个股系统 -defineDict["QDP_FTDC_TSTP_IShare"] = '2' - -typedefDict["TQdpFtdcTradeSystemTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStockDisposalTypeType是一个证券处置方向类型 -#////////////////////////////////////////////////////////////////////// -#划入经纪公司账户 -defineDict["QDP_FTDC_STPT_ToBroker"] = '1' -#划入投资者账户 -defineDict["QDP_FTDC_STPT_ToInvestor"] = '2' - -typedefDict["TQdpFtdcStockDisposalTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStockDisposalSysIDType是一个证券处置编号类型 -#////////////////////////////////////////////////////////////////////// -typedefDict["TQdpFtdcStockDisposalSysIDType"] = "string" - -#////////////////////////////////////////////////////////////////////// -#TFtdcStockDisposalStatusType是一个证券处置状态类型 -#////////////////////////////////////////////////////////////////////// -#已经提交 -defineDict["QDP_FTDC_SDPS_Submitted"] = 'a' -#已经接受 -defineDict["QDP_FTDC_SDPS_Accepted"] = 'b' -#已经被拒绝 -defineDict["QDP_FTDC_SDPS_Rejected"] = 'c' -#已经被撤销 -defineDict["QDP_FTDC_SDPS_Cancelled"] = 'd' - -typedefDict["TQdpFtdcStockDisposalStatusType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcInstructionRightTypeType是一个指令权限类型类型 -#////////////////////////////////////////////////////////////////////// -#限价单 -defineDict["QDP_FTDC_ISTR_Limit"] = '1' -#限价全额成交否则取消 -defineDict["QDP_FTDC_ISTR_Limit_FOK"] = '2' -#市价订单剩余转限价 -defineDict["QDP_FTDC_ISTR_Market_RemainLimit"] = '3' -#市价订单剩余撤销 -defineDict["QDP_FTDC_ISTR_Market_FAK"] = '4' -#市价全额成交否则取消 -defineDict["QDP_FTDC_ISTR_Market_FOK"] = '5' -#证券锁定 -defineDict["QDP_FTDC_ISTR_Lock"] = '6' -#证券解锁 -defineDict["QDP_FTDC_ISTR_Unlock"] = '7' - -typedefDict["TQdpFtdcInstructionRightTypeType"] = "char" - -#////////////////////////////////////////////////////////////////////// -#TFtdcLevelTypeType是一个投资者分级类型类型 -#////////////////////////////////////////////////////////////////////// -#一级投资者 -defineDict["QDP_FTDC_IVLV_FirstLevel"] = '1' -#二级投资者 -defineDict["QDP_FTDC_IVLV_SecondLevel"] = '2' -#三级投资者 -defineDict["QDP_FTDC_IVLV_ThirdLevel"] = '3' - -typedefDict["TQdpFtdcLevelTypeType"] = "char" - diff --git a/vn.qdp/pyscript/qdp_md_process.cpp b/vn.qdp/pyscript/qdp_md_process.cpp index b991bb99..d0eea3bd 100644 --- a/vn.qdp/pyscript/qdp_md_process.cpp +++ b/vn.qdp/pyscript/qdp_md_process.cpp @@ -48,9 +48,11 @@ void MdApi::processRspUserLogin(Task task) data["UserID"] = task_data.UserID; data["DataCenterID"] = task_data.DataCenterID; data["TradingDay"] = task_data.TradingDay; + data["SessionID"] = task_data.SessionID; data["BrokerID"] = task_data.BrokerID; data["MaxOrderLocalID"] = task_data.MaxOrderLocalID; data["TradingSystemName"] = task_data.TradingSystemName; + data["FrontID"] = task_data.FrontID; data["LoginTime"] = task_data.LoginTime; data["UserFlowSize"] = task_data.UserFlowSize; @@ -81,7 +83,13 @@ void MdApi::processRspUserLogout(Task task) void MdApi::processRtnQmdInstrumentStatu(Task task) { PyLock lock; - this->onRtnQmdInstrumentStatu(); + CQdpFtdcQmdInstrumentStateField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["InstrumentStatus"] = task_data.InstrumentStatus; + data["ExchangeID"] = task_data.ExchangeID; + + this->onRtnQmdInstrumentStatu(data); }; void MdApi::processRspSubscribeTopic(Task task) @@ -201,11 +209,41 @@ void MdApi::processRspUnSubMarketData(Task task) void MdApi::processRspQryDepthMarketData(Task task) { PyLock lock; + CQdpFtdcRspMarketDataField task_data = any_cast(task.task_data); + dict data; + data["HighestPrice"] = task_data.HighestPrice; + data["BidPrice1"] = task_data.BidPrice1; + data["LowerLimitPrice"] = task_data.LowerLimitPrice; + data["PreOpenInterest"] = task_data.PreOpenInterest; + 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["SettlementGroupID"] = task_data.SettlementGroupID; + data["BidVolume1"] = task_data.BidVolume1; + data["Volume"] = task_data.Volume; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; + data["InstrumentID"] = task_data.InstrumentID; + data["ClosePrice"] = task_data.ClosePrice; + data["ExchangeID"] = task_data.ExchangeID; + data["SettlementID"] = task_data.SettlementID; + 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["OpenPrice"] = task_data.OpenPrice; + data["LowestPrice"] = task_data.LowestPrice; + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; - this->onRspQryDepthMarketData(error, task.task_id, task.task_last); + this->onRspQryDepthMarketData(data, error, task.task_id, task.task_last); }; diff --git a/vn.qdp/pyscript/qdp_struct.py b/vn.qdp/pyscript/qdp_struct.py index 6cbd3e5a..b6b80b84 100644 --- a/vn.qdp/pyscript/qdp_struct.py +++ b/vn.qdp/pyscript/qdp_struct.py @@ -159,7 +159,7 @@ CQdpFtdcInputOrderField["ForceCloseReason"] = "char" CQdpFtdcInputOrderField["IsAutoSuspend"] = "int" #业务单元 CQdpFtdcInputOrderField["BusinessUnit"] = "string" -#用户自定义域 +#用户自定义域` CQdpFtdcInputOrderField["UserCustom"] = "string" #营业部代码 CQdpFtdcInputOrderField["BranchID"] = "string" diff --git a/vn.qdp/qdpapi/QdpFtdcMduserApi.h b/vn.qdp/qdpapi/QdpFtdcMduserApi.h deleted file mode 100644 index dfb68003..00000000 --- a/vn.qdp/qdpapi/QdpFtdcMduserApi.h +++ /dev/null @@ -1,219 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -///@system QuantDo Platform -///@company ϺͶƼ޹˾ -///@file QdpFtdcMduserApi.h -///@brief ˿ͻ˽ӿ -///@history -///20130520 һ ļ -///////////////////////////////////////////////////////////////////////// - -#ifndef QDP_FTDCMDUSERAPI_H -#define QDP_FTDCMDUSERAPI_H - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include "QdpFtdcUserApiStruct.h" - -#if defined(ISLIB) && defined(WIN32) -#ifdef LIB_MDUSER_API_EXPORT -#define MDUSER_API_EXPORT __declspec(dllexport) -#else -#define MDUSER_API_EXPORT __declspec(dllimport) -#endif -#else -#define MDUSER_API_EXPORT -#endif - -class CQdpFtdcMduserSpi -{ -public: - ///ͻ뽻׺̨ͨʱδ¼ǰ÷á - virtual void OnFrontConnected(){}; - - ///ͻ뽻׺̨ͨӶϿʱ÷áAPIԶӣͻ˿ɲ - ///@param nReason ԭ - /// 0x1001 ʧ - /// 0x1002 дʧ - /// 0x2001 ʱ - /// 0x2002 ʧ - /// 0x2003 յ - virtual void OnFrontDisconnected(int nReason){}; - - ///ʱ档ʱδյʱ÷á - ///@param nTimeLapse ϴνձĵʱ - virtual void OnHeartBeatWarning(int nTimeLapse){}; - - ///Ļصʼ֪ͨAPIյһĺȵñȻǸĻصDZĻص֪ͨ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageStart(int nTopicID, int nSequenceNo){}; - - ///Ļص֪ͨAPIյһĺȵñĻصʼ֪ͨȻǸĻصñ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageEnd(int nTopicID, int nSequenceNo){}; - - //ಥӿ add by zbz 20150304 - virtual void OnMultiHeartbeat(char *CurrTime,char *MultiCastIP) {}; - - //㲥յֵʱ򣬻صãqmdata - virtual void UdpMarketData(CQdpFtdcDepthMarketDataField *qmdata){}; - - ///Ӧ - virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û¼Ӧ - virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û˳Ӧ - virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֣ݺԼ״̬ - virtual void OnRtnQmdInstrumentStatu(CQdpFtdcQmdInstrumentStateField *pQmdInstrumentState) {}; - - ///Ӧ - virtual void OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֪ͨ - virtual void OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData) {}; - - ///ĺԼϢ - virtual void OnRspSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///˶ԼϢ - virtual void OnRspUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryDepthMarketData(CQdpFtdcRspMarketDataField *pRspMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; -}; - -class MDUSER_API_EXPORT CQdpFtdcMduserApi -{ -public: - ///MduserApi - ///@param pszFlowPath ϢļĿ¼ĬΪǰĿ¼ - ///@return UserApi - static CQdpFtdcMduserApi *CreateFtdcMduserApi(const char *pszFlowPath = ""); - - ///ȡϵͳ汾 - ///@param nMajorVersion 汾 - ///@param nMinorVersion Ӱ汾 - ///@return ϵͳʶַ - static const char *GetVersion(int &nMajorVersion, int &nMinorVersion); - - ///ɾӿڶ - ///@remark ʹñӿڶʱ,øúɾӿڶ - virtual void Release() = 0; - - //ಥÿ - virtual void SetMultiCast(bool bMultiCast=false) = 0; - - //עಥַ - virtual void RegTopicMultiAddr(char *pMultiAddr)=0; - - - ///ʼ - ///@remark ʼл,ֻеú,ӿڲſʼ - virtual void Init() = 0; - - ///ȴӿ߳̽ - ///@return ߳˳ - virtual int Join() = 0; - - ///ȡǰ - ///@retrun ȡĽ - ///@remark ֻе¼ɹ,ܵõȷĽ - virtual const char *GetTradingDay() = 0; - - ///עǰûַ - ///@param pszFrontAddressǰûַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:17001 - ///@remark tcpЭ飬127.0.0.1ַ17001˿ںš - virtual void RegisterFront(char *pszFrontAddress) = 0; - - ///עַַ - ///@param pszNsAddressַַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:12001 - ///@remark tcpЭ飬127.0.0.1ַ12001˿ںš - ///@remark RegisterFrontRegisterNameServer - virtual void RegisterNameServer(char *pszNsAddress) = 0; - - ///עصӿ - ///@param pSpi Իصӿʵ - virtual void RegisterSpi(CQdpFtdcMduserSpi *pSpi) = 0; - - ///г顣 - ///@param nTopicID г - ///@param nResumeType гشʽ - /// QDP_TERT_RESTART:ӱտʼش - /// QDP_TERT_RESUME:ϴյ(ǶȫԼʱ֧ģʽ) - /// QDP_TERT_QUICK:ȴ͵ǰ,ٴ͵¼г - ///@remark ÷ҪInitǰá򲻻յ˽ݡ - virtual void SubscribeMarketDataTopic(int nTopicID, QDP_TE_RESUME_TYPE nResumeType) = 0; - - ///ĺԼ顣 - ///@param ppInstrumentID ԼID - ///@param nCount Ҫ/˶ĺԼ - ///@remark - virtual int SubMarketData(char *ppInstrumentID[], int nCount)=0; - - ///˶Լ顣 - ///@param ppInstrumentID ԼID - ///@param nCount Ҫ/˶ĺԼ - ///@remark - virtual int UnSubMarketData(char *ppInstrumentID[], int nCount)=0; - - ///ʱʱ䡣 - ///@param timeout ʱʱ() - virtual void SetHeartbeatTimeout(unsigned int timeout) = 0; - - - ///ڴȡֵ - ///@param CQdpFtdcShmDepthMarketDataField - ///@param CQdpFtdcDepthMarketDataField ѯֵ - ///@return 0 ɹ - ///@return -1 ־ļʧ - virtual void ShmMarketData(CQdpFtdcShmDepthMarketDataField *reqfield,CQdpFtdcDepthMarketDataField *defdata) = 0; - - ///UDP - ///@param udpip㲥ַ - ///@return 0 ɹ - ///@return -1 ȡUDPʧ - virtual void setudpchannel(char *udpip)= 0; - - ///û¼ - virtual int ReqUserLogin(CQdpFtdcReqUserLoginField *pReqUserLogin, int nRequestID) = 0; - - ///û˳ - virtual int ReqUserLogout(CQdpFtdcReqUserLogoutField *pReqUserLogout, int nRequestID) = 0; - - /// - virtual int ReqSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ĺԼϢ - virtual int ReqSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, int nRequestID) = 0; - - ///˶ԼϢ - virtual int ReqUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryDepthMarketData(CQdpFtdcQryMarketDataField *pQryMarketData, int nRequestID) = 0; - - //ಥ - //޷¼£ô˽ӿڿԽ鲥 - //ڿԵ¼ô˽ӿ - //@param TradingDay գûе¼£ȻգҪע⽻Ľ - virtual void ActiveMultiMarketData(char * TradingDay) = 0; -protected: - ~CQdpFtdcMduserApi(){}; -}; - -#endif diff --git a/vn.qdp/qdpapi/QdpFtdcMduserApi.h~ b/vn.qdp/qdpapi/QdpFtdcMduserApi.h~ deleted file mode 100644 index dfb68003..00000000 --- a/vn.qdp/qdpapi/QdpFtdcMduserApi.h~ +++ /dev/null @@ -1,219 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -///@system QuantDo Platform -///@company ϺͶƼ޹˾ -///@file QdpFtdcMduserApi.h -///@brief ˿ͻ˽ӿ -///@history -///20130520 һ ļ -///////////////////////////////////////////////////////////////////////// - -#ifndef QDP_FTDCMDUSERAPI_H -#define QDP_FTDCMDUSERAPI_H - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include "QdpFtdcUserApiStruct.h" - -#if defined(ISLIB) && defined(WIN32) -#ifdef LIB_MDUSER_API_EXPORT -#define MDUSER_API_EXPORT __declspec(dllexport) -#else -#define MDUSER_API_EXPORT __declspec(dllimport) -#endif -#else -#define MDUSER_API_EXPORT -#endif - -class CQdpFtdcMduserSpi -{ -public: - ///ͻ뽻׺̨ͨʱδ¼ǰ÷á - virtual void OnFrontConnected(){}; - - ///ͻ뽻׺̨ͨӶϿʱ÷áAPIԶӣͻ˿ɲ - ///@param nReason ԭ - /// 0x1001 ʧ - /// 0x1002 дʧ - /// 0x2001 ʱ - /// 0x2002 ʧ - /// 0x2003 յ - virtual void OnFrontDisconnected(int nReason){}; - - ///ʱ档ʱδյʱ÷á - ///@param nTimeLapse ϴνձĵʱ - virtual void OnHeartBeatWarning(int nTimeLapse){}; - - ///Ļصʼ֪ͨAPIյһĺȵñȻǸĻصDZĻص֪ͨ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageStart(int nTopicID, int nSequenceNo){}; - - ///Ļص֪ͨAPIյһĺȵñĻصʼ֪ͨȻǸĻصñ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageEnd(int nTopicID, int nSequenceNo){}; - - //ಥӿ add by zbz 20150304 - virtual void OnMultiHeartbeat(char *CurrTime,char *MultiCastIP) {}; - - //㲥յֵʱ򣬻صãqmdata - virtual void UdpMarketData(CQdpFtdcDepthMarketDataField *qmdata){}; - - ///Ӧ - virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û¼Ӧ - virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û˳Ӧ - virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֣ݺԼ״̬ - virtual void OnRtnQmdInstrumentStatu(CQdpFtdcQmdInstrumentStateField *pQmdInstrumentState) {}; - - ///Ӧ - virtual void OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֪ͨ - virtual void OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData) {}; - - ///ĺԼϢ - virtual void OnRspSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///˶ԼϢ - virtual void OnRspUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryDepthMarketData(CQdpFtdcRspMarketDataField *pRspMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; -}; - -class MDUSER_API_EXPORT CQdpFtdcMduserApi -{ -public: - ///MduserApi - ///@param pszFlowPath ϢļĿ¼ĬΪǰĿ¼ - ///@return UserApi - static CQdpFtdcMduserApi *CreateFtdcMduserApi(const char *pszFlowPath = ""); - - ///ȡϵͳ汾 - ///@param nMajorVersion 汾 - ///@param nMinorVersion Ӱ汾 - ///@return ϵͳʶַ - static const char *GetVersion(int &nMajorVersion, int &nMinorVersion); - - ///ɾӿڶ - ///@remark ʹñӿڶʱ,øúɾӿڶ - virtual void Release() = 0; - - //ಥÿ - virtual void SetMultiCast(bool bMultiCast=false) = 0; - - //עಥַ - virtual void RegTopicMultiAddr(char *pMultiAddr)=0; - - - ///ʼ - ///@remark ʼл,ֻеú,ӿڲſʼ - virtual void Init() = 0; - - ///ȴӿ߳̽ - ///@return ߳˳ - virtual int Join() = 0; - - ///ȡǰ - ///@retrun ȡĽ - ///@remark ֻе¼ɹ,ܵõȷĽ - virtual const char *GetTradingDay() = 0; - - ///עǰûַ - ///@param pszFrontAddressǰûַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:17001 - ///@remark tcpЭ飬127.0.0.1ַ17001˿ںš - virtual void RegisterFront(char *pszFrontAddress) = 0; - - ///עַַ - ///@param pszNsAddressַַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:12001 - ///@remark tcpЭ飬127.0.0.1ַ12001˿ںš - ///@remark RegisterFrontRegisterNameServer - virtual void RegisterNameServer(char *pszNsAddress) = 0; - - ///עصӿ - ///@param pSpi Իصӿʵ - virtual void RegisterSpi(CQdpFtdcMduserSpi *pSpi) = 0; - - ///г顣 - ///@param nTopicID г - ///@param nResumeType гشʽ - /// QDP_TERT_RESTART:ӱտʼش - /// QDP_TERT_RESUME:ϴյ(ǶȫԼʱ֧ģʽ) - /// QDP_TERT_QUICK:ȴ͵ǰ,ٴ͵¼г - ///@remark ÷ҪInitǰá򲻻յ˽ݡ - virtual void SubscribeMarketDataTopic(int nTopicID, QDP_TE_RESUME_TYPE nResumeType) = 0; - - ///ĺԼ顣 - ///@param ppInstrumentID ԼID - ///@param nCount Ҫ/˶ĺԼ - ///@remark - virtual int SubMarketData(char *ppInstrumentID[], int nCount)=0; - - ///˶Լ顣 - ///@param ppInstrumentID ԼID - ///@param nCount Ҫ/˶ĺԼ - ///@remark - virtual int UnSubMarketData(char *ppInstrumentID[], int nCount)=0; - - ///ʱʱ䡣 - ///@param timeout ʱʱ() - virtual void SetHeartbeatTimeout(unsigned int timeout) = 0; - - - ///ڴȡֵ - ///@param CQdpFtdcShmDepthMarketDataField - ///@param CQdpFtdcDepthMarketDataField ѯֵ - ///@return 0 ɹ - ///@return -1 ־ļʧ - virtual void ShmMarketData(CQdpFtdcShmDepthMarketDataField *reqfield,CQdpFtdcDepthMarketDataField *defdata) = 0; - - ///UDP - ///@param udpip㲥ַ - ///@return 0 ɹ - ///@return -1 ȡUDPʧ - virtual void setudpchannel(char *udpip)= 0; - - ///û¼ - virtual int ReqUserLogin(CQdpFtdcReqUserLoginField *pReqUserLogin, int nRequestID) = 0; - - ///û˳ - virtual int ReqUserLogout(CQdpFtdcReqUserLogoutField *pReqUserLogout, int nRequestID) = 0; - - /// - virtual int ReqSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ĺԼϢ - virtual int ReqSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, int nRequestID) = 0; - - ///˶ԼϢ - virtual int ReqUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryDepthMarketData(CQdpFtdcQryMarketDataField *pQryMarketData, int nRequestID) = 0; - - //ಥ - //޷¼£ô˽ӿڿԽ鲥 - //ڿԵ¼ô˽ӿ - //@param TradingDay գûе¼£ȻգҪע⽻Ľ - virtual void ActiveMultiMarketData(char * TradingDay) = 0; -protected: - ~CQdpFtdcMduserApi(){}; -}; - -#endif diff --git a/vn.qdp/qdpapi/QdpFtdcTraderApi.h~ b/vn.qdp/qdpapi/QdpFtdcTraderApi.h~ deleted file mode 100644 index 58dd059b..00000000 --- a/vn.qdp/qdpapi/QdpFtdcTraderApi.h~ +++ /dev/null @@ -1,345 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -///@system QuantDo Platform -///@company ϺͶƼ޹˾ -///@file QdpFtdcTraderApi.h -///@brief ˿ͻ˽ӿ -///@history -///20150520 һ ļ -///////////////////////////////////////////////////////////////////////// - -#if !defined(QDP_FTDCTRADERAPI_H) -#define QDP_FTDCTRADERAPI_H - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include "QdpFtdcUserApiStruct.h" - -#if defined(ISLIB) && defined(WIN32) -#ifdef LIB_TRADER_API_EXPORT -#define TRADER_API_EXPORT __declspec(dllexport) -#else -#define TRADER_API_EXPORT __declspec(dllimport) -#endif -#else -#define TRADER_API_EXPORT -#endif - -class CQdpFtdcTraderSpi -{ -public: - ///ͻ뽻׺̨ͨʱδ¼ǰ÷á - virtual void OnFrontConnected(){}; - - ///ͻ뽻׺̨ͨӶϿʱ÷áAPIԶӣͻ˿ɲ - ///@param nReason ԭ - /// 0x1001 ʧ - /// 0x1002 дʧ - /// 0x2001 ʱ - /// 0x2002 ʧ - /// 0x2003 յ - virtual void OnFrontDisconnected(int nReason){}; - - ///ʱ档ʱδյʱ÷á - ///@param nTimeLapse ϴνձĵʱ - virtual void OnHeartBeatWarning(int nTimeLapse){}; - - ///Ļصʼ֪ͨAPIյһĺȵñȻǸĻصDZĻص֪ͨ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageStart(int nTopicID, int nSequenceNo){}; - - ///Ļص֪ͨAPIյһĺȵñĻصʼ֪ͨȻǸĻصñ - ///@param nTopicID 루˽ȣ - ///@param nSequenceNo - virtual void OnPackageEnd(int nTopicID, int nSequenceNo){}; - - - ///Ӧ - virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û¼Ӧ - virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û˳Ӧ - virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///û޸Ӧ - virtual void OnRspUserPasswordUpdate(CQdpFtdcUserPasswordUpdateField *pUserPasswordUpdate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///¼Ӧ - virtual void OnRspOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///Ӧ - virtual void OnRspOrderAction(CQdpFtdcOrderActionField *pOrderAction, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ڻʽתڻӦ - virtual void OnRspFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ڻڻʽתӦ - virtual void OnRspFromFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///֪ͨ - virtual void OnRtnFlowMessageCancel(CQdpFtdcFlowMessageCancelField *pFlowMessageCancel) {}; - - ///ɽر - virtual void OnRtnTrade(CQdpFtdcTradeField *pTrade) {}; - - ///ر - virtual void OnRtnOrder(CQdpFtdcOrderField *pOrder) {}; - - ///¼ر - virtual void OnErrRtnOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo) {}; - - ///ر - virtual void OnErrRtnOrderAction(CQdpFtdcOrderActionField *pOrderAction, CQdpFtdcRspInfoField *pRspInfo) {}; - - ///Լ״̬֪ͨ - virtual void OnRtnInstrumentStatus(CQdpFtdcInstrumentStatusField *pInstrumentStatus) {}; - - ///˻ر - virtual void OnRtnInvestorAccountDeposit(CQdpFtdcInvestorAccountDepositResField *pInvestorAccountDepositRes) {}; - - ///QDPϢ֪ͨ - virtual void OnRtnMessageNotify(CQdpFtdcMessageNotifyInfoField *pMessageNotifyInfo) {}; - - ///ڻѯر - virtual void OnErrRtnQueryBankBalanceByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo) {}; - - ///ڻʽתڻر - virtual void OnErrRtnBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo) {}; - - ///ڻڻʽתдر - virtual void OnErrRtnFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo) {}; - - ///ڻѯ֪ͨ - virtual void OnRtnQueryBankBalanceByFuture(CQdpFtdcNotifyQueryAccountField *pNotifyQueryAccount) {}; - - ///ڻʽתڻ֪ͨ - virtual void OnRtnFromBankToFutureByFuture(CQdpFtdcRspTransferField *pRspTransfer) {}; - - ///ڻڻʽת֪ͨ - virtual void OnRtnFromFutureToBankByFuture(CQdpFtdcRspTransferField *pRspTransfer) {}; - - ///ӷ֪ͨ - virtual void OnRtnSGEDeferRate(CQdpFtdcSGEDeferRateField *pSGEDeferRate) {}; - - ///ѯӦ - virtual void OnRspQryOrder(CQdpFtdcOrderField *pOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ɽѯӦ - virtual void OnRspQryTrade(CQdpFtdcTradeField *pTrade, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///Ͷ˻ѯӦ - virtual void OnRspQryUserInvestor(CQdpFtdcRspUserInvestorField *pRspUserInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///Ͷʽ˻ѯӦ - virtual void OnRspQryInvestorAccount(CQdpFtdcRspInvestorAccountField *pRspInvestorAccount, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ԼѯӦ - virtual void OnRspQryInstrument(CQdpFtdcRspInstrumentField *pRspInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryExchange(CQdpFtdcRspExchangeField *pRspExchange, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///Ͷֲֲ߳ѯӦ - virtual void OnRspQryInvestorPosition(CQdpFtdcRspInvestorPositionField *pRspInvestorPosition, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///Ӧ - virtual void OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯӦ - virtual void OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ͶʲѯӦ - virtual void OnRspQryInvestorFee(CQdpFtdcInvestorFeeField *pInvestorFee, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///Ͷ֤߱ʲѯӦ - virtual void OnRspQryInvestorMargin(CQdpFtdcInvestorMarginField *pInvestorMargin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ʱƫѯӦ - virtual void OnRspQryExchangeDiffTime(CQdpFtdcRspExchangeDiffTimeField *pRspExchangeDiffTime, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯǩԼӦ - virtual void OnRspQryContractBank(CQdpFtdcContractBankField *pContractBank, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ڻѯӦ - virtual void OnRspQueryBankAccountMoneyByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ѯתˮӦ - virtual void OnRspQryTransferSerial(CQdpFtdcTransferSerialField *pTransferSerial, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ӷʲѯӦ - virtual void OnRspQrySGEDeferRate(CQdpFtdcSGEDeferRateField *pSGEDeferRate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; - - ///ʵʱѯӦ - virtual void OnRspQryMarketData(CQdpFtdcMarketDataField *pMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; -}; - -class TRADER_API_EXPORT CQdpFtdcTraderApi -{ -public: - ///TraderApi - ///@param pszFlowPath ϢļĿ¼ĬΪǰĿ¼ - ///@return UserApi - static CQdpFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = ""); - - ///ȡϵͳ汾 - ///@param nMajorVersion 汾 - ///@param nMinorVersion Ӱ汾 - ///@return ϵͳʶַ - static const char *GetVersion(int &nMajorVersion, int &nMinorVersion); - - ///ɾӿڶ - ///@remark ʹñӿڶʱ,øúɾӿڶ - virtual void Release() = 0; - - ///ʼ - ///@remark ʼл,ֻеú,ӿڲſʼ - virtual void Init() = 0; - - ///ȴӿ߳̽ - ///@return ߳˳ - virtual int Join() = 0; - - ///ȡǰ - ///@retrun ȡĽ - ///@remark ֻе¼ɹ,ܵõȷĽ - virtual const char *GetTradingDay() = 0; - - ///עǰûַ - ///@param pszFrontAddressǰûַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:17001 - ///@remark tcpЭ飬127.0.0.1ַ17001˿ںš - virtual void RegisterFront(char *pszFrontAddress) = 0; - - ///עַַ - ///@param pszNsAddressַַ - ///@remark ַĸʽΪprotocol://ipaddress:port磺tcp://127.0.0.1:12001 - ///@remark tcpЭ飬127.0.0.1ַ12001˿ںš - ///@remark RegisterFrontRegisterNameServer - virtual void RegisterNameServer(char *pszNsAddress) = 0; - - ///עصӿ - ///@param pSpi Իصӿʵ - virtual void RegisterSpi(CQdpFtdcTraderSpi *pSpi) = 0; - - - ///˽ - ///@param nResumeType ˽شʽ - /// QDP_TERT_RESTART:ӱտʼش - /// QDP_TERT_RESUME:ϴյ - /// QDP_TERT_QUICK:ֻ͵¼˽ - ///@remark ÷ҪInitǰá򲻻յ˽ݡ - virtual void SubscribePrivateTopic(QDP_TE_RESUME_TYPE nResumeType) = 0; - - ///Ĺ - ///@param nResumeType شʽ - /// QDP_TERT_RESTART:ӱտʼش - /// QDP_TERT_RESUME:ϴյ - /// QDP_TERT_QUICK:ֻ͵¼󹫹 - ///@remark ÷ҪInitǰá򲻻յݡ - virtual void SubscribePublicTopic(QDP_TE_RESUME_TYPE nResumeType) = 0; - - ///ĽԱ - ///@param nResumeType Աشʽ - /// QDP_TERT_RESTART:ӱտʼش - /// QDP_TERT_RESUME:ϴյ - /// QDP_TERT_QUICK:ֻ͵¼Ա - ///@remark ÷ҪInitǰá򲻻յԱݡ - virtual void SubscribeUserTopic(QDP_TE_RESUME_TYPE nResumeType) = 0; - - ///ʱʱ䡣 - ///@param timeout ʱʱ() - virtual void SetHeartbeatTimeout(unsigned int timeout) = 0; - - ///־ļ - ///@param pszReqLogFileName ־ļ - ///@return 0 ɹ - ///@return -1 ־ļʧ - virtual int OpenRequestLog(const char *pszReqLogFileName) = 0; - - ///Ӧ־ļ - ///@param pszRspLogFileName Ӧ־ļ - ///@return 0 ɹ - ///@return -1 ־ļʧ - virtual int OpenResponseLog(const char *pszRspLogFileName) = 0; - - - ///û¼ - virtual int ReqUserLogin(CQdpFtdcReqUserLoginField *pReqUserLogin, int nRequestID) = 0; - - ///û˳ - virtual int ReqUserLogout(CQdpFtdcReqUserLogoutField *pReqUserLogout, int nRequestID) = 0; - - ///û޸ - virtual int ReqUserPasswordUpdate(CQdpFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0; - - ///¼ - virtual int ReqOrderInsert(CQdpFtdcInputOrderField *pInputOrder, int nRequestID) = 0; - - /// - virtual int ReqOrderAction(CQdpFtdcOrderActionField *pOrderAction, int nRequestID) = 0; - - ///ڻʽתڻ - virtual int ReqFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, int nRequestID) = 0; - - ///ڻڻʽת - virtual int ReqFromFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryOrder(CQdpFtdcQryOrderField *pQryOrder, int nRequestID) = 0; - - ///ɽѯ - virtual int ReqQryTrade(CQdpFtdcQryTradeField *pQryTrade, int nRequestID) = 0; - - ///Ͷ˻ѯ - virtual int ReqQryUserInvestor(CQdpFtdcQryUserInvestorField *pQryUserInvestor, int nRequestID) = 0; - - ///Ͷʽ˻ѯ - virtual int ReqQryInvestorAccount(CQdpFtdcQryInvestorAccountField *pQryInvestorAccount, int nRequestID) = 0; - - ///Լѯ - virtual int ReqQryInstrument(CQdpFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryExchange(CQdpFtdcQryExchangeField *pQryExchange, int nRequestID) = 0; - - ///Ͷֲֲ߳ѯ - virtual int ReqQryInvestorPosition(CQdpFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0; - - /// - virtual int ReqSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///ѯ - virtual int ReqQryTopic(CQdpFtdcDisseminationField *pDissemination, int nRequestID) = 0; - - ///Ͷʲѯ - virtual int ReqQryInvestorFee(CQdpFtdcQryInvestorFeeField *pQryInvestorFee, int nRequestID) = 0; - - ///Ͷ֤߱ʲѯ - virtual int ReqQryInvestorMargin(CQdpFtdcQryInvestorMarginField *pQryInvestorMargin, int nRequestID) = 0; - - ///ʱƫѯ - virtual int ReqQryExchangeDiffTime(CQdpFtdcQryExchangeDiffTimeField *pQryExchangeDiffTime, int nRequestID) = 0; - - ///ѯǩԼ - virtual int ReqQryContractBank(CQdpFtdcQryContractBankField *pQryContractBank, int nRequestID) = 0; - - ///ڻѯ - virtual int ReqQueryBankAccountMoneyByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, int nRequestID) = 0; - - ///ѯתˮ - virtual int ReqQryTransferSerial(CQdpFtdcQryTransferSerialField *pQryTransferSerial, int nRequestID) = 0; - - ///ӷʲѯ - virtual int ReqQrySGEDeferRate(CQdpFtdcQrySGEDeferRateField *pQrySGEDeferRate, int nRequestID) = 0; - - ///ʵʱѯ - virtual int ReqQryMarketData(CQdpFtdcQryMarketDataField *pQryMarketData, int nRequestID) = 0; -protected: - ~CQdpFtdcTraderApi(){}; -}; - -#endif diff --git a/vn.qdp/qdpapi/QdpFtdcUserApiDataType.h~ b/vn.qdp/qdpapi/QdpFtdcUserApiDataType.h~ deleted file mode 100644 index 51d00236..00000000 --- a/vn.qdp/qdpapi/QdpFtdcUserApiDataType.h~ +++ /dev/null @@ -1,840 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -///@system QuantDo Platform -///@company QuantDo -///@file QdpFtdcUserApiDataType.h -///@brief ˿ͻ˽ӿʹõҵ -///@history -/// -///////////////////////////////////////////////////////////////////////// - -#ifndef QDP_FTDCDATATYPE_H -#define QDP_FTDCDATATYPE_H - -enum QDP_TE_RESUME_TYPE -{ - QDP_TERT_RESTART = 0, - QDP_TERT_RESUME, - QDP_TERT_QUICK -}; - -///////////////////////////////////////////////////////////////////////// -///彻ͨ -///////////////////////////////////////////////////////////////////////// -//н -#define QDP_EI_CFFEX "CFFEX" -// -#define QDP_EI_SHFE "SHFE" -//Ӵ -#define QDP_EI_DCE "DCE" -//֣ -#define QDP_EI_ZCE "CZCE" -//֤ -#define QDP_EI_SSE "SSE" -// -#define QDP_EI_SZSE "SZSE" -//ӻƽ -#define QDP_EI_SGE "SGE" -//֥ӸƷڻ -#define QDP_EI_CME "CME" -//׶ؽ -#define QDP_EI_LME "LME" -//ӹ̩ͨ -#define QDP_EI_GTJA "GTJA" -//ϺԴĵͨ -#define QDP_EI_INE "INE" - -const int QDP_TSS_DIALOG = 1; //Ի -const int QDP_TSS_PRIVATE = 2; //ͻ˽ -const int QDP_TSS_PUBLIC = 3; // -const int QDP_TSS_QUERY = 4; //ѯ -const int QDP_TSS_USER = 5; //û˽ - -///////////////////////////////////////////////////////////////////////// -///TFtdcPriceTickTypeһС䶯λ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcPriceTickType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcPriceTypeһ۸ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcPriceType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcRatioTypeһ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcRatioType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcMoneyTypeһʽ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcMoneyType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcLargeVolumeTypeһ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcLargeVolumeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcFeeTypeһ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcFeeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcInventoryTypeһ -///////////////////////////////////////////////////////////////////////// -typedef double TQdpFtdcInventoryType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSequenceNoTypeһк -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcSequenceNoType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcMillisecTypeһ޸ĺ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcMillisecType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcVolumeTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcVolumeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcUnderlyingMultipleTypeһԼ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcUnderlyingMultipleType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcVolumeMultipleTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcVolumeMultipleType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSequenceSeriesTypeһϵк -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcSequenceSeriesType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSessionIDTypeһỰ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcSessionIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcErrorIDTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcErrorIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcDataCenterIDTypeһĴ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcDataCenterIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcFrontIDTypeһǰñ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcFrontIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcRequestIDTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcRequestIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTopicIDTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcTopicIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSettlementIDTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcSettlementIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTotalNumsTypeһۼӴ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcTotalNumsType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcDiffSndTypeһƫʱ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcDiffSndType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTIDTypeһID -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcTIDType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcMonthTypeһ· -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcMonthType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBoolTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcBoolType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcYearTypeһ -///////////////////////////////////////////////////////////////////////// -typedef int TQdpFtdcYearType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcMemTableNameTypeһڴ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcMemTableNameType[61]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOrderSysIDTypeһ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcOrderSysIDType[31]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTradeIDTypeһɽ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcTradeIDType[21]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcUserIDTypeһû -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcUserIDType[16]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcParticipantIDTypeһԱ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcParticipantIDType[11]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcIPAddressTypeһIPַ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcIPAddressType[21]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcMacAddressTypeһMacַ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcMacAddressType[21]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcInstrumentNameTypeһԼ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcInstrumentNameType[21]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBranchIDTypeһӪҵ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBranchIDType[7]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcInstrumentIDTypeһԼ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcInstrumentIDType[31]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcIdentifiedCardNoTypeһ֤ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcIdentifiedCardNoType[51]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcIdentifiedCardTypeTypeһ֤ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcIdentifiedCardTypeType[16]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcExchangeIDTypeһ()ͨ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcExchangeIDType[11]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcExchangeNameTypeһ() -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcExchangeNameType[31]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcDateTypeһ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcDateType[9]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTimeTypeһʱ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcTimeType[9]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcClientTypeTypeһͻ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcClientTypeType[2]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcClientNameTypeһͻ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcClientNameType[81]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcClientIDTypeһͻ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcClientIDType[19]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcAccountIDTypeһʽʺ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcAccountIDType[13]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSeatIDTypeһϯλ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcSeatIDType[13]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcProductNameTypeһƷ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcProductNameType[41]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcUserOrderLocalIDTypeһûر -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcUserOrderLocalIDType[23]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOrderLocalIDTypeһر -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcOrderLocalIDType[33]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcInvestorIDTypeһͶ߱ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcInvestorIDType[19]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcUserNameTypeһû -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcUserNameType[31]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcPasswordTypeһ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcPasswordType[41]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcAbstractTypeһϢժҪ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcAbstractType[81]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcProductInfoTypeһƷϢ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcProductInfoType[41]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcProtocolInfoTypeһЭϢ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcProtocolInfoType[41]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBusinessUnitTypeһҵԪ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBusinessUnitType[21]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTradingSystemNameTypeһϵͳ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcTradingSystemNameType[61]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBrokerIDTypeһ͹˾ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBrokerIDType[11]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcCustomTypeһûԶ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcCustomType[65]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTradingDayTypeһ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcTradingDayType[9]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcDepartmentTypeһӪҵ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcDepartmentType[41]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcGrantFuncSetTypeһȨܺ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcGrantFuncSetType[5]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcProductIDTypeһƷֱ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcProductIDType[13]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcAccountSeqNoTypeһʽˮ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcAccountSeqNoType[21]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSettlementGroupIDTypeһ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcSettlementGroupIDType[9]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBankIDTypeһд -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBankIDType[4]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBankBrchIDTypeһзĴ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBankBrchIDType[5]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBankAccountTypeһ˺ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBankAccountType[41]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcNameTypeһ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcNameType[101]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTradeCodeTypeһҵ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcTradeCodeType[7]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcSerialTypeһˮ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcSerialType[13]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcDeviceIDTypeһ־ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcDeviceIDType[3]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBankCodingForFutureTypeһڻ˾б -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcBankCodingForFutureType[33]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcErrorMsgTypeһϢ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcErrorMsgType[81]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcVolumeConditionTypeһɽ -///////////////////////////////////////////////////////////////////////// -///κ -#define QDP_FTDC_VC_AV '1' -///С -#define QDP_FTDC_VC_MV '2' -///ȫ -#define QDP_FTDC_VC_CV '3' - -typedef char TQdpFtdcVolumeConditionType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcForceCloseReasonTypeһǿƽԭ -///////////////////////////////////////////////////////////////////////// -///ǿƽ -#define QDP_FTDC_FCR_NotForceClose '0' -///ʽ -#define QDP_FTDC_FCR_LackDeposit '1' -///ͻ -#define QDP_FTDC_FCR_ClientOverPositionLimit '2' -///Ա -#define QDP_FTDC_FCR_MemberOverPositionLimit '3' -///ֲַ -#define QDP_FTDC_FCR_NotMultiple '4' - -typedef char TQdpFtdcForceCloseReasonType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcInstrumentStatusTypeһԼ״̬ -///////////////////////////////////////////////////////////////////////// -///ǰ -#define QDP_FTDC_IS_BeforeTrading '0' -///ǽ -#define QDP_FTDC_IS_NoTrading '1' -/// -#define QDP_FTDC_IS_Continous '2' -///Ͼ۱ -#define QDP_FTDC_IS_AuctionOrdering '3' -///Ͼۼ۸ƽ -#define QDP_FTDC_IS_AuctionBalance '4' -///Ͼ۴ -#define QDP_FTDC_IS_AuctionMatch '5' -/// -#define QDP_FTDC_IS_Closed '6' -///걨 -#define QDP_FTDC_IS_SGE_Dery_App '7' -///걨 -#define QDP_FTDC_IS_SGE_Dery_Match '8' -///걨 -#define QDP_FTDC_IS_SGE_Mid_App '9' -///걨 -#define QDP_FTDC_IS_SGE_Mid_Match 'a' -///Զת -#define QDP_FTDC_IS_DCE_MarketStatusAlarm 'b' - -typedef char TQdpFtdcInstrumentStatusType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOffsetFlagTypeһƽ־ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_OF_Open '0' -///ƽ -#define QDP_FTDC_OF_Close '1' -///ǿƽ -#define QDP_FTDC_OF_ForceClose '2' -///ƽ -#define QDP_FTDC_OF_CloseToday '3' -///ƽ -#define QDP_FTDC_OF_CloseYesterday '4' - -typedef char TQdpFtdcOffsetFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOrderPriceTypeTypeһ۸ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_OPT_AnyPrice '1' -///޼ -#define QDP_FTDC_OPT_LimitPrice '2' -///ż -#define QDP_FTDC_OPT_BestPrice '3' -///嵵 -#define QDP_FTDC_OPT_FiveLevelPrice '4' - -typedef char TQdpFtdcOrderPriceTypeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOrderStatusTypeһ״̬ -///////////////////////////////////////////////////////////////////////// -///ȫɽ -#define QDP_FTDC_OS_AllTraded '0' -///ֳɽڶ -#define QDP_FTDC_OS_PartTradedQueueing '1' -///ֳɽڶ -#define QDP_FTDC_OS_PartTradedNotQueueing '2' -///δɽڶ -#define QDP_FTDC_OS_NoTradeQueueing '3' -///δɽڶ -#define QDP_FTDC_OS_NoTradeNotQueueing '4' -/// -#define QDP_FTDC_OS_Canceled '5' -///ѱ뽻δӦ -#define QDP_FTDC_OS_AcceptedNoReply '6' - -typedef char TQdpFtdcOrderStatusType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcUserTypeTypeһû -///////////////////////////////////////////////////////////////////////// -///Ȼ -#define QDP_FTDC_UT_Person '1' -///ƲƷ -#define QDP_FTDC_UT_Product '2' -///ڻ˾Ա -#define QDP_FTDC_UT_Manager '3' -///ϯλ -#define QDP_FTDC_UT_Seat '4' - -typedef char TQdpFtdcUserTypeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTradingRightTypeһȨ -///////////////////////////////////////////////////////////////////////// -///Խ -#define QDP_FTDC_TR_Allow '0' -///ֻƽ -#define QDP_FTDC_TR_CloseOnly '1' -///ܽ -#define QDP_FTDC_TR_Forbidden '2' - -typedef char TQdpFtdcTradingRightType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTimeConditionTypeһЧ -///////////////////////////////////////////////////////////////////////// -///ɣ -#define QDP_FTDC_TC_IOC '1' -///Ч -#define QDP_FTDC_TC_GFS '2' -///Ч -#define QDP_FTDC_TC_GFD '3' -///ָǰЧ -#define QDP_FTDC_TC_GTD '4' -///ǰЧ -#define QDP_FTDC_TC_GTC '5' -///ϾЧ -#define QDP_FTDC_TC_GFA '6' - -typedef char TQdpFtdcTimeConditionType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOrderSourceTypeһԴ -///////////////////////////////////////////////////////////////////////// -///Բ -#define QDP_FTDC_OS_Participant '0' -///ԹԱ -#define QDP_FTDC_OS_Administrator '1' - -typedef char TQdpFtdcOrderSourceType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcDirectionTypeһ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_D_Buy '0' -/// -#define QDP_FTDC_D_Sell '1' - -typedef char TQdpFtdcDirectionType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcCurrencyTypeһ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_C_RMB '1' -///Ԫ -#define QDP_FTDC_C_UDOLLAR '2' - -typedef char TQdpFtdcCurrencyType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcAccountDirectionTypeһ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_AD_In '1' -/// -#define QDP_FTDC_AD_Out '2' - -typedef char TQdpFtdcAccountDirectionType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcClientHedgeFlagTypeһͻͶױ־ -///////////////////////////////////////////////////////////////////////// -///Ͷ -#define QDP_FTDC_CHF_Speculation '1' -/// -#define QDP_FTDC_CHF_Arbitrage '2' -///ױ -#define QDP_FTDC_CHF_Hedge '3' -/// -#define QDP_FTDC_CHF_MarketMaker '4' - -typedef char TQdpFtdcClientHedgeFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcHedgeFlagTypeһͶױ־ -///////////////////////////////////////////////////////////////////////// -///Ͷ -#define QDP_FTDC_CHF_Speculation '1' -/// -#define QDP_FTDC_CHF_Arbitrage '2' -///ױ -#define QDP_FTDC_CHF_Hedge '3' -/// -#define QDP_FTDC_CHF_MarketMaker '4' - -typedef char TQdpFtdcHedgeFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcActionFlagTypeһ־ -///////////////////////////////////////////////////////////////////////// -///ɾ -#define QDP_FTDC_AF_Delete '0' -/// -#define QDP_FTDC_AF_Suspend '1' -/// -#define QDP_FTDC_AF_Active '2' -///޸ -#define QDP_FTDC_AF_Modify '3' - -typedef char TQdpFtdcActionFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcPositionTypeTypeһֲ -///////////////////////////////////////////////////////////////////////// -///ֲ -#define QDP_FTDC_PT_Net '1' -///ۺϳֲ -#define QDP_FTDC_PT_Gross '2' - -typedef char TQdpFtdcPositionTypeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcOptionsTypeTypeһȨ -///////////////////////////////////////////////////////////////////////// -///Ȩ -#define QDP_FTDC_OT_NotOptions '0' -/// -#define QDP_FTDC_OT_CallOptions '1' -/// -#define QDP_FTDC_OT_PutOptions '2' - -typedef char TQdpFtdcOptionsTypeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcIsActiveTypeһǷԾ -///////////////////////////////////////////////////////////////////////// -///Ծ -#define QDP_FTDC_UIA_NoActive '0' -///Ծ -#define QDP_FTDC_UIA_Active '1' - -typedef char TQdpFtdcIsActiveType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcProductClassTypeһƷ -///////////////////////////////////////////////////////////////////////// -///ڻ -#define QDP_FTDC_PC_Futures '1' -///Ȩ -#define QDP_FTDC_PC_Options '2' -/// -#define QDP_FTDC_PC_Combination '3' -/// -#define QDP_FTDC_PC_Spot '4' -///ת -#define QDP_FTDC_PC_EFP '5' -///δ֪ -#define QDP_FTDC_PC_Unknown '6' -///֤ȯ -#define QDP_FTDC_PC_Stocks '7' -///ƱȨ -#define QDP_FTDC_PC_StockOptions '8' -///ֻ -#define QDP_FTDC_PC_SGE_SPOT '9' -/// -#define QDP_FTDC_PC_SGE_DEFER 'a' -///Զ -#define QDP_FTDC_PC_SGE_FOWARD 'b' - -typedef char TQdpFtdcProductClassType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcCurrencyIDTypeһִ -///////////////////////////////////////////////////////////////////////// -typedef char TQdpFtdcCurrencyIDType[4]; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBusinessTypeTypeһҵ -///////////////////////////////////////////////////////////////////////// -///ͨ -#define QDP_FTDC_BT_Normal '1' -/// -#define QDP_FTDC_BT_Cancel '2' -///ETF -#define QDP_FTDC_BT_AppliedForRedeemed '3' -///嵵ʱɽʣ೷ -#define QDP_FTDC_BT_FiveLevelIOC '4' -///嵵ʱɽʣת޼ -#define QDP_FTDC_BT_FiveLevelGFD '5' -///ʱɽʣ೷ -#define QDP_FTDC_BT_BestPriceIOC '6' -///ȫɽ -#define QDP_FTDC_BT_FOK '7' -///ż۸ -#define QDP_FTDC_BT_SelfGFD '8' -///Էż۸ -#define QDP_FTDC_BT_CpGFD '9' -///걨 -#define QDP_FTDC_BT_SGEMidApp 'a' -///ϵ -#define QDP_FTDC_BT_Combination 'b' -///ϵ -#define QDP_FTDC_BT_Grab 'c' -///ӽ걨 -#define QDP_FTDC_BT_SGEDeferDeliApp 'd' - -typedef char TQdpFtdcBusinessTypeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcTransferStatusTypeһת˽״̬ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_TS_TRFS_Normal '0' -/// -#define QDP_FTDC_TS_TRFS_Repealed '1' - -typedef char TQdpFtdcTransferStatusType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcFeePayFlagTypeһ֧־ -///////////////////////////////////////////////////////////////////////// -///淽֧ -#define QDP_FTDC_FPF_FPF_BEN '0' -///ɷͷ֧ -#define QDP_FTDC_FPF_FPF_OUR '1' -///ɷͷ֧ķã淽֧ܵķ -#define QDP_FTDC_FPF_FPF_SHA '2' - -typedef char TQdpFtdcFeePayFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcPwdFlagTypeһ־ -///////////////////////////////////////////////////////////////////////// -///˶ -#define QDP_FTDC_PF_BPWDF_NoCheck '0' -///ĺ˶ -#define QDP_FTDC_PF_BPWDF_BlankCheck '1' -///ĺ˶ -#define QDP_FTDC_PF_BPWDF_EncryptCheck '2' - -typedef char TQdpFtdcPwdFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcBankAccTypeTypeһ˺ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_BAT_VBAT_BankBook '1' -/// -#define QDP_FTDC_BAT_VBAT_BankCard '2' -///ÿ -#define QDP_FTDC_BAT_VBAT_CreditCard '3' - -typedef char TQdpFtdcBankAccTypeType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcYesNoIndicatorTypeһǷ־ -///////////////////////////////////////////////////////////////////////// -/// -#define QDP_FTDC_YNI_YNI_Yes '0' -/// -#define QDP_FTDC_YNI_YNI_No '1' - -typedef char TQdpFtdcYesNoIndicatorType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcAvailabilityFlagTypeһЧ־ -///////////////////////////////////////////////////////////////////////// -///δȷ -#define QDP_FTDC_ALF_AVAF_Invalid '0' -///Ч -#define QDP_FTDC_ALF_AVAF_Valid '1' -/// -#define QDP_FTDC_ALF_AVAF_Repeal '2' -///ʧ -#define QDP_FTDC_ALF_AVAF_FAIL '3' - -typedef char TQdpFtdcAvailabilityFlagType; - -///////////////////////////////////////////////////////////////////////// -///TFtdcPayDirectionTypeһ֧ -///////////////////////////////////////////////////////////////////////// -///ึ -#define QDP_FTDC_PD_Buy '0' -///ո -#define QDP_FTDC_PD_Sell '1' -///֧δ -#define QDP_FTDC_PD_Unknown '2' - -typedef char TQdpFtdcPayDirectionType; - -#endif diff --git a/vn.qdp/readme.md b/vn.qdp/readme.md index 02e21d99..329ae711 100644 --- a/vn.qdp/readme.md +++ b/vn.qdp/readme.md @@ -1,79 +1,23 @@ -# vn.ctp +# vn.qdp ### -CTP̨APIӿڵPythonװpyscriptĿ¼µĽűԶͷļɷװģ飬ṩԭC++ APIеȫܡ +QDP̨APIӿڵPythonװṩԭC++ APIеȫܡ +QDPص㣺 +* ̨ܹϵͳʱCTP +* ͬʱ֧ڻڻȨֻ +* ѯֲַصĽֺϲΪһCTPأ ### Ŀ¼˵ -* vnctpmd: API -* vnctptd: API +* vnqdpmd: API +* vnqdptd: API * pyscript: Զװű -* ctpapiC++ APIļ - -### ʹCMake - -**Windows 7** - -: - -* AnacondaBoostİװʽοwww.vnpy.orgϵĽ̳̣ʹ32λ - -* cmake:װ°汾cmake,ñ뻷 - -* ûBOOST_ROOT = C:\boost_1_57_0 - -* 빤ߣVisual Studio 2013 - - -: - -* vn.ctpĿ¼½ļУΪbuild, ʱļļ - -* й룺cmake-gui .. cmakeý - -* configure - -* generateûдóɹ - -* buildĿ¼˫vn_ctp_api.sln򿪽 - -* 밴ť,release - - -**Linux (Debian jessie, Ubuntu 16.04)** - -ã - -* ο[](http://www.continuum.io/downloads)Ľ̳زװAnacondaLinux 64λ汾 - -* ʹapt-getװصĹߣ - - - apt-get install build-essential - - - apt-get install libboost-all-dev - - - apt-get install python-dev - - - apt-get install cmake - -* ӹµctp api tarv6.3.5_20150803_tradeapi_linux64.tarҪctp api soļԺԸò裩 - - - thostmduserapi.so --> libthostmduserapi.so - - - thosttraderapi.so --> libthosttraderapi.so - - -̣ - -* ǰĿ¼build.shɱ +* qdpapiC++ APIļ +* docsQDPĵ ### API汾 -ڣ2015-08-04 +ڣ2016-11-09 -ƣfsopt_traderapi +ƣQDPV1.0.1_trade_20161109_1 -ȨAPI - -ӣ[http://www.sfit.com.cn/5_2_DocumentDown.htm](http://www.sfit.com.cn/5_2_DocumentDown.htm) - -˵ctpapiļµWindows32λ汾ļx64_linuxеLinux64λ汾 +ԴͶƼQDPȺ165187900 diff --git a/vn.qdp/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml b/vn.qdp/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml new file mode 100644 index 00000000..cacd03c2 --- /dev/null +++ b/vn.qdp/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml @@ -0,0 +1,5 @@ + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAyRIhRmRN8UK7w5RuPHePCQAAAAACAAAAAAAQZgAAAAEAACAAAACQk+guh+ywWR7iJKHx4q/rl8GJs1w1kHOBDxLxLwyRwQAAAAAOgAAAAAIAACAAAABPgLw+AuxePq11TX16PdB1NyHEqJD1OGjxXDrk6zI58BAAAABDp/NWkif0PpHu24ZiWNDpQAAAAD6czV67awJHJ1Lad1N571p8XaKpngFM3+M/dUiuA7rb48Ig57TRmOwHTcx9xbSoJ+NTqxs+B47Ro2YPRnS43xc= + \ No newline at end of file diff --git a/vn.qdp/vnqdpmd/vnqdpmd.sln b/vn.qdp/vnqdpmd/vnqdpmd.sln new file mode 100644 index 00000000..7b0d3333 --- /dev/null +++ b/vn.qdp/vnqdpmd/vnqdpmd.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vnqdpmd", "vnqdpmd\vnqdpmd.vcxproj", "{30DD4F96-08AD-42DB-ABB6-C3358871C142}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {30DD4F96-08AD-42DB-ABB6-C3358871C142}.Debug|Win32.ActiveCfg = Debug|Win32 + {30DD4F96-08AD-42DB-ABB6-C3358871C142}.Debug|Win32.Build.0 = Debug|Win32 + {30DD4F96-08AD-42DB-ABB6-C3358871C142}.Release|Win32.ActiveCfg = Release|Win32 + {30DD4F96-08AD-42DB-ABB6-C3358871C142}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vn.qdp/vnqdpmd/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml b/vn.qdp/vnqdpmd/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml new file mode 100644 index 00000000..82b11e81 --- /dev/null +++ b/vn.qdp/vnqdpmd/vnqdpmd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml @@ -0,0 +1,5 @@ + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAyRIhRmRN8UK7w5RuPHePCQAAAAACAAAAAAAQZgAAAAEAACAAAABkvo2w3rMuhyfuwLijaHtSFPFzY7lTzt7knzYWNBpklAAAAAAOgAAAAAIAACAAAACCThm5IVeiW66dPH+91RfxdBg398zCL8la18ZuW4vssxAAAACuenGVqI7ZTM+3Zx87vC5sQAAAAD2+AjhbwIvI/KtSbsX4/PBEKzZ0ROhOswBfG+HCPjVcm9Z2fEditw9Jo3sr6e+qSZOeYIITilPWgS0zh3L6akU= + \ No newline at end of file diff --git a/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.cpp b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.cpp index 47b0dd2d..1c4a1514 100644 --- a/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.cpp +++ b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.cpp @@ -1,6 +1,7 @@ // vnqdpmd.cpp : DLL Ӧóĵ // +#include "stdafx.h" #include "vnqdpmd.h" ///------------------------------------------------------------------------------------- @@ -97,6 +98,76 @@ void MdApi::OnHeartBeatWarning(int nTimeLapse) this->task_queue.push(task); }; +void MdApi::OnPackageStart(int nTopicID, int nSequenceNo) +{ + //ֶ޸ + Task task = Task(); + task.task_name = ONPACKAGESTART; + task.task_id = nTopicID; + task.additional_int = nSequenceNo; + this->task_queue.push(task); +}; + +void MdApi::OnPackageEnd(int nTopicID, int nSequenceNo) +{ + //ֶ޸ + Task task = Task(); + task.task_name = ONPACKAGEEND; + task.task_id = nTopicID; + task.additional_int = nSequenceNo; + this->task_queue.push(task); +}; + +void MdApi::OnMultiHeartbeat(char *CurrTime, char *MultiCastIP) +{ + //ֶ޸ + Task task = Task(); + task.task_name = ONMULTIHEARTBEAT; + task.additional_str1 = *CurrTime; + task.additional_str2 = *MultiCastIP; + this->task_queue.push(task); +}; + +void MdApi::UdpMarketData(CQdpFtdcDepthMarketDataField *qmdata) +{ + //ֶ޸ + Task task = Task(); + task.task_name = UDPMARKETDATA; + + if (qmdata) + { + task.task_data = *qmdata; + } + else + { + CQdpFtdcDepthMarketDataField empty_data = CQdpFtdcDepthMarketDataField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + this->task_queue.push(task); +}; + +void MdApi::OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPERROR; + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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 MdApi::OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); @@ -128,14 +199,14 @@ void MdApi::OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRsp this->task_queue.push(task); }; -void MdApi::OnRspUserLogout(CQdpFtdcRspUserLogoutField *pUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void MdApi::OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); task.task_name = ONRSPUSERLOGOUT; - if (pUserLogout) + if (pRspUserLogout) { - task.task_data = *pUserLogout; + task.task_data = *pRspUserLogout; } else { @@ -159,10 +230,39 @@ void MdApi::OnRspUserLogout(CQdpFtdcRspUserLogoutField *pUserLogout, CQdpFtdcRsp this->task_queue.push(task); }; -void MdApi::OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void MdApi::OnRtnQmdInstrumentStatu(CQdpFtdcQmdInstrumentStateField *pQmdInstrumentState) { Task task = Task(); - task.task_name = ONRSPERROR; + task.task_name = ONRTNQMDINSTRUMENTSTATU; + + if (pQmdInstrumentState) + { + task.task_data = *pQmdInstrumentState; + } + else + { + CQdpFtdcQmdInstrumentStateField empty_data = CQdpFtdcQmdInstrumentStateField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void MdApi::OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPSUBSCRIBETOPIC; + + if (pDissemination) + { + task.task_data = *pDissemination; + } + else + { + CQdpFtdcDisseminationField empty_data = CQdpFtdcDisseminationField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } if (pRspInfo) { @@ -179,6 +279,55 @@ void MdApi::OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsL this->task_queue.push(task); }; +void MdApi::OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYTOPIC; + + if (pDissemination) + { + task.task_data = *pDissemination; + } + else + { + CQdpFtdcDisseminationField empty_data = CQdpFtdcDisseminationField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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 MdApi::OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData) +{ + Task task = Task(); + task.task_name = ONRTNDEPTHMARKETDATA; + + if (pDepthMarketData) + { + task.task_data = *pDepthMarketData; + } + else + { + CQdpFtdcDepthMarketDataField empty_data = CQdpFtdcDepthMarketDataField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + void MdApi::OnRspSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); @@ -241,18 +390,18 @@ void MdApi::OnRspUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstr this->task_queue.push(task); }; -void MdApi::OnRspSubForQuoteRsp(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void MdApi::OnRspQryDepthMarketData(CQdpFtdcRspMarketDataField *pRspMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); - task.task_name = ONRSPSUBFORQUOTERSP; + task.task_name = ONRSPQRYDEPTHMARKETDATA; - if (pSpecificInstrument) + if (pRspMarketData) { - task.task_data = *pSpecificInstrument; + task.task_data = *pRspMarketData; } else { - CQdpFtdcSpecificInstrumentField empty_data = CQdpFtdcSpecificInstrumentField(); + CQdpFtdcRspMarketDataField empty_data = CQdpFtdcRspMarketDataField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -272,56 +421,6 @@ void MdApi::OnRspSubForQuoteRsp(CQdpFtdcSpecificInstrumentField *pSpecificInstru this->task_queue.push(task); }; -void MdApi::OnRspUnSubForQuoteRsp(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPUNSUBFORQUOTERSP; - - if (pSpecificInstrument) - { - task.task_data = *pSpecificInstrument; - } - else - { - CQdpFtdcSpecificInstrumentField empty_data = CQdpFtdcSpecificInstrumentField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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 MdApi::OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData) -{ - Task task = Task(); - task.task_name = ONRTNDEPTHMARKETDATA; - - if (pDepthMarketData) - { - task.task_data = *pDepthMarketData; - } - else - { - CQdpFtdcDepthMarketDataField empty_data = CQdpFtdcDepthMarketDataField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - this->task_queue.push(task); -}; - - ///------------------------------------------------------------------------------------- @@ -336,72 +435,109 @@ void MdApi::processTask() switch (task.task_name) { - case ONFRONTCONNECTED: - { - this->processFrontConnected(task); - break; - } + case ONFRONTCONNECTED: + { + this->processFrontConnected(task); + break; + } - case ONFRONTDISCONNECTED: - { - this->processFrontDisconnected(task); - break; - } + case ONFRONTDISCONNECTED: + { + this->processFrontDisconnected(task); + break; + } - case ONHEARTBEATWARNING: - { - this->processHeartBeatWarning(task); - break; - } + case ONHEARTBEATWARNING: + { + this->processHeartBeatWarning(task); + break; + } - case ONRSPUSERLOGIN: - { - this->processRspUserLogin(task); - break; - } + case ONPACKAGESTART: + { + this->processPackageStart(task); + break; + } - case ONRSPUSERLOGOUT: - { - this->processRspUserLogout(task); - break; - } + case ONPACKAGEEND: + { + this->processPackageEnd(task); + break; + } - case ONRSPERROR: - { - this->processRspError(task); - break; - } + //ֶ޸ + case ONMULTIHEARTBEAT: + { + this->processMultiHeartbeat(task); + break; + } - case ONRSPSUBMARKETDATA: - { - this->processRspSubMarketData(task); - break; - } + //ֶ޸ + case UDPMARKETDATA: + { + this->processUdpMarketData(task); + break; + } - case ONRSPUNSUBMARKETDATA: - { - this->processRspUnSubMarketData(task); - break; - } + case ONRSPERROR: + { + this->processRspError(task); + break; + } - case ONRSPSUBFORQUOTERSP: - { - this->processRspSubForQuoteRsp(task); - break; - } + case ONRSPUSERLOGIN: + { + this->processRspUserLogin(task); + break; + } - case ONRSPUNSUBFORQUOTERSP: - { - this->processRspUnSubForQuoteRsp(task); - break; - } + case ONRSPUSERLOGOUT: + { + this->processRspUserLogout(task); + break; + } - case ONRTNDEPTHMARKETDATA: - { - this->processRtnDepthMarketData(task); - break; - } + case ONRTNQMDINSTRUMENTSTATU: + { + this->processRtnQmdInstrumentStatu(task); + break; + } + case ONRSPSUBSCRIBETOPIC: + { + this->processRspSubscribeTopic(task); + break; + } + + case ONRSPQRYTOPIC: + { + this->processRspQryTopic(task); + break; + } + + case ONRTNDEPTHMARKETDATA: + { + this->processRtnDepthMarketData(task); + break; + } + + case ONRSPSUBMARKETDATA: + { + this->processRspSubMarketData(task); + break; + } + + case ONRSPUNSUBMARKETDATA: + { + this->processRspUnSubMarketData(task); + break; + } + + case ONRSPQRYDEPTHMARKETDATA: + { + this->processRspQryDepthMarketData(task); + break; + } }; } }; @@ -424,19 +560,107 @@ void MdApi::processHeartBeatWarning(Task task) this->onHeartBeatWarning(task.task_id); }; +void MdApi::processPackageStart(Task task) +{ + //ֶ޸ + PyLock lock; + this->onPackageStart(task.task_id, task.additional_int); +}; + +void MdApi::processPackageEnd(Task task) +{ + //ֶ޸ + PyLock lock; + this->onPackageEnd(task.task_id, task.additional_int); +}; + +void MdApi::processMultiHeartbeat(Task task) +{ + //ֶ޸ + PyLock lock; + this->onMultiHeartbeat(task.additional_str1, task.additional_str2); +}; + +void MdApi::processUdpMarketData(Task task) +{ + //ֶ޸ + PyLock lock; + CQdpFtdcDepthMarketDataField task_data = any_cast(task.task_data); + dict data; + data["HighestPrice"] = task_data.HighestPrice; + data["BidPrice5"] = task_data.BidPrice5; + data["BidVolume3"] = task_data.BidVolume3; + data["BidPrice1"] = task_data.BidPrice1; + data["BidPrice3"] = task_data.BidPrice3; + data["BidPrice2"] = task_data.BidPrice2; + data["LowerLimitPrice"] = task_data.LowerLimitPrice; + data["PreOpenInterest"] = task_data.PreOpenInterest; + 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["BidVolume5"] = task_data.BidVolume5; + data["BidVolume4"] = task_data.BidVolume4; + data["SettlementGroupID"] = task_data.SettlementGroupID; + data["BidVolume2"] = task_data.BidVolume2; + data["BidVolume1"] = task_data.BidVolume1; + 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["BidPrice4"] = task_data.BidPrice4; + data["InstrumentID"] = task_data.InstrumentID; + data["ClosePrice"] = task_data.ClosePrice; + data["ExchangeID"] = task_data.ExchangeID; + data["SettlementID"] = task_data.SettlementID; + 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["OpenPrice"] = task_data.OpenPrice; + data["LowestPrice"] = task_data.LowestPrice; + + this->udpMarketData(data); +}; + +void MdApi::processRspError(Task task) +{ + PyLock lock; + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspError(error, task.task_id, task.task_last); +}; + void MdApi::processRspUserLogin(Task task) { PyLock lock; CQdpFtdcRspUserLoginField task_data = any_cast(task.task_data); dict data; - data["MaxOrderLocalID"] = task_data.MaxOrderLocalID; + data["PrivateFlowSize"] = task_data.PrivateFlowSize; data["UserID"] = task_data.UserID; + data["DataCenterID"] = task_data.DataCenterID; data["TradingDay"] = task_data.TradingDay; - data["TradingSystemName"] = task_data.TradingSystemName; - data["BrokerID"] = task_data.BrokerID; - data["LoginTime"] = task_data.LoginTime; - data["FrontID"] = task_data.FrontID; data["SessionID"] = task_data.SessionID; + data["BrokerID"] = task_data.BrokerID; + data["MaxOrderLocalID"] = task_data.MaxOrderLocalID; + data["TradingSystemName"] = task_data.TradingSystemName; + data["FrontID"] = task_data.FrontID; + data["LoginTime"] = task_data.LoginTime; + data["UserFlowSize"] = task_data.UserFlowSize; CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; @@ -449,7 +673,7 @@ void MdApi::processRspUserLogin(Task task) void MdApi::processRspUserLogout(Task task) { PyLock lock; - CQdpFtdcReqUserLogoutField task_data = any_cast(task.task_data); + CQdpFtdcRspUserLogoutField task_data = any_cast(task.task_data); dict data; data["UserID"] = task_data.UserID; data["BrokerID"] = task_data.BrokerID; @@ -462,15 +686,100 @@ void MdApi::processRspUserLogout(Task task) this->onRspUserLogout(data, error, task.task_id, task.task_last); }; -void MdApi::processRspError(Task task) +void MdApi::processRtnQmdInstrumentStatu(Task task) { PyLock lock; + CQdpFtdcQmdInstrumentStateField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["InstrumentStatus"] = task_data.InstrumentStatus; + data["ExchangeID"] = task_data.ExchangeID; + + this->onRtnQmdInstrumentStatu(data); +}; + +void MdApi::processRspSubscribeTopic(Task task) +{ + PyLock lock; + CQdpFtdcDisseminationField task_data = any_cast(task.task_data); + dict data; + data["SequenceNo"] = task_data.SequenceNo; + data["SequenceSeries"] = task_data.SequenceSeries; + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; - this->onRspError(error, task.task_id, task.task_last); + this->onRspSubscribeTopic(data, error, task.task_id, task.task_last); +}; + +void MdApi::processRspQryTopic(Task task) +{ + PyLock lock; + CQdpFtdcDisseminationField task_data = any_cast(task.task_data); + dict data; + data["SequenceNo"] = task_data.SequenceNo; + data["SequenceSeries"] = task_data.SequenceSeries; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryTopic(data, error, task.task_id, task.task_last); +}; + +void MdApi::processRtnDepthMarketData(Task task) +{ + PyLock lock; + CQdpFtdcDepthMarketDataField task_data = any_cast(task.task_data); + dict data; + data["HighestPrice"] = task_data.HighestPrice; + data["BidPrice5"] = task_data.BidPrice5; + data["BidVolume3"] = task_data.BidVolume3; + data["BidPrice1"] = task_data.BidPrice1; + data["BidPrice3"] = task_data.BidPrice3; + data["BidPrice2"] = task_data.BidPrice2; + data["LowerLimitPrice"] = task_data.LowerLimitPrice; + data["PreOpenInterest"] = task_data.PreOpenInterest; + 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["BidVolume5"] = task_data.BidVolume5; + data["BidVolume4"] = task_data.BidVolume4; + data["SettlementGroupID"] = task_data.SettlementGroupID; + data["BidVolume2"] = task_data.BidVolume2; + data["BidVolume1"] = task_data.BidVolume1; + 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["BidPrice4"] = task_data.BidPrice4; + data["InstrumentID"] = task_data.InstrumentID; + data["ClosePrice"] = task_data.ClosePrice; + data["ExchangeID"] = task_data.ExchangeID; + data["SettlementID"] = task_data.SettlementID; + 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["OpenPrice"] = task_data.OpenPrice; + data["LowestPrice"] = task_data.LowestPrice; + + this->onRtnDepthMarketData(data); }; void MdApi::processRspSubMarketData(Task task) @@ -503,74 +812,29 @@ void MdApi::processRspUnSubMarketData(Task task) this->onRspUnSubMarketData(data, error, task.task_id, task.task_last); }; -void MdApi::processRspSubForQuoteRsp(Task task) +void MdApi::processRspQryDepthMarketData(Task task) { PyLock lock; - CQdpFtdcSpecificInstrumentField task_data = any_cast(task.task_data); - dict data; - data["InstrumentID"] = task_data.InstrumentID; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspSubForQuoteRsp(data, error, task.task_id, task.task_last); -}; - -void MdApi::processRspUnSubForQuoteRsp(Task task) -{ - PyLock lock; - CQdpFtdcSpecificInstrumentField task_data = any_cast(task.task_data); - dict data; - data["InstrumentID"] = task_data.InstrumentID; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspUnSubForQuoteRsp(data, error, task.task_id, task.task_last); -}; - -void MdApi::processRtnDepthMarketData(Task task) -{ - PyLock lock; - CQdpFtdcDepthMarketDataField task_data = any_cast(task.task_data); + CQdpFtdcRspMarketDataField task_data = any_cast(task.task_data); dict data; data["HighestPrice"] = task_data.HighestPrice; - data["BidPrice5"] = task_data.BidPrice5; - data["BidPrice4"] = task_data.BidPrice4; data["BidPrice1"] = task_data.BidPrice1; - data["BidPrice3"] = task_data.BidPrice3; - data["BidPrice2"] = task_data.BidPrice2; data["LowerLimitPrice"] = task_data.LowerLimitPrice; - data["OpenPrice"] = task_data.OpenPrice; - data["AskPrice5"] = task_data.AskPrice5; - data["AskPrice4"] = task_data.AskPrice4; - data["AskPrice3"] = task_data.AskPrice3; + data["PreOpenInterest"] = task_data.PreOpenInterest; 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["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["SettlementGroupID"] = task_data.SettlementGroupID; data["BidVolume1"] = task_data.BidVolume1; + data["Volume"] = task_data.Volume; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; data["InstrumentID"] = task_data.InstrumentID; data["ClosePrice"] = task_data.ClosePrice; data["ExchangeID"] = task_data.ExchangeID; + data["SettlementID"] = task_data.SettlementID; data["TradingDay"] = task_data.TradingDay; data["PreDelta"] = task_data.PreDelta; data["OpenInterest"] = task_data.OpenInterest; @@ -578,11 +842,16 @@ void MdApi::processRtnDepthMarketData(Task task) data["Turnover"] = task_data.Turnover; data["LastPrice"] = task_data.LastPrice; data["SettlementPrice"] = task_data.SettlementPrice; + data["OpenPrice"] = task_data.OpenPrice; data["LowestPrice"] = task_data.LowestPrice; - this->onRtnDepthMarketData(data); -}; + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + this->onRspQryDepthMarketData(data, error, task.task_id, task.task_last); +}; ///------------------------------------------------------------------------------------- @@ -595,11 +864,30 @@ void MdApi::createFtdcMdApi(string pszFlowPath) this->api->RegisterSpi(this); }; +string MdApi::getVersion(int major, int minor) +{ + //ֶ޸ + string version = this->api->GetVersion(major, minor); + return version; +}; + void MdApi::release() { this->api->Release(); }; +void MdApi::setMultiCast(bool multicast) +{ + //ֶ޸ + this->api->SetMultiCast(multicast); +} + +void MdApi::regTopicMultiAddr(string multiAddr) +{ + //ֶ޸ + this->api->RegTopicMultiAddr((char*) multiAddr.c_str()); +} + void MdApi::init() { this->api->Init(); @@ -632,7 +920,17 @@ void MdApi::registerFront(string pszFrontAddress) this->api->RegisterFront((char*)pszFrontAddress.c_str()); }; -int MdApi::subscribeMarketData(string instrumentID) +void MdApi::registerNameServer(string pszNsAddress) +{ + this->api->RegisterNameServer((char*)pszNsAddress.c_str()); +} + +void MdApi::subscribeMarketDataTopic(int topicID, int resumeType) +{ + this->api->SubscribeMarketDataTopic(topicID, (QDP_TE_RESUME_TYPE)resumeType); +} + +int MdApi::subMarketData(string instrumentID) { char* buffer = (char*) instrumentID.c_str(); char* myreq[1] = { buffer }; @@ -640,7 +938,7 @@ int MdApi::subscribeMarketData(string instrumentID) return i; }; -int MdApi::unSubscribeMarketData(string instrumentID) +int MdApi::unSubMarketData(string instrumentID) { char* buffer = (char*)instrumentID.c_str(); char* myreq[1] = { buffer };; @@ -648,6 +946,22 @@ int MdApi::unSubscribeMarketData(string instrumentID) return i; }; +void MdApi::setHeartbeatTimeout(int timeout) +{ + //ֶ޸ + this->api->SetHeartbeatTimeout(timeout); +} + +void MdApi::shmMarketData(dict req, dict defdata) +{ + //ֶ޸ +}; + +void MdApi::setUdpChannel(string udpid) +{ + //ֶ޸ + this->api->setudpchannel((char*)udpid.c_str()); +} int MdApi::reqUserLogin(dict req, int nRequestID) { @@ -656,6 +970,7 @@ int MdApi::reqUserLogin(dict req, int nRequestID) getStr(req, "MacAddress", myreq.MacAddress); getStr(req, "UserProductInfo", myreq.UserProductInfo); getStr(req, "UserID", myreq.UserID); + getInt(req, "DataCenterID", &myreq.DataCenterID); getStr(req, "TradingDay", myreq.TradingDay); getStr(req, "InterfaceProductInfo", myreq.InterfaceProductInfo); getStr(req, "BrokerID", myreq.BrokerID); @@ -663,6 +978,7 @@ int MdApi::reqUserLogin(dict req, int nRequestID) getStr(req, "OneTimePassword", myreq.OneTimePassword); getStr(req, "ProtocolInfo", myreq.ProtocolInfo); getStr(req, "Password", myreq.Password); + getStr(req, "IPAddress", myreq.IPAddress); int i = this->api->ReqUserLogin(&myreq, nRequestID); return i; }; @@ -677,7 +993,59 @@ int MdApi::reqUserLogout(dict req, int nRequestID) return i; }; +int MdApi::reqSubscribeTopic(dict req, int nRequestID) +{ + CQdpFtdcDisseminationField myreq = CQdpFtdcDisseminationField(); + memset(&myreq, 0, sizeof(myreq)); + getInt(req, "SequenceNo", &myreq.SequenceNo); + getInt(req, "SequenceSeries", &myreq.SequenceSeries); + int i = this->api->ReqSubscribeTopic(&myreq, nRequestID); + return i; +}; +int MdApi::reqQryTopic(dict req, int nRequestID) +{ + CQdpFtdcDisseminationField myreq = CQdpFtdcDisseminationField(); + memset(&myreq, 0, sizeof(myreq)); + getInt(req, "SequenceNo", &myreq.SequenceNo); + getInt(req, "SequenceSeries", &myreq.SequenceSeries); + int i = this->api->ReqQryTopic(&myreq, nRequestID); + return i; +}; + +int MdApi::reqSubMarketData(dict req, int nRequestID) +{ + CQdpFtdcSpecificInstrumentField myreq = CQdpFtdcSpecificInstrumentField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + int i = this->api->ReqSubMarketData(&myreq, nRequestID); + return i; +}; + +int MdApi::reqUnSubMarketData(dict req, int nRequestID) +{ + CQdpFtdcSpecificInstrumentField myreq = CQdpFtdcSpecificInstrumentField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + int i = this->api->ReqUnSubMarketData(&myreq, nRequestID); + return i; +}; + +int MdApi::reqQryDepthMarketData(dict req, int nRequestID) +{ + CQdpFtdcQryMarketDataField myreq = CQdpFtdcQryMarketDataField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + int i = this->api->ReqQryDepthMarketData(&myreq, nRequestID); + return i; +}; + +void MdApi::activateMultiMarketData(string tradingDay) +{ + //ֶ޸ + this->api->ActiveMultiMarketData((char*)tradingDay.c_str()); +} ///------------------------------------------------------------------------------------- ///Boost.Pythonװ @@ -722,11 +1090,65 @@ struct MdApiWrap : MdApi, wrapper < MdApi > } }; - virtual void onRspError(dict data, int id, bool last) + + virtual void onPackageStart(int topicID, int sequenceNo) + { + //ֶ޸ + try + { + this->get_override("onPackageStart")(topicID, sequenceNo); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onPackageEnd(int topicID, int sequenceNo) + { + //ֶ޸ + try + { + this->get_override("onPackageEnd")(topicID, sequenceNo); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onMultiHeartbeat(string currTime, string multiCastIP) + { + //ֶ޸ + try + { + this->get_override("onMultiHeartbeat")(currTime, multiCastIP); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void udpMarketData(dict data) + { + //ֶ޸ + try + { + this->get_override("udpMarketData")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + + virtual void onRspError(dict error, int id, bool last) { try { - this->get_override("onRspError")(data, id, last); + this->get_override("onRspError")(error, id, last); } catch (error_already_set const &) { @@ -758,6 +1180,54 @@ struct MdApiWrap : MdApi, wrapper < MdApi > } }; + virtual void onRtnQmdInstrumentStatu(dict data) + { + try + { + this->get_override("onRtnQmdInstrumentStatu")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspSubscribeTopic(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspSubscribeTopic")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryTopic(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryTopic")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRtnDepthMarketData(dict data) + { + try + { + this->get_override("onRtnDepthMarketData")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + virtual void onRspSubMarketData(dict data, dict error, int id, bool last) { try @@ -782,23 +1252,11 @@ struct MdApiWrap : MdApi, wrapper < MdApi > } }; - virtual void onRtnDepthMarketData(dict data) + virtual void onRspQryDepthMarketData(dict data, dict error, int id, bool last) { try { - this->get_override("onRtnDepthMarketData")(data); - } - catch (error_already_set const &) - { - PyErr_Print(); - } - }; - - virtual void onRtnForQuoteRsp(dict data) - { - try - { - this->get_override("onRtnForQuoteRsp")(data); + this->get_override("onRspQryDepthMarketData")(data, error, id, last); } catch (error_already_set const &) { @@ -814,28 +1272,47 @@ BOOST_PYTHON_MODULE(vnqdpmd) class_("MdApi") .def("createFtdcMdApi", &MdApiWrap::createFtdcMdApi) + .def("getVersion", &MdApiWrap::getVersion) .def("release", &MdApiWrap::release) + .def("setMultiCast", &MdApiWrap::setMultiCast) + .def("regTopicMultiAddr", &MdApiWrap::regTopicMultiAddr) .def("init", &MdApiWrap::init) .def("join", &MdApiWrap::join) .def("exit", &MdApiWrap::exit) .def("getTradingDay", &MdApiWrap::getTradingDay) .def("registerFront", &MdApiWrap::registerFront) - .def("subscribeMarketData", &MdApiWrap::subscribeMarketData) - .def("unSubscribeMarketData", &MdApiWrap::unSubscribeMarketData) + .def("registerNameServer", &MdApiWrap::registerNameServer) + .def("subscribeMarketDataTopic", &MdApiWrap::subscribeMarketDataTopic) + .def("subMarketData", &MdApiWrap::subMarketData) + .def("unSubMarketData", &MdApiWrap::unSubMarketData) + .def("setHeartbeatTimeout", &MdApiWrap::setHeartbeatTimeout) + .def("shmMarketData", &MdApiWrap::shmMarketData) + .def("setUdpChannel", &MdApiWrap::setUdpChannel) .def("reqUserLogin", &MdApiWrap::reqUserLogin) .def("reqUserLogout", &MdApiWrap::reqUserLogout) + .def("reqSubscribeTopic", &MdApiWrap::reqSubscribeTopic) + .def("reqQryTopic", &MdApiWrap::reqQryTopic) + .def("reqSubMarketData", &MdApiWrap::reqSubMarketData) + .def("reqUnSubMarketData", &MdApiWrap::reqUnSubMarketData) + .def("reqQryDepthMarketData", &MdApiWrap::reqQryDepthMarketData) + .def("activateMultiMarketData", &MdApiWrap::activateMultiMarketData) .def("onFrontConnected", pure_virtual(&MdApiWrap::onFrontConnected)) .def("onFrontDisconnected", pure_virtual(&MdApiWrap::onFrontDisconnected)) .def("onHeartBeatWarning", pure_virtual(&MdApiWrap::onHeartBeatWarning)) + .def("onPackageStart", pure_virtual(&MdApiWrap::onPackageStart)) + .def("onPackageEnd", pure_virtual(&MdApiWrap::onPackageEnd)) + .def("onMultiHeartbeat", pure_virtual(&MdApiWrap::onMultiHeartbeat)) + .def("udpMarketData", pure_virtual(&MdApiWrap::udpMarketData)) .def("onRspError", pure_virtual(&MdApiWrap::onRspError)) .def("onRspUserLogin", pure_virtual(&MdApiWrap::onRspUserLogin)) .def("onRspUserLogout", pure_virtual(&MdApiWrap::onRspUserLogout)) + .def("onRtnQmdInstrumentStatu", pure_virtual(&MdApiWrap::onRtnQmdInstrumentStatu)) + .def("onRspSubscribeTopic", pure_virtual(&MdApiWrap::onRspSubscribeTopic)) + .def("onRspQryTopic", pure_virtual(&MdApiWrap::onRspQryTopic)) + .def("onRtnDepthMarketData", pure_virtual(&MdApiWrap::onRtnDepthMarketData)) .def("onRspSubMarketData", pure_virtual(&MdApiWrap::onRspSubMarketData)) .def("onRspUnSubMarketData", pure_virtual(&MdApiWrap::onRspUnSubMarketData)) - .def("onRtnDepthMarketData", pure_virtual(&MdApiWrap::onRtnDepthMarketData)) - .def("onRspSubForQuoteRsp", pure_virtual(&MdApiWrap::onRspSubForQuoteRsp)) - .def("onRspUnSubForQuoteRsp", pure_virtual(&MdApiWrap::onRspUnSubForQuoteRsp)) - .def("onRtnForQuoteRsp", pure_virtual(&MdApiWrap::onRtnForQuoteRsp)) + .def("onRspQryDepthMarketData", pure_virtual(&MdApiWrap::onRspQryDepthMarketData)) ; }; diff --git a/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.h b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.h index ae24dd63..e729ac48 100644 --- a/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.h +++ b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.h @@ -30,17 +30,20 @@ using namespace boost; #define ONFRONTCONNECTED 1 #define ONFRONTDISCONNECTED 2 #define ONHEARTBEATWARNING 3 -#define ONRSPUSERLOGIN 4 -#define ONRSPUSERLOGOUT 5 +#define ONPACKAGESTART 4 +#define ONPACKAGEEND 5 #define ONRSPERROR 6 -#define ONRSPSUBMARKETDATA 7 -#define ONRSPUNSUBMARKETDATA 8 -#define ONRSPSUBFORQUOTERSP 9 -#define ONRSPUNSUBFORQUOTERSP 10 -#define ONRTNDEPTHMARKETDATA 11 -#define ONRTNFORQUOTERSP 12 - - +#define ONRSPUSERLOGIN 7 +#define ONRSPUSERLOGOUT 8 +#define ONRTNQMDINSTRUMENTSTATU 9 +#define ONRSPSUBSCRIBETOPIC 10 +#define ONRSPQRYTOPIC 11 +#define ONRTNDEPTHMARKETDATA 12 +#define ONRSPSUBMARKETDATA 13 +#define ONRSPUNSUBMARKETDATA 14 +#define ONRSPQRYDEPTHMARKETDATA 15 +#define ONMULTIHEARTBEAT 16 //ֶ +#define UDPMARKETDATA 17 //ֶ ///------------------------------------------------------------------------------------- ///APIеIJ @@ -76,6 +79,10 @@ struct Task any task_error; //ṹ int task_id; //id bool task_last; //ǷΪ󷵻 + + int additional_int; //Ͳ + string additional_str1; //ַͲ1 + string additional_str2; //ַͲ2 }; @@ -185,30 +192,51 @@ public: ///@param nTimeLapse ϴνձĵʱ virtual void OnHeartBeatWarning(int nTimeLapse); - ///¼Ӧ - virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///Ļصʼ֪ͨAPIյһĺȵñȻǸĻصDZĻص֪ͨ + ///@param nTopicID 루˽ȣ + ///@param nSequenceNo + virtual void OnPackageStart(int nTopicID, int nSequenceNo); - ///dzӦ - virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///Ļص֪ͨAPIյһĺȵñĻصʼ֪ͨȻǸĻصñ + ///@param nTopicID 루˽ȣ + ///@param nSequenceNo + virtual void OnPackageEnd(int nTopicID, int nSequenceNo); + + //ಥӿ add by zbz 20150304 + virtual void OnMultiHeartbeat(char *CurrTime, char *MultiCastIP) ; + + //㲥յֵʱ򣬻صãqmdata + virtual void UdpMarketData(CQdpFtdcDepthMarketDataField *qmdata); ///Ӧ - virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - ///Ӧ - virtual void OnRspSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///û¼Ӧ + virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - ///ȡӦ - virtual void OnRspUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///û˳Ӧ + virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - ///ѯӦ - virtual void OnRspSubForQuoteRsp(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///֣ݺԼ״̬ + virtual void OnRtnQmdInstrumentStatu(CQdpFtdcQmdInstrumentStateField *pQmdInstrumentState) ; - ///ȡѯӦ - virtual void OnRspUnSubForQuoteRsp(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///Ӧ + virtual void OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ѯӦ + virtual void OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; ///֪ͨ - virtual void OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData); + virtual void OnRtnDepthMarketData(CQdpFtdcDepthMarketDataField *pDepthMarketData) ; + ///ĺԼϢ + virtual void OnRspSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///˶ԼϢ + virtual void OnRspUnSubMarketData(CQdpFtdcSpecificInstrumentField *pSpecificInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ѯӦ + virtual void OnRspQryDepthMarketData(CQdpFtdcRspMarketDataField *pRspMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; //------------------------------------------------------------------------------------- //task @@ -222,22 +250,33 @@ public: void processHeartBeatWarning(Task task); + void processPackageStart(Task task); + + void processPackageEnd(Task task); + + void processMultiHeartbeat(Task task); + + void processUdpMarketData(Task task); + + void processRspError(Task task); + void processRspUserLogin(Task task); void processRspUserLogout(Task task); - void processRspError(Task task); + void processRtnQmdInstrumentStatu(Task task); + + void processRspSubscribeTopic(Task task); + + void processRspQryTopic(Task task); + + void processRtnDepthMarketData(Task task); void processRspSubMarketData(Task task); void processRspUnSubMarketData(Task task); - void processRspSubForQuoteRsp(Task task); - - void processRspUnSubForQuoteRsp(Task task); - - void processRtnDepthMarketData(Task task); - + void processRspQryDepthMarketData(Task task); //------------------------------------------------------------------------------------- //dataصֵ @@ -253,23 +292,33 @@ public: virtual void onHeartBeatWarning(int i){}; + virtual void onPackageStart(int topicID, int sequenceNo) {}; + + virtual void onPackageEnd(int topicID, int sequenceNo) {}; + + virtual void onMultiHeartbeat(string currTime, string multiCastIP) {}; + + virtual void udpMarketData(dict data) {}; + + virtual void onRspError(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 onRspError(dict error, int id, bool last) {}; + virtual void onRtnQmdInstrumentStatu(dict data) {}; + + virtual void onRspSubscribeTopic(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryTopic(dict data, dict error, int id, bool last) {}; + + virtual void onRtnDepthMarketData(dict data) {}; virtual void onRspSubMarketData(dict data, dict error, int id, bool last) {}; virtual void onRspUnSubMarketData(dict data, dict error, int id, bool last) {}; - virtual void onRspSubForQuoteRsp(dict data, dict error, int id, bool last) {}; - - virtual void onRspUnSubForQuoteRsp(dict data, dict error, int id, bool last) {}; - - virtual void onRtnDepthMarketData(dict data) {}; - - virtual void onRtnForQuoteRsp(dict data) {}; + virtual void onRspQryDepthMarketData(dict data, dict error, int id, bool last) {}; //------------------------------------------------------------------------------------- //req:ֵ @@ -277,8 +326,14 @@ public: void createFtdcMdApi(string pszFlowPath = ""); + string getVersion(int major, int minor); + void release(); + void setMultiCast(bool multicast); + + void regTopicMultiAddr(string multiAddr); + void init(); int join(); @@ -289,11 +344,33 @@ public: void registerFront(string pszFrontAddress); - int subscribeMarketData(string instrumentID); + void registerNameServer(string pszNsAddress); - int unSubscribeMarketData(string instrumentID); + void subscribeMarketDataTopic(int topicID, int resumeType); + + int subMarketData(string instrumentID); + + int unSubMarketData(string instrumentID); + + void setHeartbeatTimeout(int timeout); + + void shmMarketData(dict req, dict defdata); + + void setUdpChannel(string udpid); int reqUserLogin(dict req, int nRequestID); int reqUserLogout(dict req, int nRequestID); + + int reqSubscribeTopic(dict req, int nRequestID); + + int reqQryTopic(dict req, int nRequestID); + + int reqSubMarketData(dict req, int nRequestID); + + int reqUnSubMarketData(dict req, int nRequestID); + + int reqQryDepthMarketData(dict req, int nRequestID); + + void activateMultiMarketData(string tradingDay); }; diff --git a/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj new file mode 100644 index 00000000..8fa6c56c --- /dev/null +++ b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj @@ -0,0 +1,120 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {30DD4F96-08AD-42DB-ABB6-C3358871C142} + Win32Proj + vnqdpmd + + + + DynamicLibrary + true + v120 + Unicode + + + DynamicLibrary + false + v120 + true + Unicode + + + + + + + + + + + + + true + + + false + .pyd + X:\GithubProject\vnpy\vn.qdp\qdpapi;D:\boost_1_57_0;D:\Anaconda2\include;$(IncludePath) + D:\boost_1_57_0\libs;D:\Anaconda2\libs;X:\GithubProject\vnpy\vn.qdp\qdpapi;$(LibraryPath) + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;VNQDPMD_EXPORTS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + Create + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;VNQDPMD_EXPORTS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + D:\boost_1_57_0\stage\lib;D:\Anaconda2\libs;X:\GithubProject\vnpy\vn.qdp\qdpapi;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + false + + + false + + + + + Create + Create + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj.filters b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj.filters new file mode 100644 index 00000000..3166208d --- /dev/null +++ b/vn.qdp/vnqdpmd/vnqdpmd/vnqdpmd.vcxproj.filters @@ -0,0 +1,70 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/vn.qdp/vnqdptd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml b/vn.qdp/vnqdptd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml new file mode 100644 index 00000000..7f67c580 --- /dev/null +++ b/vn.qdp/vnqdptd/Visual Studio 2013/settings/Windows Azure Subscriptions.xml @@ -0,0 +1,5 @@ + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAyRIhRmRN8UK7w5RuPHePCQAAAAACAAAAAAAQZgAAAAEAACAAAAAAl4/w4VyqjUA3HilyerwjMwA8XWYuFqc0TymfwFacrgAAAAAOgAAAAAIAACAAAAA70M9sM2rW/I2svTmUIna/CghrIcaZufLj9Cra+3ylJRAAAABdxANXJfXRyoQazkSdgBYkQAAAAOmsd+eZrQTZXzPUzzcUIgIQDnT2hVaEGUrkkSKoTBipziykhRHEZOhlPWbHeZvg4aiJQcT7GeYyqyYKHBbl+aw= + \ No newline at end of file diff --git a/vn.qdp/vnqdptd/vnqdptd.sln b/vn.qdp/vnqdptd/vnqdptd.sln new file mode 100644 index 00000000..a3190b02 --- /dev/null +++ b/vn.qdp/vnqdptd/vnqdptd.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vnqdptd", "vnqdptd\vnqdptd.vcxproj", "{AA86CEC9-CAE8-439A-AD2C-02593E50E318}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AA86CEC9-CAE8-439A-AD2C-02593E50E318}.Debug|Win32.ActiveCfg = Debug|Win32 + {AA86CEC9-CAE8-439A-AD2C-02593E50E318}.Debug|Win32.Build.0 = Debug|Win32 + {AA86CEC9-CAE8-439A-AD2C-02593E50E318}.Release|Win32.ActiveCfg = Release|Win32 + {AA86CEC9-CAE8-439A-AD2C-02593E50E318}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vn.qdp/vnqdptd/vnqdptd/vnqdptd.cpp b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.cpp index 3c931faf..2f44f1c7 100644 --- a/vn.qdp/vnqdptd/vnqdptd/vnqdptd.cpp +++ b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.cpp @@ -1,6 +1,7 @@ // vnqdptd.cpp : DLL Ӧóĵ // +#include "stdafx.h" #include "vnqdptd.h" @@ -98,6 +99,44 @@ void TdApi::OnHeartBeatWarning(int nTimeLapse) this->task_queue.push(task); }; +void TdApi::OnPackageStart(int nTopicID, int nSequenceNo) +{ + Task task = Task(); + task.task_name = ONPACKAGESTART; + task.task_id = nTopicID; + task.additional_int = nSequenceNo; + this->task_queue.push(task); +}; + +void TdApi::OnPackageEnd(int nTopicID, int nSequenceNo) +{ + Task task = Task(); + task.task_name = ONPACKAGEEND; + task.task_id = nTopicID; + task.additional_int = nSequenceNo; + this->task_queue.push(task); +}; + +void TdApi::OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPERROR; + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); @@ -129,14 +168,14 @@ void TdApi::OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRsp this->task_queue.push(task); }; -void TdApi::OnRspUserLogout(CQdpFtdcRspUserLogoutField *pUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); task.task_name = ONRSPUSERLOGOUT; - if (pUserLogout) + if (pRspUserLogout) { - task.task_data = *pUserLogout; + task.task_data = *pRspUserLogout; } else { @@ -222,15 +261,14 @@ void TdApi::OnRspOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspIn this->task_queue.push(task); }; - -void TdApi::OnRspOrderAction(CQdpFtdcOrderActionField *pInputOrderAction, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRspOrderAction(CQdpFtdcOrderActionField *pOrderAction, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); task.task_name = ONRSPORDERACTION; - if (pInputOrderAction) + if (pOrderAction) { - task.task_data = *pInputOrderAction; + task.task_data = *pOrderAction; } else { @@ -254,18 +292,18 @@ void TdApi::OnRspOrderAction(CQdpFtdcOrderActionField *pInputOrderAction, CQdpFt this->task_queue.push(task); }; -void TdApi::OnRspQryOrder(CQdpFtdcOrderField *pOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRspFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); - task.task_name = ONRSPQRYORDER; + task.task_name = ONRSPFROMBANKTOFUTUREBYFUTURE; - if (pOrder) + if (pReqTransfer) { - task.task_data = *pOrder; + task.task_data = *pReqTransfer; } else { - CQdpFtdcOrderField empty_data = CQdpFtdcOrderField(); + CQdpFtdcReqTransferField empty_data = CQdpFtdcReqTransferField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -285,18 +323,18 @@ void TdApi::OnRspQryOrder(CQdpFtdcOrderField *pOrder, CQdpFtdcRspInfoField *pRsp this->task_queue.push(task); }; -void TdApi::OnRspQryTrade(CQdpFtdcTradeField *pTrade, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRspFromFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); - task.task_name = ONRSPQRYTRADE; + task.task_name = ONRSPFROMFUTURETOBANKBYFUTURE; - if (pTrade) + if (pReqTransfer) { - task.task_data = *pTrade; + task.task_data = *pReqTransfer; } else { - CQdpFtdcTradeField empty_data = CQdpFtdcTradeField(); + CQdpFtdcReqTransferField empty_data = CQdpFtdcReqTransferField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -316,257 +354,18 @@ void TdApi::OnRspQryTrade(CQdpFtdcTradeField *pTrade, CQdpFtdcRspInfoField *pRsp this->task_queue.push(task); }; -void TdApi::OnRspQryUserInvestor(CQdpFtdcRspUserInvestorField *pUserInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRtnFlowMessageCancel(CQdpFtdcFlowMessageCancelField *pFlowMessageCancel) { Task task = Task(); - task.task_name = ONRSPQRYUSERINVESTOR; + task.task_name = ONRTNFLOWMESSAGECANCEL; - if (pUserInvestor) + if (pFlowMessageCancel) { - task.task_data = *pUserInvestor; + task.task_data = *pFlowMessageCancel; } else { - CQdpFtdcRspUserInvestorField empty_data = CQdpFtdcRspUserInvestorField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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(CQdpFtdcRspInvestorPositionField *pInvestorPosition, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPQRYINVESTORPOSITION; - - if (pInvestorPosition) - { - task.task_data = *pInvestorPosition; - } - else - { - CQdpFtdcRspInvestorPositionField empty_data = CQdpFtdcRspInvestorPositionField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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::OnRspQryInvestorAccount(CQdpFtdcRspInvestorAccountField *pInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPQRYINVESTOR; - - if (pInvestor) - { - task.task_data = *pInvestor; - } - else - { - CQdpFtdcRspInvestorAccountField empty_data = CQdpFtdcRspInvestorAccountField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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(CQdpFtdcRspExchangeField *pExchange, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPQRYEXCHANGE; - - if (pExchange) - { - task.task_data = *pExchange; - } - else - { - CQdpFtdcRspExchangeField empty_data = CQdpFtdcRspExchangeField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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(CQdpFtdcRspInstrumentField *pInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPQRYINSTRUMENT; - - if (pInstrument) - { - task.task_data = *pInstrument; - } - else - { - CQdpFtdcRspInstrumentField empty_data = CQdpFtdcRspInstrumentField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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::OnRspQryMarketData(CQdpFtdcMarketDataField *pDepthMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPQRYDEPTHMARKETDATA; - - if (pDepthMarketData) - { - task.task_data = *pDepthMarketData; - } - else - { - CQdpFtdcMarketDataField empty_data = CQdpFtdcMarketDataField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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(CQdpFtdcTransferSerialField *pTransferSerial, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPQRYTRANSFERSERIAL; - - if (pTransferSerial) - { - task.task_data = *pTransferSerial; - } - else - { - CQdpFtdcTransferSerialField empty_data = CQdpFtdcTransferSerialField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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::OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) -{ - Task task = Task(); - task.task_name = ONRSPERROR; - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - 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(CQdpFtdcOrderField *pOrder) -{ - Task task = Task(); - task.task_name = ONRTNORDER; - - if (pOrder) - { - task.task_data = *pOrder; - } - else - { - CQdpFtdcOrderField empty_data = CQdpFtdcOrderField(); + CQdpFtdcFlowMessageCancelField empty_data = CQdpFtdcFlowMessageCancelField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -591,6 +390,24 @@ void TdApi::OnRtnTrade(CQdpFtdcTradeField *pTrade) this->task_queue.push(task); }; +void TdApi::OnRtnOrder(CQdpFtdcOrderField *pOrder) +{ + Task task = Task(); + task.task_name = ONRTNORDER; + + if (pOrder) + { + task.task_data = *pOrder; + } + else + { + CQdpFtdcOrderField empty_data = CQdpFtdcOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + void TdApi::OnErrRtnOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo) { Task task = Task(); @@ -667,18 +484,54 @@ void TdApi::OnRtnInstrumentStatus(CQdpFtdcInstrumentStatusField *pInstrumentStat this->task_queue.push(task); }; -void TdApi::OnRspQryContractBank(CQdpFtdcContractBankField *pContractBank, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRtnInvestorAccountDeposit(CQdpFtdcInvestorAccountDepositResField *pInvestorAccountDepositRes) { Task task = Task(); - task.task_name = ONRSPQRYCONTRACTBANK; + task.task_name = ONRTNINVESTORACCOUNTDEPOSIT; - if (pContractBank) + if (pInvestorAccountDepositRes) { - task.task_data = *pContractBank; + task.task_data = *pInvestorAccountDepositRes; } else { - CQdpFtdcContractBankField empty_data = CQdpFtdcContractBankField(); + CQdpFtdcInvestorAccountDepositResField empty_data = CQdpFtdcInvestorAccountDepositResField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnMessageNotify(CQdpFtdcMessageNotifyInfoField *pMessageNotifyInfo) +{ + Task task = Task(); + task.task_name = ONRTNMESSAGENOTIFY; + + if (pMessageNotifyInfo) + { + task.task_data = *pMessageNotifyInfo; + } + else + { + CQdpFtdcMessageNotifyInfoField empty_data = CQdpFtdcMessageNotifyInfoField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnErrRtnQueryBankBalanceByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo) +{ + Task task = Task(); + task.task_name = ONERRRTNQUERYBANKBALANCEBYFUTURE; + + if (pReqQueryAccount) + { + task.task_data = *pReqQueryAccount; + } + else + { + CQdpFtdcReqQueryAccountField empty_data = CQdpFtdcReqQueryAccountField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -693,99 +546,6 @@ void TdApi::OnRspQryContractBank(CQdpFtdcContractBankField *pContractBank, CQdpF 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::OnRtnFromBankToFutureByBank(CQdpFtdcRspTransferField *pRspTransfer) -{ - Task task = Task(); - task.task_name = ONRTNFROMBANKTOFUTUREBYBANK; - - if (pRspTransfer) - { - task.task_data = *pRspTransfer; - } - else - { - CQdpFtdcRspTransferField empty_data = CQdpFtdcRspTransferField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - this->task_queue.push(task); -}; - -void TdApi::OnRtnFromFutureToBankByBank(CQdpFtdcRspTransferField *pRspTransfer) -{ - Task task = Task(); - task.task_name = ONRTNFROMFUTURETOBANKBYBANK; - - if (pRspTransfer) - { - task.task_data = *pRspTransfer; - } - else - { - CQdpFtdcRspTransferField empty_data = CQdpFtdcRspTransferField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - this->task_queue.push(task); -}; - -void TdApi::OnRtnFromBankToFutureByFuture(CQdpFtdcRspTransferField *pRspTransfer) -{ - Task task = Task(); - task.task_name = ONRTNFROMBANKTOFUTUREBYFUTURE; - - if (pRspTransfer) - { - task.task_data = *pRspTransfer; - } - else - { - CQdpFtdcRspTransferField empty_data = CQdpFtdcRspTransferField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - this->task_queue.push(task); -}; - -void TdApi::OnRtnFromFutureToBankByFuture(CQdpFtdcRspTransferField *pRspTransfer) -{ - Task task = Task(); - task.task_name = ONRTNFROMFUTURETOBANKBYFUTURE; - - if (pRspTransfer) - { - task.task_data = *pRspTransfer; - } - else - { - CQdpFtdcRspTransferField empty_data = CQdpFtdcRspTransferField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } - this->task_queue.push(task); -}; - -void TdApi::OnRtnQueryBankBalanceByFuture(CQdpFtdcNotifyQueryAccountField *pNotifyQueryAccount) -{ - Task task = Task(); - task.task_name = ONRTNQUERYBANKBALANCEBYFUTURE; - - if (pNotifyQueryAccount) - { - task.task_data = *pNotifyQueryAccount; - } - else - { - CQdpFtdcNotifyQueryAccountField empty_data = CQdpFtdcNotifyQueryAccountField(); - memset(&empty_data, 0, sizeof(empty_data)); - task.task_data = empty_data; - } this->task_queue.push(task); }; @@ -847,47 +607,90 @@ void TdApi::OnErrRtnFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, this->task_queue.push(task); }; -void TdApi::OnErrRtnQueryBankBalanceByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo) +void TdApi::OnRtnQueryBankBalanceByFuture(CQdpFtdcNotifyQueryAccountField *pNotifyQueryAccount) { Task task = Task(); - task.task_name = ONERRRTNQUERYBANKBALANCEBYFUTURE; + task.task_name = ONRTNQUERYBANKBALANCEBYFUTURE; - if (pReqQueryAccount) + if (pNotifyQueryAccount) { - task.task_data = *pReqQueryAccount; + task.task_data = *pNotifyQueryAccount; } else { - CQdpFtdcReqQueryAccountField empty_data = CQdpFtdcReqQueryAccountField(); + CQdpFtdcNotifyQueryAccountField empty_data = CQdpFtdcNotifyQueryAccountField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } - - if (pRspInfo) - { - task.task_error = *pRspInfo; - } - else - { - CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); - memset(&empty_error, 0, sizeof(empty_error)); - task.task_error = empty_error; - } this->task_queue.push(task); }; -void TdApi::OnRspFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRtnFromBankToFutureByFuture(CQdpFtdcRspTransferField *pRspTransfer) { Task task = Task(); - task.task_name = ONRSPFROMBANKTOFUTUREBYFUTURE; + task.task_name = ONRTNFROMBANKTOFUTUREBYFUTURE; - if (pReqTransfer) + if (pRspTransfer) { - task.task_data = *pReqTransfer; + task.task_data = *pRspTransfer; } else { - CQdpFtdcReqTransferField empty_data = CQdpFtdcReqTransferField(); + CQdpFtdcRspTransferField empty_data = CQdpFtdcRspTransferField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnFromFutureToBankByFuture(CQdpFtdcRspTransferField *pRspTransfer) +{ + Task task = Task(); + task.task_name = ONRTNFROMFUTURETOBANKBYFUTURE; + + if (pRspTransfer) + { + task.task_data = *pRspTransfer; + } + else + { + CQdpFtdcRspTransferField empty_data = CQdpFtdcRspTransferField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnSGEDeferRate(CQdpFtdcSGEDeferRateField *pSGEDeferRate) +{ + Task task = Task(); + task.task_name = ONRTNSGEDEFERRATE; + + if (pSGEDeferRate) + { + task.task_data = *pSGEDeferRate; + } + else + { + CQdpFtdcSGEDeferRateField empty_data = CQdpFtdcSGEDeferRateField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRspQryOrder(CQdpFtdcOrderField *pOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYORDER; + + if (pOrder) + { + task.task_data = *pOrder; + } + else + { + CQdpFtdcOrderField empty_data = CQdpFtdcOrderField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -907,18 +710,359 @@ void TdApi::OnRspFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer this->task_queue.push(task); }; -void TdApi::OnRspFromFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +void TdApi::OnRspQryTrade(CQdpFtdcTradeField *pTrade, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { Task task = Task(); - task.task_name = ONRSPFROMFUTURETOBANKBYFUTURE; + task.task_name = ONRSPQRYTRADE; - if (pReqTransfer) + if (pTrade) { - task.task_data = *pReqTransfer; + task.task_data = *pTrade; } else { - CQdpFtdcReqTransferField empty_data = CQdpFtdcReqTransferField(); + CQdpFtdcTradeField empty_data = CQdpFtdcTradeField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryUserInvestor(CQdpFtdcRspUserInvestorField *pRspUserInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYUSERINVESTOR; + + if (pRspUserInvestor) + { + task.task_data = *pRspUserInvestor; + } + else + { + CQdpFtdcRspUserInvestorField empty_data = CQdpFtdcRspUserInvestorField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryInvestorAccount(CQdpFtdcRspInvestorAccountField *pRspInvestorAccount, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORACCOUNT; + + if (pRspInvestorAccount) + { + task.task_data = *pRspInvestorAccount; + } + else + { + CQdpFtdcRspInvestorAccountField empty_data = CQdpFtdcRspInvestorAccountField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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(CQdpFtdcRspInstrumentField *pRspInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINSTRUMENT; + + if (pRspInstrument) + { + task.task_data = *pRspInstrument; + } + else + { + CQdpFtdcRspInstrumentField empty_data = CQdpFtdcRspInstrumentField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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(CQdpFtdcRspExchangeField *pRspExchange, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYEXCHANGE; + + if (pRspExchange) + { + task.task_data = *pRspExchange; + } + else + { + CQdpFtdcRspExchangeField empty_data = CQdpFtdcRspExchangeField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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(CQdpFtdcRspInvestorPositionField *pRspInvestorPosition, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORPOSITION; + + if (pRspInvestorPosition) + { + task.task_data = *pRspInvestorPosition; + } + else + { + CQdpFtdcRspInvestorPositionField empty_data = CQdpFtdcRspInvestorPositionField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPSUBSCRIBETOPIC; + + if (pDissemination) + { + task.task_data = *pDissemination; + } + else + { + CQdpFtdcDisseminationField empty_data = CQdpFtdcDisseminationField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYTOPIC; + + if (pDissemination) + { + task.task_data = *pDissemination; + } + else + { + CQdpFtdcDisseminationField empty_data = CQdpFtdcDisseminationField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryInvestorFee(CQdpFtdcInvestorFeeField *pInvestorFee, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORFEE; + + if (pInvestorFee) + { + task.task_data = *pInvestorFee; + } + else + { + CQdpFtdcInvestorFeeField empty_data = CQdpFtdcInvestorFeeField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryInvestorMargin(CQdpFtdcInvestorMarginField *pInvestorMargin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORMARGIN; + + if (pInvestorMargin) + { + task.task_data = *pInvestorMargin; + } + else + { + CQdpFtdcInvestorMarginField empty_data = CQdpFtdcInvestorMarginField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryExchangeDiffTime(CQdpFtdcRspExchangeDiffTimeField *pRspExchangeDiffTime, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYEXCHANGEDIFFTIME; + + if (pRspExchangeDiffTime) + { + task.task_data = *pRspExchangeDiffTime; + } + else + { + CQdpFtdcRspExchangeDiffTimeField empty_data = CQdpFtdcRspExchangeDiffTimeField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryContractBank(CQdpFtdcContractBankField *pContractBank, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYCONTRACTBANK; + + if (pContractBank) + { + task.task_data = *pContractBank; + } + else + { + CQdpFtdcContractBankField empty_data = CQdpFtdcContractBankField(); memset(&empty_data, 0, sizeof(empty_data)); task.task_data = empty_data; } @@ -969,6 +1113,98 @@ void TdApi::OnRspQueryBankAccountMoneyByFuture(CQdpFtdcReqQueryAccountField *pRe this->task_queue.push(task); }; +void TdApi::OnRspQryTransferSerial(CQdpFtdcTransferSerialField *pTransferSerial, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYTRANSFERSERIAL; + + if (pTransferSerial) + { + task.task_data = *pTransferSerial; + } + else + { + CQdpFtdcTransferSerialField empty_data = CQdpFtdcTransferSerialField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQrySGEDeferRate(CQdpFtdcSGEDeferRateField *pSGEDeferRate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYSGEDEFERRATE; + + if (pSGEDeferRate) + { + task.task_data = *pSGEDeferRate; + } + else + { + CQdpFtdcSGEDeferRateField empty_data = CQdpFtdcSGEDeferRateField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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::OnRspQryMarketData(CQdpFtdcMarketDataField *pMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYMARKETDATA; + + if (pMarketData) + { + task.task_data = *pMarketData; + } + else + { + CQdpFtdcMarketDataField empty_data = CQdpFtdcMarketDataField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CQdpFtdcRspInfoField empty_error = CQdpFtdcRspInfoField(); + 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); +}; ///------------------------------------------------------------------------------------- @@ -1001,6 +1237,24 @@ void TdApi::processTask() break; } + case ONPACKAGESTART: + { + this->processPackageStart(task); + break; + } + + case ONPACKAGEEND: + { + this->processPackageEnd(task); + break; + } + + case ONRSPERROR: + { + this->processRspError(task); + break; + } + case ONRSPUSERLOGIN: { this->processRspUserLogin(task); @@ -1019,12 +1273,6 @@ void TdApi::processTask() break; } - case ONRSPTRADINGACCOUNTPASSWORDUPDATE: - { - this->processRspTradingAccountPasswordUpdate(task); - break; - } - case ONRSPORDERINSERT: { this->processRspOrderInsert(task); @@ -1037,58 +1285,21 @@ void TdApi::processTask() break; } - case ONRSPQRYORDER: + case ONRSPFROMBANKTOFUTUREBYFUTURE: { - this->processRspQryOrder(task); + this->processRspFromBankToFutureByFuture(task); break; } - case ONRSPQRYTRADE: + case ONRSPFROMFUTURETOBANKBYFUTURE: { - this->processRspQryTrade(task); + this->processRspFromFutureToBankByFuture(task); break; } - case ONRSPQRYINVESTORPOSITION: + case ONRTNFLOWMESSAGECANCEL: { - this->processRspQryInvestorPosition(task); - break; - } - - case ONRSPQRYTRADINGACCOUNT: - { - this->processRspQryInvestorAccount(task); - break; - } - - case ONRSPQRYEXCHANGE: - { - this->processRspQryExchange(task); - break; - } - - - case ONRSPQRYINSTRUMENT: - { - this->processRspQryInstrument(task); - break; - } - - case ONRSPQRYDEPTHMARKETDATA: - { - this->processRspQryMarketData(task); - break; - } - - case ONRSPERROR: - { - this->processRspError(task); - break; - } - - case ONRTNORDER: - { - this->processRtnOrder(task); + this->processRtnFlowMessageCancel(task); break; } @@ -1098,6 +1309,12 @@ void TdApi::processTask() break; } + case ONRTNORDER: + { + this->processRtnOrder(task); + break; + } + case ONERRRTNORDERINSERT: { this->processErrRtnOrderInsert(task); @@ -1116,21 +1333,21 @@ void TdApi::processTask() break; } - case ONRTNFROMBANKTOFUTUREBYFUTURE: + case ONRTNINVESTORACCOUNTDEPOSIT: { - this->processRtnFromBankToFutureByFuture(task); + this->processRtnInvestorAccountDeposit(task); break; } - case ONRTNFROMFUTURETOBANKBYFUTURE: + case ONRTNMESSAGENOTIFY: { - this->processRtnFromFutureToBankByFuture(task); + this->processRtnMessageNotify(task); break; } - case ONRTNQUERYBANKBALANCEBYFUTURE: + case ONERRRTNQUERYBANKBALANCEBYFUTURE: { - this->processRtnQueryBankBalanceByFuture(task); + this->processErrRtnQueryBankBalanceByFuture(task); break; } @@ -1146,21 +1363,105 @@ void TdApi::processTask() break; } - case ONERRRTNQUERYBANKBALANCEBYFUTURE: + case ONRTNQUERYBANKBALANCEBYFUTURE: { - this->processErrRtnQueryBankBalanceByFuture(task); + this->processRtnQueryBankBalanceByFuture(task); break; } - case ONRSPFROMBANKTOFUTUREBYFUTURE: + case ONRTNFROMBANKTOFUTUREBYFUTURE: { - this->processRspFromBankToFutureByFuture(task); + this->processRtnFromBankToFutureByFuture(task); break; } - case ONRSPFROMFUTURETOBANKBYFUTURE: + case ONRTNFROMFUTURETOBANKBYFUTURE: { - this->processRspFromFutureToBankByFuture(task); + this->processRtnFromFutureToBankByFuture(task); + break; + } + + case ONRTNSGEDEFERRATE: + { + this->processRtnSGEDeferRate(task); + break; + } + + case ONRSPQRYORDER: + { + this->processRspQryOrder(task); + break; + } + + case ONRSPQRYTRADE: + { + this->processRspQryTrade(task); + break; + } + + case ONRSPQRYUSERINVESTOR: + { + this->processRspQryUserInvestor(task); + break; + } + + case ONRSPQRYINVESTORACCOUNT: + { + this->processRspQryInvestorAccount(task); + break; + } + + case ONRSPQRYINSTRUMENT: + { + this->processRspQryInstrument(task); + break; + } + + case ONRSPQRYEXCHANGE: + { + this->processRspQryExchange(task); + break; + } + + case ONRSPQRYINVESTORPOSITION: + { + this->processRspQryInvestorPosition(task); + break; + } + + case ONRSPSUBSCRIBETOPIC: + { + this->processRspSubscribeTopic(task); + break; + } + + case ONRSPQRYTOPIC: + { + this->processRspQryTopic(task); + break; + } + + case ONRSPQRYINVESTORFEE: + { + this->processRspQryInvestorFee(task); + break; + } + + case ONRSPQRYINVESTORMARGIN: + { + this->processRspQryInvestorMargin(task); + break; + } + + case ONRSPQRYEXCHANGEDIFFTIME: + { + this->processRspQryExchangeDiffTime(task); + break; + } + + case ONRSPQRYCONTRACTBANK: + { + this->processRspQryContractBank(task); break; } @@ -1170,9 +1471,21 @@ void TdApi::processTask() break; } - case ONRSPQRYUSERINVESTOR: + case ONRSPQRYTRANSFERSERIAL: { - this->processRspQryUserInvestor(task); + this->processRspQryTransferSerial(task); + break; + } + + case ONRSPQRYSGEDEFERRATE: + { + this->processRspQrySGEDeferRate(task); + break; + } + + case ONRSPQRYMARKETDATA: + { + this->processRspQryMarketData(task); break; } } @@ -1197,21 +1510,45 @@ void TdApi::processHeartBeatWarning(Task task) this->onHeartBeatWarning(task.task_id); }; +void TdApi::processPackageStart(Task task) +{ + PyLock lock; + this->onPackageStart(task.task_id, task.additional_int); +}; + +void TdApi::processPackageEnd(Task task) +{ + PyLock lock; + this->onPackageEnd(task.task_id, task.additional_int); +}; + +void TdApi::processRspError(Task task) +{ + PyLock lock; + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspError(error, task.task_id, task.task_last); +}; void TdApi::processRspUserLogin(Task task) { PyLock lock; CQdpFtdcRspUserLoginField task_data = any_cast(task.task_data); dict data; - - data["MaxOrderLocalID"] = task_data.MaxOrderLocalID; + data["PrivateFlowSize"] = task_data.PrivateFlowSize; data["UserID"] = task_data.UserID; + data["DataCenterID"] = task_data.DataCenterID; data["TradingDay"] = task_data.TradingDay; - data["TradingSystemName"] = task_data.TradingSystemName; - data["BrokerID"] = task_data.BrokerID; - data["LoginTime"] = task_data.LoginTime; - data["FrontID"] = task_data.FrontID; data["SessionID"] = task_data.SessionID; + data["BrokerID"] = task_data.BrokerID; + data["MaxOrderLocalID"] = task_data.MaxOrderLocalID; + data["TradingSystemName"] = task_data.TradingSystemName; + data["FrontID"] = task_data.FrontID; + data["LoginTime"] = task_data.LoginTime; + data["UserFlowSize"] = task_data.UserFlowSize; CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; @@ -1255,49 +1592,36 @@ void TdApi::processRspUserPasswordUpdate(Task task) this->onRspUserPasswordUpdate(data, error, task.task_id, task.task_last); }; -void TdApi::processRspTradingAccountPasswordUpdate(Task task) -{ - PyLock lock; - CQdpFtdcUserPasswordUpdateField task_data = any_cast(task.task_data); - dict data; - data["NewPassword"] = task_data.NewPassword; - data["OldPassword"] = task_data.OldPassword; - data["BrokerID"] = task_data.BrokerID; - data["UserID"] = task_data.UserID; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspTradingAccountPasswordUpdate(data, error, task.task_id, task.task_last); -}; - void TdApi::processRspOrderInsert(Task task) { PyLock lock; CQdpFtdcInputOrderField task_data = any_cast(task.task_data); dict data; - data["OffsetFlag"] = task_data.OffsetFlag; - data["UserID"] = task_data.UserID; + data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["HedgeFlag"] = task_data.HedgeFlag; data["LimitPrice"] = task_data.LimitPrice; data["Direction"] = task_data.Direction; + data["OffsetFlag"] = task_data.OffsetFlag; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; data["Volume"] = task_data.Volume; data["OrderPriceType"] = task_data.OrderPriceType; data["TimeCondition"] = task_data.TimeCondition; - data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["OrderSysID"] = task_data.OrderSysID; 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["HedgeFlag"] = task_data.HedgeFlag; + data["BusinessType"] = task_data.BusinessType; data["GTDDate"] = task_data.GTDDate; + data["BranchID"] = task_data.BranchID; data["BusinessUnit"] = task_data.BusinessUnit; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["UserCustom"] = task_data.UserCustom; data["InvestorID"] = task_data.InvestorID; data["VolumeCondition"] = task_data.VolumeCondition; + data["RecNum"] = task_data.RecNum; CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; @@ -1307,23 +1631,6 @@ void TdApi::processRspOrderInsert(Task task) this->onRspOrderInsert(data, error, task.task_id, task.task_last); }; -void TdApi::processRspQryUserInvestor(Task task) -{ - PyLock lock; - CQdpFtdcRspUserInvestorField task_data = any_cast(task.task_data); - dict data; - data["UserID"] = task_data.UserID; - data["BrokerID"] = task_data.BrokerID; - data["InvestorID"] = task_data.InvestorID; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryUserInvestor(data, error, task.task_id, task.task_last); -}; - void TdApi::processRspOrderAction(Task task) { PyLock lock; @@ -1333,13 +1640,16 @@ void TdApi::processRspOrderAction(Task task) data["ExchangeID"] = task_data.ExchangeID; data["ActionFlag"] = task_data.ActionFlag; data["UserOrderActionLocalID"] = task_data.UserOrderActionLocalID; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; data["InvestorID"] = task_data.InvestorID; - data["VolumeChange"] = task_data.VolumeChange; + data["SessionID"] = task_data.SessionID; data["BrokerID"] = task_data.BrokerID; + data["VolumeChange"] = task_data.VolumeChange; data["OrderSysID"] = task_data.OrderSysID; + data["FrontID"] = task_data.FrontID; + data["RecNum"] = task_data.RecNum; CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; @@ -1349,327 +1659,134 @@ void TdApi::processRspOrderAction(Task task) this->onRspOrderAction(data, error, task.task_id, task.task_last); }; -void TdApi::processRspQryOrder(Task task) +void TdApi::processRspFromBankToFutureByFuture(Task task) { PyLock lock; - CQdpFtdcOrderField task_data = any_cast(task.task_data); + CQdpFtdcReqTransferField task_data = any_cast(task.task_data); dict data; - data["VolumeTraded"] = task_data.VolumeTraded; - data["OffsetFlag"] = task_data.OffsetFlag; - data["UserID"] = task_data.UserID; - data["LimitPrice"] = task_data.LimitPrice; - data["Direction"] = task_data.Direction; - data["ParticipantID"] = task_data.ParticipantID; - data["Volume"] = task_data.Volume; - data["ClientID"] = task_data.ClientID; - data["OrderPriceType"] = task_data.OrderPriceType; - data["TimeCondition"] = task_data.TimeCondition; - data["OrderStatus"] = task_data.OrderStatus; - data["OrderSysID"] = task_data.OrderSysID; - data["IsAutoSuspend"] = task_data.IsAutoSuspend; - data["StopPrice"] = task_data.StopPrice; - data["InstrumentID"] = task_data.InstrumentID; - data["ExchangeID"] = task_data.ExchangeID; - data["MinVolume"] = task_data.MinVolume; - data["ForceCloseReason"] = task_data.ForceCloseReason; - data["TradingDay"] = task_data.TradingDay; - data["BrokerID"] = task_data.BrokerID; - data["InsertTime"] = task_data.InsertTime; - data["HedgeFlag"] = task_data.HedgeFlag; - data["CancelTime"] = task_data.CancelTime; - data["GTDDate"] = task_data.GTDDate; - data["OrderLocalID"] = task_data.OrderLocalID; - data["BranchID"] = task_data.BranchID; - data["BusinessUnit"] = task_data.BusinessUnit; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; - data["InvestorID"] = task_data.InvestorID; - data["VolumeCondition"] = task_data.VolumeCondition; - data["OrderSource"] = task_data.OrderSource; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryOrder(data, error, task.task_id, task.task_last); -}; - -void TdApi::processRspQryTrade(Task task) -{ - PyLock lock; - CQdpFtdcTradeField task_data = any_cast(task.task_data); - dict data; - data["HedgeFlag"] = task_data.HedgeFlag; - data["TradeTime"] = task_data.TradeTime; - data["Direction"] = task_data.Direction; - data["ParticipantID"] = task_data.ParticipantID; - data["TradePrice"] = task_data.TradePrice; - data["ClientID"] = task_data.ClientID; - data["TradeVolume"] = task_data.TradeVolume; - 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["TradeID"] = task_data.TradeID; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; - data["InvestorID"] = task_data.InvestorID; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryTrade(data, error, task.task_id, task.task_last); -}; - -void TdApi::processRspQryInvestorPosition(Task task) -{ - PyLock lock; - CQdpFtdcRspInvestorPositionField task_data = any_cast(task.task_data); - dict data; - data["FrozenMargin"] = task_data.FrozenMargin; - data["HedgeFlag"] = task_data.HedgeFlag; - data["YdPosition"] = task_data.YdPosition; - data["ParticipantID"] = task_data.ParticipantID; - data["ClientID"] = task_data.ClientID; - data["Direction"] = task_data.Direction; - data["HedgeFlag"] = task_data.HedgeFlag; - data["UsedMargin"] = task_data.UsedMargin; - data["InstrumentID"] = task_data.InstrumentID; - data["Position"] = task_data.Position; - data["ExchangeID"] = task_data.ExchangeID; - data["PositionCost"] = task_data.PositionCost; - data["YdPosition"] = task_data.YdPosition; - data["YdPositionCost"] = task_data.YdPositionCost; - data["FrozenMargin"] = task_data.FrozenMargin; - data["FrozenPosition"] = task_data.FrozenPosition; - data["FrozenClosing"] = task_data.FrozenClosing; - data["PositionCost"] = task_data.PositionCost; - data["BrokerID"] = task_data.BrokerID; - data["FrozenPremium"] = task_data.FrozenPremium; - data["LastTradeID"] = task_data.LastTradeID; - data["LastOrderLocalID"] = task_data.LastOrderLocalID; - data["Currency"] = task_data.Currency; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryInvestorPosition(data, error, task.task_id, task.task_last); -}; - -void TdApi::processRspQryInvestorAccount(Task task) -{ - PyLock lock; - CQdpFtdcRspInvestorAccountField task_data = any_cast(task.task_data); - dict data; - data["Mortgage"] = task_data.Mortgage; - data["FrozenMargin"] = task_data.FrozenMargin; - data["PositionProfit"] = task_data.PositionProfit; - data["Fee"] = task_data.Fee; - data["AccountID"] = task_data.AccountID; - data["Available"] = task_data.Available; - data["BrokerID"] = task_data.BrokerID; - data["FrozenPremium"] = task_data.FrozenPremium; - data["Withdraw"] = task_data.Withdraw; - data["Balance"] = task_data.Balance; - data["Currency"] = task_data.Currency; - data["PreBalance"] = task_data.PreBalance; - data["Margin"] = task_data.Margin; - data["FrozenFee"] = task_data.FrozenFee; - data["CloseProfit"] = task_data.CloseProfit; - data["Deposit"] = task_data.Deposit; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryInvestorAccount(data, error, task.task_id, task.task_last); -}; - -void TdApi::processRspQryExchange(Task task) -{ - PyLock lock; - CQdpFtdcRspExchangeField task_data = any_cast(task.task_data); - dict data; - data["TradingDay"] = task_data.TradingDay; - data["ExchangeID"] = task_data.ExchangeID; - data["ExchangeName"] = task_data.ExchangeName; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryExchange(data, error, task.task_id, task.task_last); -}; - -void TdApi::processRspQryInstrument(Task task) -{ - PyLock lock; - CQdpFtdcRspInstrumentField task_data = any_cast(task.task_data); - dict data; - data["IsTrading"] = task_data.IsTrading; - data["ExpireDate"] = task_data.ExpireDate; - data["StrikePrice"] = task_data.StrikePrice; - data["UnderlyingMultiple"] = task_data.UnderlyingMultiple; - data["PositionType"] = task_data.PositionType; - data["InstrumentName"] = task_data.InstrumentName;; - 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["PriceTick"] = task_data.PriceTick; - 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; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryInstrument(data, error, task.task_id, task.task_last); -}; - -void TdApi::processRspQryMarketData(Task task) -{ - PyLock lock; - CQdpFtdcMarketDataField task_data = any_cast(task.task_data); - dict data; - data["HighestPrice"] = task_data.HighestPrice; - data["LowerLimitPrice"] = task_data.LowerLimitPrice; - data["OpenPrice"] = task_data.OpenPrice; - data["PreClosePrice"] = task_data.PreClosePrice; - data["PreSettlementPrice"] = task_data.PreSettlementPrice; - data["UpdateTime"] = task_data.UpdateTime; - data["PreOpenInterest"] = task_data.PreOpenInterest;; - data["Volume"] = task_data.Volume; - data["UpperLimitPrice"] = task_data.UpperLimitPrice; - data["InstrumentID"] = task_data.InstrumentID; - data["ExchangeID"] = task_data.ExchangeID; - data["TradingDay"] = task_data.TradingDay; - data["OpenInterest"] = task_data.OpenInterest; - data["LastPrice"] = task_data.LastPrice; - data["SettlementPrice"] = task_data.SettlementPrice; - data["LowestPrice"] = task_data.LowestPrice; - data["HighestPrice"] = task_data.HighestPrice; - - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspQryMarketData(data, error, task.task_id, task.task_last); -}; - - -void TdApi::processRspQryTransferSerial(Task task) -{ - PyLock lock; - CQdpFtdcTransferSerialField task_data = any_cast(task.task_data); - dict data; - data["BankNewAccount"] = task_data.BankNewAccount; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; data["BrokerBranchID"] = task_data.BrokerBranchID; - data["OperatorCode"] = task_data.OperatorCode; + data["UserID"] = task_data.UserID; + data["BankPassWord"] = task_data.BankPassWord; + data["FutureSerial"] = task_data.FutureSerial; + data["BankBrchID"] = task_data.BankBrchID; + 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; 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["BankPwdFlag"] = task_data.BankPwdFlag; + data["RequestID"] = task_data.RequestID; + data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; 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["Password"] = task_data.Password; + data["FutureFetchAmount"] = task_data.FutureFetchAmount; data["TradeDate"] = task_data.TradeDate; data["BrokerFee"] = task_data.BrokerFee; data["BankAccType"] = task_data.BankAccType; - data["FutureSerial"] = task_data.FutureSerial; + data["LastFragment"] = task_data.LastFragment; + data["TradingTime"] = task_data.TradingTime; data["InvestorID"] = task_data.InvestorID; - data["ErrorMsg"] = task_data.ErrorMsg; + data["BankSecuAccType"] = task_data.BankSecuAccType; + data["SecuPwdFlag"] = task_data.SecuPwdFlag; + data["Message"] = task_data.Message; data["CustFee"] = task_data.CustFee; data["TradeAmount"] = task_data.TradeAmount; - data["AvailabilityFlag"] = task_data.AvailabilityFlag; + data["Digest"] = task_data.Digest; CQdpFtdcRspInfoField task_error = any_cast(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); + this->onRspFromBankToFutureByFuture(data, error, task.task_id, task.task_last); }; -void TdApi::processRspError(Task task) +void TdApi::processRspFromFutureToBankByFuture(Task task) { PyLock lock; - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspError(error, task.task_id, task.task_last); -}; - -void TdApi::processRtnOrder(Task task) -{ - PyLock lock; - CQdpFtdcOrderField task_data = any_cast(task.task_data); + CQdpFtdcReqTransferField task_data = any_cast(task.task_data); dict data; - - data["VolumeTraded"] = task_data.VolumeTraded; - data["OffsetFlag"] = task_data.OffsetFlag; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; + data["BrokerBranchID"] = task_data.BrokerBranchID; data["UserID"] = task_data.UserID; - data["LimitPrice"] = task_data.LimitPrice; - data["Direction"] = task_data.Direction; - data["ParticipantID"] = task_data.ParticipantID; - data["Volume"] = task_data.Volume; - data["ClientID"] = task_data.ClientID; - data["OrderPriceType"] = task_data.OrderPriceType; - data["TimeCondition"] = task_data.TimeCondition; - data["OrderStatus"] = task_data.OrderStatus; - data["OrderSysID"] = task_data.OrderSysID; - data["IsAutoSuspend"] = task_data.IsAutoSuspend; - data["StopPrice"] = task_data.StopPrice; - data["InstrumentID"] = task_data.InstrumentID; - data["ExchangeID"] = task_data.ExchangeID; - data["MinVolume"] = task_data.MinVolume; - data["ForceCloseReason"] = task_data.ForceCloseReason; - data["TradingDay"] = task_data.TradingDay; - data["BrokerID"] = task_data.BrokerID; - data["InsertTime"] = task_data.InsertTime; - data["HedgeFlag"] = task_data.HedgeFlag; - data["CancelTime"] = task_data.CancelTime; - data["GTDDate"] = task_data.GTDDate; - data["OrderLocalID"] = task_data.OrderLocalID; - data["BranchID"] = task_data.BranchID; - data["BusinessUnit"] = task_data.BusinessUnit; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; - data["InvestorID"] = task_data.InvestorID; - data["VolumeCondition"] = task_data.VolumeCondition; - data["OrderSource"] = task_data.OrderSource; - data["FrontID"] = task_data.FrontID; + data["BankPassWord"] = task_data.BankPassWord; + data["FutureSerial"] = task_data.FutureSerial; + data["BankBrchID"] = task_data.BankBrchID; + 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["Currency"] = task_data.Currency; + data["TradeCode"] = task_data.TradeCode; data["SessionID"] = task_data.SessionID; + data["BankID"] = task_data.BankID; + data["PlateSerial"] = task_data.PlateSerial; + data["BankPwdFlag"] = task_data.BankPwdFlag; + data["RequestID"] = task_data.RequestID; + data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; + 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["Password"] = task_data.Password; + data["FutureFetchAmount"] = task_data.FutureFetchAmount; + data["TradeDate"] = task_data.TradeDate; + data["BrokerFee"] = task_data.BrokerFee; + data["BankAccType"] = task_data.BankAccType; + data["LastFragment"] = task_data.LastFragment; + data["TradingTime"] = task_data.TradingTime; + data["InvestorID"] = task_data.InvestorID; + data["BankSecuAccType"] = task_data.BankSecuAccType; + 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->onRtnOrder(data); + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspFromFutureToBankByFuture(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRtnFlowMessageCancel(Task task) +{ + PyLock lock; + CQdpFtdcFlowMessageCancelField task_data = any_cast(task.task_data); + dict data; + data["DataCenterID"] = task_data.DataCenterID; + data["TradingDay"] = task_data.TradingDay; + data["StartSequenceNo"] = task_data.StartSequenceNo; + data["SequenceSeries"] = task_data.SequenceSeries; + data["EndSequenceNo"] = task_data.EndSequenceNo; + + this->onRtnFlowMessageCancel(data); }; void TdApi::processRtnTrade(Task task) @@ -1677,29 +1794,77 @@ void TdApi::processRtnTrade(Task task) PyLock lock; CQdpFtdcTradeField task_data = any_cast(task.task_data); dict data; - data["HedgeFlag"] = task_data.HedgeFlag; - data["TradeTime"] = task_data.TradeTime; - data["Direction"] = task_data.Direction; + data["InstrumentID"] = task_data.InstrumentID; + data["TradeAmnt"] = task_data.TradeAmnt; + data["ExchangeID"] = task_data.ExchangeID; + data["ClearingPartID"] = task_data.ClearingPartID; data["ParticipantID"] = task_data.ParticipantID; - data["TradePrice"] = task_data.TradePrice; + data["TradeID"] = task_data.TradeID; + data["InvestorID"] = task_data.InvestorID; + data["HedgeFlag"] = task_data.HedgeFlag; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["UserID"] = task_data.UserID; + data["Direction"] = task_data.Direction; data["ClientID"] = task_data.ClientID; + data["TradePrice"] = task_data.TradePrice; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["OrderSysID"] = task_data.OrderSysID; + data["RecNum"] = task_data.RecNum; + data["TradeTime"] = task_data.TradeTime; data["SeatID"] = task_data.SeatID; data["TradeVolume"] = task_data.TradeVolume; + data["OffsetFlag"] = task_data.OffsetFlag; + + this->onRtnTrade(data); +}; + +void TdApi::processRtnOrder(Task task) +{ + PyLock lock; + CQdpFtdcOrderField task_data = any_cast(task.task_data); + dict data; + data["VolumeRemain"] = task_data.VolumeRemain; + data["VolumeTraded"] = task_data.VolumeTraded; + data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["HedgeFlag"] = task_data.HedgeFlag; + data["LimitPrice"] = task_data.LimitPrice; + data["SeatID"] = task_data.SeatID; + data["Direction"] = task_data.Direction; + data["OffsetFlag"] = task_data.OffsetFlag; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["ClientID"] = task_data.ClientID; + data["Volume"] = task_data.Volume; + 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["ClearingPartID"] = task_data.ClearingPartID; + data["StopPrice"] = task_data.StopPrice; data["InstrumentID"] = task_data.InstrumentID; data["ExchangeID"] = task_data.ExchangeID; + data["MinVolume"] = task_data.MinVolume; + data["CancelUserID"] = task_data.CancelUserID; + data["ForceCloseReason"] = task_data.ForceCloseReason; data["UserID"] = task_data.UserID; data["TradingDay"] = task_data.TradingDay; data["BrokerID"] = task_data.BrokerID; - data["OffsetFlag"] = task_data.OffsetFlag; - data["TradeID"] = task_data.TradeID; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["InsertTime"] = task_data.InsertTime; + data["FrontID"] = task_data.FrontID; + data["ParticipantID"] = task_data.ParticipantID; + data["BusinessType"] = task_data.BusinessType; + data["CancelTime"] = task_data.CancelTime; + data["GTDDate"] = task_data.GTDDate; + data["OrderLocalID"] = task_data.OrderLocalID; + data["BranchID"] = task_data.BranchID; + data["BusinessUnit"] = task_data.BusinessUnit; + data["UserCustom"] = task_data.UserCustom; data["InvestorID"] = task_data.InvestorID; - data["TradeAmnt"] = task_data.TradeAmnt; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RecNum"] = task_data.RecNum; + data["OrderSource"] = task_data.OrderSource; - - this->onRtnTrade(data); + this->onRtnOrder(data); }; void TdApi::processErrRtnOrderInsert(Task task) @@ -1707,26 +1872,31 @@ void TdApi::processErrRtnOrderInsert(Task task) PyLock lock; CQdpFtdcInputOrderField task_data = any_cast(task.task_data); dict data; - data["OffsetFlag"] = task_data.OffsetFlag; - data["UserID"] = task_data.UserID; + data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["HedgeFlag"] = task_data.HedgeFlag; data["LimitPrice"] = task_data.LimitPrice; data["Direction"] = task_data.Direction; + data["OffsetFlag"] = task_data.OffsetFlag; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; data["Volume"] = task_data.Volume; data["OrderPriceType"] = task_data.OrderPriceType; data["TimeCondition"] = task_data.TimeCondition; - data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["OrderSysID"] = task_data.OrderSysID; 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["HedgeFlag"] = task_data.HedgeFlag; + data["BusinessType"] = task_data.BusinessType; data["GTDDate"] = task_data.GTDDate; + data["BranchID"] = task_data.BranchID; data["BusinessUnit"] = task_data.BusinessUnit; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["UserCustom"] = task_data.UserCustom; data["InvestorID"] = task_data.InvestorID; data["VolumeCondition"] = task_data.VolumeCondition; + data["RecNum"] = task_data.RecNum; CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; @@ -1741,17 +1911,20 @@ void TdApi::processErrRtnOrderAction(Task task) PyLock lock; CQdpFtdcOrderActionField task_data = any_cast(task.task_data); dict data; - data["InvestorID"] = task_data.InvestorID; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["ActionFlag"] = task_data.ActionFlag; + data["UserOrderActionLocalID"] = task_data.UserOrderActionLocalID; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; data["UserID"] = task_data.UserID; data["LimitPrice"] = task_data.LimitPrice; - data["UserOrderActionLocalID"] = task_data.UserOrderActionLocalID; - data["VolumeChange"] = task_data.VolumeChange; - data["ActionFlag"] = task_data.ActionFlag; - data["InstrumentID"] = task_data.InstrumentID; - data["ExchangeID"] = task_data.ExchangeID;; - data["OrderSysID"] = task_data.OrderSysID; + data["InvestorID"] = task_data.InvestorID; + data["SessionID"] = task_data.SessionID; data["BrokerID"] = task_data.BrokerID; - data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["VolumeChange"] = task_data.VolumeChange; + data["OrderSysID"] = task_data.OrderSysID; + data["FrontID"] = task_data.FrontID; + data["RecNum"] = task_data.RecNum; CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; @@ -1766,276 +1939,127 @@ void TdApi::processRtnInstrumentStatus(Task task) PyLock lock; CQdpFtdcInstrumentStatusField task_data = any_cast(task.task_data); dict data; - data["InstrumentID"] = task_data.InstrumentID; - data["ExchangeID"] = task_data.ExchangeID; + data["IsTrading"] = task_data.IsTrading; + data["ExpireDate"] = task_data.ExpireDate; + data["StrikePrice"] = task_data.StrikePrice; + data["UnderlyingMultiple"] = task_data.UnderlyingMultiple; + data["LongPosLimit"] = task_data.LongPosLimit; + data["LowerLimitPrice"] = task_data.LowerLimitPrice; + data["PositionType"] = task_data.PositionType; + data["ProductClass"] = task_data.ProductClass; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["InstrumentName"] = task_data.InstrumentName; + data["ShortPosLimit"] = task_data.ShortPosLimit; data["InstrumentStatus"] = task_data.InstrumentStatus; + data["VolumeMultiple"] = task_data.VolumeMultiple; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; + 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["DeliveryYear"] = task_data.DeliveryYear; + data["MaxMarketOrderVolume"] = task_data.MaxMarketOrderVolume; + data["OptionsType"] = task_data.OptionsType; + data["StartDelivDate"] = task_data.StartDelivDate; + data["BasisPrice"] = task_data.BasisPrice; + data["DeliveryMonth"] = task_data.DeliveryMonth; + data["PriceTick"] = task_data.PriceTick; + data["ProductName"] = task_data.ProductName; + data["Currency"] = task_data.Currency; + 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; this->onRtnInstrumentStatus(data); }; -void TdApi::processRspQryContractBank(Task task) +void TdApi::processRtnInvestorAccountDeposit(Task task) { PyLock lock; - CQdpFtdcContractBankField task_data = any_cast(task.task_data); + CQdpFtdcInvestorAccountDepositResField task_data = any_cast(task.task_data); dict data; - data["BankName"] = task_data.BankName; + data["AmountDirection"] = task_data.AmountDirection; + data["Available"] = task_data.Available; + data["Balance"] = task_data.Balance; + data["UserID"] = task_data.UserID; + data["InvestorID"] = task_data.InvestorID; + data["Amount"] = task_data.Amount; data["BrokerID"] = task_data.BrokerID; + data["AccountInsideSeqNo"] = task_data.AccountInsideSeqNo; + data["AccountSeqNo"] = task_data.AccountSeqNo; + data["AccountID"] = task_data.AccountID; + + this->onRtnInvestorAccountDeposit(data); +}; + +void TdApi::processRtnMessageNotify(Task task) +{ + PyLock lock; + CQdpFtdcMessageNotifyInfoField task_data = any_cast(task.task_data); + dict data; + data["WarnMsg"] = task_data.WarnMsg; + data["ExchangeID"] = task_data.ExchangeID; + data["Nums"] = task_data.Nums; + data["UserID"] = task_data.UserID; + data["BusinessType"] = task_data.BusinessType; + data["InvestorID"] = task_data.InvestorID; + data["BrokerID"] = task_data.BrokerID; + + this->onRtnMessageNotify(data); +}; + +void TdApi::processErrRtnQueryBankBalanceByFuture(Task task) +{ + PyLock lock; + CQdpFtdcReqQueryAccountField task_data = any_cast(task.task_data); + dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; + data["BrokerBranchID"] = task_data.BrokerBranchID; + data["UserID"] = task_data.UserID; + data["BankPassWord"] = task_data.BankPassWord; + data["TradeTime"] = task_data.TradeTime; data["BankBrchID"] = task_data.BankBrchID; + 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["Currency"] = task_data.Currency; + data["TradeCode"] = task_data.TradeCode; + 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["BankCodingForFuture"] = task_data.BankCodingForFuture; + 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["BankAccType"] = task_data.BankAccType; + data["LastFragment"] = task_data.LastFragment; + data["FutureSerial"] = task_data.FutureSerial; + data["InvestorID"] = task_data.InvestorID; + data["BankSecuAccType"] = task_data.BankSecuAccType; + data["SecuPwdFlag"] = task_data.SecuPwdFlag; + data["Digest"] = task_data.Digest; CQdpFtdcRspInfoField task_error = any_cast(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::processRtnFromBankToFutureByBank(Task task) -{ - PyLock lock; - CQdpFtdcRspTransferField task_data = any_cast(task.task_data); - dict data; - data["BrokerBranchID"] = task_data.BrokerBranchID; - data["UserID"] = task_data.UserID; - data["BankPassWord"] = task_data.BankPassWord; - 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["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["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["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->onRtnFromBankToFutureByBank(data); -}; - -void TdApi::processRtnFromFutureToBankByBank(Task task) -{ - PyLock lock; - CQdpFtdcRspTransferField task_data = any_cast(task.task_data); - dict data; - data["BrokerBranchID"] = task_data.BrokerBranchID; - data["UserID"] = task_data.UserID; - data["BankPassWord"] = task_data.BankPassWord; - 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["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["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["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->onRtnFromFutureToBankByBank(data); -}; - -void TdApi::processRtnFromBankToFutureByFuture(Task task) -{ - PyLock lock; - CQdpFtdcRspTransferField task_data = any_cast(task.task_data); - dict data; - data["BrokerBranchID"] = task_data.BrokerBranchID; - data["UserID"] = task_data.UserID; - data["BankPassWord"] = task_data.BankPassWord; - 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["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["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["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->onRtnFromBankToFutureByFuture(data); -}; - -void TdApi::processRtnFromFutureToBankByFuture(Task task) -{ - PyLock lock; - CQdpFtdcRspTransferField task_data = any_cast(task.task_data); - dict data; - data["BrokerBranchID"] = task_data.BrokerBranchID; - data["UserID"] = task_data.UserID; - data["BankPassWord"] = task_data.BankPassWord; - 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["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["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["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->onRtnFromFutureToBankByFuture(data); -}; - - -void TdApi::processRtnQueryBankBalanceByFuture(Task task) -{ - PyLock lock; - CQdpFtdcNotifyQueryAccountField task_data = any_cast(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["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["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["SecuPwdFlag"] = task_data.SecuPwdFlag; - data["Digest"] = task_data.Digest; - data["BankFetchAmount"] = task_data.BankFetchAmount; - - this->onRtnQueryBankBalanceByFuture(data); + this->onErrRtnQueryBankBalanceByFuture(data, error); }; void TdApi::processErrRtnBankToFutureByFuture(Task task) @@ -2043,22 +2067,26 @@ void TdApi::processErrRtnBankToFutureByFuture(Task task) PyLock lock; CQdpFtdcReqTransferField task_data = any_cast(task.task_data); dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; data["BrokerBranchID"] = task_data.BrokerBranchID; data["UserID"] = task_data.UserID; data["BankPassWord"] = task_data.BankPassWord; - data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; + data["FutureSerial"] = task_data.FutureSerial; + data["BankBrchID"] = task_data.BankBrchID; 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; data["SessionID"] = task_data.SessionID; data["BankID"] = task_data.BankID; - data["Password"] = task_data.Password; + data["PlateSerial"] = task_data.PlateSerial; data["BankPwdFlag"] = task_data.BankPwdFlag; data["RequestID"] = task_data.RequestID; data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["FeePayFlag"] = task_data.FeePayFlag; data["BankSerial"] = task_data.BankSerial; @@ -2069,13 +2097,14 @@ void TdApi::processErrRtnBankToFutureByFuture(Task task) data["DeviceID"] = task_data.DeviceID; data["TransferStatus"] = task_data.TransferStatus; data["IdCardType"] = task_data.IdCardType; - data["PlateSerial"] = task_data.PlateSerial; + data["Password"] = task_data.Password; data["FutureFetchAmount"] = task_data.FutureFetchAmount; data["TradeDate"] = task_data.TradeDate; data["BrokerFee"] = task_data.BrokerFee; data["BankAccType"] = task_data.BankAccType; data["LastFragment"] = task_data.LastFragment; - data["FutureSerial"] = task_data.FutureSerial; + data["TradingTime"] = task_data.TradingTime; + data["InvestorID"] = task_data.InvestorID; data["BankSecuAccType"] = task_data.BankSecuAccType; data["SecuPwdFlag"] = task_data.SecuPwdFlag; data["Message"] = task_data.Message; @@ -2096,22 +2125,26 @@ void TdApi::processErrRtnFutureToBankByFuture(Task task) PyLock lock; CQdpFtdcReqTransferField task_data = any_cast(task.task_data); dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; data["BrokerBranchID"] = task_data.BrokerBranchID; data["UserID"] = task_data.UserID; data["BankPassWord"] = task_data.BankPassWord; - data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; + data["FutureSerial"] = task_data.FutureSerial; + data["BankBrchID"] = task_data.BankBrchID; 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; data["SessionID"] = task_data.SessionID; data["BankID"] = task_data.BankID; - data["Password"] = task_data.Password; + data["PlateSerial"] = task_data.PlateSerial; data["BankPwdFlag"] = task_data.BankPwdFlag; data["RequestID"] = task_data.RequestID; data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["FeePayFlag"] = task_data.FeePayFlag; data["BankSerial"] = task_data.BankSerial; @@ -2122,13 +2155,14 @@ void TdApi::processErrRtnFutureToBankByFuture(Task task) data["DeviceID"] = task_data.DeviceID; data["TransferStatus"] = task_data.TransferStatus; data["IdCardType"] = task_data.IdCardType; - data["PlateSerial"] = task_data.PlateSerial; + data["Password"] = task_data.Password; data["FutureFetchAmount"] = task_data.FutureFetchAmount; data["TradeDate"] = task_data.TradeDate; data["BrokerFee"] = task_data.BrokerFee; data["BankAccType"] = task_data.BankAccType; data["LastFragment"] = task_data.LastFragment; - data["FutureSerial"] = task_data.FutureSerial; + data["TradingTime"] = task_data.TradingTime; + data["InvestorID"] = task_data.InvestorID; data["BankSecuAccType"] = task_data.BankSecuAccType; data["SecuPwdFlag"] = task_data.SecuPwdFlag; data["Message"] = task_data.Message; @@ -2144,28 +2178,32 @@ void TdApi::processErrRtnFutureToBankByFuture(Task task) this->onErrRtnFutureToBankByFuture(data, error); }; -void TdApi::processErrRtnQueryBankBalanceByFuture(Task task) +void TdApi::processRtnQueryBankBalanceByFuture(Task task) { PyLock lock; - CQdpFtdcReqQueryAccountField task_data = any_cast(task.task_data); + CQdpFtdcNotifyQueryAccountField task_data = any_cast(task.task_data); dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; 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["BankBrchID"] = task_data.BankBrchID; 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; 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["BankCodingForFuture"] = task_data.BankCodingForFuture; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["BankSerial"] = task_data.BankSerial; data["OperNo"] = task_data.OperNo; @@ -2173,45 +2211,49 @@ void TdApi::processErrRtnQueryBankBalanceByFuture(Task task) 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["ErrorMsg"] = task_data.ErrorMsg; data["BankAccType"] = task_data.BankAccType; data["LastFragment"] = task_data.LastFragment; data["FutureSerial"] = task_data.FutureSerial; + data["InvestorID"] = task_data.InvestorID; data["BankSecuAccType"] = task_data.BankSecuAccType; data["SecuPwdFlag"] = task_data.SecuPwdFlag; data["Digest"] = task_data.Digest; + data["BankFetchAmount"] = task_data.BankFetchAmount; - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onErrRtnQueryBankBalanceByFuture(data, error); + this->onRtnQueryBankBalanceByFuture(data); }; -void TdApi::processRspFromFutureToBankByFuture(Task task) +void TdApi::processRtnFromBankToFutureByFuture(Task task) { PyLock lock; - CQdpFtdcReqTransferField task_data = any_cast(task.task_data); + CQdpFtdcRspTransferField task_data = any_cast(task.task_data); dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; data["BrokerBranchID"] = task_data.BrokerBranchID; data["UserID"] = task_data.UserID; data["BankPassWord"] = task_data.BankPassWord; - data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; + data["FutureSerial"] = task_data.FutureSerial; + data["BankBrchID"] = task_data.BankBrchID; 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; data["SessionID"] = task_data.SessionID; data["BankID"] = task_data.BankID; - data["Password"] = task_data.Password; + data["PlateSerial"] = task_data.PlateSerial; data["BankPwdFlag"] = task_data.BankPwdFlag; + data["ErrorID"] = task_data.ErrorID; data["RequestID"] = task_data.RequestID; data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["FeePayFlag"] = task_data.FeePayFlag; data["BankSerial"] = task_data.BankSerial; @@ -2222,51 +2264,51 @@ void TdApi::processRspFromFutureToBankByFuture(Task task) data["DeviceID"] = task_data.DeviceID; data["TransferStatus"] = task_data.TransferStatus; data["IdCardType"] = task_data.IdCardType; - data["PlateSerial"] = task_data.PlateSerial; + data["Password"] = task_data.Password; data["FutureFetchAmount"] = task_data.FutureFetchAmount; data["TradeDate"] = task_data.TradeDate; - data["Currency"] = task_data.Currency; data["BrokerFee"] = task_data.BrokerFee; data["BankAccType"] = task_data.BankAccType; data["LastFragment"] = task_data.LastFragment; - data["FutureSerial"] = task_data.FutureSerial; + data["TradingTime"] = task_data.TradingTime; + data["InvestorID"] = task_data.InvestorID; data["BankSecuAccType"] = task_data.BankSecuAccType; + data["ErrorMsg"] = task_data.ErrorMsg; 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; - CQdpFtdcRspInfoField task_error = any_cast(task.task_error); - dict error; - error["ErrorMsg"] = task_error.ErrorMsg; - error["ErrorID"] = task_error.ErrorID; - - this->onRspFromFutureToBankByFuture(data, error, task.task_id, task.task_last); + this->onRtnFromBankToFutureByFuture(data); }; - -void TdApi::processRspFromBankToFutureByFuture(Task task) +void TdApi::processRtnFromFutureToBankByFuture(Task task) { PyLock lock; - CQdpFtdcReqTransferField task_data = any_cast(task.task_data); + CQdpFtdcRspTransferField task_data = any_cast(task.task_data); dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; data["BrokerBranchID"] = task_data.BrokerBranchID; data["UserID"] = task_data.UserID; data["BankPassWord"] = task_data.BankPassWord; - data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; + data["FutureSerial"] = task_data.FutureSerial; + data["BankBrchID"] = task_data.BankBrchID; 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; data["SessionID"] = task_data.SessionID; data["BankID"] = task_data.BankID; - data["Password"] = task_data.Password; + data["PlateSerial"] = task_data.PlateSerial; data["BankPwdFlag"] = task_data.BankPwdFlag; + data["ErrorID"] = task_data.ErrorID; data["RequestID"] = task_data.RequestID; data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["FeePayFlag"] = task_data.FeePayFlag; data["BankSerial"] = task_data.BankSerial; @@ -2277,45 +2319,421 @@ void TdApi::processRspFromBankToFutureByFuture(Task task) data["DeviceID"] = task_data.DeviceID; data["TransferStatus"] = task_data.TransferStatus; data["IdCardType"] = task_data.IdCardType; - data["PlateSerial"] = task_data.PlateSerial; + data["Password"] = task_data.Password; data["FutureFetchAmount"] = task_data.FutureFetchAmount; data["TradeDate"] = task_data.TradeDate; - data["Currency"] = task_data.Currency; data["BrokerFee"] = task_data.BrokerFee; data["BankAccType"] = task_data.BankAccType; data["LastFragment"] = task_data.LastFragment; - data["FutureSerial"] = task_data.FutureSerial; + data["TradingTime"] = task_data.TradingTime; + data["InvestorID"] = task_data.InvestorID; data["BankSecuAccType"] = task_data.BankSecuAccType; + data["ErrorMsg"] = task_data.ErrorMsg; 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->onRtnFromFutureToBankByFuture(data); +}; + +void TdApi::processRtnSGEDeferRate(Task task) +{ + PyLock lock; + CQdpFtdcSGEDeferRateField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["DeferRate"] = task_data.DeferRate; + data["Direction"] = task_data.Direction; + data["TradeDate"] = task_data.TradeDate; + + this->onRtnSGEDeferRate(data); +}; + +void TdApi::processRspQryOrder(Task task) +{ + PyLock lock; + CQdpFtdcOrderField task_data = any_cast(task.task_data); + dict data; + data["VolumeRemain"] = task_data.VolumeRemain; + data["VolumeTraded"] = task_data.VolumeTraded; + data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["HedgeFlag"] = task_data.HedgeFlag; + data["LimitPrice"] = task_data.LimitPrice; + data["SeatID"] = task_data.SeatID; + data["Direction"] = task_data.Direction; + data["OffsetFlag"] = task_data.OffsetFlag; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["ClientID"] = task_data.ClientID; + data["Volume"] = task_data.Volume; + 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["StopPrice"] = task_data.StopPrice; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["MinVolume"] = task_data.MinVolume; + data["CancelUserID"] = task_data.CancelUserID; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["UserID"] = task_data.UserID; + 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["BusinessType"] = task_data.BusinessType; + data["CancelTime"] = task_data.CancelTime; + data["GTDDate"] = task_data.GTDDate; + data["OrderLocalID"] = task_data.OrderLocalID; + data["BranchID"] = task_data.BranchID; + data["BusinessUnit"] = task_data.BusinessUnit; + data["UserCustom"] = task_data.UserCustom; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RecNum"] = task_data.RecNum; + data["OrderSource"] = task_data.OrderSource; + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); dict error; error["ErrorMsg"] = task_error.ErrorMsg; error["ErrorID"] = task_error.ErrorID; - this->onRspFromBankToFutureByFuture(data, error, task.task_id, task.task_last); + this->onRspQryOrder(data, error, task.task_id, task.task_last); }; +void TdApi::processRspQryTrade(Task task) +{ + PyLock lock; + CQdpFtdcTradeField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["TradeAmnt"] = task_data.TradeAmnt; + data["ExchangeID"] = task_data.ExchangeID; + data["ClearingPartID"] = task_data.ClearingPartID; + data["ParticipantID"] = task_data.ParticipantID; + data["TradeID"] = task_data.TradeID; + data["InvestorID"] = task_data.InvestorID; + data["HedgeFlag"] = task_data.HedgeFlag; + data["UserOrderLocalID"] = task_data.UserOrderLocalID; + data["UserID"] = task_data.UserID; + data["Direction"] = task_data.Direction; + data["ClientID"] = task_data.ClientID; + data["TradePrice"] = task_data.TradePrice; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["OrderSysID"] = task_data.OrderSysID; + data["RecNum"] = task_data.RecNum; + data["TradeTime"] = task_data.TradeTime; + data["SeatID"] = task_data.SeatID; + data["TradeVolume"] = task_data.TradeVolume; + data["OffsetFlag"] = task_data.OffsetFlag; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryTrade(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryUserInvestor(Task task) +{ + PyLock lock; + CQdpFtdcRspUserInvestorField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["BrokerID"] = task_data.BrokerID; + data["InvestorID"] = task_data.InvestorID; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryUserInvestor(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestorAccount(Task task) +{ + PyLock lock; + CQdpFtdcRspInvestorAccountField task_data = any_cast(task.task_data); + dict data; + data["Fee"] = task_data.Fee; + data["Withdraw"] = task_data.Withdraw; + data["Mortgage"] = task_data.Mortgage; + data["ShortMargin"] = task_data.ShortMargin; + data["FrozenMargin"] = task_data.FrozenMargin; + data["ShortFrozenMargin"] = task_data.ShortFrozenMargin; + data["PositionProfit"] = task_data.PositionProfit; + data["FrozenFee"] = task_data.FrozenFee; + data["OtherFee"] = task_data.OtherFee; + data["AccountID"] = task_data.AccountID; + data["Available"] = task_data.Available; + data["Premium"] = task_data.Premium; + data["Risk"] = task_data.Risk; + data["Currency"] = task_data.Currency; + data["FrozenPremium"] = task_data.FrozenPremium; + data["PreAvailable"] = task_data.PreAvailable; + data["BrokerID"] = task_data.BrokerID; + data["Deposit"] = task_data.Deposit; + data["LongFrozenMargin"] = task_data.LongFrozenMargin; + data["Balance"] = task_data.Balance; + data["Margin"] = task_data.Margin; + data["DynamicRights"] = task_data.DynamicRights; + data["PreBalance"] = task_data.PreBalance; + data["InvestorID"] = task_data.InvestorID; + data["LongMargin"] = task_data.LongMargin; + data["CloseProfit"] = task_data.CloseProfit; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestorAccount(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInstrument(Task task) +{ + PyLock lock; + CQdpFtdcRspInstrumentField task_data = any_cast(task.task_data); + dict data; + data["IsTrading"] = task_data.IsTrading; + data["ExpireDate"] = task_data.ExpireDate; + data["StrikePrice"] = task_data.StrikePrice; + data["UnderlyingMultiple"] = task_data.UnderlyingMultiple; + data["LongPosLimit"] = task_data.LongPosLimit; + data["LowerLimitPrice"] = task_data.LowerLimitPrice; + data["PositionType"] = task_data.PositionType; + data["ProductClass"] = task_data.ProductClass; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["InstrumentName"] = task_data.InstrumentName; + data["ShortPosLimit"] = task_data.ShortPosLimit; + data["InstrumentStatus"] = task_data.InstrumentStatus; + data["VolumeMultiple"] = task_data.VolumeMultiple; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; + 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["DeliveryYear"] = task_data.DeliveryYear; + data["MaxMarketOrderVolume"] = task_data.MaxMarketOrderVolume; + data["OptionsType"] = task_data.OptionsType; + data["StartDelivDate"] = task_data.StartDelivDate; + data["BasisPrice"] = task_data.BasisPrice; + data["DeliveryMonth"] = task_data.DeliveryMonth; + data["PriceTick"] = task_data.PriceTick; + data["ProductName"] = task_data.ProductName; + data["Currency"] = task_data.Currency; + 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; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInstrument(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryExchange(Task task) +{ + PyLock lock; + CQdpFtdcRspExchangeField task_data = any_cast(task.task_data); + dict data; + data["TradingDay"] = task_data.TradingDay; + data["ExchangeID"] = task_data.ExchangeID; + data["ExchangeName"] = task_data.ExchangeName; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryExchange(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestorPosition(Task task) +{ + PyLock lock; + CQdpFtdcRspInvestorPositionField task_data = any_cast(task.task_data); + dict data; + data["FrozenMargin"] = task_data.FrozenMargin; + data["HedgeFlag"] = task_data.HedgeFlag; + data["PositionProfit"] = task_data.PositionProfit; + data["Direction"] = task_data.Direction; + data["ParticipantID"] = task_data.ParticipantID; + data["FrozenClosing"] = task_data.FrozenClosing; + data["InvestorID"] = task_data.InvestorID; + data["LastTradeID"] = task_data.LastTradeID; + data["YdPosition"] = task_data.YdPosition; + data["ClientID"] = task_data.ClientID; + data["FrozenPosition"] = task_data.FrozenPosition; + data["LastOrderLocalID"] = task_data.LastOrderLocalID; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["FrozenPremium"] = task_data.FrozenPremium; + data["TodayPosition"] = task_data.TodayPosition; + data["PositionCost"] = task_data.PositionCost; + data["UsedMargin"] = task_data.UsedMargin; + data["BrokerID"] = task_data.BrokerID; + data["Position"] = task_data.Position; + data["FrozenTodayClosing"] = task_data.FrozenTodayClosing; + data["YdPositionCost"] = task_data.YdPositionCost; + data["Currency"] = task_data.Currency; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestorPosition(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspSubscribeTopic(Task task) +{ + PyLock lock; + CQdpFtdcDisseminationField task_data = any_cast(task.task_data); + dict data; + data["SequenceNo"] = task_data.SequenceNo; + data["SequenceSeries"] = task_data.SequenceSeries; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspSubscribeTopic(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryTopic(Task task) +{ + PyLock lock; + CQdpFtdcDisseminationField task_data = any_cast(task.task_data); + dict data; + data["SequenceNo"] = task_data.SequenceNo; + data["SequenceSeries"] = task_data.SequenceSeries; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryTopic(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestorFee(Task task) +{ + PyLock lock; + CQdpFtdcInvestorFeeField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["OTFeeRate"] = task_data.OTFeeRate; + data["ExchangeID"] = task_data.ExchangeID; + data["OTFeeAmt"] = task_data.OTFeeAmt; + data["OpenFeeAmt"] = task_data.OpenFeeAmt; + data["HedgeFlag"] = task_data.HedgeFlag; + data["InvestorID"] = task_data.InvestorID; + data["BrokerID"] = task_data.BrokerID; + data["OpenFeeRate"] = task_data.OpenFeeRate; + data["OffsetFeeRate"] = task_data.OffsetFeeRate; + data["OffsetFeeAmt"] = task_data.OffsetFeeAmt; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestorFee(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestorMargin(Task task) +{ + PyLock lock; + CQdpFtdcInvestorMarginField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["LongMarginRate"] = task_data.LongMarginRate; + data["ExchangeID"] = task_data.ExchangeID; + data["HedgeFlag"] = task_data.HedgeFlag; + data["InvestorID"] = task_data.InvestorID; + data["BrokerID"] = task_data.BrokerID; + data["LongMarginAmt"] = task_data.LongMarginAmt; + data["ShortMarginAmt"] = task_data.ShortMarginAmt; + data["ShortMarginRate"] = task_data.ShortMarginRate; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestorMargin(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryExchangeDiffTime(Task task) +{ + PyLock lock; + CQdpFtdcRspExchangeDiffTimeField task_data = any_cast(task.task_data); + dict data; + data["ExchangeTime"] = task_data.ExchangeTime; + data["TradingDay"] = task_data.TradingDay; + data["ExchangeID"] = task_data.ExchangeID; + data["DiffSnd"] = task_data.DiffSnd; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryExchangeDiffTime(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryContractBank(Task task) +{ + PyLock lock; + CQdpFtdcContractBankField task_data = any_cast(task.task_data); + dict data; + data["Currency"] = task_data.Currency; + data["BankName"] = task_data.BankName; + data["InvestorID"] = task_data.InvestorID; + data["BrokerID"] = task_data.BrokerID; + data["BankBrchID"] = task_data.BankBrchID; + data["BankID"] = task_data.BankID; + data["AccountID"] = task_data.AccountID; + + CQdpFtdcRspInfoField task_error = any_cast(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::processRspQueryBankAccountMoneyByFuture(Task task) { PyLock lock; CQdpFtdcReqQueryAccountField task_data = any_cast(task.task_data); dict data; + data["VerifyCertNoFlag"] = task_data.VerifyCertNoFlag; 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["BankBrchID"] = task_data.BankBrchID; 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["Currency"] = task_data.Currency; data["TradeCode"] = task_data.TradeCode; data["SessionID"] = task_data.SessionID; data["BankID"] = task_data.BankID; @@ -2323,6 +2741,7 @@ void TdApi::processRspQueryBankAccountMoneyByFuture(Task task) data["BankPwdFlag"] = task_data.BankPwdFlag; data["RequestID"] = task_data.RequestID; data["CustType"] = task_data.CustType; + data["BankCodingForFuture"] = task_data.BankCodingForFuture; data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; data["BankSerial"] = task_data.BankSerial; data["OperNo"] = task_data.OperNo; @@ -2333,10 +2752,10 @@ void TdApi::processRspQueryBankAccountMoneyByFuture(Task task) data["IdCardType"] = task_data.IdCardType; data["PlateSerial"] = task_data.PlateSerial; data["TradeDate"] = task_data.TradeDate; - data["Currency"] = task_data.Currency; data["BankAccType"] = task_data.BankAccType; data["LastFragment"] = task_data.LastFragment; data["FutureSerial"] = task_data.FutureSerial; + data["InvestorID"] = task_data.InvestorID; data["BankSecuAccType"] = task_data.BankSecuAccType; data["SecuPwdFlag"] = task_data.SecuPwdFlag; data["Digest"] = task_data.Digest; @@ -2349,6 +2768,99 @@ void TdApi::processRspQueryBankAccountMoneyByFuture(Task task) this->onRspQueryBankAccountMoneyByFuture(data, error, task.task_id, task.task_last); }; +void TdApi::processRspQryTransferSerial(Task task) +{ + PyLock lock; + CQdpFtdcTransferSerialField task_data = any_cast(task.task_data); + dict data; + data["BankNewAccount"] = task_data.BankNewAccount; + data["BrokerBranchID"] = task_data.BrokerBranchID; + data["BankBrchID"] = task_data.BankBrchID; + data["OperatorCode"] = task_data.OperatorCode; + data["AccountID"] = task_data.AccountID; + data["BankAccount"] = task_data.BankAccount; + data["InvestorID"] = task_data.InvestorID; + data["TradeCode"] = task_data.TradeCode; + data["SessionID"] = task_data.SessionID; + data["BankID"] = task_data.BankID; + data["TradingTime"] = task_data.TradingTime; + data["FutureAccType"] = task_data.FutureAccType; + data["ErrorID"] = task_data.ErrorID; + data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; + data["BankSerial"] = task_data.BankSerial; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["IdCardType"] = task_data.IdCardType; + data["PlateSerial"] = task_data.PlateSerial; + data["TradeDate"] = task_data.TradeDate; + data["BrokerFee"] = task_data.BrokerFee; + data["BankAccType"] = task_data.BankAccType; + data["FutureSerial"] = task_data.FutureSerial; + data["Currency"] = task_data.Currency; + data["ErrorMsg"] = task_data.ErrorMsg; + data["CustFee"] = task_data.CustFee; + data["TradeAmount"] = task_data.TradeAmount; + data["AvailabilityFlag"] = task_data.AvailabilityFlag; + + CQdpFtdcRspInfoField task_error = any_cast(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::processRspQrySGEDeferRate(Task task) +{ + PyLock lock; + CQdpFtdcSGEDeferRateField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["DeferRate"] = task_data.DeferRate; + data["Direction"] = task_data.Direction; + data["TradeDate"] = task_data.TradeDate; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQrySGEDeferRate(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryMarketData(Task task) +{ + PyLock lock; + CQdpFtdcMarketDataField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["UpdateMillisec"] = task_data.UpdateMillisec; + data["LastPrice"] = task_data.LastPrice; + data["HighestPrice"] = task_data.HighestPrice; + data["SettlementPrice"] = task_data.SettlementPrice; + data["UpdateTime"] = task_data.UpdateTime; + data["OpenPrice"] = task_data.OpenPrice; + data["PreClosePrice"] = task_data.PreClosePrice; + data["Volume"] = task_data.Volume; + data["TradingDay"] = task_data.TradingDay; + data["LowerLimitPrice"] = task_data.LowerLimitPrice; + data["PreOpenInterest"] = task_data.PreOpenInterest; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; + data["LowestPrice"] = task_data.LowestPrice; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["OpenInterest"] = task_data.OpenInterest; + data["Turnover"] = task_data.Turnover; + + CQdpFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryMarketData(data, error, task.task_id, task.task_last); +}; + ///------------------------------------------------------------------------------------- @@ -2361,6 +2873,12 @@ void TdApi::createFtdcTraderApi(string pszFlowPath) this->api->RegisterSpi(this); }; +string TdApi::getVersion(int major, int minor) +{ + string version = this->api->GetVersion(major, minor); + return version; +} + void TdApi::release() { this->api->Release(); @@ -2397,62 +2915,34 @@ void TdApi::registerFront(string pszFrontAddress) this->api->RegisterFront((char*)pszFrontAddress.c_str()); }; +void TdApi::registerNameServer(string pszNsAddress) +{ + this->api->RegisterNameServer((char*)pszNsAddress.c_str()); +}; + void TdApi::subscribePrivateTopic(int nType) { - //úΪֶд - QDP_TE_RESUME_TYPE type; - - switch (nType) - { - case 0: - { - type = QDP_TERT_RESTART; - break; - }; - - case 1: - { - type = QDP_TERT_RESUME; - break; - }; - - case 2: - { - type = QDP_TERT_QUICK; - break; - }; - } - - this->api->SubscribePrivateTopic(type); + this->api->SubscribePrivateTopic((QDP_TE_RESUME_TYPE)nType); }; void TdApi::subscribePublicTopic(int nType) { - //úΪֶд - QDP_TE_RESUME_TYPE type; + this->api->SubscribePublicTopic((QDP_TE_RESUME_TYPE)nType); +}; - switch (nType) - { - case 0: - { - type = QDP_TERT_RESTART; - break; - }; +void TdApi::setHeartbeatTimeout(int timeout) +{ + this->api->SetHeartbeatTimeout(timeout); +}; - case 1: - { - type = QDP_TERT_RESUME; - break; - }; +int TdApi::openRequestLog(string fileName) +{ + return this->api->OpenRequestLog((char*)fileName.c_str()); +}; - case 2: - { - type = QDP_TERT_QUICK; - break; - }; - } - - this->api->SubscribePublicTopic(type); +int TdApi::openResponseLog(string fileName) +{ + return this->api->OpenResponseLog((char*)fileName.c_str()); }; int TdApi::reqUserLogin(dict req, int nRequestID) @@ -2462,6 +2952,7 @@ int TdApi::reqUserLogin(dict req, int nRequestID) getStr(req, "MacAddress", myreq.MacAddress); getStr(req, "UserProductInfo", myreq.UserProductInfo); getStr(req, "UserID", myreq.UserID); + getInt(req, "DataCenterID", &myreq.DataCenterID); getStr(req, "TradingDay", myreq.TradingDay); getStr(req, "InterfaceProductInfo", myreq.InterfaceProductInfo); getStr(req, "BrokerID", myreq.BrokerID); @@ -2469,20 +2960,11 @@ int TdApi::reqUserLogin(dict req, int nRequestID) getStr(req, "OneTimePassword", myreq.OneTimePassword); getStr(req, "ProtocolInfo", myreq.ProtocolInfo); getStr(req, "Password", myreq.Password); + getStr(req, "IPAddress", myreq.IPAddress); int i = this->api->ReqUserLogin(&myreq, nRequestID); return i; }; -int TdApi::reqQryUserInvestor(dict req, int nRequestID) -{ - CQdpFtdcQryUserInvestorField myreq = CQdpFtdcQryUserInvestorField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "UserID", myreq.UserID); - getStr(req, "BrokerID", myreq.BrokerID); - int i = this->api->ReqQryUserInvestor(&myreq, nRequestID); - return i; -}; - int TdApi::reqUserLogout(dict req, int nRequestID) { CQdpFtdcReqUserLogoutField myreq = CQdpFtdcReqUserLogoutField(); @@ -2505,47 +2987,39 @@ int TdApi::reqUserPasswordUpdate(dict req, int nRequestID) return i; }; -int TdApi::reqTradingAccountPasswordUpdate(dict req, int nRequestID) -{ - CQdpFtdcUserPasswordUpdateField myreq = CQdpFtdcUserPasswordUpdateField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "NewPassword", myreq.NewPassword); - getStr(req, "OldPassword", myreq.OldPassword); - getStr(req, "BrokerID", myreq.BrokerID); - getStr(req, "UserID", myreq.UserID); - int i = this->api->ReqUserPasswordUpdate(&myreq, nRequestID); - return i; -}; - int TdApi::reqOrderInsert(dict req, int nRequestID) { CQdpFtdcInputOrderField myreq = CQdpFtdcInputOrderField(); memset(&myreq, 0, sizeof(myreq)); - getStr(req, "OffsetFlag", &myreq.OffsetFlag); - getStr(req, "UserID", myreq.UserID); + getInt(req, "IsAutoSuspend", &myreq.IsAutoSuspend); + getChar(req, "HedgeFlag", &myreq.HedgeFlag); getDouble(req, "LimitPrice", &myreq.LimitPrice); getChar(req, "Direction", &myreq.Direction); + getChar(req, "OffsetFlag", &myreq.OffsetFlag); + getStr(req, "UserOrderLocalID", myreq.UserOrderLocalID); getInt(req, "Volume", &myreq.Volume); getChar(req, "OrderPriceType", &myreq.OrderPriceType); getChar(req, "TimeCondition", &myreq.TimeCondition); - getInt(req, "IsAutoSuspend", &myreq.IsAutoSuspend); + getStr(req, "OrderSysID", myreq.OrderSysID); getDouble(req, "StopPrice", &myreq.StopPrice); getStr(req, "InstrumentID", myreq.InstrumentID); getStr(req, "ExchangeID", myreq.ExchangeID); getInt(req, "MinVolume", &myreq.MinVolume); getChar(req, "ForceCloseReason", &myreq.ForceCloseReason); + getStr(req, "UserID", myreq.UserID); getStr(req, "BrokerID", myreq.BrokerID); - getStr(req, "HedgeFlag", &myreq.HedgeFlag); + getChar(req, "BusinessType", &myreq.BusinessType); getStr(req, "GTDDate", myreq.GTDDate); + getStr(req, "BranchID", myreq.BranchID); getStr(req, "BusinessUnit", myreq.BusinessUnit); - getStr(req, "UserOrderLocalID", myreq.UserOrderLocalID); + getStr(req, "UserCustom", myreq.UserCustom); getStr(req, "InvestorID", myreq.InvestorID); getChar(req, "VolumeCondition", &myreq.VolumeCondition); + getInt(req, "RecNum", &myreq.RecNum); int i = this->api->ReqOrderInsert(&myreq, nRequestID); return i; }; - int TdApi::reqOrderAction(dict req, int nRequestID) { CQdpFtdcOrderActionField myreq = CQdpFtdcOrderActionField(); @@ -2554,132 +3028,44 @@ int TdApi::reqOrderAction(dict req, int nRequestID) getStr(req, "ExchangeID", myreq.ExchangeID); getChar(req, "ActionFlag", &myreq.ActionFlag); getStr(req, "UserOrderActionLocalID", myreq.UserOrderActionLocalID); + getStr(req, "UserOrderLocalID", myreq.UserOrderLocalID); getStr(req, "UserID", myreq.UserID); getDouble(req, "LimitPrice", &myreq.LimitPrice); - getStr(req, "UserOrderLocalID", myreq.UserOrderLocalID); getStr(req, "InvestorID", myreq.InvestorID); - getInt(req, "VolumeChange", &myreq.VolumeChange); + getInt(req, "SessionID", &myreq.SessionID); getStr(req, "BrokerID", myreq.BrokerID); + getInt(req, "VolumeChange", &myreq.VolumeChange); getStr(req, "OrderSysID", myreq.OrderSysID); getInt(req, "FrontID", &myreq.FrontID); - getInt(req, "SessionID", &myreq.SessionID); + getInt(req, "RecNum", &myreq.RecNum); int i = this->api->ReqOrderAction(&myreq, nRequestID); return i; }; -int TdApi::reqQryOrder(dict req, int nRequestID) -{ - CQdpFtdcQryOrderField myreq = CQdpFtdcQryOrderField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "InstrumentID", myreq.InstrumentID); - getStr(req, "ExchangeID", myreq.ExchangeID); - getStr(req, "InvestorID", myreq.InvestorID); - getStr(req, "BrokerID", myreq.BrokerID); - getStr(req, "OrderSysID", myreq.OrderSysID); - - int i = this->api->ReqQryOrder(&myreq, nRequestID); - return i; -}; - -int TdApi::reqQryTrade(dict req, int nRequestID) -{ - CQdpFtdcQryTradeField myreq = CQdpFtdcQryTradeField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "InstrumentID", myreq.InstrumentID); - getStr(req, "ExchangeID", myreq.ExchangeID); - getStr(req, "TradeID", myreq.TradeID); - getStr(req, "InvestorID", myreq.InvestorID); - getStr(req, "BrokerID", myreq.BrokerID); - int i = this->api->ReqQryTrade(&myreq, nRequestID); - return i; -}; - -int TdApi::reqQryInvestorPosition(dict req, int nRequestID) -{ - CQdpFtdcQryInvestorPositionField myreq = CQdpFtdcQryInvestorPositionField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "InstrumentID", myreq.InstrumentID); - getStr(req, "InvestorID", myreq.InvestorID); - getStr(req, "ExchangeID", myreq.ExchangeID); - getStr(req, "BrokerID", myreq.BrokerID); - int i = this->api->ReqQryInvestorPosition(&myreq, nRequestID); - return i; -}; - -int TdApi::reqQryInvestorAccount(dict req, int nRequestID) -{ - CQdpFtdcQryInvestorAccountField myreq = CQdpFtdcQryInvestorAccountField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "UserID", myreq.UserID); - getStr(req, "InvestorID", myreq.InvestorID); - getStr(req, "BrokerID", myreq.BrokerID); - int i = this->api->ReqQryInvestorAccount(&myreq, nRequestID); - return i; -}; - -int TdApi::reqQryExchange(dict req, int nRequestID) -{ - CQdpFtdcQryExchangeField myreq = CQdpFtdcQryExchangeField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "ExchangeID", myreq.ExchangeID); - int i = this->api->ReqQryExchange(&myreq, nRequestID); - return i; -}; - -int TdApi::reqQryInstrument(dict req, int nRequestID) -{ - CQdpFtdcQryInstrumentField myreq = CQdpFtdcQryInstrumentField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "InstrumentID", myreq.InstrumentID); - getStr(req, "ExchangeID", myreq.ExchangeID); - getStr(req, "ProductID", myreq.ProductID); - int i = this->api->ReqQryInstrument(&myreq, nRequestID); - return i; -}; - -int TdApi::reqQryMarketData(dict req, int nRequestID) -{ - CQdpFtdcQryMarketDataField myreq = CQdpFtdcQryMarketDataField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "InstrumentID", myreq.InstrumentID); - getStr(req, "ExchangeID", myreq.ExchangeID); - int i = this->api->ReqQryMarketData(&myreq, nRequestID); - return i; -}; - - -int TdApi::reqQryContractBank(dict req, int nRequestID) -{ - CQdpFtdcQryContractBankField myreq = CQdpFtdcQryContractBankField(); - memset(&myreq, 0, sizeof(myreq)); - getStr(req, "BrokerID", myreq.BrokerID); - getStr(req, "BankBrchID", myreq.BankBrchID); - getStr(req, "BankID", myreq.BankID); - int i = this->api->ReqQryContractBank(&myreq, nRequestID); - return i; -}; - - int TdApi::reqFromBankToFutureByFuture(dict req, int nRequestID) { CQdpFtdcReqTransferField myreq = CQdpFtdcReqTransferField(); memset(&myreq, 0, sizeof(myreq)); + getStr(req, "VerifyCertNoFlag", myreq.VerifyCertNoFlag); getStr(req, "BrokerBranchID", myreq.BrokerBranchID); getStr(req, "UserID", myreq.UserID); getStr(req, "BankPassWord", myreq.BankPassWord); - getStr(req, "VerifyCertNoFlag", myreq.VerifyCertNoFlag); + getInt(req, "FutureSerial", &myreq.FutureSerial); + getStr(req, "BankBrchID", myreq.BankBrchID); getInt(req, "TID", &myreq.TID); getStr(req, "AccountID", myreq.AccountID); getStr(req, "BankAccount", myreq.BankAccount); getInt(req, "InstallID", &myreq.InstallID); getStr(req, "CustomerName", myreq.CustomerName); + getStr(req, "Currency", myreq.Currency); getStr(req, "TradeCode", myreq.TradeCode); getInt(req, "SessionID", &myreq.SessionID); getStr(req, "BankID", myreq.BankID); - getStr(req, "Password", myreq.Password); + getInt(req, "PlateSerial", &myreq.PlateSerial); getChar(req, "BankPwdFlag", &myreq.BankPwdFlag); getInt(req, "RequestID", &myreq.RequestID); getStr(req, "CustType", myreq.CustType); + getStr(req, "BankCodingForFuture", myreq.BankCodingForFuture); getStr(req, "IdentifiedCardNo", myreq.IdentifiedCardNo); getChar(req, "FeePayFlag", &myreq.FeePayFlag); getStr(req, "BankSerial", myreq.BankSerial); @@ -2690,14 +3076,14 @@ int TdApi::reqFromBankToFutureByFuture(dict req, int nRequestID) getStr(req, "DeviceID", myreq.DeviceID); getChar(req, "TransferStatus", &myreq.TransferStatus); getStr(req, "IdCardType", myreq.IdCardType); - getInt(req, "PlateSerial", &myreq.PlateSerial); + getStr(req, "Password", myreq.Password); getDouble(req, "FutureFetchAmount", &myreq.FutureFetchAmount); getStr(req, "TradeDate", myreq.TradeDate); - getStr(req, "Currency", myreq.Currency); getDouble(req, "BrokerFee", &myreq.BrokerFee); getChar(req, "BankAccType", &myreq.BankAccType); getChar(req, "LastFragment", &myreq.LastFragment); - getInt(req, "FutureSerial", &myreq.FutureSerial); + getStr(req, "TradingTime", myreq.TradingTime); + getStr(req, "InvestorID", myreq.InvestorID); getChar(req, "BankSecuAccType", &myreq.BankSecuAccType); getChar(req, "SecuPwdFlag", &myreq.SecuPwdFlag); getStr(req, "Message", myreq.Message); @@ -2712,22 +3098,26 @@ int TdApi::reqFromFutureToBankByFuture(dict req, int nRequestID) { CQdpFtdcReqTransferField myreq = CQdpFtdcReqTransferField(); memset(&myreq, 0, sizeof(myreq)); + getStr(req, "VerifyCertNoFlag", myreq.VerifyCertNoFlag); getStr(req, "BrokerBranchID", myreq.BrokerBranchID); getStr(req, "UserID", myreq.UserID); getStr(req, "BankPassWord", myreq.BankPassWord); - getStr(req, "VerifyCertNoFlag", myreq.VerifyCertNoFlag); + getInt(req, "FutureSerial", &myreq.FutureSerial); + getStr(req, "BankBrchID", myreq.BankBrchID); getInt(req, "TID", &myreq.TID); getStr(req, "AccountID", myreq.AccountID); getStr(req, "BankAccount", myreq.BankAccount); getInt(req, "InstallID", &myreq.InstallID); getStr(req, "CustomerName", myreq.CustomerName); + getStr(req, "Currency", myreq.Currency); getStr(req, "TradeCode", myreq.TradeCode); getInt(req, "SessionID", &myreq.SessionID); getStr(req, "BankID", myreq.BankID); - getStr(req, "Password", myreq.Password); + getInt(req, "PlateSerial", &myreq.PlateSerial); getChar(req, "BankPwdFlag", &myreq.BankPwdFlag); getInt(req, "RequestID", &myreq.RequestID); getStr(req, "CustType", myreq.CustType); + getStr(req, "BankCodingForFuture", myreq.BankCodingForFuture); getStr(req, "IdentifiedCardNo", myreq.IdentifiedCardNo); getChar(req, "FeePayFlag", &myreq.FeePayFlag); getStr(req, "BankSerial", myreq.BankSerial); @@ -2738,14 +3128,14 @@ int TdApi::reqFromFutureToBankByFuture(dict req, int nRequestID) getStr(req, "DeviceID", myreq.DeviceID); getChar(req, "TransferStatus", &myreq.TransferStatus); getStr(req, "IdCardType", myreq.IdCardType); - getInt(req, "PlateSerial", &myreq.PlateSerial); + getStr(req, "Password", myreq.Password); getDouble(req, "FutureFetchAmount", &myreq.FutureFetchAmount); getStr(req, "TradeDate", myreq.TradeDate); - getStr(req, "Currency", myreq.Currency); getDouble(req, "BrokerFee", &myreq.BrokerFee); getChar(req, "BankAccType", &myreq.BankAccType); getChar(req, "LastFragment", &myreq.LastFragment); - getInt(req, "FutureSerial", &myreq.FutureSerial); + getStr(req, "TradingTime", myreq.TradingTime); + getStr(req, "InvestorID", myreq.InvestorID); getChar(req, "BankSecuAccType", &myreq.BankSecuAccType); getChar(req, "SecuPwdFlag", &myreq.SecuPwdFlag); getStr(req, "Message", myreq.Message); @@ -2756,20 +3146,175 @@ int TdApi::reqFromFutureToBankByFuture(dict req, int nRequestID) return i; }; +int TdApi::reqQryOrder(dict req, int nRequestID) +{ + CQdpFtdcQryOrderField myreq = CQdpFtdcQryOrderField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + getStr(req, "UserID", myreq.UserID); + getStr(req, "InvestorID", myreq.InvestorID); + getStr(req, "BrokerID", myreq.BrokerID); + getStr(req, "OrderSysID", myreq.OrderSysID); + int i = this->api->ReqQryOrder(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryTrade(dict req, int nRequestID) +{ + CQdpFtdcQryTradeField myreq = CQdpFtdcQryTradeField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + getStr(req, "TradeID", myreq.TradeID); + getStr(req, "UserID", myreq.UserID); + getStr(req, "InvestorID", myreq.InvestorID); + getStr(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryTrade(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryUserInvestor(dict req, int nRequestID) +{ + CQdpFtdcQryUserInvestorField myreq = CQdpFtdcQryUserInvestorField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "UserID", myreq.UserID); + getStr(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryUserInvestor(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorAccount(dict req, int nRequestID) +{ + CQdpFtdcQryInvestorAccountField myreq = CQdpFtdcQryInvestorAccountField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "UserID", myreq.UserID); + getStr(req, "BrokerID", myreq.BrokerID); + getStr(req, "InvestorID", myreq.InvestorID); + int i = this->api->ReqQryInvestorAccount(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInstrument(dict req, int nRequestID) +{ + CQdpFtdcQryInstrumentField myreq = CQdpFtdcQryInstrumentField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + getStr(req, "ProductID", myreq.ProductID); + int i = this->api->ReqQryInstrument(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryExchange(dict req, int nRequestID) +{ + CQdpFtdcQryExchangeField myreq = CQdpFtdcQryExchangeField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "ExchangeID", myreq.ExchangeID); + int i = this->api->ReqQryExchange(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorPosition(dict req, int nRequestID) +{ + CQdpFtdcQryInvestorPositionField myreq = CQdpFtdcQryInvestorPositionField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "UserID", myreq.UserID); + getStr(req, "ExchangeID", myreq.ExchangeID); + getStr(req, "BrokerID", myreq.BrokerID); + getStr(req, "InvestorID", myreq.InvestorID); + int i = this->api->ReqQryInvestorPosition(&myreq, nRequestID); + return i; +}; + +int TdApi::reqSubscribeTopic(dict req, int nRequestID) +{ + CQdpFtdcDisseminationField myreq = CQdpFtdcDisseminationField(); + memset(&myreq, 0, sizeof(myreq)); + getInt(req, "SequenceNo", &myreq.SequenceNo); + getInt(req, "SequenceSeries", &myreq.SequenceSeries); + int i = this->api->ReqSubscribeTopic(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryTopic(dict req, int nRequestID) +{ + CQdpFtdcDisseminationField myreq = CQdpFtdcDisseminationField(); + memset(&myreq, 0, sizeof(myreq)); + getInt(req, "SequenceNo", &myreq.SequenceNo); + getInt(req, "SequenceSeries", &myreq.SequenceSeries); + int i = this->api->ReqQryTopic(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorFee(dict req, int nRequestID) +{ + CQdpFtdcQryInvestorFeeField myreq = CQdpFtdcQryInvestorFeeField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + getChar(req, "HedgeFlag", &myreq.HedgeFlag); + getStr(req, "UserID", myreq.UserID); + getStr(req, "InvestorID", myreq.InvestorID); + getStr(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestorFee(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorMargin(dict req, int nRequestID) +{ + CQdpFtdcQryInvestorMarginField myreq = CQdpFtdcQryInvestorMarginField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + getChar(req, "HedgeFlag", &myreq.HedgeFlag); + getStr(req, "UserID", myreq.UserID); + getStr(req, "InvestorID", myreq.InvestorID); + getStr(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestorMargin(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryExchangeDiffTime(dict req, int nRequestID) +{ + CQdpFtdcQryExchangeDiffTimeField myreq = CQdpFtdcQryExchangeDiffTimeField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "ExchangeID", myreq.ExchangeID); + int i = this->api->ReqQryExchangeDiffTime(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryContractBank(dict req, int nRequestID) +{ + CQdpFtdcQryContractBankField myreq = CQdpFtdcQryContractBankField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InvestorID", myreq.InvestorID); + getStr(req, "UserID", myreq.UserID); + getStr(req, "Currency", myreq.Currency); + getStr(req, "BrokerID", myreq.BrokerID); + getStr(req, "BankBrchID", myreq.BankBrchID); + getStr(req, "BankID", myreq.BankID); + int i = this->api->ReqQryContractBank(&myreq, nRequestID); + return i; +}; + int TdApi::reqQueryBankAccountMoneyByFuture(dict req, int nRequestID) { CQdpFtdcReqQueryAccountField myreq = CQdpFtdcReqQueryAccountField(); memset(&myreq, 0, sizeof(myreq)); + getStr(req, "VerifyCertNoFlag", myreq.VerifyCertNoFlag); getStr(req, "BrokerBranchID", myreq.BrokerBranchID); getStr(req, "UserID", myreq.UserID); getStr(req, "BankPassWord", myreq.BankPassWord); getStr(req, "TradeTime", myreq.TradeTime); - getStr(req, "VerifyCertNoFlag", myreq.VerifyCertNoFlag); + getStr(req, "BankBrchID", myreq.BankBrchID); getInt(req, "TID", &myreq.TID); getStr(req, "AccountID", myreq.AccountID); getStr(req, "BankAccount", myreq.BankAccount); getInt(req, "InstallID", &myreq.InstallID); getStr(req, "CustomerName", myreq.CustomerName); + getStr(req, "Currency", myreq.Currency); getStr(req, "TradeCode", myreq.TradeCode); getInt(req, "SessionID", &myreq.SessionID); getStr(req, "BankID", myreq.BankID); @@ -2777,6 +3322,7 @@ int TdApi::reqQueryBankAccountMoneyByFuture(dict req, int nRequestID) getChar(req, "BankPwdFlag", &myreq.BankPwdFlag); getInt(req, "RequestID", &myreq.RequestID); getStr(req, "CustType", myreq.CustType); + getStr(req, "BankCodingForFuture", myreq.BankCodingForFuture); getStr(req, "IdentifiedCardNo", myreq.IdentifiedCardNo); getStr(req, "BankSerial", myreq.BankSerial); getStr(req, "OperNo", myreq.OperNo); @@ -2787,10 +3333,10 @@ int TdApi::reqQueryBankAccountMoneyByFuture(dict req, int nRequestID) getStr(req, "IdCardType", myreq.IdCardType); getInt(req, "PlateSerial", &myreq.PlateSerial); getStr(req, "TradeDate", myreq.TradeDate); - getStr(req, "Currency", myreq.Currency); getChar(req, "BankAccType", &myreq.BankAccType); getChar(req, "LastFragment", &myreq.LastFragment); getInt(req, "FutureSerial", &myreq.FutureSerial); + getStr(req, "InvestorID", myreq.InvestorID); getChar(req, "BankSecuAccType", &myreq.BankSecuAccType); getChar(req, "SecuPwdFlag", &myreq.SecuPwdFlag); getStr(req, "Digest", myreq.Digest); @@ -2798,6 +3344,39 @@ int TdApi::reqQueryBankAccountMoneyByFuture(dict req, int nRequestID) return i; }; +int TdApi::reqQryTransferSerial(dict req, int nRequestID) +{ + CQdpFtdcQryTransferSerialField myreq = CQdpFtdcQryTransferSerialField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InvestorID", myreq.InvestorID); + getStr(req, "UserID", myreq.UserID); + getStr(req, "Currency", myreq.Currency); + getStr(req, "BrokerID", myreq.BrokerID); + getStr(req, "BankID", myreq.BankID); + getStr(req, "AccountID", myreq.AccountID); + int i = this->api->ReqQryTransferSerial(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQrySGEDeferRate(dict req, int nRequestID) +{ + CQdpFtdcQrySGEDeferRateField myreq = CQdpFtdcQrySGEDeferRateField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + int i = this->api->ReqQrySGEDeferRate(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryMarketData(dict req, int nRequestID) +{ + CQdpFtdcQryMarketDataField myreq = CQdpFtdcQryMarketDataField(); + memset(&myreq, 0, sizeof(myreq)); + getStr(req, "InstrumentID", myreq.InstrumentID); + getStr(req, "ExchangeID", myreq.ExchangeID); + int i = this->api->ReqQryMarketData(&myreq, nRequestID); + return i; +}; + ///------------------------------------------------------------------------------------- ///Boost.Pythonװ @@ -2849,6 +3428,46 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; + virtual void onPackageStart(int topicID, int sequenceNo) + { + PyLock lock; + + try + { + this->get_override("onPackageStart")(topicID, sequenceNo); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onPackageEnd(int topicID, int sequenceNo) + { + PyLock lock; + + try + { + this->get_override("onPackageEnd")(topicID, sequenceNo); + } + 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 @@ -2909,11 +3528,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRspQryUserInvestor(dict data, dict error, int id, bool last) + virtual void onRspFromBankToFutureByFuture(dict data, dict error, int id, bool last) { try { - this->get_override("onRspQryUserInvestor")(data, error, id, last); + this->get_override("onRspFromBankToFutureByFuture")(data, error, id, last); } catch (error_already_set const &) { @@ -2921,11 +3540,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRspQryOrder(dict data, dict error, int id, bool last) + virtual void onRspFromFutureToBankByFuture(dict data, dict error, int id, bool last) { try { - this->get_override("onRspQryOrder")(data, error, id, last); + this->get_override("onRspFromFutureToBankByFuture")(data, error, id, last); } catch (error_already_set const &) { @@ -2933,131 +3552,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRspQryTrade(dict data, dict error, int id, bool last) + virtual void onRtnFlowMessageCancel(dict data) { 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 onRspQryInvestorAccount(dict data, dict error, int id, bool last) - { - try - { - this->get_override("onRspQrynvestorAccount")(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 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 onRspQryMarketData(dict data, dict error, int id, bool last) - { - try - { - this->get_override("onRspQryMarketData")(data, error, id, last); - } - catch (error_already_set const &) - { - PyErr_Print(); - } - }; - - virtual void onRspQryTransferBank(dict data, dict error, int id, bool last) - { - try - { - this->get_override("onRspQryTransferBank")(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 onRspError(dict error, int id, bool last) - { - try - { - this->get_override("onRspError")(error, id, last); - } - catch (error_already_set const &) - { - PyErr_Print(); - } - }; - - virtual void onRtnOrder(dict data) - { - try - { - this->get_override("onRtnOrder")(data); + this->get_override("onRtnFlowMessageCancel")(data); } catch (error_already_set const &) { @@ -3077,6 +3576,18 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; + virtual void onRtnOrder(dict data) + { + try + { + this->get_override("onRtnOrder")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + virtual void onErrRtnOrderInsert(dict data, dict error) { try @@ -3113,11 +3624,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRspQryContractBank(dict data, dict error, int id, bool last) + virtual void onRtnInvestorAccountDeposit(dict data) { try { - this->get_override("onRspQryContractBank")(data, error, id, last); + this->get_override("onRtnInvestorAccountDeposit")(data); } catch (error_already_set const &) { @@ -3125,12 +3636,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - - virtual void onRtnFromBankToFutureByBank(dict data) + virtual void onRtnMessageNotify(dict data) { try { - this->get_override("onRtnFromBankToFutureByBank")(data); + this->get_override("onRtnMessageNotify")(data); } catch (error_already_set const &) { @@ -3138,48 +3648,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRtnFromFutureToBankByBank(dict data) + virtual void onErrRtnQueryBankBalanceByFuture(dict data, dict error) { try { - this->get_override("onRtnFromFutureToBankByBank")(data); - } - catch (error_already_set const &) - { - PyErr_Print(); - } - }; - - virtual void onRtnFromBankToFutureByFuture(dict data) - { - try - { - this->get_override("onRtnFromBankToFutureByFuture")(data); - } - catch (error_already_set const &) - { - PyErr_Print(); - } - }; - - virtual void onRtnFromFutureToBankByFuture(dict data) - { - try - { - this->get_override("onRtnFromFutureToBankByFuture")(data); - } - catch (error_already_set const &) - { - PyErr_Print(); - } - }; - - - virtual void onRtnQueryBankBalanceByFuture(dict data) - { - try - { - this->get_override("onRtnQueryBankBalanceByFuture")(data); + this->get_override("onErrRtnQueryBankBalanceByFuture")(data, error); } catch (error_already_set const &) { @@ -3211,12 +3684,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - - virtual void onErrRtnQueryBankBalanceByFuture(dict data, dict error) + virtual void onRtnQueryBankBalanceByFuture(dict data) { try { - this->get_override("onErrRtnQueryBankBalanceByFuture")(data, error); + this->get_override("onRtnQueryBankBalanceByFuture")(data); } catch (error_already_set const &) { @@ -3224,11 +3696,11 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRspFromBankToFutureByFuture(dict data, dict error, int id, bool last) + virtual void onRtnFromBankToFutureByFuture(dict data) { try { - this->get_override("onRspFromBankToFutureByFuture")(data, error, id, last); + this->get_override("onRtnFromBankToFutureByFuture")(data); } catch (error_already_set const &) { @@ -3236,11 +3708,179 @@ struct TdApiWrap : TdApi, wrapper < TdApi > } }; - virtual void onRspFromFutureToBankByFuture(dict data, dict error, int id, bool last) + virtual void onRtnFromFutureToBankByFuture(dict data) { try { - this->get_override("onRspFromFutureToBankByFuture")(data, error, id, last); + this->get_override("onRtnFromFutureToBankByFuture")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRtnSGEDeferRate(dict data) + { + try + { + this->get_override("onRtnSGEDeferRate")(data); + } + 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 onRspQryUserInvestor(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryUserInvestor")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryInvestorAccount(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryInvestorAccount")(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 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 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 onRspSubscribeTopic(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspSubscribeTopic")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryTopic(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryTopic")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryInvestorFee(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryInvestorFee")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryInvestorMargin(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryInvestorMargin")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryExchangeDiffTime(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryExchangeDiffTime")(data, error, id, last); + } + 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 &) { @@ -3259,77 +3899,133 @@ struct TdApiWrap : TdApi, wrapper < TdApi > 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 onRspQrySGEDeferRate(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQrySGEDeferRate")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryMarketData(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryMarketData")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; }; + BOOST_PYTHON_MODULE(vnqdptd) { PyEval_InitThreads(); //ʱУ֤ȴGIL class_("TdApi") .def("createFtdcTraderApi", &TdApiWrap::createFtdcTraderApi) + .def("getVersion", &TdApiWrap::getVersion) .def("release", &TdApiWrap::release) .def("init", &TdApiWrap::init) .def("join", &TdApiWrap::join) .def("exit", &TdApiWrap::exit) .def("getTradingDay", &TdApiWrap::getTradingDay) .def("registerFront", &TdApiWrap::registerFront) + .def("registerNameServer", &TdApiWrap::registerNameServer) .def("subscribePrivateTopic", &TdApiWrap::subscribePrivateTopic) .def("subscribePublicTopic", &TdApiWrap::subscribePublicTopic) + .def("setHeartbeatTimeout", &TdApiWrap::setHeartbeatTimeout) + .def("openRequestLog", &TdApiWrap::openRequestLog) + .def("openResponseLog", &TdApiWrap::openResponseLog) .def("reqUserLogin", &TdApiWrap::reqUserLogin) .def("reqUserLogout", &TdApiWrap::reqUserLogout) - .def("reqQryUserInvestor", &TdApiWrap::reqQryUserInvestor) .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("reqQryInvestorAccount", &TdApiWrap::reqQryInvestorAccount) - .def("reqQryExchange", &TdApiWrap::reqQryExchange) - .def("reqQryInstrument", &TdApiWrap::reqQryInstrument) - .def("reqQryMarketData", &TdApiWrap::reqQryMarketData) - .def("reqQryContractBank", &TdApiWrap::reqQryContractBank) .def("reqFromBankToFutureByFuture", &TdApiWrap::reqFromBankToFutureByFuture) .def("reqFromFutureToBankByFuture", &TdApiWrap::reqFromFutureToBankByFuture) + .def("reqQryOrder", &TdApiWrap::reqQryOrder) + .def("reqQryTrade", &TdApiWrap::reqQryTrade) + .def("reqQryUserInvestor", &TdApiWrap::reqQryUserInvestor) + .def("reqQryInvestorAccount", &TdApiWrap::reqQryInvestorAccount) + .def("reqQryInstrument", &TdApiWrap::reqQryInstrument) + .def("reqQryExchange", &TdApiWrap::reqQryExchange) + .def("reqQryInvestorPosition", &TdApiWrap::reqQryInvestorPosition) + .def("reqSubscribeTopic", &TdApiWrap::reqSubscribeTopic) + .def("reqQryTopic", &TdApiWrap::reqQryTopic) + .def("reqQryInvestorFee", &TdApiWrap::reqQryInvestorFee) + .def("reqQryInvestorMargin", &TdApiWrap::reqQryInvestorMargin) + .def("reqQryExchangeDiffTime", &TdApiWrap::reqQryExchangeDiffTime) + .def("reqQryContractBank", &TdApiWrap::reqQryContractBank) .def("reqQueryBankAccountMoneyByFuture", &TdApiWrap::reqQueryBankAccountMoneyByFuture) + .def("reqQryTransferSerial", &TdApiWrap::reqQryTransferSerial) + .def("reqQrySGEDeferRate", &TdApiWrap::reqQrySGEDeferRate) + .def("reqQryMarketData", &TdApiWrap::reqQryMarketData) + .def("onFrontConnected", pure_virtual(&TdApiWrap::onFrontConnected)) .def("onFrontDisconnected", pure_virtual(&TdApiWrap::onFrontDisconnected)) .def("onHeartBeatWarning", pure_virtual(&TdApiWrap::onHeartBeatWarning)) + .def("onPackageStart", pure_virtual(&TdApiWrap::onPackageStart)) + .def("onPackageEnd", pure_virtual(&TdApiWrap::onPackageEnd)) + .def("onRspError", pure_virtual(&TdApiWrap::onRspError)) .def("onRspUserLogin", pure_virtual(&TdApiWrap::onRspUserLogin)) - .def("onRspQryUserInvestor", pure_virtual(&TdApiWrap::onRspQryUserInvestor)) .def("onRspUserLogout", pure_virtual(&TdApiWrap::onRspUserLogout)) .def("onRspUserPasswordUpdate", pure_virtual(&TdApiWrap::onRspUserPasswordUpdate)) .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("onRspQryInvestorAccount", pure_virtual(&TdApiWrap::onRspQryInvestorAccount)) - .def("onRspQryInvestor", pure_virtual(&TdApiWrap::onRspQryInvestor)) - .def("onRspQryExchange", pure_virtual(&TdApiWrap::onRspQryExchange)) - .def("onRspQryInstrument", pure_virtual(&TdApiWrap::onRspQryInstrument)) - .def("onRspQryMarketData", pure_virtual(&TdApiWrap::onRspQryMarketData)) - .def("onRspQryTransferBank", pure_virtual(&TdApiWrap::onRspQryTransferBank)) - .def("onRspQryTransferSerial", pure_virtual(&TdApiWrap::onRspQryTransferSerial)) - .def("onRspError", pure_virtual(&TdApiWrap::onRspError)) - .def("onRtnOrder", pure_virtual(&TdApiWrap::onRtnOrder)) + .def("onRspFromBankToFutureByFuture", pure_virtual(&TdApiWrap::onRspFromBankToFutureByFuture)) + .def("onRspFromFutureToBankByFuture", pure_virtual(&TdApiWrap::onRspFromFutureToBankByFuture)) + .def("onRtnFlowMessageCancel", pure_virtual(&TdApiWrap::onRtnFlowMessageCancel)) .def("onRtnTrade", pure_virtual(&TdApiWrap::onRtnTrade)) + .def("onRtnOrder", pure_virtual(&TdApiWrap::onRtnOrder)) .def("onErrRtnOrderInsert", pure_virtual(&TdApiWrap::onErrRtnOrderInsert)) .def("onErrRtnOrderAction", pure_virtual(&TdApiWrap::onErrRtnOrderAction)) .def("onRtnInstrumentStatus", pure_virtual(&TdApiWrap::onRtnInstrumentStatus)) - .def("onRspQryContractBank", pure_virtual(&TdApiWrap::onRspQryContractBank)) - .def("onRtnFromBankToFutureByBank", pure_virtual(&TdApiWrap::onRtnFromBankToFutureByBank)) - .def("onRtnFromFutureToBankByBank", pure_virtual(&TdApiWrap::onRtnFromFutureToBankByBank)) - .def("onRtnFromBankToFutureByFuture", pure_virtual(&TdApiWrap::onRtnFromBankToFutureByFuture)) - .def("onRtnFromFutureToBankByFuture", pure_virtual(&TdApiWrap::onRtnFromFutureToBankByFuture)) - .def("onRtnQueryBankBalanceByFuture", pure_virtual(&TdApiWrap::onRtnQueryBankBalanceByFuture)) + .def("onRtnInvestorAccountDeposit", pure_virtual(&TdApiWrap::onRtnInvestorAccountDeposit)) + .def("onRtnMessageNotify", pure_virtual(&TdApiWrap::onRtnMessageNotify)) + .def("onErrRtnQueryBankBalanceByFuture", pure_virtual(&TdApiWrap::onErrRtnQueryBankBalanceByFuture)) .def("onErrRtnBankToFutureByFuture", pure_virtual(&TdApiWrap::onErrRtnBankToFutureByFuture)) .def("onErrRtnFutureToBankByFuture", pure_virtual(&TdApiWrap::onErrRtnFutureToBankByFuture)) - .def("onErrRtnQueryBankBalanceByFuture", pure_virtual(&TdApiWrap::onErrRtnQueryBankBalanceByFuture)) - .def("onRspFromBankToFutureByFuture", pure_virtual(&TdApiWrap::onRspFromBankToFutureByFuture)) - .def("onRspFromFutureToBankByFuture", pure_virtual(&TdApiWrap::onRspFromFutureToBankByFuture)) + .def("onRtnQueryBankBalanceByFuture", pure_virtual(&TdApiWrap::onRtnQueryBankBalanceByFuture)) + .def("onRtnFromBankToFutureByFuture", pure_virtual(&TdApiWrap::onRtnFromBankToFutureByFuture)) + .def("onRtnFromFutureToBankByFuture", pure_virtual(&TdApiWrap::onRtnFromFutureToBankByFuture)) + .def("onRtnSGEDeferRate", pure_virtual(&TdApiWrap::onRtnSGEDeferRate)) + .def("onRspQryOrder", pure_virtual(&TdApiWrap::onRspQryOrder)) + .def("onRspQryTrade", pure_virtual(&TdApiWrap::onRspQryTrade)) + .def("onRspQryUserInvestor", pure_virtual(&TdApiWrap::onRspQryUserInvestor)) + .def("onRspQryInvestorAccount", pure_virtual(&TdApiWrap::onRspQryInvestorAccount)) + .def("onRspQryInstrument", pure_virtual(&TdApiWrap::onRspQryInstrument)) + .def("onRspQryExchange", pure_virtual(&TdApiWrap::onRspQryExchange)) + .def("onRspQryInvestorPosition", pure_virtual(&TdApiWrap::onRspQryInvestorPosition)) + .def("onRspSubscribeTopic", pure_virtual(&TdApiWrap::onRspSubscribeTopic)) + .def("onRspQryTopic", pure_virtual(&TdApiWrap::onRspQryTopic)) + .def("onRspQryInvestorFee", pure_virtual(&TdApiWrap::onRspQryInvestorFee)) + .def("onRspQryInvestorMargin", pure_virtual(&TdApiWrap::onRspQryInvestorMargin)) + .def("onRspQryExchangeDiffTime", pure_virtual(&TdApiWrap::onRspQryExchangeDiffTime)) + .def("onRspQryContractBank", pure_virtual(&TdApiWrap::onRspQryContractBank)) .def("onRspQueryBankAccountMoneyByFuture", pure_virtual(&TdApiWrap::onRspQueryBankAccountMoneyByFuture)) + .def("onRspQryTransferSerial", pure_virtual(&TdApiWrap::onRspQryTransferSerial)) + .def("onRspQrySGEDeferRate", pure_virtual(&TdApiWrap::onRspQrySGEDeferRate)) + .def("onRspQryMarketData", pure_virtual(&TdApiWrap::onRspQryMarketData)) ; } diff --git a/vn.qdp/vnqdptd/vnqdptd/vnqdptd.h b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.h index 1012601d..6beeea56 100644 --- a/vn.qdp/vnqdptd/vnqdptd/vnqdptd.h +++ b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.h @@ -36,118 +36,48 @@ using namespace boost; #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 -#define ONRSPQRYUSERINVESTOR 114 - +#define ONPACKAGESTART 4 +#define ONPACKAGEEND 5 +#define ONRSPERROR 6 +#define ONRSPUSERLOGIN 7 +#define ONRSPUSERLOGOUT 8 +#define ONRSPUSERPASSWORDUPDATE 9 +#define ONRSPORDERINSERT 10 +#define ONRSPORDERACTION 11 +#define ONRSPFROMBANKTOFUTUREBYFUTURE 12 +#define ONRSPFROMFUTURETOBANKBYFUTURE 13 +#define ONRTNFLOWMESSAGECANCEL 14 +#define ONRTNTRADE 15 +#define ONRTNORDER 16 +#define ONERRRTNORDERINSERT 17 +#define ONERRRTNORDERACTION 18 +#define ONRTNINSTRUMENTSTATUS 19 +#define ONRTNINVESTORACCOUNTDEPOSIT 20 +#define ONRTNMESSAGENOTIFY 21 +#define ONERRRTNQUERYBANKBALANCEBYFUTURE 22 +#define ONERRRTNBANKTOFUTUREBYFUTURE 23 +#define ONERRRTNFUTURETOBANKBYFUTURE 24 +#define ONRTNQUERYBANKBALANCEBYFUTURE 25 +#define ONRTNFROMBANKTOFUTUREBYFUTURE 26 +#define ONRTNFROMFUTURETOBANKBYFUTURE 27 +#define ONRTNSGEDEFERRATE 28 +#define ONRSPQRYORDER 29 +#define ONRSPQRYTRADE 30 +#define ONRSPQRYUSERINVESTOR 31 +#define ONRSPQRYINVESTORACCOUNT 32 +#define ONRSPQRYINSTRUMENT 33 +#define ONRSPQRYEXCHANGE 34 +#define ONRSPQRYINVESTORPOSITION 35 +#define ONRSPSUBSCRIBETOPIC 36 +#define ONRSPQRYTOPIC 37 +#define ONRSPQRYINVESTORFEE 38 +#define ONRSPQRYINVESTORMARGIN 39 +#define ONRSPQRYEXCHANGEDIFFTIME 40 +#define ONRSPQRYCONTRACTBANK 41 +#define ONRSPQUERYBANKACCOUNTMONEYBYFUTURE 42 +#define ONRSPQRYTRANSFERSERIAL 43 +#define ONRSPQRYSGEDEFERRATE 44 +#define ONRSPQRYMARKETDATA 45 ///------------------------------------------------------------------------------------- @@ -184,6 +114,8 @@ struct Task any task_error; //ṹ int task_id; //id bool task_last; //ǷΪ󷵻 + + int additional_int; //Ͳֶ }; @@ -293,58 +225,50 @@ public: ///@param nTimeLapse ϴνձĵʱ virtual void OnHeartBeatWarning(int nTimeLapse); - ///¼Ӧ - virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + ///Ļصʼ֪ͨAPIյһĺȵñȻǸĻصDZĻص֪ͨ + ///@param nTopicID 루˽ȣ + ///@param nSequenceNo + virtual void OnPackageStart(int nTopicID, int nSequenceNo); - ///dzӦ - virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); + ///Ļص֪ͨAPIյһĺȵñĻصʼ֪ͨȻǸĻصñ + ///@param nTopicID 루˽ȣ + ///@param nSequenceNo + virtual void OnPackageEnd(int nTopicID, int nSequenceNo); - ///ûӦ - virtual void OnRspUserPasswordUpdate(CQdpFtdcUserPasswordUpdateField *pUserPasswordUpdate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - - ///¼Ӧ - virtual void OnRspOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - - ///Ӧ - virtual void OnRspOrderAction(CQdpFtdcOrderActionField *pInputOrderAction, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); - - - ///ѯӦ - virtual void OnRspQryOrder(CQdpFtdcOrderField *pOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - - ///ѯɽӦ - virtual void OnRspQryTrade(CQdpFtdcTradeField *pTrade, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - - ///ѯͶֲ߳Ӧ - virtual void OnRspQryInvestorPosition(CQdpFtdcRspInvestorPositionField *pInvestorPosition, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); - - ///ѯûͶ˻ - virtual void OnRspQryUserInvestor(CQdpFtdcRspUserInvestorField *pUserInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); - - ///ѯͶӦ - virtual void OnRspQryInvestorAccount(CQdpFtdcRspInvestorAccountField *pInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); - - ///ѯӦ - virtual void OnRspQryExchange(CQdpFtdcRspExchangeField *pExchange, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); - - ///ѯԼӦ - virtual void OnRspQryInstrument(CQdpFtdcRspInstrumentField *pInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); - - ///ѯӦ - virtual void OnRspQryMarketData(CQdpFtdcMarketDataField *pDepthMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - - ///ѯתˮӦ - virtual void OnRspQryTransferSerial(CQdpFtdcTransferSerialField *pTransferSerial, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; ///Ӧ virtual void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - ///֪ͨ - virtual void OnRtnOrder(CQdpFtdcOrderField *pOrder) ; + ///û¼Ӧ + virtual void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; - ///ɽ֪ͨ + ///û˳Ӧ + virtual void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///û޸Ӧ + virtual void OnRspUserPasswordUpdate(CQdpFtdcUserPasswordUpdateField *pUserPasswordUpdate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///¼Ӧ + virtual void OnRspOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///Ӧ + virtual void OnRspOrderAction(CQdpFtdcOrderActionField *pOrderAction, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ڻʽתڻӦ + virtual void OnRspFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ڻڻʽתӦ + virtual void OnRspFromFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///֪ͨ + virtual void OnRtnFlowMessageCancel(CQdpFtdcFlowMessageCancelField *pFlowMessageCancel) ; + + ///ɽر virtual void OnRtnTrade(CQdpFtdcTradeField *pTrade) ; + ///ر + virtual void OnRtnOrder(CQdpFtdcOrderField *pOrder) ; + ///¼ر virtual void OnErrRtnOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo) ; @@ -354,23 +278,14 @@ public: ///Լ״̬֪ͨ virtual void OnRtnInstrumentStatus(CQdpFtdcInstrumentStatusField *pInstrumentStatus) ; - ///ѯǩԼӦ - virtual void OnRspQryContractBank(CQdpFtdcContractBankField *pContractBank, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + ///˻ر + virtual void OnRtnInvestorAccountDeposit(CQdpFtdcInvestorAccountDepositResField *pInvestorAccountDepositRes) ; - ///зʽתڻ֪ͨ - virtual void OnRtnFromBankToFutureByBank(CQdpFtdcRspTransferField *pRspTransfer) ; + ///QDPϢ֪ͨ + virtual void OnRtnMessageNotify(CQdpFtdcMessageNotifyInfoField *pMessageNotifyInfo) ; - ///зڻʽת֪ͨ - virtual void OnRtnFromFutureToBankByBank(CQdpFtdcRspTransferField *pRspTransfer) ; - - ///ڻʽתڻ֪ͨ - virtual void OnRtnFromBankToFutureByFuture(CQdpFtdcRspTransferField *pRspTransfer) ; - - ///ڻڻʽת֪ͨ - virtual void OnRtnFromFutureToBankByFuture(CQdpFtdcRspTransferField *pRspTransfer) ; - - ///ڻѯ֪ͨ - virtual void OnRtnQueryBankBalanceByFuture(CQdpFtdcNotifyQueryAccountField *pNotifyQueryAccount) ; + ///ڻѯر + virtual void OnErrRtnQueryBankBalanceByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo) ; ///ڻʽתڻر virtual void OnErrRtnBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo) ; @@ -378,18 +293,68 @@ public: ///ڻڻʽתдر virtual void OnErrRtnFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo) ; - ///ڻѯر - virtual void OnErrRtnQueryBankBalanceByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo) ; + ///ڻѯ֪ͨ + virtual void OnRtnQueryBankBalanceByFuture(CQdpFtdcNotifyQueryAccountField *pNotifyQueryAccount) ; - ///ڻʽתڻӦ - virtual void OnRspFromBankToFutureByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + ///ڻʽתڻ֪ͨ + virtual void OnRtnFromBankToFutureByFuture(CQdpFtdcRspTransferField *pRspTransfer) ; - ///ڻڻʽתӦ - virtual void OnRspFromFutureToBankByFuture(CQdpFtdcReqTransferField *pReqTransfer, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + ///ڻڻʽת֪ͨ + virtual void OnRtnFromFutureToBankByFuture(CQdpFtdcRspTransferField *pRspTransfer) ; + + ///ӷ֪ͨ + virtual void OnRtnSGEDeferRate(CQdpFtdcSGEDeferRateField *pSGEDeferRate) ; + + ///ѯӦ + virtual void OnRspQryOrder(CQdpFtdcOrderField *pOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ɽѯӦ + virtual void OnRspQryTrade(CQdpFtdcTradeField *pTrade, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///Ͷ˻ѯӦ + virtual void OnRspQryUserInvestor(CQdpFtdcRspUserInvestorField *pRspUserInvestor, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///Ͷʽ˻ѯӦ + virtual void OnRspQryInvestorAccount(CQdpFtdcRspInvestorAccountField *pRspInvestorAccount, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ԼѯӦ + virtual void OnRspQryInstrument(CQdpFtdcRspInstrumentField *pRspInstrument, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ѯӦ + virtual void OnRspQryExchange(CQdpFtdcRspExchangeField *pRspExchange, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///Ͷֲֲ߳ѯӦ + virtual void OnRspQryInvestorPosition(CQdpFtdcRspInvestorPositionField *pRspInvestorPosition, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///Ӧ + virtual void OnRspSubscribeTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ѯӦ + virtual void OnRspQryTopic(CQdpFtdcDisseminationField *pDissemination, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ͶʲѯӦ + virtual void OnRspQryInvestorFee(CQdpFtdcInvestorFeeField *pInvestorFee, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///Ͷ֤߱ʲѯӦ + virtual void OnRspQryInvestorMargin(CQdpFtdcInvestorMarginField *pInvestorMargin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ʱƫѯӦ + virtual void OnRspQryExchangeDiffTime(CQdpFtdcRspExchangeDiffTimeField *pRspExchangeDiffTime, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ѯǩԼӦ + virtual void OnRspQryContractBank(CQdpFtdcContractBankField *pContractBank, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; ///ڻѯӦ virtual void OnRspQueryBankAccountMoneyByFuture(CQdpFtdcReqQueryAccountField *pReqQueryAccount, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + ///ѯתˮӦ + virtual void OnRspQryTransferSerial(CQdpFtdcTransferSerialField *pTransferSerial, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ӷʲѯӦ + virtual void OnRspQrySGEDeferRate(CQdpFtdcSGEDeferRateField *pSGEDeferRate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///ʵʱѯӦ + virtual void OnRspQryMarketData(CQdpFtdcMarketDataField *pMarketData, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; //------------------------------------------------------------------------------------- //task @@ -403,76 +368,90 @@ public: void processHeartBeatWarning(Task task); + void processPackageStart(Task task); + + void processPackageEnd(Task task); + + void processRspError(Task task); + void processRspUserLogin(Task task); void processRspUserLogout(Task task); - void processRspQryUserInvestor(Task task); - - void processRspQryContractBank(Task task); - - void processRspQryTransferSerial(Task task); - - void processRtnFromBankToFutureByBank(Task task); - - void processRtnFromFutureToBankByBank(Task task); - void processRspUserPasswordUpdate(Task task); - void processRspTradingAccountPasswordUpdate(Task task); - void processRspOrderInsert(Task task); void processRspOrderAction(Task task); - void processRspQryOrder(Task task); + void processRspFromBankToFutureByFuture(Task task); - void processRspQryTrade(Task task); + void processRspFromFutureToBankByFuture(Task task); - void processRspQryInvestorPosition(Task task); - - void processRspQryInvestorAccount(Task task); - - void processRspQryExchange(Task task); - - void processRspQryInstrument(Task task); - - void processRspQryMarketData(Task task); - - void processRspQryExecFreeze(Task task); - - void processRspQryCombAction(Task task); - - void processRspError(Task task); - - void processRtnOrder(Task task); + void processRtnFlowMessageCancel(Task task); void processRtnTrade(Task task); + void processRtnOrder(Task task); + void processErrRtnOrderInsert(Task task); void processErrRtnOrderAction(Task task); void processRtnInstrumentStatus(Task task); - void processRtnFromBankToFutureByFuture(Task task); + void processRtnInvestorAccountDeposit(Task task); - void processRtnFromFutureToBankByFuture(Task task); + void processRtnMessageNotify(Task task); - void processRtnQueryBankBalanceByFuture(Task task); + void processErrRtnQueryBankBalanceByFuture(Task task); void processErrRtnBankToFutureByFuture(Task task); void processErrRtnFutureToBankByFuture(Task task); - void processErrRtnQueryBankBalanceByFuture(Task task); + void processRtnQueryBankBalanceByFuture(Task task); - void processRspFromBankToFutureByFuture(Task task); + void processRtnFromBankToFutureByFuture(Task task); - void processRspFromFutureToBankByFuture(Task task); + void processRtnFromFutureToBankByFuture(Task task); + + void processRtnSGEDeferRate(Task task); + + void processRspQryOrder(Task task); + + void processRspQryTrade(Task task); + + void processRspQryUserInvestor(Task task); + + void processRspQryInvestorAccount(Task task); + + void processRspQryInstrument(Task task); + + void processRspQryExchange(Task task); + + void processRspQryInvestorPosition(Task task); + + void processRspSubscribeTopic(Task task); + + void processRspQryTopic(Task task); + + void processRspQryInvestorFee(Task task); + + void processRspQryInvestorMargin(Task task); + + void processRspQryExchangeDiffTime(Task task); + + void processRspQryContractBank(Task task); void processRspQueryBankAccountMoneyByFuture(Task task); + void processRspQryTransferSerial(Task task); + + void processRspQrySGEDeferRate(Task task); + + void processRspQryMarketData(Task task); + //------------------------------------------------------------------------------------- //dataصֵ //errorصĴֵ @@ -487,7 +466,11 @@ public: virtual void onHeartBeatWarning(int i){}; - virtual void onRspAuthenticate(dict data, dict error, int id, bool last) {}; + virtual void onPackageStart(int topicID, int sequenceNo){}; + + virtual void onPackageEnd(int topicID, int sequenceNo){}; + + virtual void onRspError(dict error, int id, bool last) {}; virtual void onRspUserLogin(dict data, dict error, int id, bool last) {}; @@ -495,69 +478,77 @@ public: 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 onRspOrderAction(dict data, dict error, int id, bool last) {}; - virtual void onRspQryUserInvestor(dict data, dict error, int id, bool last) {}; + virtual void onRspFromBankToFutureByFuture(dict data, dict error, int id, bool last) {}; - virtual void onRspQryOrder(dict data, dict error, int id, bool last) {}; + virtual void onRspFromFutureToBankByFuture(dict data, dict error, int id, bool last) {}; - virtual void onRspQryTrade(dict data, dict error, int id, bool last) {}; - - virtual void onRspQryTransferSerial(dict data, dict error, int id, bool last){}; - - virtual void onRspQryInvestorPosition(dict data, dict error, int id, bool last) {}; - - virtual void onRspQryInvestorAccount(dict data, dict error, int id, bool last) {}; - - virtual void onRspQryInvestor(dict data, dict error, int id, bool last) {}; - - virtual void onRspQryExchange(dict data, dict error, int id, bool last) {}; - - virtual void onRspQryInstrument(dict data, dict error, int id, bool last) {}; - - virtual void onRspQryMarketData(dict data, dict error, int id, bool last) {}; - - virtual void onRspError(dict error, int id, bool last) {}; - - virtual void onRtnOrder(dict data) {}; + virtual void onRtnFlowMessageCancel(dict data) {}; virtual void onRtnTrade(dict data) {}; + virtual void onRtnOrder(dict data) {}; + virtual void onErrRtnOrderInsert(dict data, dict error) {}; virtual void onErrRtnOrderAction(dict data, dict error) {}; virtual void onRtnInstrumentStatus(dict data) {}; - virtual void onRspQryContractBank(dict data, dict error, int id, bool last) {}; + virtual void onRtnInvestorAccountDeposit(dict data) {}; - virtual void onRtnFromBankToFutureByBank(dict data) {}; + virtual void onRtnMessageNotify(dict data) {}; - virtual void onRtnFromFutureToBankByBank(dict data) {}; - - virtual void onRtnFromBankToFutureByFuture(dict data) {}; - - virtual void onRtnFromFutureToBankByFuture(dict data) {}; - - virtual void onRtnQueryBankBalanceByFuture(dict data) {}; + virtual void onErrRtnQueryBankBalanceByFuture(dict data, dict error) {}; virtual void onErrRtnBankToFutureByFuture(dict data, dict error) {}; virtual void onErrRtnFutureToBankByFuture(dict data, dict error) {}; - virtual void onErrRtnQueryBankBalanceByFuture(dict data, dict error) {}; + virtual void onRtnQueryBankBalanceByFuture(dict data) {}; - virtual void onRspFromBankToFutureByFuture(dict data, dict error, int id, bool last) {}; + virtual void onRtnFromBankToFutureByFuture(dict data) {}; - virtual void onRspFromFutureToBankByFuture(dict data, dict error, int id, bool last) {}; + virtual void onRtnFromFutureToBankByFuture(dict data) {}; + + virtual void onRtnSGEDeferRate(dict data) {}; + + virtual void onRspQryOrder(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryTrade(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryUserInvestor(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInvestorAccount(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInstrument(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryExchange(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInvestorPosition(dict data, dict error, int id, bool last) {}; + + virtual void onRspSubscribeTopic(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryTopic(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInvestorFee(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInvestorMargin(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryExchangeDiffTime(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryContractBank(dict data, dict error, int id, bool last) {}; virtual void onRspQueryBankAccountMoneyByFuture(dict data, dict error, int id, bool last) {}; + virtual void onRspQryTransferSerial(dict data, dict error, int id, bool last) {}; + virtual void onRspQrySGEDeferRate(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryMarketData(dict data, dict error, int id, bool last) {}; //------------------------------------------------------------------------------------- //req:ֵ @@ -565,6 +556,8 @@ public: void createFtdcTraderApi(string pszFlowPath = ""); + string getVersion(int major, int minor); + void release(); void init(); @@ -577,80 +570,64 @@ public: void registerFront(string pszFrontAddress); + void registerNameServer(string pszNsAddress); + void subscribePrivateTopic(int nType); void subscribePublicTopic(int nType); - int reqAuthenticate(dict req, int nRequestID); + void setHeartbeatTimeout(int timeout); + + int openRequestLog(string fileName); + + int openResponseLog(string fileName); int reqUserLogin(dict req, int nRequestID); int reqUserLogout(dict req, int nRequestID); - int reqQryUserInvestor(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 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 reqQryInvestorAccount(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 reqQryMarketData(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 reqQryContractBank(dict req, int nRequestID); - int reqFromBankToFutureByFuture(dict req, int nRequestID); int reqFromFutureToBankByFuture(dict req, int nRequestID); + int reqQryOrder(dict req, int nRequestID); + + int reqQryTrade(dict req, int nRequestID); + + int reqQryUserInvestor(dict req, int nRequestID); + + int reqQryInvestorAccount(dict req, int nRequestID); + + int reqQryInstrument(dict req, int nRequestID); + + int reqQryExchange(dict req, int nRequestID); + + int reqQryInvestorPosition(dict req, int nRequestID); + + int reqSubscribeTopic(dict req, int nRequestID); + + int reqQryTopic(dict req, int nRequestID); + + int reqQryInvestorFee(dict req, int nRequestID); + + int reqQryInvestorMargin(dict req, int nRequestID); + + int reqQryExchangeDiffTime(dict req, int nRequestID); + + int reqQryContractBank(dict req, int nRequestID); + int reqQueryBankAccountMoneyByFuture(dict req, int nRequestID); + + int reqQryTransferSerial(dict req, int nRequestID); + + int reqQrySGEDeferRate(dict req, int nRequestID); + + int reqQryMarketData(dict req, int nRequestID); }; diff --git a/vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj new file mode 100644 index 00000000..e4f49b84 --- /dev/null +++ b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj @@ -0,0 +1,120 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {AA86CEC9-CAE8-439A-AD2C-02593E50E318} + Win32Proj + vnqdptd + + + + DynamicLibrary + true + v120 + Unicode + + + DynamicLibrary + false + v120 + true + Unicode + + + + + + + + + + + + + true + + + false + .pyd + X:\GithubProject\vnpy\vn.qdp\qdpapi;D:\boost_1_57_0;D:\Anaconda2\include;$(IncludePath) + D:\boost_1_57_0\libs;D:\Anaconda2\libs;X:\GithubProject\vnpy\vn.qdp\qdpapi;$(ReferencePath) + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;VNQDPTD_EXPORTS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;VNQDPTD_EXPORTS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + D:\boost_1_57_0\stage\lib;D:\Anaconda2\libs;X:\GithubProject\vnpy\vn.qdp\qdpapi;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + false + + + false + + + + + Create + Create + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj.filters b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj.filters new file mode 100644 index 00000000..2b482c11 --- /dev/null +++ b/vn.qdp/vnqdptd/vnqdptd/vnqdptd.vcxproj.filters @@ -0,0 +1,70 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/vn.trader/qdpGateway/QDP_connect.json b/vn.trader/qdpGateway/QDP_connect.json index 990d6694..de20e584 100644 --- a/vn.trader/qdpGateway/QDP_connect.json +++ b/vn.trader/qdpGateway/QDP_connect.json @@ -1,5 +1,4 @@ { - "name": "国富模拟", "brokerID": "guofu", "tdAddress": "tcp://211.147.74.221:30005", "password": "111111", diff --git a/vn.trader/qdpGateway/qdpGateway.py b/vn.trader/qdpGateway/qdpGateway.py index 55274927..b3e3d3a6 100644 --- a/vn.trader/qdpGateway/qdpGateway.py +++ b/vn.trader/qdpGateway/qdpGateway.py @@ -42,24 +42,24 @@ offsetMapReverse = {v:k for k,v in offsetMap.items()} # 交易所类型映射 exchangeMap = {} -#exchangeMap[EXCHANGE_CFFEX] = defineDict['QDP_FTDC_EIDT_CFFEX'] -#exchangeMap[EXCHANGE_SHFE] = defineDict['QDP_FTDC_EIDT_SHFE'] -#exchangeMap[EXCHANGE_CZCE] = defineDict['QDP_FTDC_EIDT_CZCE'] -#exchangeMap[EXCHANGE_DCE] = defineDict['QDP_FTDC_EIDT_DCE'] -exchangeMap[EXCHANGE_CFFEX] = 'CFFEX' -exchangeMap[EXCHANGE_SHFE] = 'SHFE' -exchangeMap[EXCHANGE_CZCE] = 'CZCE' -exchangeMap[EXCHANGE_DCE] = 'DCE' -exchangeMap[EXCHANGE_SGE] = 'SGE' +exchangeMap[EXCHANGE_CFFEX] = defineDict["QDP_EI_CFFEX"] +exchangeMap[EXCHANGE_SHFE] = defineDict["QDP_EI_SHFE"] +exchangeMap[EXCHANGE_CZCE] = defineDict["QDP_EI_ZCE"] +exchangeMap[EXCHANGE_DCE] = defineDict["QDP_EI_DCE"] +exchangeMap[EXCHANGE_SGE] = defineDict["QDP_EI_SGE"] exchangeMap[EXCHANGE_UNKNOWN] = '' exchangeMapReverse = {v:k for k,v in exchangeMap.items()} -# 持仓类型映射 -posiDirectionMap = {} -posiDirectionMap[DIRECTION_NET] = defineDict["QDP_FTDC_PT_Net"] -posiDirectionMap[DIRECTION_LONG] = defineDict["QDP_FTDC_PT_Gross"] -#posiDirectionMap[DIRECTION_SHORT] = defineDict["QDP_FTDC_PD_Short"] -posiDirectionMapReverse = {v:k for k,v in posiDirectionMap.items()} +# 产品类型映射 +productClassMapReverse = {} +productClassMapReverse[defineDict["QDP_FTDC_PC_Futures"]] = PRODUCT_FUTURES +productClassMapReverse[defineDict["QDP_FTDC_PC_Options"]] = PRODUCT_OPTION +productClassMapReverse[defineDict["QDP_FTDC_PC_Combination"]] = PRODUCT_COMBINATION +productClassMapReverse[defineDict["QDP_FTDC_PC_Stocks"]] = PRODUCT_EQUITY +productClassMapReverse[defineDict["QDP_FTDC_PC_StockOptions"]] = PRODUCT_OPTION +productClassMapReverse[defineDict["QDP_FTDC_PC_SGE_SPOT"]] = PRODUCT_SPOT +productClassMapReverse[defineDict["QDP_FTDC_PC_SGE_DEFER"]] = PRODUCT_SPOT +productClassMapReverse[defineDict["QDP_FTDC_PC_SGE_FOWARD"]] = PRODUCT_SPOT ######################################################################## @@ -80,7 +80,7 @@ class QdpGateway(VtGateway): self.qryEnabled = False # 是否要启动循环查询 #---------------------------------------------------------------------- - def connect(self, fileName=""): + def connect(self): """连接""" # 载入json文件 fileName = self.gatewayName + '_connect.json' @@ -218,137 +218,6 @@ class QdpMdApi(MdApi): self.brokerID = EMPTY_STRING # 经纪商代码 self.address = EMPTY_STRING # 服务器地址 - #---------------------------------------------------------------------- - def onFrontConnected(self): - """服务器连接""" - self.connectionStatus = True - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'行情服务器连接成功' - self.gateway.onLog(log) - self.login() - - #---------------------------------------------------------------------- - def onFrontDisconnected(self, n): - """服务器断开""" - self.connectionStatus = False - self.loginStatus = False - self.gateway.mdConnected = False - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'行情服务器连接断开' - self.gateway.onLog(log) - - #---------------------------------------------------------------------- - def onHeartBeatWarning(self, n): - """心跳报警""" - # 因为API的心跳报警比较常被触发,且与API工作关系不大,因此选择忽略 - pass - - #---------------------------------------------------------------------- - def onRspError(self, error, n, last): - """错误回报""" - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 错误回报' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspUserLogin(self, data, error, n, last): - """登陆回报""" - # 如果登录成功,推送日志信息 - if error['ErrorID'] == 0: - self.loginStatus = True - self.gateway.mdConnected = True - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'行情服务器登录完成' - self.gateway.onLog(log) - - # 重新订阅之前订阅的合约 - for subscribeReq in self.subscribedSymbols: - self.subscribe(subscribeReq) - - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 行情登录错误' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspUserLogout(self, data, error, n, last): - """登出回报""" - # 如果登出成功,推送日志信息 - if error['ErrorID'] == 0: - self.loginStatus = False - self.gateway.mdConnected = False - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'行情服务器登出完成' - self.gateway.onLog(log) - - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 行情登出错误' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspSubMarketData(self, data, error, n, last): - """订阅合约回报""" - # 通常不在乎订阅错误,选择忽略 - pass - - #---------------------------------------------------------------------- - def onRspUnSubMarketData(self, data, error, n, last): - """退订合约回报""" - # 同上 - pass - - #---------------------------------------------------------------------- - def onRtnDepthMarketData(self, data): - """行情推送""" - tick = VtTickData() - tick.gatewayName = self.gatewayName - - tick.symbol = data['InstrumentID'] - tick.exchange = exchangeMapReverse.get(data['ExchangeID'], u'未知') - tick.vtSymbol = tick.symbol #'.'.join([tick.symbol, EXCHANGE_UNKNOWN]) - - tick.lastPrice = data['LastPrice'] - tick.volume = data['Volume'] - tick.openInterest = data['OpenInterest'] - tick.time = '.'.join([data['UpdateTime'], str(data['UpdateMillisec']/100)]) - tick.date = data['TradingDay'] - - tick.openPrice = data['OpenPrice'] - tick.highPrice = data['HighestPrice'] - tick.lowPrice = data['LowestPrice'] - tick.preClosePrice = data['PreClosePrice'] - - tick.upperLimit = data['UpperLimitPrice'] - tick.lowerLimit = data['LowerLimitPrice'] - - # QDP只有一档行情 - tick.bidPrice1 = data['BidPrice1'] - tick.bidVolume1 = data['BidVolume1'] - tick.askPrice1 = data['AskPrice1'] - tick.askVolume1 = data['AskVolume1'] - - self.gateway.onTick(tick) - #---------------------------------------------------------------------- def connect(self, userID, password, brokerID, address): """初始化连接""" @@ -382,7 +251,7 @@ class QdpMdApi(MdApi): # 这里的设计是,如果尚未登录就调用了订阅方法 # 则先保存订阅请求,登录完成后会自动订阅 if self.loginStatus: - self.subscribeMarketData(str(subscribeReq.symbol)) + self.subMarketData(str(subscribeReq.symbol)) self.subscribedSymbols.add(subscribeReq) #---------------------------------------------------------------------- @@ -414,6 +283,171 @@ class QdpMdApi(MdApi): self.logout() self.exit() + #---------------------------------------------------------------------- + def onFrontConnected(self): + """服务器连接""" + self.connectionStatus = True + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'行情服务器连接成功' + self.gateway.onLog(log) + self.login() + + #---------------------------------------------------------------------- + def onFrontDisconnected(self, i): + """服务器断开""" + self.connectionStatus = False + self.loginStatus = False + self.gateway.mdConnected = False + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'行情服务器连接断开' + self.gateway.onLog(log) + + #---------------------------------------------------------------------- + def onHeartBeatWarning(self, i): + """""" + pass + + #---------------------------------------------------------------------- + def onPackageStart(self, topicID, sequenceNo): + """""" + pass + + #---------------------------------------------------------------------- + def onPackageEnd(self, topicID, sequenceNo): + """""" + pass + + #---------------------------------------------------------------------- + def onMultiHeartbeat(self, currTime, multiCastIP): + """""" + pass + + #---------------------------------------------------------------------- + def udpMarketData(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRspError(self, error, id, last): + """错误回报""" + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspUserLogin(self, data, error, id, last): + """登陆回报""" + # 如果登录成功,推送日志信息 + if error['ErrorID'] == 0: + self.loginStatus = True + self.gateway.mdConnected = True + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'行情服务器登录完成' + self.gateway.onLog(log) + + # 重新订阅之前订阅的合约 + for subscribeReq in self.subscribedSymbols: + self.subscribe(subscribeReq) + + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspUserLogout(self, data, error, id, last): + """登出回报""" + # 如果登出成功,推送日志信息 + if error['ErrorID'] == 0: + self.loginStatus = False + self.gateway.mdConnected = False + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'行情服务器登出完成' + self.gateway.onLog(log) + + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRtnQmdInstrumentStatu(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRspSubscribeTopic(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTopic(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnDepthMarketData(self, data): + """行情推送""" + tick = VtTickData() + tick.gatewayName = self.gatewayName + + tick.symbol = data['InstrumentID'] + tick.exchange = exchangeMapReverse.get(data['ExchangeID'], u'未知') + tick.vtSymbol = tick.symbol #'.'.join([tick.symbol, EXCHANGE_UNKNOWN]) + + tick.lastPrice = data['LastPrice'] + tick.volume = data['Volume'] + tick.openInterest = data['OpenInterest'] + tick.time = '.'.join([data['UpdateTime'], str(data['UpdateMillisec']/100)]) + tick.date = data['TradingDay'] + + tick.openPrice = data['OpenPrice'] + tick.highPrice = data['HighestPrice'] + tick.lowPrice = data['LowestPrice'] + tick.preClosePrice = data['PreClosePrice'] + + tick.upperLimit = data['UpperLimitPrice'] + tick.lowerLimit = data['LowerLimitPrice'] + + # QDP只有一档行情 + tick.bidPrice1 = data['BidPrice1'] + tick.bidVolume1 = data['BidVolume1'] + tick.askPrice1 = data['AskPrice1'] + tick.askVolume1 = data['AskVolume1'] + + self.gateway.onTick(tick) + + #---------------------------------------------------------------------- + def onRspSubMarketData(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspUnSubMarketData(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryDepthMarketData(self, data, error, id, last): + """""" + pass + ######################################################################## class QdpTdApi(TdApi): @@ -443,469 +477,6 @@ class QdpTdApi(TdApi): self.sessionID = EMPTY_INT # 会话编号 self.posBufferDict = {} # 缓存持仓数据的字典 - - #---------------------------------------------------------------------- - def onFrontConnected(self): - """服务器连接""" - self.connectionStatus = True - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'交易服务器连接成功' - self.gateway.onLog(log) - - self.login() - - #---------------------------------------------------------------------- - def onFrontDisconnected(self, n): - """服务器断开""" - self.connectionStatus = False - self.loginStatus = False - self.gateway.tdConnected = False - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'交易服务器连接断开' - self.gateway.onLog(log) - - #---------------------------------------------------------------------- - def onHeartBeatWarning(self, n): - """""" - pass - - #---------------------------------------------------------------------- - def confSettle(self): - """""" - pass - - #---------------------------------------------------------------------- - def onRspUserLogin(self, data, error, n, last): - """登陆回报""" - # 如果登录成功,推送日志信息 - if error['ErrorID'] == 0: - self.frontID = str(data['FrontID']) - self.sessionID = str(data['SessionID']) - self.loginStatus = True - self.gateway.tdConnected = True - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'交易服务器登录完成' - self.gateway.onLog(log) - - # 获取investorID - self.reqID += 1 - req = {} - req['UserID'] = self.userID - req['Password'] = self.password - req['BrokerID'] = self.brokerID - self.reqQryUserInvestor(req,self.reqID) - - # 查询合约代码 - self.reqID += 1 - self.reqQryInstrument({}, self.reqID) - - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 交易登录错误' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspUserLogout(self, data, error, n, last): - """登出回报""" - # 如果登出成功,推送日志信息 - if error['ErrorID'] == 0: - self.loginStatus = False - self.gateway.tdConnected = False - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'交易服务器登出完成' - self.gateway.onLog(log) - - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 交易登出错误' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspQryUserInvestor(self, data, error, n, last): - """查询投资账户回报""" - # 如果查询成功,推送日志信息 - if error['ErrorID'] == 0: - self.investorID = data['InvestorID'] - - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'投资者查询完成' - self.gateway.onLog(log) - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 投资者查询错误' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspUserPasswordUpdate(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspOrderInsert(self, data, error, n, last): - """发单回报(柜台)""" - if error['ErrorID'] == 0: - return - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 发单错误(柜台)' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspOrderAction(self, data, error, n, last): - """撤单回报(柜台)""" - if error['ErrorID'] == 0: - return - # 否则,推送错误信息 - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 撤单错误(柜台)' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRspQryOrder(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspQryTrade(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspQryInvestorPosition(self, data, error, n, last): - """持仓查询回报""" - # 获取缓存字典中的持仓缓存,若无则创建并初始化 - positionName = '.'.join([data['InstrumentID'], data['Direction']]) - - if positionName in self.posBufferDict: - posBuffer = self.posBufferDict[positionName] - else: - posBuffer = PositionBuffer(data, self.gatewayName) - self.posBufferDict[positionName] = posBuffer - - # 更新持仓缓存,并获取VT系统中持仓对象的返回值 - pos = posBuffer.updateBuffer(data) - self.gateway.onPosition(pos) - - #---------------------------------------------------------------------- - def onRspQryInvestorAccount(self, data, error, n, last): - """资金账户查询回报""" - account = VtAccountData() - account.gatewayName = self.gatewayName - - # 账户代码 - account.accountID = data['AccountID'] - account.vtAccountID = '.'.join([self.gatewayName, account.accountID]) - - # 数值相关 - account.preBalance = data['PreBalance'] - account.available = data['Available'] - account.commission = data['Commission'] - account.margin = data['CurrMargin'] - account.closeProfit = data['CloseProfit'] - account.positionProfit = data['PositionProfit'] - - # 这里的balance和快期中的账户不确定是否一样,需要测试 - account.balance = (data['PreBalance'] - data['PreCredit'] - data['PreMortgage'] + - data['Mortgage'] - data['Withdraw'] + data['Deposit'] + - data['CloseProfit'] + data['PositionProfit'] + data['CashIn'] - - data['Commission']) - - # 推送 - self.gateway.onAccount(account) - - #---------------------------------------------------------------------- - def onRspQryInvestor(self, data, error, n, last): - """投资者查询回报""" - pass - - #---------------------------------------------------------------------- - def onRspQryExchange(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspQryInstrument(self, data, error, n, last): - """合约查询回报""" - contract = VtContractData() - contract.gatewayName = self.gatewayName - - contract.symbol = data['InstrumentID'] - contract.exchange = exchangeMapReverse[data['ExchangeID']] - contract.vtSymbol = contract.symbol #'.'.join([contract.symbol, contract.exchange]) - contract.name = data['InstrumentName'].decode('GBK') - - # 合约数值 - contract.size = data['VolumeMultiple'] - contract.priceTick = data['PriceTick'] - contract.strikePrice = data['StrikePrice'] - contract.underlyingSymbol = data['UnderlyingInstrID'] - - # 合约类型 - contract.productClass = PRODUCT_FUTURES - #if data['ProductClass'] == '1': - # contract.productClass = PRODUCT_FUTURES - #elif data['ProductClass'] == '2': - # contract.productClass = PRODUCT_OPTION - #elif data['ProductClass'] == '3': - # contract.productClass = PRODUCT_COMBINATION - #else: - # contract.productClass = PRODUCT_UNKNOWN - - # 期权类型 - if data['OptionsType'] == '1': - contract.optionType = OPTION_CALL - elif data['OptionsType'] == '2': - contract.optionType = OPTION_PUT - - # 推送 - self.gateway.onContract(contract) - - if last: - log = VtLogData() - log.gatewayName = self.gatewayName - log.logContent = u'交易合约信息获取完成' - self.gateway.onLog(log) - - #---------------------------------------------------------------------- - def onRspQryMarketData(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspQryTransferBank(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspError(self, error, n, last): - """错误回报""" - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u'错误回报(交易)' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRtnOrder(self, data): - """报单回报""" - # 更新最大报单编号 - newref = data['UserOrderLocalID'] - if not newref == '': - self.orderRef = max(self.orderRef, int(newref)) - - # 创建报单数据对象 - order = VtOrderData() - order.gatewayName = self.gatewayName - - # 保存代码和报单号 - order.symbol = data['InstrumentID'] - order.exchange = exchangeMapReverse[data['ExchangeID']] - order.vtSymbol = order.symbol #'.'.join([order.symbol, order.exchange]) - - order.orderID = data['UserOrderLocalID'] - - # 方向 - if data['Direction'] == '0': - order.direction = DIRECTION_LONG - elif data['Direction'] == '1': - order.direction = DIRECTION_SHORT - else: - order.direction = DIRECTION_UNKNOWN - - # 开平 - if data['OffsetFlag'] == '0': - order.offset = OFFSET_OPEN - elif data['OffsetFlag'] == '1': - order.offset = OFFSET_CLOSE - elif data['OffsetFlag'] == '3': - order.offset = OFFSET_CLOSETODAY - else: - order.offset = OFFSET_UNKNOWN - - # 状态 - if data['OrderStatus'] == '0': - order.status = STATUS_ALLTRADED - elif data['OrderStatus'] == '1': - order.status = STATUS_PARTTRADED - elif data['OrderStatus'] == '2': - order.status = STATUS_PARTTRADED_PARTCANCELED - elif data['OrderStatus'] == '3': - order.status = STATUS_NOTTRADED - elif data['OrderStatus'] == '5': - order.status = STATUS_CANCELLED - else: - order.status = STATUS_UNKNOWN - - # 价格、报单量等数值 - order.price = data['LimitPrice'] - order.totalVolume = data['Volume'] - order.tradedVolume = data['VolumeTraded'] - order.orderTime = data['InsertTime'] - order.cancelTime = data['CancelTime'] - order.frontID = data['FrontID'] - order.sessionID = data['SessionID'] - - # QDP的报单号一致性维护需要基于frontID, sessionID, orderID三个字段 - # 但在本接口设计中,已经考虑了QDP的OrderRef的自增性,避免重复 - # 唯一可能出现OrderRef重复的情况是多处登录并在非常接近的时间内(几乎同时发单) - # 考虑到VtTrader的应用场景,认为以上情况不会构成问题 - order.vtOrderID = '.'.join([self.gatewayName, order.orderID]) - - # 推送 - self.gateway.onOrder(order) - - #---------------------------------------------------------------------- - def onRtnTrade(self, data): - """成交回报""" - # 创建报单数据对象 - trade = VtTradeData() - trade.gatewayName = self.gatewayName - - # 保存代码和报单号 - trade.symbol = data['InstrumentID'] - trade.exchange = exchangeMapReverse[data['ExchangeID']] - trade.vtSymbol = trade.symbol #'.'.join([trade.symbol, trade.exchange]) - - trade.tradeID = data['TradeID'] - trade.vtTradeID = '.'.join([self.gatewayName, trade.tradeID]) - - trade.orderID = data['UserOrderLocalID'] - trade.vtOrderID = '.'.join([self.gatewayName, trade.orderID]) - - # 方向 - trade.direction = directionMapReverse.get(data['Direction'], '') - - # 开平 - trade.offset = offsetMapReverse.get(data['OffsetFlag'], '') - - # 价格、报单量等数值 - trade.price = data['TradePrice'] - trade.volume = data['TradeVolume'] - trade.tradeTime = data['TradeTime'] - - # 推送 - self.gateway.onTrade(trade) - - #---------------------------------------------------------------------- - def onErrRtnOrderInsert(self, data, error): - """发单错误回报(交易所)""" - if error['ErrorID'] == 0: - return - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 发单错误(交易所)' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onErrRtnOrderAction(self, data, error): - """撤单错误回报(交易所)""" - if error['ErrorID'] == 0: - return - else: - err = VtErrorData() - err.gatewayName = self.gatewayName - err.errorID = error['ErrorID'] - err.errorMsg = error['ErrorMsg'].decode('gbk') - err.additionalInfo = str(datetime.datetime.now()) + u' 撤单错误(交易所)' # 补充信息 - self.gateway.onError(err) - - #---------------------------------------------------------------------- - def onRtnInstrumentStatus(self, data): - """""" - pass - - #---------------------------------------------------------------------- - def onRspQryContractBank(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRtnFromBankToFutureByBank(self, data): - """""" - pass - - #---------------------------------------------------------------------- - def onRtnFromFutureToBankByBank(self, data): - """""" - pass - - #---------------------------------------------------------------------- - def onRtnFromBankToFutureByFuture(self, data): - """""" - pass - - #---------------------------------------------------------------------- - def onRtnFromFutureToBankByFuture(self, data): - """""" - pass - - #---------------------------------------------------------------------- - def onRtnQueryBankBalanceByFuture(self, data): - """""" - pass - - #---------------------------------------------------------------------- - def onErrRtnBankToFutureByFuture(self, data, error): - """""" - pass - - #---------------------------------------------------------------------- - def onErrRtnFutureToBankByFuture(self, data, error): - """""" - pass - - #---------------------------------------------------------------------- - def onErrRtnQueryBankBalanceByFuture(self, data, error): - """""" - pass - - #---------------------------------------------------------------------- - def onRspFromBankToFutureByFuture(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspFromFutureToBankByFuture(self, data, error, n, last): - """""" - pass - - #---------------------------------------------------------------------- - def onRspQueryBankAccountMoneyByFuture(self, data, error, n, last): - """""" - pass #---------------------------------------------------------------------- def connect(self, userID, password, brokerID, address): @@ -964,6 +535,10 @@ class QdpTdApi(TdApi): def qryAccount(self): """查询账户""" self.reqID += 1 + req = {} + req['UserID'] = self.userID + req['BrokerID'] = self.brokerID + req['InvestorID'] = self.investorID self.reqQryInvestorAccount({}, self.reqID) #---------------------------------------------------------------------- @@ -1049,77 +624,488 @@ class QdpTdApi(TdApi): self.logout() self.exit() - -######################################################################## -class PositionBuffer(object): - """用来缓存持仓的数据,处理上期所的数据返回分今昨的问题""" + #---------------------------------------------------------------------- + def onFrontConnected(self): + """服务器连接""" + self.connectionStatus = True + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'交易服务器连接成功' + self.gateway.onLog(log) + + self.login() + + #---------------------------------------------------------------------- + def onFrontDisconnected(self, i): + """服务器断开""" + self.connectionStatus = False + self.loginStatus = False + self.gateway.tdConnected = False + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'交易服务器连接断开' + self.gateway.onLog(log) + + #---------------------------------------------------------------------- + def onHeartBeatWarning(self, i): + """""" + pass + + #---------------------------------------------------------------------- + def onPackageStart(self, topicID, sequenceNo): + """""" + pass + + #---------------------------------------------------------------------- + def onPackageEnd(self, topicID, sequenceNo): + """""" + pass + + #---------------------------------------------------------------------- + def onRspError(self, error, id, last): + """错误回报""" + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspUserLogin(self, data, error, id, last): + """登陆回报""" + # 如果登录成功,推送日志信息 + if error['ErrorID'] == 0: + self.frontID = str(data['FrontID']) + self.sessionID = str(data['SessionID']) + self.loginStatus = True + self.gateway.tdConnected = True + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'交易服务器登录完成' + self.gateway.onLog(log) + + # 获取investorID + self.reqID += 1 + req = {} + req['UserID'] = self.userID + req['Password'] = self.password + req['BrokerID'] = self.brokerID + self.reqQryUserInvestor(req,self.reqID) + + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspUserLogout(self, data, error, id, last): + """登出回报""" + # 如果登出成功,推送日志信息 + if error['ErrorID'] == 0: + self.loginStatus = False + self.gateway.tdConnected = False + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'交易服务器登出完成' + self.gateway.onLog(log) + + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspUserPasswordUpdate(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspOrderInsert(self, data, error, id, last): + """发单回报(柜台)""" + if error['ErrorID'] == 0: + return + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspOrderAction(self, data, error, id, last): + """撤单回报(柜台)""" + if error['ErrorID'] == 0: + return + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspFromBankToFutureByFuture(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspFromFutureToBankByFuture(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFlowMessageCancel(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnTrade(self, data): + """成交回报""" + # 创建报单数据对象 + trade = VtTradeData() + trade.gatewayName = self.gatewayName + + # 保存代码和报单号 + trade.symbol = data['InstrumentID'] + trade.exchange = exchangeMapReverse[data['ExchangeID']] + trade.vtSymbol = trade.symbol #'.'.join([trade.symbol, trade.exchange]) + + trade.tradeID = data['TradeID'] + trade.vtTradeID = '.'.join([self.gatewayName, trade.tradeID]) + + trade.orderID = data['UserOrderLocalID'] + trade.vtOrderID = '.'.join([self.gatewayName, trade.orderID]) + + # 方向 + trade.direction = directionMapReverse.get(data['Direction'], '') + + # 开平 + trade.offset = offsetMapReverse.get(data['OffsetFlag'], '') + + # 价格、报单量等数值 + trade.price = data['TradePrice'] + trade.volume = data['TradeVolume'] + trade.tradeTime = data['TradeTime'] + + # 推送 + self.gateway.onTrade(trade) + + #---------------------------------------------------------------------- + def onRtnOrder(self, data): + """报单回报""" + # 更新最大报单编号 + newref = data['UserOrderLocalID'] + if not newref == '': + self.orderRef = max(self.orderRef, int(newref)) + + # 创建报单数据对象 + order = VtOrderData() + order.gatewayName = self.gatewayName + + # 保存代码和报单号 + order.symbol = data['InstrumentID'] + order.exchange = exchangeMapReverse[data['ExchangeID']] + order.vtSymbol = order.symbol #'.'.join([order.symbol, order.exchange]) + + order.orderID = data['UserOrderLocalID'] + + # 方向 + if data['Direction'] == '0': + order.direction = DIRECTION_LONG + elif data['Direction'] == '1': + order.direction = DIRECTION_SHORT + else: + order.direction = DIRECTION_UNKNOWN + + # 开平 + if data['OffsetFlag'] == '0': + order.offset = OFFSET_OPEN + elif data['OffsetFlag'] == '1': + order.offset = OFFSET_CLOSE + elif data['OffsetFlag'] == '3': + order.offset = OFFSET_CLOSETODAY + else: + order.offset = OFFSET_UNKNOWN + + # 状态 + if data['OrderStatus'] == '0': + order.status = STATUS_ALLTRADED + elif data['OrderStatus'] == '1': + order.status = STATUS_PARTTRADED + elif data['OrderStatus'] == '2': + order.status = STATUS_PARTTRADED_PARTCANCELED + elif data['OrderStatus'] == '3': + order.status = STATUS_NOTTRADED + elif data['OrderStatus'] == '5': + order.status = STATUS_CANCELLED + else: + order.status = STATUS_UNKNOWN + + # 价格、报单量等数值 + order.price = data['LimitPrice'] + order.totalVolume = data['Volume'] + order.tradedVolume = data['VolumeTraded'] + order.orderTime = data['InsertTime'] + order.cancelTime = data['CancelTime'] + order.frontID = data['FrontID'] + order.sessionID = data['SessionID'] + + # QDP的报单号一致性维护需要基于frontID, sessionID, orderID三个字段 + # 但在本接口设计中,已经考虑了QDP的OrderRef的自增性,避免重复 + # 唯一可能出现OrderRef重复的情况是多处登录并在非常接近的时间内(几乎同时发单) + # 考虑到VtTrader的应用场景,认为以上情况不会构成问题 + order.vtOrderID = '.'.join([self.gatewayName, order.orderID]) + + # 推送 + self.gateway.onOrder(order) + + #---------------------------------------------------------------------- + def onErrRtnOrderInsert(self, data, error): + """发单错误回报(交易所)""" + if error['ErrorID'] == 0: + return + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) #---------------------------------------------------------------------- - def __init__(self, data, gatewayName): - """Constructor""" - self.symbol = data['InstrumentID'] - self.direction = posiDirectionMapReverse.get(data['Direction'], '') - - self.todayPosition = EMPTY_INT - self.ydPosition = EMPTY_INT - self.todayPositionCost = EMPTY_FLOAT - self.ydPositionCost = EMPTY_FLOAT - - # 通过提前创建持仓数据对象并重复使用的方式来降低开销 - pos = VtPositionData() - pos.symbol = self.symbol - pos.vtSymbol = self.symbol - pos.gatewayName = gatewayName - pos.direction = self.direction - pos.vtPositionName = '.'.join([pos.vtSymbol, pos.direction]) - self.pos = pos - + def onErrRtnOrderAction(self, data, error): + """撤单错误回报(交易所)""" + if error['ErrorID'] == 0: + return + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + #---------------------------------------------------------------------- - def updateBuffer(self, data): - """更新缓存,返回更新后的持仓数据""" - # 昨仓和今仓的数据更新是分在两条记录里的,因此需要判断检查该条记录对应仓位 - if data['Position']: - self.todayPosition = data['Position'] - data['YdPosition'] - self.todayPositionCost = data['PositionCost'] - elif data['YdPosition']: - self.ydPosition = data['YdPosition'] - self.ydPositionCost = data['YdPositionCost'] - - # 持仓的昨仓和今仓相加后为总持仓 - self.pos.position = self.todayPosition + self.ydPosition - self.pos.ydPosition = self.ydPosition - - # 如果手头还有持仓,则通过加权平均方式计算持仓均价 - if self.todayPosition or self.ydPosition: - self.pos.price = ((self.todayPositionCost + self.ydPositionCost)/ - (self.todayPosition + self.ydPosition)) - # 否则价格为0 - else: - self.pos.price = 0 - - return copy(self.pos) - -#---------------------------------------------------------------------- -def test(): - """测试""" - from PyQt4 import QtCore - import sys + def onRtnInstrumentStatus(self, data): + """""" + pass - def print_log(event): - log = event.dict_['data'] - print ':'.join([log.logTime, log.logContent]) + #---------------------------------------------------------------------- + def onRtnInvestorAccountDeposit(self, data): + """""" + pass - app = QtCore.QCoreApplication(sys.argv) - - eventEngine = EventEngine() - eventEngine.register(EVENT_LOG, print_log) - eventEngine.start() + #---------------------------------------------------------------------- + def onRtnMessageNotify(self, data): + """""" + pass - gateway = QdpGateway(eventEngine) - gateway.connect() + #---------------------------------------------------------------------- + def onErrRtnQueryBankBalanceByFuture(self, data, error): + """""" + pass - sys.exit(app.exec_()) - - -if __name__ == '__main__': - test() + #---------------------------------------------------------------------- + def onErrRtnBankToFutureByFuture(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onErrRtnFutureToBankByFuture(self, data, error): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnQueryBankBalanceByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFromBankToFutureByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnFromFutureToBankByFuture(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRtnSGEDeferRate(self, data): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryOrder(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTrade(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryUserInvestor(self, data, error, id, last): + """查询投资账户回报""" + # 如果查询成功,推送日志信息 + if error['ErrorID'] == 0: + self.investorID = data['InvestorID'] + + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'投资者查询完成' + self.gateway.onLog(log) + + # 查询合约代码 + self.reqID += 1 + self.reqQryInstrument({}, self.reqID) + # 否则,推送错误信息 + else: + err = VtErrorData() + err.gatewayName = self.gatewayName + err.errorID = error['ErrorID'] + err.errorMsg = error['ErrorMsg'].decode('gbk') + self.gateway.onError(err) + + #---------------------------------------------------------------------- + def onRspQryInvestorAccount(self, data, error, id, last): + """资金账户查询回报""" + account = VtAccountData() + account.gatewayName = self.gatewayName + + # 账户代码 + account.accountID = data['AccountID'] + account.vtAccountID = '.'.join([self.gatewayName, account.accountID]) + + # 数值相关 + account.preBalance = data['PreBalance'] + account.available = data['Available'] + account.commission = data['Fee'] + account.margin = data['Margin'] + account.closeProfit = data['CloseProfit'] + account.positionProfit = data['PositionProfit'] + account.balance = data['DynamicRights'] + + # 推送 + self.gateway.onAccount(account) + + #---------------------------------------------------------------------- + def onRspQryInstrument(self, data, error, id, last): + """合约查询回报""" + contract = VtContractData() + contract.gatewayName = self.gatewayName + + contract.symbol = data['InstrumentID'] + contract.exchange = exchangeMapReverse[data['ExchangeID']] + contract.vtSymbol = contract.symbol #'.'.join([contract.symbol, contract.exchange]) + contract.name = data['InstrumentName'].decode('GBK') + + # 合约数值 + contract.size = data['VolumeMultiple'] + contract.priceTick = data['PriceTick'] + contract.strikePrice = data['StrikePrice'] + contract.underlyingSymbol = data['UnderlyingInstrID'] + + # 合约类型 + contract.productClass = productClassMapReverse.get(data['ProductClass'], + PRODUCT_UNKNOWN) + + # 期权类型 + if data['OptionsType'] == '1': + contract.optionType = OPTION_CALL + elif data['OptionsType'] == '2': + contract.optionType = OPTION_PUT + + # 推送 + self.gateway.onContract(contract) + + if last: + log = VtLogData() + log.gatewayName = self.gatewayName + log.logContent = u'交易合约信息获取完成' + self.gateway.onLog(log) + + #---------------------------------------------------------------------- + def onRspQryExchange(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorPosition(self, data, error, id, last): + """持仓查询回报""" + pos = VtPositionData() + pos.gatewayName = self.gatewayName + + pos.symbol = data['InstrumentID'] + pos.vtSymbol = pos.symbol + pos.direction = directionMapReverse.get(data['Direction'], DIRECTION_UNKNOWN) + pos.vtPositionName = '.'.join([pos.vtSymbol, pos.direction]) + + pos.position = data['Position'] + pos.ydPosition = data['YdPosition'] + pos.frozen = data['FrozenClosing'] + if pos.position: + pos.price = data['PositionCost'] / pos.position + + self.gateway.onPosition(pos) + + #---------------------------------------------------------------------- + def onRspSubscribeTopic(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTopic(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorFee(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryInvestorMargin(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryExchangeDiffTime(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryContractBank(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQueryBankAccountMoneyByFuture(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryTransferSerial(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQrySGEDeferRate(self, data, error, id, last): + """""" + pass + + #---------------------------------------------------------------------- + def onRspQryMarketData(self, data, error, id, last): + """""" + pass diff --git a/vn.trader/qdpGateway/vnqdpmd.pyd b/vn.trader/qdpGateway/vnqdpmd.pyd index 5327d5aa60b1a32512a967079506288dd1176e3f..4f966e707225943efd28dabd7774b74977364d96 100644 GIT binary patch literal 300032 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�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 Fe*o1lGg$xt literal 261120 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