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 dad5d8db..00000000 Binary files a/vn.qdp/.build.sh.swp and /dev/null differ 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 00000000..41af410a Binary files /dev/null and b/vn.qdp/docs/QDP和CTP开发异同性分析.docx differ diff --git a/vn.qdp/docs/量投科技QDP交易API开发手册.docx b/vn.qdp/docs/量投科技QDP交易API开发手册.docx new file mode 100644 index 00000000..8dc8ddf3 Binary files /dev/null and b/vn.qdp/docs/量投科技QDP交易API开发手册.docx differ diff --git a/vn.qdp/docs/量投科技QDP行情API开发手册.docx b/vn.qdp/docs/量投科技QDP行情API开发手册.docx new file mode 100644 index 00000000..4dc737ac Binary files /dev/null and b/vn.qdp/docs/量投科技QDP行情API开发手册.docx differ diff --git a/vn.qdp/pyscript/.generate_td_functions.py.swp b/vn.qdp/pyscript/.generate_td_functions.py.swp deleted file mode 100644 index 5dc68328..00000000 Binary files a/vn.qdp/pyscript/.generate_td_functions.py.swp and /dev/null differ diff --git a/vn.qdp/pyscript/QdpFtdcMduserApi.h b/vn.qdp/pyscript/QdpFtdcMduserApi.h deleted file mode 100644 index dfb68003..00000000 --- a/vn.qdp/pyscript/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/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 5327d5aa..4f966e70 100644 Binary files a/vn.trader/qdpGateway/vnqdpmd.pyd and b/vn.trader/qdpGateway/vnqdpmd.pyd differ diff --git a/vn.trader/qdpGateway/vnqdptd.pyd b/vn.trader/qdpGateway/vnqdptd.pyd index b68d8ea0..ebe64706 100644 Binary files a/vn.trader/qdpGateway/vnqdptd.pyd and b/vn.trader/qdpGateway/vnqdptd.pyd differ 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