From b3dcf8745a547226a11b48004c2d0bfb081d6395 Mon Sep 17 00:00:00 2001 From: lyic Date: Wed, 30 Mar 2016 20:15:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A3=9E=E9=BC=A0=E6=9F=9C?= =?UTF-8?q?=E5=8F=B0=E7=9A=84=E4=BA=A4=E6=98=93=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9C=9F=E8=B4=A7=E5=92=8C=E9=87=91=E4=BA=A4?= =?UTF-8?q?=E6=89=80=E7=9A=84=E9=BB=84=E9=87=91T+D=EF=BC=8C=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E9=92=88=E5=AF=B9=E9=AB=98=E9=A2=91=E4=BA=A4=E6=98=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vn.sgit/pyscript/SgitFtdcMdApi.h | 118 + vn.sgit/pyscript/SgitFtdcTraderApi.h | 179 + vn.sgit/pyscript/SgitFtdcUserApiDataType.h | 4816 ++++++++++++++++ vn.sgit/pyscript/SgitFtdcUserApiStruct.h | 5862 +++++++++++++++++++ vn.sgit/pyscript/generate_data_type.py | 111 + vn.sgit/pyscript/generate_md_functions.py | 310 ++ vn.sgit/pyscript/generate_struct.py | 78 + vn.sgit/pyscript/generate_td_functions.py | 310 ++ vn.sgit/pyscript/sgit_data_type.py | 4812 ++++++++++++++++ vn.sgit/pyscript/sgit_md_define.cpp | 5 + vn.sgit/pyscript/sgit_md_function.cpp | 37 + vn.sgit/pyscript/sgit_md_header_function.h | 4 + vn.sgit/pyscript/sgit_md_header_on.h | 8 + vn.sgit/pyscript/sgit_md_header_process.h | 10 + vn.sgit/pyscript/sgit_md_process.cpp | 106 + vn.sgit/pyscript/sgit_md_switch.cpp | 30 + vn.sgit/pyscript/sgit_md_task.cpp | 107 + vn.sgit/pyscript/sgit_md_wrap.cpp | 36 + vn.sgit/pyscript/sgit_struct.py | 5866 ++++++++++++++++++++ vn.sgit/pyscript/sgit_td_define.cpp | 16 + vn.sgit/pyscript/sgit_td_function.cpp | 161 + vn.sgit/pyscript/sgit_td_header_function.h | 24 + vn.sgit/pyscript/sgit_td_header_on.h | 30 + vn.sgit/pyscript/sgit_td_header_process.h | 32 + vn.sgit/pyscript/sgit_td_process.cpp | 528 ++ vn.sgit/pyscript/sgit_td_switch.cpp | 96 + vn.sgit/pyscript/sgit_td_task.cpp | 420 ++ vn.sgit/pyscript/sgit_td_wrap.cpp | 168 + vn.sgit/sgitapi/SgitFtdcMdApi.h | 118 + vn.sgit/sgitapi/SgitFtdcTraderApi.h | 179 + vn.sgit/sgitapi/SgitFtdcUserApiDataType.h | 4816 ++++++++++++++++ vn.sgit/sgitapi/SgitFtdcUserApiStruct.h | 5862 +++++++++++++++++++ vn.sgit/sgitapi/libsgitquotapi.so.64 | Bin 0 -> 436035 bytes vn.sgit/sgitapi/libsgittradeapi.so.64 | Bin 0 -> 549960 bytes vn.sgit/sgitapi/sgitquotapi.dll | Bin 0 -> 295011 bytes vn.sgit/sgitapi/sgitquotapi.lib | Bin 0 -> 3432 bytes vn.sgit/sgitapi/sgittradeapi.dll | Bin 0 -> 208896 bytes vn.sgit/sgitapi/sgittradeapi.lib | Bin 0 -> 3616 bytes vn.sgit/vnsgitmd/vnsgitmd/ReadMe.txt | 48 + vn.sgit/vnsgitmd/vnsgitmd/dllmain.cpp | 19 + vn.sgit/vnsgitmd/vnsgitmd/stdafx.cpp | 8 + vn.sgit/vnsgitmd/vnsgitmd/stdafx.h | 16 + vn.sgit/vnsgitmd/vnsgitmd/targetver.h | 8 + vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.cpp | 564 ++ vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.h | 248 + vn.sgit/vnsgittd/vnsgittd/ReadMe.txt | 48 + vn.sgit/vnsgittd/vnsgittd/dllmain.cpp | 19 + vn.sgit/vnsgittd/vnsgittd/stdafx.cpp | 8 + vn.sgit/vnsgittd/vnsgittd/stdafx.h | 16 + vn.sgit/vnsgittd/vnsgittd/targetver.h | 8 + vn.sgit/vnsgittd/vnsgittd/vnsgittd.cpp | 1673 ++++++ vn.sgit/vnsgittd/vnsgittd/vnsgittd.h | 356 ++ 52 files changed, 38294 insertions(+) create mode 100644 vn.sgit/pyscript/SgitFtdcMdApi.h create mode 100644 vn.sgit/pyscript/SgitFtdcTraderApi.h create mode 100644 vn.sgit/pyscript/SgitFtdcUserApiDataType.h create mode 100644 vn.sgit/pyscript/SgitFtdcUserApiStruct.h create mode 100644 vn.sgit/pyscript/generate_data_type.py create mode 100644 vn.sgit/pyscript/generate_md_functions.py create mode 100644 vn.sgit/pyscript/generate_struct.py create mode 100644 vn.sgit/pyscript/generate_td_functions.py create mode 100644 vn.sgit/pyscript/sgit_data_type.py create mode 100644 vn.sgit/pyscript/sgit_md_define.cpp create mode 100644 vn.sgit/pyscript/sgit_md_function.cpp create mode 100644 vn.sgit/pyscript/sgit_md_header_function.h create mode 100644 vn.sgit/pyscript/sgit_md_header_on.h create mode 100644 vn.sgit/pyscript/sgit_md_header_process.h create mode 100644 vn.sgit/pyscript/sgit_md_process.cpp create mode 100644 vn.sgit/pyscript/sgit_md_switch.cpp create mode 100644 vn.sgit/pyscript/sgit_md_task.cpp create mode 100644 vn.sgit/pyscript/sgit_md_wrap.cpp create mode 100644 vn.sgit/pyscript/sgit_struct.py create mode 100644 vn.sgit/pyscript/sgit_td_define.cpp create mode 100644 vn.sgit/pyscript/sgit_td_function.cpp create mode 100644 vn.sgit/pyscript/sgit_td_header_function.h create mode 100644 vn.sgit/pyscript/sgit_td_header_on.h create mode 100644 vn.sgit/pyscript/sgit_td_header_process.h create mode 100644 vn.sgit/pyscript/sgit_td_process.cpp create mode 100644 vn.sgit/pyscript/sgit_td_switch.cpp create mode 100644 vn.sgit/pyscript/sgit_td_task.cpp create mode 100644 vn.sgit/pyscript/sgit_td_wrap.cpp create mode 100644 vn.sgit/sgitapi/SgitFtdcMdApi.h create mode 100644 vn.sgit/sgitapi/SgitFtdcTraderApi.h create mode 100644 vn.sgit/sgitapi/SgitFtdcUserApiDataType.h create mode 100644 vn.sgit/sgitapi/SgitFtdcUserApiStruct.h create mode 100644 vn.sgit/sgitapi/libsgitquotapi.so.64 create mode 100644 vn.sgit/sgitapi/libsgittradeapi.so.64 create mode 100644 vn.sgit/sgitapi/sgitquotapi.dll create mode 100644 vn.sgit/sgitapi/sgitquotapi.lib create mode 100644 vn.sgit/sgitapi/sgittradeapi.dll create mode 100644 vn.sgit/sgitapi/sgittradeapi.lib create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/ReadMe.txt create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/dllmain.cpp create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/stdafx.cpp create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/stdafx.h create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/targetver.h create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.cpp create mode 100644 vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.h create mode 100644 vn.sgit/vnsgittd/vnsgittd/ReadMe.txt create mode 100644 vn.sgit/vnsgittd/vnsgittd/dllmain.cpp create mode 100644 vn.sgit/vnsgittd/vnsgittd/stdafx.cpp create mode 100644 vn.sgit/vnsgittd/vnsgittd/stdafx.h create mode 100644 vn.sgit/vnsgittd/vnsgittd/targetver.h create mode 100644 vn.sgit/vnsgittd/vnsgittd/vnsgittd.cpp create mode 100644 vn.sgit/vnsgittd/vnsgittd/vnsgittd.h diff --git a/vn.sgit/pyscript/SgitFtdcMdApi.h b/vn.sgit/pyscript/SgitFtdcMdApi.h new file mode 100644 index 00000000..91a1ef36 --- /dev/null +++ b/vn.sgit/pyscript/SgitFtdcMdApi.h @@ -0,0 +1,118 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#if !defined(Sgit_FTDCMDAPI_H) +#define Sgit_FTDCMDAPI_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "SgitFtdcUserApiStruct.h" + +#if defined(ISLIB) && defined(WIN32) +#ifdef LIB_MD_API_EXPORT +#define MD_API_EXPORT __declspec(dllexport) +#else +#define MD_API_EXPORT __declspec(dllimport) +#endif +#else +#define MD_API_EXPORT +#endif + +class CSgitFtdcMdSpi +{ +public: + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 + virtual void OnFrontConnected(){}; + + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 + ///@param pErrMsg 错误原因 + virtual void OnFrontDisconnected(char *pErrMsg){}; + + ///登录请求响应 + virtual void OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///登出请求响应 + virtual void OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///深度行情通知 + virtual void OnRtnDepthMarketData(CSgitFtdcDepthMarketDataField *pDepthMarketData) {}; +}; + +class MD_API_EXPORT CSgitFtdcMdApi +{ +public: + ///创建MdApi + ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录 + ///@return 创建出的UserApi + static CSgitFtdcMdApi *CreateFtdcMdApi(const char *pszFlowPath = ""); + + ///删除接口对象本身 + ///@remark 不再使用本接口对象时,调用该函数删除接口对象 + virtual void Release() = 0; + + ///初始化 + ///@remark 初始化运行环境,只有调用后,接口才开始工作 + ///isLogged 开发调试时使用true,可以打印出收到的消息包内容 + virtual void Init(bool isLogged) = 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; + + /**用多播时TCP配置也需要设置 + *调用该函数,默认采用tcp模式发送行情 + *设置多播的配置 MlCast://hostIP$multiaddress:port, + *如果只有一张网卡可以 MlCast://ANY$multiaddress:port + * @param szMlCastAddr 本机ip地址、多播组及端口 + */ + virtual void SetMultiCastAddr(char *szMlCastAddr) = 0; + + ///注册回调接口 + ///@param pSpi 派生自回调接口类的实例 + virtual void RegisterSpi(CSgitFtdcMdSpi *pSpi) = 0; + ///订阅市场流。 + ///@param nResumeType 公共流重传方式 + /// Sgit_TERT_RESTART:从本交易日开始重传 + /// Sgit_TERT_RESUME:从上次收到的续传 + /// Sgit_TERT_QUICK:只传送登录后公共流的内容 + ///@remark 该方法要在Init方法前调用。若不调用则不会收到公共流的数据。 + virtual void SubscribeMarketTopic(Sgit_TE_RESUME_TYPE nResumeType) = 0; + + /// + /// 发送行情订阅 + /// @param iRequestID 请求号 + /// @param pMBLQuotReq 行情订阅请求域 + /// @return 0表示成功 + /// @return 其它表示失败 + /// + virtual int SubQuot(CSgitSubQuotField *pSgitSubQuotField)=0; + ///发送就绪指令到前置,通知前置可以给自己发送私有流与公共流 + /// @return 0表示成功 + /// @return 其它参见错误码 + /// + virtual int Ready() = 0; + + ///用户登录请求 + virtual int ReqUserLogin(CSgitFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0; + + ///登出请求 + virtual int ReqUserLogout(CSgitFtdcUserLogoutField *pUserLogout, int nRequestID) = 0; +protected: + ~CSgitFtdcMdApi(){}; +}; + +#endif diff --git a/vn.sgit/pyscript/SgitFtdcTraderApi.h b/vn.sgit/pyscript/SgitFtdcTraderApi.h new file mode 100644 index 00000000..508eb78b --- /dev/null +++ b/vn.sgit/pyscript/SgitFtdcTraderApi.h @@ -0,0 +1,179 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#if !defined(Sgit_FTDCTRADERAPI_H) +#define Sgit_FTDCTRADERAPI_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "SgitFtdcUserApiStruct.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 CSgitFtdcTraderSpi +{ +public: + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 + virtual void OnFrontConnected(){}; + + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 + ///@param pErrMsg 错误原因 + virtual void OnFrontDisconnected(char *pErrMsg){}; + + ///登录请求响应 + virtual void OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///登出请求响应 + virtual void OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///用户口令更新请求响应 + virtual void OnRspUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///报单录入请求响应 + virtual void OnRspOrderInsert(CSgitFtdcInputOrderField *pInputOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///报单操作请求响应 + virtual void OnRspOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询报单响应 + virtual void OnRspQryOrder(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询资金账户响应 + virtual void OnRspQryTradingAccount(CSgitFtdcTradingAccountField *pTradingAccount, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询投资者响应 + virtual void OnRspQryInvestor(CSgitFtdcInvestorField *pInvestor, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询合约响应 + virtual void OnRspQryInstrument(CSgitFtdcInstrumentField *pInstrument, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///报单通知 + virtual void OnRtnOrder(CSgitFtdcOrderField *pOrder,CSgitFtdcRspInfoField *pRspInfo) {}; + + ///成交通知 + virtual void OnRtnTrade(CSgitFtdcTradeField *pTrade) {}; + + ///合约交易状态通知 + virtual void OnRtnInstrumentStatus(CSgitFtdcInstrumentStatusField *pInstrumentStatus) {}; + + ///请求查询投资者持仓明细响应 + virtual void OnRspQryInvestorPositionDetail(CSgitFtdcInvestorPositionDetailField *pInvestorPositionDetail, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询投资者持仓响应 + virtual void OnRspQryInvestorPosition(CSgitFtdcInvestorPositionField *pInvestorPosition, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + /// 当收到合约价位查询应答时回调该函数 + virtual void onRspMBLQuot(CSgitMBLQuotData *pMBLQuotData,CSgitFtdcRspInfoField *pRspMsg,int nRequestID,bool bIsLast){}; + +}; + +class TRADER_API_EXPORT CSgitFtdcTraderApi +{ +public: + ///创建TraderApi + ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录 + ///@return 创建出的UserApi + static CSgitFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = ""); + + ///删除接口对象本身 + ///@remark 不再使用本接口对象时,调用该函数删除接口对象 + virtual void Release() = 0; + + ///初始化 + ///@remark 初始化运行环境,只有调用后,接口才开始工作 + ///isLogged 开发调试时使用true,可以打印出收到的消息包内容 + virtual void Init(bool isLogged) = 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 pSpi 派生自回调接口类的实例 + virtual void RegisterSpi(CSgitFtdcTraderSpi *pSpi) = 0; + + ///订阅私有流。 + ///@param nResumeType 私有流重传方式 + /// Sgit_TERT_RESTART:从本交易日开始重传 + /// Sgit_TERT_RESUME:从上次收到的续传 + /// Sgit_TERT_QUICK:只传送登录后私有流的内容 + ///@remark 该方法要在Init方法前调用。若不调用则不会收到私有流的数据。 + virtual void SubscribePrivateTopic(Sgit_TE_RESUME_TYPE nResumeType) = 0; + + ///订阅公共流。 + ///@param nResumeType 公共流重传方式 + /// Sgit_TERT_RESTART:从本交易日开始重传 + /// Sgit_TERT_RESUME:从上次收到的续传 + /// Sgit_TERT_QUICK:只传送登录后公共流的内容 + ///@remark 该方法要在Init方法前调用。若不调用则不会收到公共流的数据。 + virtual void SubscribePublicTopic(Sgit_TE_RESUME_TYPE nResumeType) = 0; + + ///发送就绪指令到前置,通知前置可以给自己发送私有流与公共流 + /// @return 0表示成功 + /// @return 其它参见错误码 + /// + virtual int Ready() = 0; + + ///用户登录请求 + virtual int ReqUserLogin(CSgitFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0; + + ///登出请求 + virtual int ReqUserLogout(CSgitFtdcUserLogoutField *pUserLogout, int nRequestID) = 0; + + ///用户口令更新请求 + virtual int ReqUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0; + + ///报单录入请求 + virtual int ReqOrderInsert(CSgitFtdcInputOrderField *pInputOrder, int nRequestID) = 0; + + ///报单操作请求 + virtual int ReqOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, int nRequestID) = 0; + + ///请求查询报单 + virtual int ReqQryOrder(CSgitFtdcQryOrderField *pQryOrder, int nRequestID) = 0; + + ///请求查询资金账户 + virtual int ReqQryTradingAccount(CSgitFtdcQryTradingAccountField *pQryTradingAccount, int nRequestID) = 0; + + ///请求查询投资者 + virtual int ReqQryInvestor(CSgitFtdcQryInvestorField *pQryInvestor, int nRequestID) = 0; + + ///请求查询合约 + virtual int ReqQryInstrument(CSgitFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0; + + ///请求查询投资者持仓明细 + virtual int ReqQryInvestorPositionDetail(CSgitFtdcQryInvestorPositionDetailField *pQryInvestorPositionDetail, int nRequestID) = 0; + + ///请求查询投资者持仓 + virtual int ReqQryInvestorPosition(CSgitFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0; + + /// 发送合约价位查询请求 + virtual int ReqMBLQuot(int iRequestID,CSgitMBLQuotReq *pMBLQuotReq) = 0; + +protected: + ~CSgitFtdcTraderApi(){}; +}; + +#endif diff --git a/vn.sgit/pyscript/SgitFtdcUserApiDataType.h b/vn.sgit/pyscript/SgitFtdcUserApiDataType.h new file mode 100644 index 00000000..8114762a --- /dev/null +++ b/vn.sgit/pyscript/SgitFtdcUserApiDataType.h @@ -0,0 +1,4816 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#ifndef Sgit_FTDCDATATYPE_H +#define Sgit_FTDCDATATYPE_H + +enum Sgit_TE_RESUME_TYPE +{ + Sgit_TERT_RESTART = 0, + Sgit_TERT_RESUME, + Sgit_TERT_QUICK +}; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTraderIDType是一个交易所交易员代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTraderIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorIDType是一个投资者代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerIDType是一个经纪公司代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerAbbrType是一个经纪公司简称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerAbbrType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerNameType是一个经纪公司名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeInstIDType是一个合约在交易所的代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeInstIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderRefType是一个报单引用类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrderRefType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParticipantIDType是一个会员代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParticipantIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserIDType是一个用户代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserIDType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPasswordType是一个密码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPasswordType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientIDType是一个交易编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClientIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentIDType是一个合约代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentIDType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMarketIDType是一个市场代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMarketIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductNameType是一个产品名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProductNameType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeIDType是一个交易所代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeNameType是一个交易所名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeNameType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeAbbrType是一个交易所简称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeAbbrType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeFlagType是一个交易所标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeFlagType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMacAddressType是一个Mac地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMacAddressType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangePropertyType是一个交易所属性类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_EXP_Normal '0' +///根据成交生成报单 +#define Sgit_FTDC_EXP_GenOrderByTrade '1' + +typedef char TSgitFtdcExchangePropertyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDateType是一个日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDateType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimeType是一个时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTimeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLongTimeType是一个长时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLongTimeType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentNameType是一个合约名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentNameType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementGroupIDType是一个结算组代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettlementGroupIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderSysIDType是一个报单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrderSysIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeIDType是一个成交编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeIDType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommandTypeType是一个DB命令类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommandTypeType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIPAddressType是一个IP地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIPAddressType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductInfoType是一个产品信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProductInfoType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProtocolInfoType是一个协议信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProtocolInfoType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBusinessUnitType是一个业务单元类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBusinessUnitType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDepositSeqNoType是一个出入金流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDepositSeqNoType[15]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIdentifiedCardNoType是一个证件号码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIdentifiedCardNoType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIdCardTypeType是一个证件类型类型 +///////////////////////////////////////////////////////////////////////// +///组织机构代码 +#define Sgit_FTDC_ICT_EID '0' +///身份证 +#define Sgit_FTDC_ICT_IDCard '1' +///军官证 +#define Sgit_FTDC_ICT_OfficerIDCard '2' +///警官证 +#define Sgit_FTDC_ICT_PoliceIDCard '3' +///士兵证 +#define Sgit_FTDC_ICT_SoldierIDCard '4' +///户口簿 +#define Sgit_FTDC_ICT_HouseholdRegister '5' +///护照 +#define Sgit_FTDC_ICT_Passport '6' +///台胞证 +#define Sgit_FTDC_ICT_TaiwanCompatriotIDCard '7' +///回乡证 +#define Sgit_FTDC_ICT_HomeComingCard '8' +///营业执照号 +#define Sgit_FTDC_ICT_LicenseNo '9' +///税务登记号 +#define Sgit_FTDC_ICT_TaxNo 'A' +///其他证件 +#define Sgit_FTDC_ICT_OtherCard 'x' + +typedef char TSgitFtdcIdCardTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderLocalIDType是一个本地报单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrderLocalIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserNameType是一个用户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPartyNameType是一个参与人名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPartyNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcErrorMsgType是一个错误信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcErrorMsgType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFieldNameType是一个字段名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFieldNameType[2049]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFieldContentType是一个字段内容类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFieldContentType[2049]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemNameType是一个系统名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSystemNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcContentType是一个消息正文类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcContentType[501]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_IR_All '1' +///投资者组 +#define Sgit_FTDC_IR_Group '2' +///单一投资者 +#define Sgit_FTDC_IR_Single '3' + +typedef char TSgitFtdcInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDepartmentRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_DR_All '1' +///组织架构 +#define Sgit_FTDC_DR_Group '2' +///单一投资者 +#define Sgit_FTDC_DR_Single '3' + +typedef char TSgitFtdcDepartmentRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataSyncStatusType是一个数据同步状态类型 +///////////////////////////////////////////////////////////////////////// +///未同步 +#define Sgit_FTDC_DS_Asynchronous '1' +///同步中 +#define Sgit_FTDC_DS_Synchronizing '2' +///已同步 +#define Sgit_FTDC_DS_Synchronized '3' + +typedef char TSgitFtdcDataSyncStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerDataSyncStatusType是一个经纪公司数据同步状态类型 +///////////////////////////////////////////////////////////////////////// +///已同步 +#define Sgit_FTDC_BDS_Synchronized '1' +///同步中 +#define Sgit_FTDC_BDS_Synchronizing '2' + +typedef char TSgitFtdcBrokerDataSyncStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeConnectStatusType是一个交易所连接状态类型 +///////////////////////////////////////////////////////////////////////// +///没有任何连接 +#define Sgit_FTDC_ECS_NoConnection '1' +///已经发出合约查询请求 +#define Sgit_FTDC_ECS_QryInstrumentSent '2' +///已经获取信息 +#define Sgit_FTDC_ECS_GotInformation '9' + +typedef char TSgitFtdcExchangeConnectStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTraderConnectStatusType是一个交易所交易员连接状态类型 +///////////////////////////////////////////////////////////////////////// +///没有任何连接 +#define Sgit_FTDC_TCS_NotConnected '1' +///已经连接 +#define Sgit_FTDC_TCS_Connected '2' +///已经发出合约查询请求 +#define Sgit_FTDC_TCS_QryInstrumentSent '3' +///订阅私有流 +#define Sgit_FTDC_TCS_SubPrivateFlow '4' + +typedef char TSgitFtdcTraderConnectStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionCodeType是一个功能代码类型 +///////////////////////////////////////////////////////////////////////// +///数据异步化 +#define Sgit_FTDC_FC_DataAsync '1' +///强制用户登出 +#define Sgit_FTDC_FC_ForceUserLogout '2' +///变更管理用户口令 +#define Sgit_FTDC_FC_UserPasswordUpdate '3' +///变更经纪公司口令 +#define Sgit_FTDC_FC_BrokerPasswordUpdate '4' +///变更投资者口令 +#define Sgit_FTDC_FC_InvestorPasswordUpdate '5' +///报单插入 +#define Sgit_FTDC_FC_OrderInsert '6' +///报单操作 +#define Sgit_FTDC_FC_OrderAction '7' +///同步系统数据 +#define Sgit_FTDC_FC_SyncSystemData '8' +///同步经纪公司数据 +#define Sgit_FTDC_FC_SyncBrokerData '9' +///批量同步经纪公司数据 +#define Sgit_FTDC_FC_BachSyncBrokerData 'A' +///超级查询 +#define Sgit_FTDC_FC_SuperQuery 'B' +///报单插入 +#define Sgit_FTDC_FC_ParkedOrderInsert 'C' +///报单操作 +#define Sgit_FTDC_FC_ParkedOrderAction 'D' +///同步动态令牌 +#define Sgit_FTDC_FC_SyncOTP 'E' + +typedef char TSgitFtdcFunctionCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerFunctionCodeType是一个经纪公司功能代码类型 +///////////////////////////////////////////////////////////////////////// +///强制用户登出 +#define Sgit_FTDC_BFC_ForceUserLogout '1' +///变更用户口令 +#define Sgit_FTDC_BFC_UserPasswordUpdate '2' +///同步经纪公司数据 +#define Sgit_FTDC_BFC_SyncBrokerData '3' +///批量同步经纪公司数据 +#define Sgit_FTDC_BFC_BachSyncBrokerData '4' +///报单插入 +#define Sgit_FTDC_BFC_OrderInsert '5' +///报单操作 +#define Sgit_FTDC_BFC_OrderAction '6' +///全部查询 +#define Sgit_FTDC_BFC_AllQuery '7' +///系统功能:登入/登出/修改密码等 +#define Sgit_FTDC_BFC_log 'a' +///基本查询:查询基础数据,如合约,交易所等常量 +#define Sgit_FTDC_BFC_BaseQry 'b' +///交易查询:如查成交,委托 +#define Sgit_FTDC_BFC_TradeQry 'c' +///交易功能:报单,撤单 +#define Sgit_FTDC_BFC_Trade 'd' +///银期转账 +#define Sgit_FTDC_BFC_Virement 'e' +///风险监控 +#define Sgit_FTDC_BFC_Risk 'f' +///查询/管理:查询会话,踢人等 +#define Sgit_FTDC_BFC_Session 'g' +///风控通知控制 +#define Sgit_FTDC_BFC_RiskNoticeCtl 'h' +///风控通知发送 +#define Sgit_FTDC_BFC_RiskNotice 'i' +///察看经纪公司资金权限 +#define Sgit_FTDC_BFC_BrokerDeposit 'j' +///资金查询 +#define Sgit_FTDC_BFC_QueryFund 'k' +///报单查询 +#define Sgit_FTDC_BFC_QueryOrder 'l' +///成交查询 +#define Sgit_FTDC_BFC_QueryTrade 'm' +///持仓查询 +#define Sgit_FTDC_BFC_QueryPosition 'n' +///行情查询 +#define Sgit_FTDC_BFC_QueryMarketData 'o' +///用户事件查询 +#define Sgit_FTDC_BFC_QueryUserEvent 'p' +///风险通知查询 +#define Sgit_FTDC_BFC_QueryRiskNotify 'q' +///出入金查询 +#define Sgit_FTDC_BFC_QueryFundChange 'r' +///投资者信息查询 +#define Sgit_FTDC_BFC_QueryInvestor 's' +///交易编码查询 +#define Sgit_FTDC_BFC_QueryTradingCode 't' +///强平 +#define Sgit_FTDC_BFC_ForceClose 'u' +///压力测试 +#define Sgit_FTDC_BFC_PressTest 'v' +///权益反算 +#define Sgit_FTDC_BFC_RemainCalc 'w' +///净持仓保证金指标 +#define Sgit_FTDC_BFC_NetPositionInd 'x' +///风险预算 +#define Sgit_FTDC_BFC_RiskPredict 'y' +///数据导出 +#define Sgit_FTDC_BFC_DataExport 'z' +///风控指标设置 +#define Sgit_FTDC_BFC_RiskTargetSetup 'A' +///行情预警 +#define Sgit_FTDC_BFC_MarketDataWarn 'B' +///业务通知查询 +#define Sgit_FTDC_BFC_QryBizNotice 'C' +///业务通知模板设置 +#define Sgit_FTDC_BFC_CfgBizNotice 'D' +///同步动态令牌 +#define Sgit_FTDC_BFC_SyncOTP 'E' +///发送业务通知 +#define Sgit_FTDC_BFC_SendBizNotice 'F' +///风险级别标准设置 +#define Sgit_FTDC_BFC_CfgRiskLevelStd 'G' + +typedef char TSgitFtdcBrokerFunctionCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderActionStatusType是一个报单操作状态类型 +///////////////////////////////////////////////////////////////////////// +///已经提交 +#define Sgit_FTDC_OAS_Submitted 'a' +///已经接受 +#define Sgit_FTDC_OAS_Accepted 'b' +///已经被拒绝 +#define Sgit_FTDC_OAS_Rejected 'c' + +typedef char TSgitFtdcOrderActionStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderStatusType是一个报单状态类型 +///////////////////////////////////////////////////////////////////////// +///全部成交 +#define Sgit_FTDC_OST_AllTraded '0' +///部分成交还在队列中 +#define Sgit_FTDC_OST_PartTradedQueueing '1' +///部分成交不在队列中 +#define Sgit_FTDC_OST_PartTradedNotQueueing '2' +///未成交还在队列中 +#define Sgit_FTDC_OST_NoTradeQueueing '3' +///未成交不在队列中 +#define Sgit_FTDC_OST_NoTradeNotQueueing '4' +///撤单 +#define Sgit_FTDC_OST_Canceled '5' +///未知 +#define Sgit_FTDC_OST_Unknown 'a' +///尚未触发 +#define Sgit_FTDC_OST_NotTouched 'b' +///已触发 +#define Sgit_FTDC_OST_Touched 'c' + +typedef char TSgitFtdcOrderStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderSubmitStatusType是一个报单提交状态类型 +///////////////////////////////////////////////////////////////////////// +///已经提交 +#define Sgit_FTDC_OSS_InsertSubmitted '0' +///撤单已经提交 +#define Sgit_FTDC_OSS_CancelSubmitted '1' +///修改已经提交 +#define Sgit_FTDC_OSS_ModifySubmitted '2' +///已经接受 +#define Sgit_FTDC_OSS_Accepted '3' +///报单已经被拒绝 +#define Sgit_FTDC_OSS_InsertRejected '4' +///撤单已经被拒绝 +#define Sgit_FTDC_OSS_CancelRejected '5' +///改单已经被拒绝 +#define Sgit_FTDC_OSS_ModifyRejected '6' + +typedef char TSgitFtdcOrderSubmitStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionDateType是一个持仓日期类型 +///////////////////////////////////////////////////////////////////////// +///今日持仓 +#define Sgit_FTDC_PSD_Today '1' +///历史持仓 +#define Sgit_FTDC_PSD_History '2' + +typedef char TSgitFtdcPositionDateType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionDateTypeType是一个持仓日期类型类型 +///////////////////////////////////////////////////////////////////////// +///使用历史持仓 +#define Sgit_FTDC_PDT_UseHistory '1' +///不使用历史持仓 +#define Sgit_FTDC_PDT_NoUseHistory '2' + +typedef char TSgitFtdcPositionDateTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradingRoleType是一个交易角色类型 +///////////////////////////////////////////////////////////////////////// +///代理 +#define Sgit_FTDC_ER_Broker '1' +///自营 +#define Sgit_FTDC_ER_Host '2' +///做市商 +#define Sgit_FTDC_ER_Maker '3' + +typedef char TSgitFtdcTradingRoleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductClassType是一个产品类型类型 +///////////////////////////////////////////////////////////////////////// +///期货 +#define Sgit_FTDC_PC_Futures '1' +///期权 +#define Sgit_FTDC_PC_Options '2' +///组合 +#define Sgit_FTDC_PC_Combination '3' +///即期 +#define Sgit_FTDC_PC_Spot '4' +///期转现 +#define Sgit_FTDC_PC_EFP '5' + +typedef char TSgitFtdcProductClassType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstLifePhaseType是一个合约生命周期状态类型 +///////////////////////////////////////////////////////////////////////// +///未上市 +#define Sgit_FTDC_IP_NotStart '0' +///上市 +#define Sgit_FTDC_IP_Started '1' +///停牌 +#define Sgit_FTDC_IP_Pause '2' +///到期 +#define Sgit_FTDC_IP_Expired '3' + +typedef char TSgitFtdcInstLifePhaseType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDirectionType是一个买卖方向类型 +///////////////////////////////////////////////////////////////////////// +///买 +#define Sgit_FTDC_D_Buy '0' +///卖 +#define Sgit_FTDC_D_Sell '1' + +typedef char TSgitFtdcDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionTypeType是一个持仓类型类型 +///////////////////////////////////////////////////////////////////////// +///净持仓 +#define Sgit_FTDC_PT_Net '1' +///综合持仓 +#define Sgit_FTDC_PT_Gross '2' + +typedef char TSgitFtdcPositionTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPosiDirectionType是一个持仓多空方向类型 +///////////////////////////////////////////////////////////////////////// +///净 +#define Sgit_FTDC_PD_Net '1' +///多头 +#define Sgit_FTDC_PD_Long '2' +///空头 +#define Sgit_FTDC_PD_Short '3' + +typedef char TSgitFtdcPosiDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSysSettlementStatusType是一个系统结算状态类型 +///////////////////////////////////////////////////////////////////////// +///不活跃 +#define Sgit_FTDC_SS_NonActive '1' +///启动 +#define Sgit_FTDC_SS_Startup '2' +///操作 +#define Sgit_FTDC_SS_Operating '3' +///结算 +#define Sgit_FTDC_SS_Settlement '4' +///结算完成 +#define Sgit_FTDC_SS_SettlementFinished '5' + +typedef char TSgitFtdcSysSettlementStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRatioAttrType是一个费率属性类型 +///////////////////////////////////////////////////////////////////////// +///交易费率 +#define Sgit_FTDC_RA_Trade '0' +///结算费率 +#define Sgit_FTDC_RA_Settlement '1' + +typedef char TSgitFtdcRatioAttrType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcHedgeFlagType是一个投机套保标志类型 +///////////////////////////////////////////////////////////////////////// +///投机 +#define Sgit_FTDC_HF_Speculation '1' +///套利 +#define Sgit_FTDC_HF_Arbitrage '2' +///套保 +#define Sgit_FTDC_HF_Hedge '3' + +typedef char TSgitFtdcHedgeFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillHedgeFlagType是一个投机套保标志类型 +///////////////////////////////////////////////////////////////////////// +///投机 +#define Sgit_FTDC_BHF_Speculation '1' +///套利 +#define Sgit_FTDC_BHF_Arbitrage '2' +///套保 +#define Sgit_FTDC_BHF_Hedge '3' + +typedef char TSgitFtdcBillHedgeFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientIDTypeType是一个交易编码类型类型 +///////////////////////////////////////////////////////////////////////// +///投机 +#define Sgit_FTDC_CIDT_Speculation '1' +///套利 +#define Sgit_FTDC_CIDT_Arbitrage '2' +///套保 +#define Sgit_FTDC_CIDT_Hedge '3' + +typedef char TSgitFtdcClientIDTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderPriceTypeType是一个报单价格条件类型 +///////////////////////////////////////////////////////////////////////// +///任意价 +#define Sgit_FTDC_OPT_AnyPrice '1' +///限价 +#define Sgit_FTDC_OPT_LimitPrice '2' +///最优价 +#define Sgit_FTDC_OPT_BestPrice '3' +///最新价 +#define Sgit_FTDC_OPT_LastPrice '4' +///最新价浮动上浮1个ticks +#define Sgit_FTDC_OPT_LastPricePlusOneTicks '5' +///最新价浮动上浮2个ticks +#define Sgit_FTDC_OPT_LastPricePlusTwoTicks '6' +///最新价浮动上浮3个ticks +#define Sgit_FTDC_OPT_LastPricePlusThreeTicks '7' +///卖一价 +#define Sgit_FTDC_OPT_AskPrice1 '8' +///卖一价浮动上浮1个ticks +#define Sgit_FTDC_OPT_AskPrice1PlusOneTicks '9' +///卖一价浮动上浮2个ticks +#define Sgit_FTDC_OPT_AskPrice1PlusTwoTicks 'A' +///卖一价浮动上浮3个ticks +#define Sgit_FTDC_OPT_AskPrice1PlusThreeTicks 'B' +///买一价 +#define Sgit_FTDC_OPT_BidPrice1 'C' +///买一价浮动上浮1个ticks +#define Sgit_FTDC_OPT_BidPrice1PlusOneTicks 'D' +///买一价浮动上浮2个ticks +#define Sgit_FTDC_OPT_BidPrice1PlusTwoTicks 'E' +///买一价浮动上浮3个ticks +#define Sgit_FTDC_OPT_BidPrice1PlusThreeTicks 'F' + +typedef char TSgitFtdcOrderPriceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOffsetFlagType是一个开平标志类型 +///////////////////////////////////////////////////////////////////////// +///开仓 +#define Sgit_FTDC_OF_Open '0' +///平仓 +#define Sgit_FTDC_OF_Close '1' +///强平 +#define Sgit_FTDC_OF_ForceClose '2' +///平今 +#define Sgit_FTDC_OF_CloseToday '3' +///平昨 +#define Sgit_FTDC_OF_CloseYesterday '4' +///强减 +#define Sgit_FTDC_OF_ForceOff '5' +///本地强平 +#define Sgit_FTDC_OF_LocalForceClose '6' + +typedef char TSgitFtdcOffsetFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcForceCloseReasonType是一个强平原因类型 +///////////////////////////////////////////////////////////////////////// +///非强平 +#define Sgit_FTDC_FCC_NotForceClose '0' +///资金不足 +#define Sgit_FTDC_FCC_LackDeposit '1' +///客户超仓 +#define Sgit_FTDC_FCC_ClientOverPositionLimit '2' +///会员超仓 +#define Sgit_FTDC_FCC_MemberOverPositionLimit '3' +///持仓非整数倍 +#define Sgit_FTDC_FCC_NotMultiple '4' +///违规 +#define Sgit_FTDC_FCC_Violation '5' +///其它 +#define Sgit_FTDC_FCC_Other '6' +///自然人临近交割 +#define Sgit_FTDC_FCC_PersonDeliv '7' + +typedef char TSgitFtdcForceCloseReasonType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderTypeType是一个报单类型类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_ORDT_Normal '0' +///报价衍生 +#define Sgit_FTDC_ORDT_DeriveFromQuote '1' +///组合衍生 +#define Sgit_FTDC_ORDT_DeriveFromCombination '2' +///组合报单 +#define Sgit_FTDC_ORDT_Combination '3' +///条件单 +#define Sgit_FTDC_ORDT_ConditionalOrder '4' +///互换单 +#define Sgit_FTDC_ORDT_Swap '5' + +typedef char TSgitFtdcOrderTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimeConditionType是一个有效期类型类型 +///////////////////////////////////////////////////////////////////////// +///立即完成,否则撤销 +#define Sgit_FTDC_TC_IOC '1' +///本节有效 +#define Sgit_FTDC_TC_GFS '2' +///当日有效 +#define Sgit_FTDC_TC_GFD '3' +///指定日期前有效 +#define Sgit_FTDC_TC_GTD '4' +///撤销前有效 +#define Sgit_FTDC_TC_GTC '5' +///集合竞价有效 +#define Sgit_FTDC_TC_GFA '6' + +typedef char TSgitFtdcTimeConditionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVolumeConditionType是一个成交量类型类型 +///////////////////////////////////////////////////////////////////////// +///任何数量 +#define Sgit_FTDC_VC_AV '1' +///最小数量 +#define Sgit_FTDC_VC_MV '2' +///全部数量 +#define Sgit_FTDC_VC_CV '3' + +typedef char TSgitFtdcVolumeConditionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcContingentConditionType是一个触发条件类型 +///////////////////////////////////////////////////////////////////////// +///立即 +#define Sgit_FTDC_CC_Immediately '1' +///止损 +#define Sgit_FTDC_CC_Touch '2' +///止赢 +#define Sgit_FTDC_CC_TouchProfit '3' +///预埋单 +#define Sgit_FTDC_CC_ParkedOrder '4' +///最新价大于条件价 +#define Sgit_FTDC_CC_LastPriceGreaterThanStopPrice '5' +///最新价大于等于条件价 +#define Sgit_FTDC_CC_LastPriceGreaterEqualStopPrice '6' +///最新价小于条件价 +#define Sgit_FTDC_CC_LastPriceLesserThanStopPrice '7' +///最新价小于等于条件价 +#define Sgit_FTDC_CC_LastPriceLesserEqualStopPrice '8' +///卖一价大于条件价 +#define Sgit_FTDC_CC_AskPriceGreaterThanStopPrice '9' +///卖一价大于等于条件价 +#define Sgit_FTDC_CC_AskPriceGreaterEqualStopPrice 'A' +///卖一价小于条件价 +#define Sgit_FTDC_CC_AskPriceLesserThanStopPrice 'B' +///卖一价小于等于条件价 +#define Sgit_FTDC_CC_AskPriceLesserEqualStopPrice 'C' +///买一价大于条件价 +#define Sgit_FTDC_CC_BidPriceGreaterThanStopPrice 'D' +///买一价大于等于条件价 +#define Sgit_FTDC_CC_BidPriceGreaterEqualStopPrice 'E' +///买一价小于条件价 +#define Sgit_FTDC_CC_BidPriceLesserThanStopPrice 'F' +///买一价小于等于条件价 +#define Sgit_FTDC_CC_BidPriceLesserEqualStopPrice 'H' + +typedef char TSgitFtdcContingentConditionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcActionFlagType是一个操作标志类型 +///////////////////////////////////////////////////////////////////////// +///删除 +#define Sgit_FTDC_AF_Delete '0' +///修改 +#define Sgit_FTDC_AF_Modify '3' + +typedef char TSgitFtdcActionFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradingRightType是一个交易权限类型 +///////////////////////////////////////////////////////////////////////// +///可以交易 +#define Sgit_FTDC_TR_Allow '0' +///只能平仓 +#define Sgit_FTDC_TR_CloseOnly '1' +///不能交易 +#define Sgit_FTDC_TR_Forbidden '2' + +typedef char TSgitFtdcTradingRightType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderSourceType是一个报单来源类型 +///////////////////////////////////////////////////////////////////////// +///来自参与者 +#define Sgit_FTDC_OSRC_Participant '0' +///来自管理员 +#define Sgit_FTDC_OSRC_Administrator '1' + +typedef char TSgitFtdcOrderSourceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeTypeType是一个成交类型类型 +///////////////////////////////////////////////////////////////////////// +///普通成交 +#define Sgit_FTDC_TRDT_Common '0' +///期权执行 +#define Sgit_FTDC_TRDT_OptionsExecution '1' +///OTC成交 +#define Sgit_FTDC_TRDT_OTC '2' +///期转现衍生成交 +#define Sgit_FTDC_TRDT_EFPDerived '3' +///组合衍生成交 +#define Sgit_FTDC_TRDT_CombinationDerived '4' + +typedef char TSgitFtdcTradeTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPriceSourceType是一个成交价来源类型 +///////////////////////////////////////////////////////////////////////// +///前成交价 +#define Sgit_FTDC_PSRC_LastPrice '0' +///买委托价 +#define Sgit_FTDC_PSRC_Buy '1' +///卖委托价 +#define Sgit_FTDC_PSRC_Sell '2' + +typedef char TSgitFtdcPriceSourceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentStatusType是一个合约交易状态类型 +///////////////////////////////////////////////////////////////////////// +///开盘前 +#define Sgit_FTDC_IS_BeforeTrading '0' +///非交易 +#define Sgit_FTDC_IS_NoTrading '1' +///连续交易 +#define Sgit_FTDC_IS_Continous '2' +///集合竞价报单 +#define Sgit_FTDC_IS_AuctionOrdering '3' +///集合竞价价格平衡 +#define Sgit_FTDC_IS_AuctionBalance '4' +///集合竞价撮合 +#define Sgit_FTDC_IS_AuctionMatch '5' +///收盘 +#define Sgit_FTDC_IS_Closed '6' + +typedef char TSgitFtdcInstrumentStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstStatusEnterReasonType是一个品种进入交易状态原因类型 +///////////////////////////////////////////////////////////////////////// +///自动切换 +#define Sgit_FTDC_IER_Automatic '1' +///手动切换 +#define Sgit_FTDC_IER_Manual '2' +///熔断 +#define Sgit_FTDC_IER_Fuse '3' + +typedef char TSgitFtdcInstStatusEnterReasonType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderActionRefType是一个报单操作引用类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcOrderActionRefType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstallCountType是一个安装数量类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcInstallCountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstallIDType是一个安装编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcInstallIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcErrorIDType是一个错误代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcErrorIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementIDType是一个结算编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSettlementIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVolumeType是一个数量类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcVolumeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFrontIDType是一个前置编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFrontIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSessionIDType是一个会话编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSessionIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceNoType是一个序号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSequenceNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommandNoType是一个DB命令序号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCommandNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMillisecType是一个时间(毫秒)类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcMillisecType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVolumeMultipleType是一个合约数量乘数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcVolumeMultipleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradingSegmentSNType是一个交易阶段编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTradingSegmentSNType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRequestIDType是一个请求编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcRequestIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcYearType是一个年份类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcYearType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMonthType是一个月份类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcMonthType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBoolType是一个布尔型类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcBoolType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPriceType是一个价格类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcPriceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombOffsetFlagType是一个组合开平标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombOffsetFlagType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombHedgeFlagType是一个组合投机套保标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombHedgeFlagType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRatioType是一个比率类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcRatioType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMoneyType是一个资金类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcMoneyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLargeVolumeType是一个大额数量类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcLargeVolumeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceSeriesType是一个序列系列号类型 +///////////////////////////////////////////////////////////////////////// +typedef short TSgitFtdcSequenceSeriesType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommPhaseNoType是一个通讯时段编号类型 +///////////////////////////////////////////////////////////////////////// +typedef short TSgitFtdcCommPhaseNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceLabelType是一个序列编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSequenceLabelType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPriorityType是一个优先级类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcPriorityType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcContractCodeType是一个合同编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcContractCodeType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCityType是一个市类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCityType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIsStockType是一个是否股民类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIsStockType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcChannelType是一个渠道类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcChannelType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAddressType是一个通讯地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAddressType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcZipCodeType是一个邮政编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcZipCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTelephoneType是一个联系电话类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTelephoneType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFaxType是一个传真类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFaxType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMobileType是一个手机类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMobileType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEMailType是一个电子邮件类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEMailType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMemoType是一个备注类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMemoType[161]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCompanyCodeType是一个企业代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCompanyCodeType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcWebsiteType是一个网站地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcWebsiteType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTaxNoType是一个税务登记号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTaxNoType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBatchStatusType是一个处理状态类型 +///////////////////////////////////////////////////////////////////////// +///未上传 +#define Sgit_FTDC_BS_NoUpload '1' +///已上传 +#define Sgit_FTDC_BS_Uploaded '2' +///审核失败 +#define Sgit_FTDC_BS_Failed '3' + +typedef char TSgitFtdcBatchStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyIDType是一个属性代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPropertyIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyNameType是一个属性名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPropertyNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLicenseNoType是一个营业执照号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLicenseNoType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentIDType是一个经纪人代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentNameType是一个经纪人名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentGroupIDType是一个经纪人组代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentGroupIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentGroupNameType是一个经纪人组名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentGroupNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnStyleType是一个按品种返还方式类型 +///////////////////////////////////////////////////////////////////////// +///按所有品种 +#define Sgit_FTDC_RS_All '1' +///按品种 +#define Sgit_FTDC_RS_ByProduct '2' + +typedef char TSgitFtdcReturnStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnPatternType是一个返还模式类型 +///////////////////////////////////////////////////////////////////////// +///按成交手数 +#define Sgit_FTDC_RP_ByVolume '1' +///按留存手续费 +#define Sgit_FTDC_RP_ByFeeOnHand '2' + +typedef char TSgitFtdcReturnPatternType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnLevelType是一个返还级别类型 +///////////////////////////////////////////////////////////////////////// +///级别1 +#define Sgit_FTDC_RL_Level1 '1' +///级别2 +#define Sgit_FTDC_RL_Level2 '2' +///级别3 +#define Sgit_FTDC_RL_Level3 '3' +///级别4 +#define Sgit_FTDC_RL_Level4 '4' +///级别5 +#define Sgit_FTDC_RL_Level5 '5' +///级别6 +#define Sgit_FTDC_RL_Level6 '6' +///级别7 +#define Sgit_FTDC_RL_Level7 '7' +///级别8 +#define Sgit_FTDC_RL_Level8 '8' +///级别9 +#define Sgit_FTDC_RL_Level9 '9' + +typedef char TSgitFtdcReturnLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnStandardType是一个返还标准类型 +///////////////////////////////////////////////////////////////////////// +///分阶段返还 +#define Sgit_FTDC_RSD_ByPeriod '1' +///按某一标准 +#define Sgit_FTDC_RSD_ByStandard '2' + +typedef char TSgitFtdcReturnStandardType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMortgageTypeType是一个质押类型类型 +///////////////////////////////////////////////////////////////////////// +///质出 +#define Sgit_FTDC_MT_Out '0' +///质入 +#define Sgit_FTDC_MT_In '1' + +typedef char TSgitFtdcMortgageTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorSettlementParamIDType是一个投资者结算参数代码类型 +///////////////////////////////////////////////////////////////////////// +///基础保证金 +#define Sgit_FTDC_ISPI_BaseMargin '1' +///最低权益标准 +#define Sgit_FTDC_ISPI_LowestInterest '2' +///质押比例 +#define Sgit_FTDC_ISPI_MortgageRatio '4' +///保证金算法 +#define Sgit_FTDC_ISPI_MarginWay '5' +///结算单(盯市)权益等于结存 +#define Sgit_FTDC_ISPI_BillDeposit '9' + +typedef char TSgitFtdcInvestorSettlementParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeSettlementParamIDType是一个交易所结算参数代码类型 +///////////////////////////////////////////////////////////////////////// +///质押比例 +#define Sgit_FTDC_ESPI_MortgageRatio '1' +///分项资金导入项 +#define Sgit_FTDC_ESPI_OtherFundItem '2' +///分项资金入交易所出入金 +#define Sgit_FTDC_ESPI_OtherFundImport '3' +///上期所交割手续费收取方式 +#define Sgit_FTDC_ESPI_SHFEDelivFee '4' +///大商所交割手续费收取方式 +#define Sgit_FTDC_ESPI_DCEDelivFee '5' +///中金所开户最低可用金额 +#define Sgit_FTDC_ESPI_CFFEXMinPrepa '6' + +typedef char TSgitFtdcExchangeSettlementParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemParamIDType是一个系统参数代码类型 +///////////////////////////////////////////////////////////////////////// +///投资者代码最小长度 +#define Sgit_FTDC_SPI_InvestorIDMinLength '1' +///投资者帐号代码最小长度 +#define Sgit_FTDC_SPI_AccountIDMinLength '2' +///投资者开户默认登录权限 +#define Sgit_FTDC_SPI_UserRightLogon '3' +///投资者交易结算单成交汇总方式 +#define Sgit_FTDC_SPI_SettlementBillTrade '4' +///统一开户更新交易编码方式 +#define Sgit_FTDC_SPI_TradingCode '5' +///结算是否判断存在未复核的出入金和分项资金 +#define Sgit_FTDC_SPI_CheckFund '6' +///是否启用手续费模板数据权限 +#define Sgit_FTDC_SPI_CommModelRight '7' +///是否规范用户才能激活 +#define Sgit_FTDC_SPI_IsStandardActive '8' +///上传的交易所结算文件路径 +#define Sgit_FTDC_SPI_UploadSettlementFile 'U' +///上报保证金监控中心文件路径 +#define Sgit_FTDC_SPI_DownloadCSRCFile 'D' +///生成的结算单文件路径 +#define Sgit_FTDC_SPI_SettlementBillFile 'S' +///证监会文件标识 +#define Sgit_FTDC_SPI_CSRCOthersFile 'C' +///投资者照片路径 +#define Sgit_FTDC_SPI_InvestorPhoto 'P' +///全结经纪公司上传文件路径 +#define Sgit_FTDC_SPI_CSRCData 'R' +///开户密码录入方式 +#define Sgit_FTDC_SPI_InvestorPwdModel 'I' +///投资者中金所结算文件下载路径 +#define Sgit_FTDC_SPI_CFFEXInvestorSettleFile 'F' +///投资者代码编码方式 +#define Sgit_FTDC_SPI_InvestorIDType 'a' + +typedef char TSgitFtdcSystemParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeParamIDType是一个交易系统参数代码类型 +///////////////////////////////////////////////////////////////////////// +///系统加密算法 +#define Sgit_FTDC_TPID_EncryptionStandard 'E' +///系统风险算法 +#define Sgit_FTDC_TPID_RiskMode 'R' +///系统风险算法是否全局 0-否 1-是 +#define Sgit_FTDC_TPID_RiskModeGlobal 'G' + +typedef char TSgitFtdcTradeParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementParamValueType是一个参数代码值类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettlementParamValueType[256]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCounterIDType是一个计数器代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCounterIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorGroupNameType是一个投资者分组名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorGroupNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrandCodeType是一个牌号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrandCodeType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcWarehouseType是一个仓库类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcWarehouseType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductDateType是一个产期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProductDateType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcGradeType是一个等级类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcGradeType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClassifyType是一个类别类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClassifyType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionType是一个货位类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPositionType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcYieldlyType是一个产地类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcYieldlyType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcWeightType是一个公定重量类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcWeightType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSubEntryFundNoType是一个分项资金流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSubEntryFundNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileIDType是一个文件标识类型 +///////////////////////////////////////////////////////////////////////// +///资金数据 +#define Sgit_FTDC_FI_SettlementFund 'F' +///成交数据 +#define Sgit_FTDC_FI_Trade 'T' +///投资者持仓数据 +#define Sgit_FTDC_FI_InvestorPosition 'P' +///投资者分项资金数据 +#define Sgit_FTDC_FI_SubEntryFund 'O' +///郑商所组合持仓数据 +#define Sgit_FTDC_FI_CZCECombinationPos 'C' +///上报保证金监控中心数据 +#define Sgit_FTDC_FI_CSRCData 'R' + +typedef char TSgitFtdcFileIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileNameType是一个文件名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFileNameType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileTypeType是一个文件上传类型类型 +///////////////////////////////////////////////////////////////////////// +///结算 +#define Sgit_FTDC_FUT_Settlement '0' +///核对 +#define Sgit_FTDC_FUT_Check '1' + +typedef char TSgitFtdcFileTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileFormatType是一个文件格式类型 +///////////////////////////////////////////////////////////////////////// +///文本文件(.txt) +#define Sgit_FTDC_FFT_Txt '0' +///压缩文件(.zip) +#define Sgit_FTDC_FFT_Zip '1' +///DBF文件(.dbf) +#define Sgit_FTDC_FFT_DBF '2' + +typedef char TSgitFtdcFileFormatType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileUploadStatusType是一个文件状态类型 +///////////////////////////////////////////////////////////////////////// +///上传成功 +#define Sgit_FTDC_FUS_SucceedUpload '1' +///上传失败 +#define Sgit_FTDC_FUS_FailedUpload '2' +///导入成功 +#define Sgit_FTDC_FUS_SucceedLoad '3' +///导入部分成功 +#define Sgit_FTDC_FUS_PartSucceedLoad '4' +///导入失败 +#define Sgit_FTDC_FUS_FailedLoad '5' + +typedef char TSgitFtdcFileUploadStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferDirectionType是一个移仓方向类型 +///////////////////////////////////////////////////////////////////////// +///移出 +#define Sgit_FTDC_TD_Out '0' +///移入 +#define Sgit_FTDC_TD_In '1' + +typedef char TSgitFtdcTransferDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUploadModeType是一个上传文件类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUploadModeType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAccountIDType是一个投资者帐号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAccountIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankFlagType是一个银行统一标识类型类型 +///////////////////////////////////////////////////////////////////////// +///工商银行 +#define Sgit_FTDC_BF_ICBC '1' +///农业银行 +#define Sgit_FTDC_BF_ABC '2' +///中国银行 +#define Sgit_FTDC_BF_BC '3' +///建设银行 +#define Sgit_FTDC_BF_CBC '4' +///交通银行 +#define Sgit_FTDC_BF_BOC '5' +///其他银行 +#define Sgit_FTDC_BF_Other 'Z' + +typedef char TSgitFtdcBankFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccountType是一个银行账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankAccountType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOpenNameType是一个银行账户的开户人名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOpenNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOpenBankType是一个银行账户的开户行类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOpenBankType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankNameType是一个银行名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankNameType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPublishPathType是一个发布路径类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPublishPathType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperatorIDType是一个操作员代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperatorIDType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMonthCountType是一个月份数量类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcMonthCountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAdvanceMonthArrayType是一个月份提前数组类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAdvanceMonthArrayType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDateExprType是一个日期表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDateExprType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentIDExprType是一个合约代码表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentIDExprType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentNameExprType是一个合约名称表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentNameExprType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSpecialCreateRuleType是一个特殊的创建规则类型 +///////////////////////////////////////////////////////////////////////// +///没有特殊创建规则 +#define Sgit_FTDC_SC_NoSpecialRule '0' +///不包含春节 +#define Sgit_FTDC_SC_NoSpringFestival '1' + +typedef char TSgitFtdcSpecialCreateRuleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBasisPriceTypeType是一个挂牌基准价类型类型 +///////////////////////////////////////////////////////////////////////// +///上一合约结算价 +#define Sgit_FTDC_IPT_LastSettlement '1' +///上一合约收盘价 +#define Sgit_FTDC_IPT_LaseClose '2' + +typedef char TSgitFtdcBasisPriceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductLifePhaseType是一个产品生命周期状态类型 +///////////////////////////////////////////////////////////////////////// +///活跃 +#define Sgit_FTDC_PLP_Active '1' +///不活跃 +#define Sgit_FTDC_PLP_NonActive '2' +///注销 +#define Sgit_FTDC_PLP_Canceled '3' + +typedef char TSgitFtdcProductLifePhaseType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDeliveryModeType是一个交割方式类型 +///////////////////////////////////////////////////////////////////////// +///现金交割 +#define Sgit_FTDC_DM_CashDeliv '1' +///实物交割 +#define Sgit_FTDC_DM_CommodityDeliv '2' + +typedef char TSgitFtdcDeliveryModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLogLevelType是一个日志级别类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLogLevelType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessNameType是一个存储过程名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProcessNameType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperationMemoType是一个操作摘要类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperationMemoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundIOTypeType是一个出入金类型类型 +///////////////////////////////////////////////////////////////////////// +///出入金 +#define Sgit_FTDC_FIOT_FundIO '1' +///银期转帐 +#define Sgit_FTDC_FIOT_Transfer '2' + +typedef char TSgitFtdcFundIOTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundTypeType是一个资金类型类型 +///////////////////////////////////////////////////////////////////////// +///银行存款 +#define Sgit_FTDC_FT_Deposite '1' +///分项资金 +#define Sgit_FTDC_FT_ItemFund '2' +///公司调整 +#define Sgit_FTDC_FT_Company '3' + +typedef char TSgitFtdcFundTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundDirectionType是一个出入金方向类型 +///////////////////////////////////////////////////////////////////////// +///入金 +#define Sgit_FTDC_FD_In '1' +///出金 +#define Sgit_FTDC_FD_Out '2' + +typedef char TSgitFtdcFundDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundStatusType是一个资金状态类型 +///////////////////////////////////////////////////////////////////////// +///已录入 +#define Sgit_FTDC_FS_Record '1' +///已复核 +#define Sgit_FTDC_FS_Check '2' +///已冲销 +#define Sgit_FTDC_FS_Charge '3' + +typedef char TSgitFtdcFundStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillNoType是一个票据号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBillNoType[15]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillNameType是一个票据名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBillNameType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPublishStatusType是一个发布状态类型 +///////////////////////////////////////////////////////////////////////// +///未发布 +#define Sgit_FTDC_PS_None '1' +///正在发布 +#define Sgit_FTDC_PS_Publishing '2' +///已发布 +#define Sgit_FTDC_PS_Published '3' + +typedef char TSgitFtdcPublishStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueIDType是一个枚举值代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueIDType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueTypeType是一个枚举值类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueTypeType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueLabelType是一个枚举值名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueLabelType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueResultType是一个枚举值结果类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueResultType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemStatusType是一个系统状态类型 +///////////////////////////////////////////////////////////////////////// +///不活跃 +#define Sgit_FTDC_ES_NonActive '1' +///启动 +#define Sgit_FTDC_ES_Startup '2' +///交易开始初始化 +#define Sgit_FTDC_ES_Initialize '3' +///交易完成初始化 +#define Sgit_FTDC_ES_Initialized '4' +///收市开始 +#define Sgit_FTDC_ES_Close '5' +///收市完成 +#define Sgit_FTDC_ES_Closed '6' +///结算 +#define Sgit_FTDC_ES_Settlement '7' + +typedef char TSgitFtdcSystemStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementStatusType是一个结算状态类型 +///////////////////////////////////////////////////////////////////////// +///初始 +#define Sgit_FTDC_STS_Initialize '0' +///结算中 +#define Sgit_FTDC_STS_Settlementing '1' +///已结算 +#define Sgit_FTDC_STS_Settlemented '2' +///结算完成 +#define Sgit_FTDC_STS_Finished '3' + +typedef char TSgitFtdcSettlementStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRangeIntTypeType是一个限定值类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRangeIntTypeType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRangeIntFromType是一个限定值下限类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRangeIntFromType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRangeIntToType是一个限定值上限类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRangeIntToType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionIDType是一个功能代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionIDType[25]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionValueCodeType是一个功能编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionValueCodeType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionNameType是一个功能名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRoleIDType是一个角色编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRoleIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRoleNameType是一个角色名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRoleNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDescriptionType是一个描述类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDescriptionType[401]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombineIDType是一个组合编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombineIDType[25]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombineTypeType是一个组合类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombineTypeType[25]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorTypeType是一个投资者类型类型 +///////////////////////////////////////////////////////////////////////// +///自然人 +#define Sgit_FTDC_CT_Person '0' +///法人 +#define Sgit_FTDC_CT_Company '1' +///投资基金 +#define Sgit_FTDC_CT_Fund '2' + +typedef char TSgitFtdcInvestorTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerTypeType是一个经纪公司类型类型 +///////////////////////////////////////////////////////////////////////// +///交易会员 +#define Sgit_FTDC_BT_Trade '0' +///交易结算会员 +#define Sgit_FTDC_BT_TradeSettle '1' + +typedef char TSgitFtdcBrokerTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskLevelType是一个风险等级类型 +///////////////////////////////////////////////////////////////////////// +///低风险客户 +#define Sgit_FTDC_FAS_Low '1' +///普通客户 +#define Sgit_FTDC_FAS_Normal '2' +///关注客户 +#define Sgit_FTDC_FAS_Focus '3' +///风险客户 +#define Sgit_FTDC_FAS_Risk '4' + +typedef char TSgitFtdcRiskLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFeeAcceptStyleType是一个手续费收取方式类型 +///////////////////////////////////////////////////////////////////////// +///按交易收取 +#define Sgit_FTDC_FAS_ByTrade '1' +///按交割收取 +#define Sgit_FTDC_FAS_ByDeliv '2' +///不收 +#define Sgit_FTDC_FAS_None '3' +///按指定手续费收取 +#define Sgit_FTDC_FAS_FixFee '4' + +typedef char TSgitFtdcFeeAcceptStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPasswordTypeType是一个密码类型类型 +///////////////////////////////////////////////////////////////////////// +///交易密码 +#define Sgit_FTDC_PWDT_Trade '1' +///资金密码 +#define Sgit_FTDC_PWDT_Account '2' + +typedef char TSgitFtdcPasswordTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAlgorithmType是一个盈亏算法类型 +///////////////////////////////////////////////////////////////////////// +///浮盈浮亏都计算 +#define Sgit_FTDC_AG_All '1' +///浮盈不计,浮亏计 +#define Sgit_FTDC_AG_OnlyLost '2' +///浮盈计,浮亏不计 +#define Sgit_FTDC_AG_OnlyGain '3' +///浮盈浮亏都不计算 +#define Sgit_FTDC_AG_None '4' + +typedef char TSgitFtdcAlgorithmType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIncludeCloseProfitType是一个是否包含平仓盈利类型 +///////////////////////////////////////////////////////////////////////// +///包含平仓盈利 +#define Sgit_FTDC_ICP_Include '0' +///不包含平仓盈利 +#define Sgit_FTDC_ICP_NotInclude '2' + +typedef char TSgitFtdcIncludeCloseProfitType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAllWithoutTradeType是一个是否受可提比例限制类型 +///////////////////////////////////////////////////////////////////////// +///不受可提比例限制 +#define Sgit_FTDC_AWT_Enable '0' +///受可提比例限制 +#define Sgit_FTDC_AWT_Disable '2' + +typedef char TSgitFtdcAllWithoutTradeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommentType是一个盈亏算法说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommentType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVersionType是一个版本号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcVersionType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeCodeType是一个交易代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeDateType是一个交易日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeDateType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeTimeType是一个交易时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeTimeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSerialType是一个发起方流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeSerialType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSerialNoType是一个发起方流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTradeSerialNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureIDType是一个期货公司代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankIDType是一个银行代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankIDType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankBrchIDType是一个银行分中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankBrchIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankBranchIDType是一个分中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankBranchIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperNoType是一个交易柜员类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperNoType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDeviceIDType是一个渠道标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDeviceIDType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRecordNumType是一个记录数类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRecordNumType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccountType是一个期货资金账号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureAccountType[22]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFuturePwdFlagType是一个资金密码核对标志类型 +///////////////////////////////////////////////////////////////////////// +///不核对 +#define Sgit_FTDC_FPWD_UnCheck '0' +///核对 +#define Sgit_FTDC_FPWD_Check '1' + +typedef char TSgitFtdcFuturePwdFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferTypeType是一个银期转账类型类型 +///////////////////////////////////////////////////////////////////////// +///银行转期货 +#define Sgit_FTDC_TT_BankToFuture '0' +///期货转银行 +#define Sgit_FTDC_TT_FutureToBank '1' + +typedef char TSgitFtdcTransferTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccPwdType是一个期货资金密码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureAccPwdType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCurrencyCodeType是一个币种类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCurrencyCodeType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRetCodeType是一个响应代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRetCodeType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRetInfoType是一个响应信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRetInfoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeAmtType是一个银行总余额类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeAmtType[20]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUseAmtType是一个银行可用余额类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUseAmtType[20]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFetchAmtType是一个银行可取余额类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFetchAmtType[20]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferValidFlagType是一个转账有效标志类型 +///////////////////////////////////////////////////////////////////////// +///无效或失败 +#define Sgit_FTDC_TVF_Invalid '0' +///有效 +#define Sgit_FTDC_TVF_Valid '1' +///冲正 +#define Sgit_FTDC_TVF_Reverse '2' + +typedef char TSgitFtdcTransferValidFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCertCodeType是一个证件号码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCertCodeType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReasonType是一个事由类型 +///////////////////////////////////////////////////////////////////////// +///错单 +#define Sgit_FTDC_RN_CD '0' +///资金在途 +#define Sgit_FTDC_RN_ZT '1' +///其它 +#define Sgit_FTDC_RN_QT '2' + +typedef char TSgitFtdcReasonType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundProjectIDType是一个资金项目编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFundProjectIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSexType是一个性别类型 +///////////////////////////////////////////////////////////////////////// +///未知 +#define Sgit_FTDC_SEX_None '0' +///男 +#define Sgit_FTDC_SEX_Man '1' +///女 +#define Sgit_FTDC_SEX_Woman '2' + +typedef char TSgitFtdcSexType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProfessionType是一个职业类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProfessionType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNationalType是一个国籍类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcNationalType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProvinceType是一个省类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProvinceType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRegionType是一个区类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRegionType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCountryType是一个国家类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCountryType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLicenseNOType是一个营业执照类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLicenseNOType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCompanyTypeType是一个企业性质类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCompanyTypeType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBusinessScopeType是一个经营范围类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBusinessScopeType[1001]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCapitalCurrencyType是一个注册资本币种类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCapitalCurrencyType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserTypeType是一个用户类型类型 +///////////////////////////////////////////////////////////////////////// +///投资者 +#define Sgit_FTDC_UT_Investor '0' +///操作员 +#define Sgit_FTDC_UT_Operator '1' +///管理员 +#define Sgit_FTDC_UT_SuperUser '2' + +typedef char TSgitFtdcUserTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateTypeType是一个费率类型类型 +///////////////////////////////////////////////////////////////////////// +///保证金率 +#define Sgit_FTDC_RATETYPE_MarginRate '2' + +typedef char TSgitFtdcRateTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNoteTypeType是一个通知类型类型 +///////////////////////////////////////////////////////////////////////// +///交易结算单 +#define Sgit_FTDC_NOTETYPE_TradeSettleBill '1' +///交易结算月报 +#define Sgit_FTDC_NOTETYPE_TradeSettleMonth '2' +///追加保证金通知书 +#define Sgit_FTDC_NOTETYPE_CallMarginNotes '3' +///强行平仓通知书 +#define Sgit_FTDC_NOTETYPE_ForceCloseNotes '4' +///成交通知书 +#define Sgit_FTDC_NOTETYPE_TradeNotes '5' +///交割通知书 +#define Sgit_FTDC_NOTETYPE_DelivNotes '6' + +typedef char TSgitFtdcNoteTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementStyleType是一个结算单方式类型 +///////////////////////////////////////////////////////////////////////// +///逐日盯市 +#define Sgit_FTDC_SBS_Day '1' +///逐笔对冲 +#define Sgit_FTDC_SBS_Volume '2' + +typedef char TSgitFtdcSettlementStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerDNSType是一个域名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerDNSType[256]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSentenceType是一个语句类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSentenceType[501]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementBillTypeType是一个结算单类型类型 +///////////////////////////////////////////////////////////////////////// +///日报 +#define Sgit_FTDC_ST_Day '0' +///月报 +#define Sgit_FTDC_ST_Month '1' + +typedef char TSgitFtdcSettlementBillTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserRightTypeType是一个客户权限类型类型 +///////////////////////////////////////////////////////////////////////// +///登录 +#define Sgit_FTDC_URT_Logon '1' +///银期转帐 +#define Sgit_FTDC_URT_Transfer '2' +///邮寄结算单 +#define Sgit_FTDC_URT_EMail '3' +///传真结算单 +#define Sgit_FTDC_URT_Fax '4' +///条件单 +#define Sgit_FTDC_URT_ConditionOrder '5' + +typedef char TSgitFtdcUserRightTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMarginPriceTypeType是一个保证金价格类型类型 +///////////////////////////////////////////////////////////////////////// +///昨结算价 +#define Sgit_FTDC_MPT_PreSettlementPrice '1' +///最新价 +#define Sgit_FTDC_MPT_SettlementPrice '2' +///成交均价 +#define Sgit_FTDC_MPT_AveragePrice '3' +///开仓价 +#define Sgit_FTDC_MPT_OpenPrice '4' + +typedef char TSgitFtdcMarginPriceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillGenStatusType是一个结算单生成状态类型 +///////////////////////////////////////////////////////////////////////// +///不生成 +#define Sgit_FTDC_BGS_None '0' +///未生成 +#define Sgit_FTDC_BGS_NoGenerated '1' +///已生成 +#define Sgit_FTDC_BGS_Generated '2' + +typedef char TSgitFtdcBillGenStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAlgoTypeType是一个算法类型类型 +///////////////////////////////////////////////////////////////////////// +///持仓处理算法 +#define Sgit_FTDC_AT_HandlePositionAlgo '1' +///寻找保证金率算法 +#define Sgit_FTDC_AT_FindMarginRateAlgo '2' + +typedef char TSgitFtdcAlgoTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcHandlePositionAlgoIDType是一个持仓处理算法编号类型 +///////////////////////////////////////////////////////////////////////// +///基本 +#define Sgit_FTDC_HPA_Base '1' +///大连商品交易所 +#define Sgit_FTDC_HPA_DCE '2' +///郑州商品交易所 +#define Sgit_FTDC_HPA_CZCE '3' + +typedef char TSgitFtdcHandlePositionAlgoIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFindMarginRateAlgoIDType是一个寻找保证金率算法编号类型 +///////////////////////////////////////////////////////////////////////// +///基本 +#define Sgit_FTDC_FMRA_Base '1' +///大连商品交易所 +#define Sgit_FTDC_FMRA_DCE '2' +///郑州商品交易所 +#define Sgit_FTDC_FMRA_CZCE '3' + +typedef char TSgitFtdcFindMarginRateAlgoIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcHandleTradingAccountAlgoIDType是一个资金处理算法编号类型 +///////////////////////////////////////////////////////////////////////// +///基本 +#define Sgit_FTDC_HTAA_Base '1' +///大连商品交易所 +#define Sgit_FTDC_HTAA_DCE '2' +///郑州商品交易所 +#define Sgit_FTDC_HTAA_CZCE '3' + +typedef char TSgitFtdcHandleTradingAccountAlgoIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPersonTypeType是一个联系人类型类型 +///////////////////////////////////////////////////////////////////////// +///指定下单人 +#define Sgit_FTDC_PST_Order '1' +///开户授权人 +#define Sgit_FTDC_PST_Open '2' +///资金调拨人 +#define Sgit_FTDC_PST_Fund '3' +///结算单确认人 +#define Sgit_FTDC_PST_Settlement '4' +///法人 +#define Sgit_FTDC_PST_Company '5' +///法人代表 +#define Sgit_FTDC_PST_Corporation '6' +///投资者联系人 +#define Sgit_FTDC_PST_LinkMan '7' + +typedef char TSgitFtdcPersonTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQueryInvestorRangeType是一个查询范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_QIR_All '1' +///查询分类 +#define Sgit_FTDC_QIR_Group '2' +///单一投资者 +#define Sgit_FTDC_QIR_Single '3' + +typedef char TSgitFtdcQueryInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorRiskStatusType是一个投资者风险状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_IRS_Normal '1' +///警告 +#define Sgit_FTDC_IRS_Warn '2' +///追保 +#define Sgit_FTDC_IRS_Call '3' +///强平 +#define Sgit_FTDC_IRS_Force '4' +///异常 +#define Sgit_FTDC_IRS_Exception '5' + +typedef char TSgitFtdcInvestorRiskStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLegIDType是一个单腿编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLegIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLegMultipleType是一个单腿乘数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLegMultipleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcImplyLevelType是一个派生层数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcImplyLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearAccountType是一个结算账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearAccountType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganNOType是一个结算账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganNOType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearbarchIDType是一个结算账户联行号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearbarchIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserEventTypeType是一个用户事件类型类型 +///////////////////////////////////////////////////////////////////////// +///登录 +#define Sgit_FTDC_UET_Login '1' +///登出 +#define Sgit_FTDC_UET_Logout '2' +///交易成功 +#define Sgit_FTDC_UET_Trading '3' +///交易失败 +#define Sgit_FTDC_UET_TradingError '4' +///修改密码 +#define Sgit_FTDC_UET_UpdatePassword '5' +///客户端认证 +#define Sgit_FTDC_UET_Authenticate '6' +///其他 +#define Sgit_FTDC_UET_Other '9' + +typedef char TSgitFtdcUserEventTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserEventInfoType是一个用户事件信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserEventInfoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCloseStyleType是一个平仓方式类型 +///////////////////////////////////////////////////////////////////////// +///先开先平 +#define Sgit_FTDC_ICS_Close '0' +///先平今再平昨 +#define Sgit_FTDC_ICS_CloseToday '1' + +typedef char TSgitFtdcCloseStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcStatModeType是一个统计方式类型 +///////////////////////////////////////////////////////////////////////// +///---- +#define Sgit_FTDC_SM_Non '0' +///按合约统计 +#define Sgit_FTDC_SM_Instrument '1' +///按产品统计 +#define Sgit_FTDC_SM_Product '2' +///按投资者统计 +#define Sgit_FTDC_SM_Investor '3' + +typedef char TSgitFtdcStatModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParkedOrderStatusType是一个预埋单状态类型 +///////////////////////////////////////////////////////////////////////// +///未发送 +#define Sgit_FTDC_PAOS_NotSend '1' +///已发送 +#define Sgit_FTDC_PAOS_Send '2' +///已删除 +#define Sgit_FTDC_PAOS_Deleted '3' + +typedef char TSgitFtdcParkedOrderStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParkedOrderIDType是一个预埋报单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParkedOrderIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParkedOrderActionIDType是一个预埋撤单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParkedOrderActionIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirDealStatusType是一个处理状态类型 +///////////////////////////////////////////////////////////////////////// +///正在处理 +#define Sgit_FTDC_VDS_Dealing '1' +///处理成功 +#define Sgit_FTDC_VDS_DeaclSucceed '2' + +typedef char TSgitFtdcVirDealStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrgSystemIDType是一个原有系统代码类型 +///////////////////////////////////////////////////////////////////////// +///综合交易平台 +#define Sgit_FTDC_ORGS_Standard '0' +///易盛系统 +#define Sgit_FTDC_ORGS_ESunny '1' +///金仕达V6系统 +#define Sgit_FTDC_ORGS_KingStarV6 '2' + +typedef char TSgitFtdcOrgSystemIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirTradeStatusType是一个交易状态类型 +///////////////////////////////////////////////////////////////////////// +///正常处理中 +#define Sgit_FTDC_VTS_NaturalDeal '0' +///成功结束 +#define Sgit_FTDC_VTS_SucceedEnd '1' +///失败结束 +#define Sgit_FTDC_VTS_FailedEND '2' +///异常中 +#define Sgit_FTDC_VTS_Exception '3' +///已人工异常处理 +#define Sgit_FTDC_VTS_ManualDeal '4' +///通讯异常 ,请人工处理 +#define Sgit_FTDC_VTS_MesException '5' +///系统出错,请人工处理 +#define Sgit_FTDC_VTS_SysException '6' + +typedef char TSgitFtdcVirTradeStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirBankAccTypeType是一个银行帐户类型类型 +///////////////////////////////////////////////////////////////////////// +///存折 +#define Sgit_FTDC_VBAT_BankBook '1' +///储蓄卡 +#define Sgit_FTDC_VBAT_BankCard '2' +///信用卡 +#define Sgit_FTDC_VBAT_CreditCard '3' + +typedef char TSgitFtdcVirBankAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirementStatusType是一个银行帐户类型类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_VMS_Natural '0' +///销户 +#define Sgit_FTDC_VMS_Canceled '9' + +typedef char TSgitFtdcVirementStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirementAvailAbilityType是一个有效标志类型 +///////////////////////////////////////////////////////////////////////// +///未确认 +#define Sgit_FTDC_VAA_NoAvailAbility '0' +///有效 +#define Sgit_FTDC_VAA_AvailAbility '1' +///冲正 +#define Sgit_FTDC_VAA_Repeal '2' + +typedef char TSgitFtdcVirementAvailAbilityType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirementTradeCodeType是一个交易代码类型 +///////////////////////////////////////////////////////////////////////// +///银行发起银行资金转期货 +#define Sgit_FTDC_VTC_BankBankToFuture '102001' +///银行发起期货资金转银行 +#define Sgit_FTDC_VTC_BankFutureToBank '102002' +///期货发起银行资金转期货 +#define Sgit_FTDC_VTC_FutureBankToFuture '202001' +///期货发起期货资金转银行 +#define Sgit_FTDC_VTC_FutureFutureToBank '202002' + +typedef char TSgitFtdcVirementTradeCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPhotoTypeNameType是一个影像类型名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPhotoTypeNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPhotoTypeIDType是一个影像类型代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPhotoTypeIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPhotoNameType是一个影像名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPhotoNameType[161]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTopicIDType是一个主题代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTopicIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReportTypeIDType是一个交易报告类型标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcReportTypeIDType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCharacterIDType是一个交易特征代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCharacterIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLParamIDType是一个参数代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLParamIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInvestorTypeType是一个投资者类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInvestorTypeType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLIdCardTypeType是一个证件类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLIdCardTypeType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTradeDirectType是一个资金进出方向类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTradeDirectType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTradeModelType是一个资金进出方式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTradeModelType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLParamIDType是一个参数代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLParamIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLOpParamValueType是一个业务参数代码值类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcAMLOpParamValueType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCustomerCardTypeType是一个客户身份证件/证明文件类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLCustomerCardTypeType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInstitutionNameType是一个金融机构网点名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInstitutionNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLDistrictIDType是一个金融机构网点所在地区行政区划代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLDistrictIDType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLRelationShipType是一个金融机构网点与大额交易的关系类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLRelationShipType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInstitutionTypeType是一个金融机构网点代码类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInstitutionTypeType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInstitutionIDType是一个金融机构网点代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInstitutionIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLAccountTypeType是一个账户类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLAccountTypeType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTradingTypeType是一个交易方式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTradingTypeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTransactClassType是一个涉外收支交易分类与代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTransactClassType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCapitalIOType是一个资金收付标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLCapitalIOType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLSiteType是一个交易地点类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLSiteType[10]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCapitalPurposeType是一个资金用途类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLCapitalPurposeType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLReportTypeType是一个报文类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLReportTypeType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLSerialNoType是一个编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLSerialNoType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLStatusType是一个状态类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLStatusType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLGenStatusType是一个Aml生成方式类型 +///////////////////////////////////////////////////////////////////////// +///程序生成 +#define Sgit_FTDC_GEN_Program '0' +///人工生成 +#define Sgit_FTDC_GEN_HandWork '1' + +typedef char TSgitFtdcAMLGenStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLSeqCodeType是一个业务标识号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLSeqCodeType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLFileNameType是一个AML文件名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLFileNameType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLMoneyType是一个反洗钱资金类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcAMLMoneyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLFileAmountType是一个反洗钱资金类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcAMLFileAmountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCFMMCKeyType是一个密钥类型(保证金监管)类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCFMMCKeyType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCFMMCKeyKindType是一个动态密钥类别(保证金监管)类型 +///////////////////////////////////////////////////////////////////////// +///主动请求更新 +#define Sgit_FTDC_CFMMCKK_REQUEST 'R' +///CFMMC自动更新 +#define Sgit_FTDC_CFMMCKK_AUTO 'A' +///CFMMC手动更新 +#define Sgit_FTDC_CFMMCKK_MANUAL 'M' + +typedef char TSgitFtdcCFMMCKeyKindType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLReportNameType是一个报文名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLReportNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIndividualNameType是一个个人姓名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIndividualNameType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCurrencyIDType是一个币种代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCurrencyIDType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCustNumberType是一个客户编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCustNumberType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganCodeType是一个机构编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganCodeType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganNameType是一个机构名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSuperOrganCodeType是一个上级机构编码,即期货公司总部、银行总行类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSuperOrganCodeType[12]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSubBranchIDType是一个分支机构类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSubBranchIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSubBranchNameType是一个分支机构名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSubBranchNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBranchNetCodeType是一个机构网点号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBranchNetCodeType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBranchNetNameType是一个机构网点名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBranchNetNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganFlagType是一个机构标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganFlagType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankCodingForFutureType是一个银行对期货公司的编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankCodingForFutureType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankReturnCodeType是一个银行对返回码的定义类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankReturnCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPlateReturnCodeType是一个银期转帐平台对返回码的定义类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPlateReturnCodeType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankSubBranchIDType是一个银行分支机构编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankSubBranchIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureBranchIDType是一个期货分支机构编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureBranchIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnCodeType是一个返回代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcReturnCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperatorCodeType是一个操作员类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperatorCodeType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearDepIDType是一个机构结算帐户机构号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearDepIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearBrchIDType是一个机构结算帐户联行号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearBrchIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearNameType是一个机构结算帐户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccountNameType是一个银行帐户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankAccountNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvDepIDType是一个机构投资人账号机构号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvDepIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvBrchIDType是一个机构投资人联行号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvBrchIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMessageFormatVersionType是一个信息格式版本类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMessageFormatVersionType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDigestType是一个摘要类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDigestType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthenticDataType是一个认证数据类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthenticDataType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPasswordKeyType是一个密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPasswordKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccountNameType是一个期货帐户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureAccountNameType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMobilePhoneType是一个手机类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMobilePhoneType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureMainKeyType是一个期货公司主密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureMainKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureWorkKeyType是一个期货公司工作密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureWorkKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureTransKeyType是一个期货公司传输密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureTransKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankMainKeyType是一个银行主密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankMainKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankWorkKeyType是一个银行工作密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankWorkKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankTransKeyType是一个银行传输密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankTransKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankServerDescriptionType是一个银行服务器描述信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankServerDescriptionType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAddInfoType是一个附加信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAddInfoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDescrInfoForReturnCodeType是一个返回码描述类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDescrInfoForReturnCodeType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCountryCodeType是一个国家代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCountryCodeType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSerialType是一个流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPlateSerialType是一个平台流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcPlateSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankSerialType是一个银行流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankSerialType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCorrectSerialType是一个被冲正交易流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCorrectSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureSerialType是一个期货公司流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFutureSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcApplicationIDType是一个应用标识类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcApplicationIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankProxyIDType是一个银行代理标识类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcBankProxyIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTCoreIDType是一个银期转帐核心系统标识类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFBTCoreIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServerPortType是一个服务端口号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcServerPortType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRepealedTimesType是一个已经冲正次数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcRepealedTimesType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRepealTimeIntervalType是一个冲正时间间隔类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcRepealTimeIntervalType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTotalTimesType是一个每日累计转帐次数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTotalTimesType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTRequestIDType是一个请求ID类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFBTRequestIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTIDType是一个交易ID类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeAmountType是一个交易金额(元)类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcTradeAmountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCustFeeType是一个应收客户费用(元)类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcCustFeeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureFeeType是一个应收期货公司费用(元)类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcFutureFeeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSingleMaxAmtType是一个单笔最高限额类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcSingleMaxAmtType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSingleMinAmtType是一个单笔最低限额类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcSingleMinAmtType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTotalAmtType是一个每日累计转帐额度类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcTotalAmtType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCertificationTypeType是一个证件类型类型 +///////////////////////////////////////////////////////////////////////// +///身份证 +#define Sgit_FTDC_CFT_IDCard '0' +///护照 +#define Sgit_FTDC_CFT_Passport '1' +///军官证 +#define Sgit_FTDC_CFT_OfficerIDCard '2' +///士兵证 +#define Sgit_FTDC_CFT_SoldierIDCard '3' +///回乡证 +#define Sgit_FTDC_CFT_HomeComingCard '4' +///户口簿 +#define Sgit_FTDC_CFT_HouseholdRegister '5' +///营业执照号 +#define Sgit_FTDC_CFT_LicenseNo '6' +///组织机构代码证 +#define Sgit_FTDC_CFT_InstitutionCodeCard '7' +///临时营业执照号 +#define Sgit_FTDC_CFT_TempLicenseNo '8' +///民办非企业登记证书 +#define Sgit_FTDC_CFT_NoEnterpriseLicenseNo '9' +///其他证件 +#define Sgit_FTDC_CFT_OtherCard 'x' +///主管部门批文 +#define Sgit_FTDC_CFT_SuperDepAgree 'a' + +typedef char TSgitFtdcCertificationTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileBusinessCodeType是一个文件业务功能类型 +///////////////////////////////////////////////////////////////////////// +///其他 +#define Sgit_FTDC_FBC_Others '0' +///转账交易明细对账 +#define Sgit_FTDC_FBC_TransferDetails '1' +///客户账户状态对账 +#define Sgit_FTDC_FBC_CustAccStatus '2' +///账户类交易明细对账 +#define Sgit_FTDC_FBC_AccountTradeDetails '3' +///期货账户信息变更明细对账 +#define Sgit_FTDC_FBC_FutureAccountChangeInfoDetails '4' +///客户资金台账余额明细对账 +#define Sgit_FTDC_FBC_CustMoneyDetail '5' +///客户销户结息明细对账 +#define Sgit_FTDC_FBC_CustCancelAccountInfo '6' +///客户资金余额对账结果 +#define Sgit_FTDC_FBC_CustMoneyResult '7' +///其它对账异常结果文件 +#define Sgit_FTDC_FBC_OthersExceptionResult '8' +///客户结息净额明细 +#define Sgit_FTDC_FBC_CustInterestNetMoneyDetails '9' +///客户资金交收明细 +#define Sgit_FTDC_FBC_CustMoneySendAndReceiveDetails 'a' +///法人存管银行资金交收汇总 +#define Sgit_FTDC_FBC_CorporationMoneyTotal 'b' +///主体间资金交收汇总 +#define Sgit_FTDC_FBC_MainbodyMoneyTotal 'c' +///总分平衡监管数据 +#define Sgit_FTDC_FBC_MainPartMonitorData 'd' +///存管银行备付金余额 +#define Sgit_FTDC_FBC_PreparationMoney 'e' +///协办存管银行资金监管数据 +#define Sgit_FTDC_FBC_BankMoneyMonitorData 'f' + +typedef char TSgitFtdcFileBusinessCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCashExchangeCodeType是一个汇钞标志类型 +///////////////////////////////////////////////////////////////////////// +///汇 +#define Sgit_FTDC_CEC_Exchange '1' +///钞 +#define Sgit_FTDC_CEC_Cash '2' + +typedef char TSgitFtdcCashExchangeCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcYesNoIndicatorType是一个是或否标识类型 +///////////////////////////////////////////////////////////////////////// +///是 +#define Sgit_FTDC_YNI_Yes '0' +///否 +#define Sgit_FTDC_YNI_No '1' + +typedef char TSgitFtdcYesNoIndicatorType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBanlanceTypeType是一个余额类型类型 +///////////////////////////////////////////////////////////////////////// +///当前余额 +#define Sgit_FTDC_BLT_CurrentMoney '0' +///可用余额 +#define Sgit_FTDC_BLT_UsableMoney '1' +///可取余额 +#define Sgit_FTDC_BLT_FetchableMoney '2' +///冻结余额 +#define Sgit_FTDC_BLT_FreezeMoney '3' + +typedef char TSgitFtdcBanlanceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcGenderType是一个性别类型 +///////////////////////////////////////////////////////////////////////// +///未知状态 +#define Sgit_FTDC_GD_Unknown '0' +///男 +#define Sgit_FTDC_GD_Male '1' +///女 +#define Sgit_FTDC_GD_Female '2' + +typedef char TSgitFtdcGenderType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFeePayFlagType是一个费用支付标志类型 +///////////////////////////////////////////////////////////////////////// +///由受益方支付费用 +#define Sgit_FTDC_FPF_BEN '0' +///由发送方支付费用 +#define Sgit_FTDC_FPF_OUR '1' +///由发送方支付发起的费用,受益方支付接受的费用 +#define Sgit_FTDC_FPF_SHA '2' + +typedef char TSgitFtdcFeePayFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPassWordKeyTypeType是一个密钥类型类型 +///////////////////////////////////////////////////////////////////////// +///交换密钥 +#define Sgit_FTDC_PWKT_ExchangeKey '0' +///密码密钥 +#define Sgit_FTDC_PWKT_PassWordKey '1' +///MAC密钥 +#define Sgit_FTDC_PWKT_MACKey '2' +///报文密钥 +#define Sgit_FTDC_PWKT_MessageKey '3' + +typedef char TSgitFtdcPassWordKeyTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTPassWordTypeType是一个密码类型类型 +///////////////////////////////////////////////////////////////////////// +///查询 +#define Sgit_FTDC_PWT_Query '0' +///取款 +#define Sgit_FTDC_PWT_Fetch '1' +///转帐 +#define Sgit_FTDC_PWT_Transfer '2' +///交易 +#define Sgit_FTDC_PWT_Trade '3' + +typedef char TSgitFtdcFBTPassWordTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTEncryModeType是一个加密方式类型 +///////////////////////////////////////////////////////////////////////// +///不加密 +#define Sgit_FTDC_EM_NoEncry '0' +///DES +#define Sgit_FTDC_EM_DES '1' +///3DES +#define Sgit_FTDC_EM_3DES '2' + +typedef char TSgitFtdcFBTEncryModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankRepealFlagType是一个银行冲正标志类型 +///////////////////////////////////////////////////////////////////////// +///银行无需自动冲正 +#define Sgit_FTDC_BRF_BankNotNeedRepeal '0' +///银行待自动冲正 +#define Sgit_FTDC_BRF_BankWaitingRepeal '1' +///银行已自动冲正 +#define Sgit_FTDC_BRF_BankBeenRepealed '2' + +typedef char TSgitFtdcBankRepealFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerRepealFlagType是一个期商冲正标志类型 +///////////////////////////////////////////////////////////////////////// +///期商无需自动冲正 +#define Sgit_FTDC_BRORF_BrokerNotNeedRepeal '0' +///期商待自动冲正 +#define Sgit_FTDC_BRORF_BrokerWaitingRepeal '1' +///期商已自动冲正 +#define Sgit_FTDC_BRORF_BrokerBeenRepealed '2' + +typedef char TSgitFtdcBrokerRepealFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstitutionTypeType是一个机构类别类型 +///////////////////////////////////////////////////////////////////////// +///银行 +#define Sgit_FTDC_TS_Bank '0' +///期商 +#define Sgit_FTDC_TS_Future '1' +///券商 +#define Sgit_FTDC_TS_Store '2' + +typedef char TSgitFtdcInstitutionTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLastFragmentType是一个最后分片标志类型 +///////////////////////////////////////////////////////////////////////// +///是最后分片 +#define Sgit_FTDC_LF_Yes '0' +///不是最后分片 +#define Sgit_FTDC_LF_No '1' + +typedef char TSgitFtdcLastFragmentType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccStatusType是一个银行账户状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_BAS_Normal '0' +///冻结 +#define Sgit_FTDC_BAS_Freeze '1' +///挂失 +#define Sgit_FTDC_BAS_ReportLoss '2' + +typedef char TSgitFtdcBankAccStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMoneyAccountStatusType是一个资金账户状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_MAS_Normal '0' +///销户 +#define Sgit_FTDC_MAS_Cancel '1' + +typedef char TSgitFtdcMoneyAccountStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcManageStatusType是一个存管状态类型 +///////////////////////////////////////////////////////////////////////// +///指定存管 +#define Sgit_FTDC_MSS_Point '0' +///预指定 +#define Sgit_FTDC_MSS_PrePoint '1' +///撤销指定 +#define Sgit_FTDC_MSS_CancelPoint '2' + +typedef char TSgitFtdcManageStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemTypeType是一个应用系统类型类型 +///////////////////////////////////////////////////////////////////////// +///银期转帐 +#define Sgit_FTDC_SYT_FutureBankTransfer '0' +///银证转帐 +#define Sgit_FTDC_SYT_StockBankTransfer '1' +///第三方存管 +#define Sgit_FTDC_SYT_TheThirdPartStore '2' + +typedef char TSgitFtdcSystemTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTxnEndFlagType是一个银期转帐划转结果标志类型 +///////////////////////////////////////////////////////////////////////// +///正常处理中 +#define Sgit_FTDC_TEF_NormalProcessing '0' +///成功结束 +#define Sgit_FTDC_TEF_Success '1' +///失败结束 +#define Sgit_FTDC_TEF_Failed '2' +///异常中 +#define Sgit_FTDC_TEF_Abnormal '3' +///已人工异常处理 +#define Sgit_FTDC_TEF_ManualProcessedForException '4' +///通讯异常 ,请人工处理 +#define Sgit_FTDC_TEF_CommuFailedNeedManualProcess '5' +///系统出错,请人工处理 +#define Sgit_FTDC_TEF_SysErrorNeedManualProcess '6' + +typedef char TSgitFtdcTxnEndFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessStatusType是一个银期转帐服务处理状态类型 +///////////////////////////////////////////////////////////////////////// +///未处理 +#define Sgit_FTDC_PSS_NotProcess '0' +///开始处理 +#define Sgit_FTDC_PSS_StartProcess '1' +///处理完成 +#define Sgit_FTDC_PSS_Finished '2' + +typedef char TSgitFtdcProcessStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCustTypeType是一个客户类型类型 +///////////////////////////////////////////////////////////////////////// +///自然人 +#define Sgit_FTDC_CUSTT_Person '0' +///机构户 +#define Sgit_FTDC_CUSTT_Institution '1' + +typedef char TSgitFtdcCustTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTTransferDirectionType是一个银期转帐方向类型 +///////////////////////////////////////////////////////////////////////// +///入金,银行转期货 +#define Sgit_FTDC_FBTTD_FromBankToFuture '1' +///出金,期货转银行 +#define Sgit_FTDC_FBTTD_FromFutureToBank '2' + +typedef char TSgitFtdcFBTTransferDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOpenOrDestroyType是一个开销户类别类型 +///////////////////////////////////////////////////////////////////////// +///开户 +#define Sgit_FTDC_OOD_Open '1' +///销户 +#define Sgit_FTDC_OOD_Destroy '0' + +typedef char TSgitFtdcOpenOrDestroyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAvailabilityFlagType是一个有效标志类型 +///////////////////////////////////////////////////////////////////////// +///未确认 +#define Sgit_FTDC_AVAF_Invalid '0' +///有效 +#define Sgit_FTDC_AVAF_Valid '1' +///冲正 +#define Sgit_FTDC_AVAF_Repeal '2' + +typedef char TSgitFtdcAvailabilityFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganTypeType是一个机构类型类型 +///////////////////////////////////////////////////////////////////////// +///银行代理 +#define Sgit_FTDC_OT_Bank '1' +///交易前置 +#define Sgit_FTDC_OT_Future '2' +///银期转帐平台管理 +#define Sgit_FTDC_OT_PlateForm '9' + +typedef char TSgitFtdcOrganTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganLevelType是一个机构级别类型 +///////////////////////////////////////////////////////////////////////// +///银行总行或期商总部 +#define Sgit_FTDC_OL_HeadQuarters '1' +///银行分中心或期货公司营业部 +#define Sgit_FTDC_OL_Branch '2' + +typedef char TSgitFtdcOrganLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProtocalIDType是一个协议类型类型 +///////////////////////////////////////////////////////////////////////// +///期商协议 +#define Sgit_FTDC_PID_FutureProtocal '0' +///工行协议 +#define Sgit_FTDC_PID_ICBCProtocal '1' +///农行协议 +#define Sgit_FTDC_PID_ABCProtocal '2' +///中国银行协议 +#define Sgit_FTDC_PID_CBCProtocal '3' +///建行协议 +#define Sgit_FTDC_PID_CCBProtocal '4' +///交行协议 +#define Sgit_FTDC_PID_BOCOMProtocal '5' +///银期转帐平台协议 +#define Sgit_FTDC_PID_FBTPlateFormProtocal 'X' + +typedef char TSgitFtdcProtocalIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcConnectModeType是一个套接字连接方式类型 +///////////////////////////////////////////////////////////////////////// +///短连接 +#define Sgit_FTDC_CM_ShortConnect '0' +///长连接 +#define Sgit_FTDC_CM_LongConnect '1' + +typedef char TSgitFtdcConnectModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSyncModeType是一个套接字通信方式类型 +///////////////////////////////////////////////////////////////////////// +///异步 +#define Sgit_FTDC_SRM_ASync '0' +///同步 +#define Sgit_FTDC_SRM_Sync '1' + +typedef char TSgitFtdcSyncModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccTypeType是一个银行帐号类型类型 +///////////////////////////////////////////////////////////////////////// +///银行存折 +#define Sgit_FTDC_BAT_BankBook '1' +///储蓄卡 +#define Sgit_FTDC_BAT_SavingCard '2' +///信用卡 +#define Sgit_FTDC_BAT_CreditCard '3' + +typedef char TSgitFtdcBankAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccTypeType是一个期货公司帐号类型类型 +///////////////////////////////////////////////////////////////////////// +///银行存折 +#define Sgit_FTDC_FAT_BankBook '1' +///储蓄卡 +#define Sgit_FTDC_FAT_SavingCard '2' +///信用卡 +#define Sgit_FTDC_FAT_CreditCard '3' + +typedef char TSgitFtdcFutureAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganStatusType是一个接入机构状态类型 +///////////////////////////////////////////////////////////////////////// +///启用 +#define Sgit_FTDC_OS_Ready '0' +///签到 +#define Sgit_FTDC_OS_CheckIn '1' +///签退 +#define Sgit_FTDC_OS_CheckOut '2' +///对帐文件到达 +#define Sgit_FTDC_OS_CheckFileArrived '3' +///对帐 +#define Sgit_FTDC_OS_CheckDetail '4' +///日终清理 +#define Sgit_FTDC_OS_DayEndClean '5' +///注销 +#define Sgit_FTDC_OS_Invalid '9' + +typedef char TSgitFtdcOrganStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCCBFeeModeType是一个建行收费模式类型 +///////////////////////////////////////////////////////////////////////// +///按金额扣收 +#define Sgit_FTDC_CCBFM_ByAmount '1' +///按月扣收 +#define Sgit_FTDC_CCBFM_ByMonth '2' + +typedef char TSgitFtdcCCBFeeModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommApiTypeType是一个通讯API类型类型 +///////////////////////////////////////////////////////////////////////// +///客户端 +#define Sgit_FTDC_CAPIT_Client '1' +///服务端 +#define Sgit_FTDC_CAPIT_Server '2' +///交易系统的UserApi +#define Sgit_FTDC_CAPIT_UserApi '3' + +typedef char TSgitFtdcCommApiTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServiceIDType是一个服务编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcServiceIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServiceLineNoType是一个服务线路编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcServiceLineNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServiceNameType是一个服务名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcServiceNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLinkStatusType是一个连接状态类型 +///////////////////////////////////////////////////////////////////////// +///已经连接 +#define Sgit_FTDC_LS_Connected '1' +///没有连接 +#define Sgit_FTDC_LS_Disconnected '2' + +typedef char TSgitFtdcLinkStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommApiPointerType是一个通讯API指针类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCommApiPointerType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPwdFlagType是一个密码核对标志类型 +///////////////////////////////////////////////////////////////////////// +///不核对 +#define Sgit_FTDC_BPWDF_NoCheck '0' +///明文核对 +#define Sgit_FTDC_BPWDF_BlankCheck '1' +///密文核对 +#define Sgit_FTDC_BPWDF_EncryptCheck '2' + +typedef char TSgitFtdcPwdFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSecuAccTypeType是一个期货帐号类型类型 +///////////////////////////////////////////////////////////////////////// +///资金帐号 +#define Sgit_FTDC_SAT_AccountID '1' +///资金卡号 +#define Sgit_FTDC_SAT_CardID '2' +///上海股东帐号 +#define Sgit_FTDC_SAT_SHStockholderID '3' +///深圳股东帐号 +#define Sgit_FTDC_SAT_SZStockholderID '4' + +typedef char TSgitFtdcSecuAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferStatusType是一个转账交易状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_TRFS_Normal '0' +///被冲正 +#define Sgit_FTDC_TRFS_Repealed '1' + +typedef char TSgitFtdcTransferStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSponsorTypeType是一个发起方类型 +///////////////////////////////////////////////////////////////////////// +///期商 +#define Sgit_FTDC_SPTYPE_Broker '0' +///银行 +#define Sgit_FTDC_SPTYPE_Bank '1' + +typedef char TSgitFtdcSponsorTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReqRspTypeType是一个请求响应类别类型 +///////////////////////////////////////////////////////////////////////// +///请求 +#define Sgit_FTDC_REQRSP_Request '0' +///响应 +#define Sgit_FTDC_REQRSP_Response '1' + +typedef char TSgitFtdcReqRspTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTUserEventTypeType是一个银期转帐用户事件类型类型 +///////////////////////////////////////////////////////////////////////// +///签到 +#define Sgit_FTDC_FBTUET_SignIn '0' +///银行转期货 +#define Sgit_FTDC_FBTUET_FromBankToFuture '1' +///期货转银行 +#define Sgit_FTDC_FBTUET_FromFutureToBank '2' +///开户 +#define Sgit_FTDC_FBTUET_OpenAccount '3' +///销户 +#define Sgit_FTDC_FBTUET_CancelAccount '4' +///变更银行账户 +#define Sgit_FTDC_FBTUET_ChangeAccount '5' +///冲正银行转期货 +#define Sgit_FTDC_FBTUET_RepealFromBankToFuture '6' +///冲正期货转银行 +#define Sgit_FTDC_FBTUET_RepealFromFutureToBank '7' +///查询银行账户 +#define Sgit_FTDC_FBTUET_QueryBankAccount '8' +///查询期货账户 +#define Sgit_FTDC_FBTUET_QueryFutureAccount '9' +///签退 +#define Sgit_FTDC_FBTUET_SignOut 'A' +///密钥同步 +#define Sgit_FTDC_FBTUET_SyncKey 'B' +///其他 +#define Sgit_FTDC_FBTUET_Other 'Z' + +typedef char TSgitFtdcFBTUserEventTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankIDByBankType是一个银行自己的编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankIDByBankType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNotifyClassType是一个风险通知类型类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_NC_NOERROR '0' +///警示 +#define Sgit_FTDC_NC_Warn '1' +///追保 +#define Sgit_FTDC_NC_Call '2' +///强平 +#define Sgit_FTDC_NC_Force '3' +///穿仓 +#define Sgit_FTDC_NC_CHUANCANG '4' +///异常 +#define Sgit_FTDC_NC_Exception '5' + +typedef char TSgitFtdcNotifyClassType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskNofityInfoType是一个客户风险通知消息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRiskNofityInfoType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcForceCloseSceneIdType是一个强平场景编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcForceCloseSceneIdType[24]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcForceCloseTypeType是一个强平单类型类型 +///////////////////////////////////////////////////////////////////////// +///手工强平 +#define Sgit_FTDC_FCT_Manual '0' +///单一投资者辅助强平 +#define Sgit_FTDC_FCT_Single '1' +///批量投资者辅助强平 +#define Sgit_FTDC_FCT_Group '2' + +typedef char TSgitFtdcForceCloseTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentIDsType是一个多个产品代码,用+分隔,如cu+zn类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentIDsType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskNotifyMethodType是一个风险通知途径类型 +///////////////////////////////////////////////////////////////////////// +///系统通知 +#define Sgit_FTDC_RNM_System '0' +///短信通知 +#define Sgit_FTDC_RNM_SMS '1' +///邮件通知 +#define Sgit_FTDC_RNM_EMail '2' +///人工通知 +#define Sgit_FTDC_RNM_Manual '3' + +typedef char TSgitFtdcRiskNotifyMethodType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskNotifyStatusType是一个风险通知状态类型 +///////////////////////////////////////////////////////////////////////// +///未生成 +#define Sgit_FTDC_RNS_NotGen '0' +///已生成未发送 +#define Sgit_FTDC_RNS_Generated '1' +///发送失败 +#define Sgit_FTDC_RNS_SendError '2' +///已发送未接收 +#define Sgit_FTDC_RNS_SendOk '3' +///已接收未确认 +#define Sgit_FTDC_RNS_Received '4' +///已确认 +#define Sgit_FTDC_RNS_Confirmed '5' + +typedef char TSgitFtdcRiskNotifyStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskUserEventType是一个风控用户操作事件类型 +///////////////////////////////////////////////////////////////////////// +///导出数据 +#define Sgit_FTDC_RUE_ExportData '0' + +typedef char TSgitFtdcRiskUserEventType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParamIDType是一个参数代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParamNameType是一个参数名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParamNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParamValueType是一个参数值类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParamValueType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcConditionalOrderSortTypeType是一个条件单索引条件类型 +///////////////////////////////////////////////////////////////////////// +///使用最新价升序 +#define Sgit_FTDC_COST_LastPriceAsc '0' +///使用最新价降序 +#define Sgit_FTDC_COST_LastPriceDesc '1' +///使用卖价升序 +#define Sgit_FTDC_COST_AskPriceAsc '2' +///使用卖价降序 +#define Sgit_FTDC_COST_AskPriceDesc '3' +///使用买价升序 +#define Sgit_FTDC_COST_BidPriceAsc '4' +///使用买价降序 +#define Sgit_FTDC_COST_BidPriceDesc '5' + +typedef char TSgitFtdcConditionalOrderSortTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSendTypeType是一个报送状态类型 +///////////////////////////////////////////////////////////////////////// +///未发送 +#define Sgit_FTDC_UOAST_NoSend '0' +///已发送 +#define Sgit_FTDC_UOAST_Sended '1' +///已生成 +#define Sgit_FTDC_UOAST_Generated '2' +///报送失败 +#define Sgit_FTDC_UOAST_SendFail '3' +///接收成功 +#define Sgit_FTDC_UOAST_Success '4' +///接收失败 +#define Sgit_FTDC_UOAST_Fail '5' +///取消报送 +#define Sgit_FTDC_UOAST_Cancel '6' + +typedef char TSgitFtdcSendTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientIDStatusType是一个交易编码状态类型 +///////////////////////////////////////////////////////////////////////// +///未申请 +#define Sgit_FTDC_UOACS_NoApply '1' +///已提交申请 +#define Sgit_FTDC_UOACS_Submited '2' +///已发送申请 +#define Sgit_FTDC_UOACS_Sended '3' +///完成 +#define Sgit_FTDC_UOACS_Success '4' +///拒绝 +#define Sgit_FTDC_UOACS_Refuse '5' +///已撤销编码 +#define Sgit_FTDC_UOACS_Cancel '6' + +typedef char TSgitFtdcClientIDStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIndustryIDType是一个行业编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIndustryIDType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQuestionIDType是一个特有信息编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcQuestionIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQuestionContentType是一个特有信息说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcQuestionContentType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOptionIDType是一个选项编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOptionIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOptionContentType是一个选项说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOptionContentType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQuestionTypeType是一个特有信息类型类型 +///////////////////////////////////////////////////////////////////////// +///单选 +#define Sgit_FTDC_QT_Radio '1' +///多选 +#define Sgit_FTDC_QT_Option '2' +///填空 +#define Sgit_FTDC_QT_Blank '3' + +typedef char TSgitFtdcQuestionTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessIDType是一个业务流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProcessIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSeqNoType是一个流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSeqNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOAProcessStatusType是一个流程状态类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUOAProcessStatusType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessTypeType是一个流程功能类型类型 +///////////////////////////////////////////////////////////////////////// +///申请交易编码 +#define Sgit_FTDC_PT_ApplyTradingCode '1' +///撤销交易编码 +#define Sgit_FTDC_PT_CancelTradingCode '2' +///修改身份信息 +#define Sgit_FTDC_PT_ModifyIDCard '3' +///修改一般信息 +#define Sgit_FTDC_PT_ModifyNoIDCard '4' +///交易所开户报备 +#define Sgit_FTDC_PT_ExchOpenBak '5' +///交易所销户报备 +#define Sgit_FTDC_PT_ExchCancelBak '6' +///补报规范资料 +#define Sgit_FTDC_PT_StandardAccount '7' +///账户休眠 +#define Sgit_FTDC_PT_FreezeAccount '8' +///激活休眠账户 +#define Sgit_FTDC_PT_ActiveFreezeAccount '9' + +typedef char TSgitFtdcProcessTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBusinessTypeType是一个业务类型类型 +///////////////////////////////////////////////////////////////////////// +///请求 +#define Sgit_FTDC_BT_Request '1' +///应答 +#define Sgit_FTDC_BT_Response '2' +///通知 +#define Sgit_FTDC_BT_Notice '3' + +typedef char TSgitFtdcBusinessTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCfmmcReturnCodeType是一个监控中心返回码类型 +///////////////////////////////////////////////////////////////////////// +///成功 +#define Sgit_FTDC_CRC_Success '0' +///该客户已经有流程在处理中 +#define Sgit_FTDC_CRC_Working '1' +///监控中客户资料检查失败 +#define Sgit_FTDC_CRC_InfoFail '2' +///监控中实名制检查失败 +#define Sgit_FTDC_CRC_IDCardFail '3' +///其他错误 +#define Sgit_FTDC_CRC_OtherFail '4' + +typedef char TSgitFtdcCfmmcReturnCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExReturnCodeType是一个交易所返回码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcExReturnCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientTypeType是一个客户类型类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_CfMMCCT_All '0' +///个人 +#define Sgit_FTDC_CfMMCCT_Person '1' +///单位 +#define Sgit_FTDC_CfMMCCT_Company '2' + +typedef char TSgitFtdcClientTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeIDTypeType是一个交易所编号类型 +///////////////////////////////////////////////////////////////////////// +///上海期货交易所 +#define Sgit_FTDC_EIDT_SHFE 'S' +///郑州商品交易所 +#define Sgit_FTDC_EIDT_CZCE 'Z' +///大连商品交易所 +#define Sgit_FTDC_EIDT_DCE 'D' +///中国金融期货交易所 +#define Sgit_FTDC_EIDT_CFFEX 'J' +///黄金 +#define Sgit_FTDC_EIDT_GOLD 'G' +///PAT +#define Sgit_FTDC_EIDT_PAT 'P' + +typedef char TSgitFtdcExchangeIDTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExClientIDTypeType是一个交易编码类型类型 +///////////////////////////////////////////////////////////////////////// +///套保 +#define Sgit_FTDC_ECIDT_Hedge '1' +///套利 +#define Sgit_FTDC_ECIDT_Arbitrage '2' +///投机 +#define Sgit_FTDC_ECIDT_Speculation '3' + +typedef char TSgitFtdcExClientIDTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientClassifyType是一个客户分类码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClientClassifyType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOAOrganTypeType是一个单位性质类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUOAOrganTypeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOACountryCodeType是一个国家代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUOACountryCodeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAreaCodeType是一个区号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAreaCodeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFuturesIDType是一个监控中心为客户分配的代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFuturesIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCffmcDateType是一个日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCffmcDateType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCffmcTimeType是一个时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCffmcTimeType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNocIDType是一个组织机构代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcNocIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUpdateFlagType是一个更新状态类型 +///////////////////////////////////////////////////////////////////////// +///未更新 +#define Sgit_FTDC_UF_NoUpdate '0' +///更新全部信息成功 +#define Sgit_FTDC_UF_Success '1' +///更新全部信息失败 +#define Sgit_FTDC_UF_Fail '2' +///更新交易编码成功 +#define Sgit_FTDC_UF_TCSuccess '3' +///更新交易编码失败 +#define Sgit_FTDC_UF_TCFail '4' +///已丢弃 +#define Sgit_FTDC_UF_Cancel '5' + +typedef char TSgitFtdcUpdateFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcApplyOperateIDType是一个申请动作类型 +///////////////////////////////////////////////////////////////////////// +///开户 +#define Sgit_FTDC_AOID_OpenInvestor '1' +///修改身份信息 +#define Sgit_FTDC_AOID_ModifyIDCard '2' +///修改一般信息 +#define Sgit_FTDC_AOID_ModifyNoIDCard '3' +///申请交易编码 +#define Sgit_FTDC_AOID_ApplyTradingCode '4' +///撤销交易编码 +#define Sgit_FTDC_AOID_CancelTradingCode '5' +///销户 +#define Sgit_FTDC_AOID_CancelInvestor '6' +///账户休眠 +#define Sgit_FTDC_AOID_FreezeAccount '8' +///激活休眠账户 +#define Sgit_FTDC_AOID_ActiveFreezeAccount '9' + +typedef char TSgitFtdcApplyOperateIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcApplyStatusIDType是一个申请状态类型 +///////////////////////////////////////////////////////////////////////// +///未补全 +#define Sgit_FTDC_ASID_NoComplete '1' +///已提交 +#define Sgit_FTDC_ASID_Submited '2' +///已审核 +#define Sgit_FTDC_ASID_Checked '3' +///已拒绝 +#define Sgit_FTDC_ASID_Refused '4' +///已删除 +#define Sgit_FTDC_ASID_Deleted '5' + +typedef char TSgitFtdcApplyStatusIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSendMethodType是一个发送方式类型 +///////////////////////////////////////////////////////////////////////// +///文件发送 +#define Sgit_FTDC_UOASM_ByAPI '1' +///电子发送 +#define Sgit_FTDC_UOASM_ByFile '2' + +typedef char TSgitFtdcSendMethodType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEventTypeType是一个业务操作类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEventTypeType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEventModeType是一个操作方法类型 +///////////////////////////////////////////////////////////////////////// +///增加 +#define Sgit_FTDC_EvM_ADD '1' +///修改 +#define Sgit_FTDC_EvM_UPDATE '2' +///删除 +#define Sgit_FTDC_EvM_DELETE '3' +///复核 +#define Sgit_FTDC_EvM_CHECK '4' +///复制 +#define Sgit_FTDC_EvM_COPY '5' +///注销 +#define Sgit_FTDC_EvM_CANCEL '6' +///冲销 +#define Sgit_FTDC_EvM_Reverse '7' + +typedef char TSgitFtdcEventModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOAAutoSendType是一个统一开户申请自动发送类型 +///////////////////////////////////////////////////////////////////////// +///自动发送并接收 +#define Sgit_FTDC_UOAA_ASR '1' +///自动发送,不自动接收 +#define Sgit_FTDC_UOAA_ASNR '2' +///不自动发送,自动接收 +#define Sgit_FTDC_UOAA_NSAR '3' +///不自动发送,也不自动接收 +#define Sgit_FTDC_UOAA_NSR '4' + +typedef char TSgitFtdcUOAAutoSendType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQueryDepthType是一个查询深度类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcQueryDepthType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataCenterIDType是一个数据中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcDataCenterIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFlowIDType是一个流程ID类型 +///////////////////////////////////////////////////////////////////////// +///投资者对应投资者组设置 +#define Sgit_FTDC_EvM_InvestorGroupFlow '1' +///投资者手续费率设置 +#define Sgit_FTDC_EvM_InvestorRate '2' +///投资者手续费率模板关系设置 +#define Sgit_FTDC_EvM_InvestorCommRateModel '3' + +typedef char TSgitFtdcFlowIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckLevelType是一个复核级别类型 +///////////////////////////////////////////////////////////////////////// +///零级复核 +#define Sgit_FTDC_CL_Zero '0' +///一级复核 +#define Sgit_FTDC_CL_One '1' +///二级复核 +#define Sgit_FTDC_CL_Two '2' + +typedef char TSgitFtdcCheckLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckNoType是一个操作次数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCheckNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckStatusType是一个复核级别类型 +///////////////////////////////////////////////////////////////////////// +///未复核 +#define Sgit_FTDC_CHS_Init '0' +///复核中 +#define Sgit_FTDC_CHS_Checking '1' +///已复核 +#define Sgit_FTDC_CHS_Checked '2' +///拒绝 +#define Sgit_FTDC_CHS_Refuse '3' +///作废 +#define Sgit_FTDC_CHS_Cancel '4' + +typedef char TSgitFtdcCheckStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUsedStatusType是一个生效状态类型 +///////////////////////////////////////////////////////////////////////// +///未生效 +#define Sgit_FTDC_CHU_Unused '0' +///已生效 +#define Sgit_FTDC_CHU_Used '1' +///生效失败 +#define Sgit_FTDC_CHU_Fail '2' + +typedef char TSgitFtdcUsedStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateTemplateNameType是一个模型名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRateTemplateNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyStringType是一个用于查询的投资属性字段类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPropertyStringType[2049]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAcountOriginType是一个账户来源类型 +///////////////////////////////////////////////////////////////////////// +///手工录入 +#define Sgit_FTDC_BAO_ByAccProperty '0' +///银期转账 +#define Sgit_FTDC_BAO_ByFBTransfer '1' + +typedef char TSgitFtdcBankAcountOriginType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMonthBillTradeSumType是一个结算单月报成交汇总方式类型 +///////////////////////////////////////////////////////////////////////// +///同日同合约 +#define Sgit_FTDC_MBTS_ByInstrument '0' +///同日同合约同价格 +#define Sgit_FTDC_MBTS_ByDayInsPrc '1' +///同合约 +#define Sgit_FTDC_MBTS_ByDayIns '2' + +typedef char TSgitFtdcMonthBillTradeSumType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTTradeCodeEnumType是一个银期交易代码枚举类型 +///////////////////////////////////////////////////////////////////////// +///银行发起银行转期货 +#define Sgit_FTDC_FTC_BankLaunchBankToBroker '102001' +///期货发起银行转期货 +#define Sgit_FTDC_FTC_BrokerLaunchBankToBroker '202001' +///银行发起期货转银行 +#define Sgit_FTDC_FTC_BankLaunchBrokerToBank '102002' +///期货发起期货转银行 +#define Sgit_FTDC_FTC_BrokerLaunchBrokerToBank '202002' + +typedef char TSgitFtdcFBTTradeCodeEnumType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateTemplateIDType是一个模型代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRateTemplateIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskRateType是一个风险度类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRiskRateType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimestampType是一个时间戳类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTimestampType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorIDRuleNameType是一个号段规则名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorIDRuleNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorIDRuleExprType是一个号段规则表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorIDRuleExprType[513]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLastDriftType是一个上次OTP漂移值类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLastDriftType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLastSuccessType是一个上次OTP成功值类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLastSuccessType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthKeyType是一个令牌密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthKeyType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSerialNumberType是一个序列号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSerialNumberType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPTypeType是一个动态令牌类型类型 +///////////////////////////////////////////////////////////////////////// +///无动态令牌 +#define Sgit_FTDC_OTP_NONE '0' +///时间令牌 +#define Sgit_FTDC_OTP_TOTP '1' + +typedef char TSgitFtdcOTPTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPVendorsIDType是一个动态令牌提供商类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOTPVendorsIDType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPVendorsNameType是一个动态令牌提供商名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOTPVendorsNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPStatusType是一个动态令牌状态类型 +///////////////////////////////////////////////////////////////////////// +///未使用 +#define Sgit_FTDC_OTPS_Unused '0' +///已使用 +#define Sgit_FTDC_OTPS_Used '1' +///注销 +#define Sgit_FTDC_OTPS_Disuse '2' + +typedef char TSgitFtdcOTPStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerUserTypeType是一个经济公司用户类型类型 +///////////////////////////////////////////////////////////////////////// +///投资者 +#define Sgit_FTDC_BUT_Investor '1' +///操作员 +#define Sgit_FTDC_BUT_BrokerUser '2' + +typedef char TSgitFtdcBrokerUserTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureTypeType是一个期货类型类型 +///////////////////////////////////////////////////////////////////////// +///商品期货 +#define Sgit_FTDC_FUTT_Commodity '1' +///金融期货 +#define Sgit_FTDC_FUTT_Financial '2' + +typedef char TSgitFtdcFutureTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundEventTypeType是一个资金管理操作类型类型 +///////////////////////////////////////////////////////////////////////// +///转账限额 +#define Sgit_FTDC_FET_Restriction '0' +///当日转账限额 +#define Sgit_FTDC_FET_TodayRestriction '1' +///期商流水 +#define Sgit_FTDC_FET_Transfer '2' +///资金冻结 +#define Sgit_FTDC_FET_Credit '3' +///投资者可提资金比例 +#define Sgit_FTDC_FET_InvestorWithdrawAlm '4' +///单个银行帐户转账限额 +#define Sgit_FTDC_FET_BankRestriction '5' +///银期签约账户 +#define Sgit_FTDC_FET_Accountregister '6' +///交易所出入金 +#define Sgit_FTDC_FET_ExchangeFundIO '7' +///投资者出入金 +#define Sgit_FTDC_FET_InvestorFundIO '8' + +typedef char TSgitFtdcFundEventTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAccountSourceTypeType是一个资金账户来源类型 +///////////////////////////////////////////////////////////////////////// +///银期同步 +#define Sgit_FTDC_AST_FBTransfer '0' +///手工录入 +#define Sgit_FTDC_AST_ManualEntry '1' + +typedef char TSgitFtdcAccountSourceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCodeSourceTypeType是一个交易编码来源类型 +///////////////////////////////////////////////////////////////////////// +///统一开户(已规范) +#define Sgit_FTDC_CST_UnifyAccount '0' +///手工录入(未规范) +#define Sgit_FTDC_CST_ManualEntry '1' + +typedef char TSgitFtdcCodeSourceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserRangeType是一个操作员范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_UR_All '0' +///单一操作员 +#define Sgit_FTDC_UR_Single '1' + +typedef char TSgitFtdcUserRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimeSpanType是一个时间跨度类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTimeSpanType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcImportSequenceIDType是一个动态令牌导入批次编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcImportSequenceIDType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcByGroupType是一个交易统计表按客户统计方式类型 +///////////////////////////////////////////////////////////////////////// +///按投资者统计 +#define Sgit_FTDC_BG_Investor '2' +///按类统计 +#define Sgit_FTDC_BG_Group '1' + +typedef char TSgitFtdcByGroupType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSumStatModeType是一个交易统计表按范围统计方式类型 +///////////////////////////////////////////////////////////////////////// +///按合约统计 +#define Sgit_FTDC_TSSM_Instrument '1' +///按产品统计 +#define Sgit_FTDC_TSSM_Product '2' +///按交易所统计 +#define Sgit_FTDC_TSSM_Exchange '3' + +typedef char TSgitFtdcTradeSumStatModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcComTypeType是一个组合成交类型类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcComTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserProductIDType是一个产品标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserProductIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserProductNameType是一个产品名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserProductNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserProductMemoType是一个产品说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserProductMemoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCCancelFlagType是一个新增或变更标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCCancelFlagType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCDateType是一个日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCDateType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCInvestorNameType是一个客户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCInvestorNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCInvestorIDType是一个客户代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCInvestorIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCIdentifiedCardNoType是一个证件号码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCIdentifiedCardNoType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCClientIDType是一个交易编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCClientIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCBankFlagType是一个银行标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCBankFlagType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCBankAccountType是一个银行账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCBankAccountType[23]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCOpenNameType是一个开户人类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCOpenNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCMemoType是一个说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCMemoType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCTimeType是一个时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCTimeType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCTradeIDType是一个成交流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCTradeIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCExchangeInstIDType是一个合约代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCExchangeInstIDType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCMortgageNameType是一个质押品名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCMortgageNameType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCReasonType是一个事由类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCReasonType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIsSettlementType是一个是否为非结算会员类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIsSettlementType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCMoneyType是一个资金类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcCSRCMoneyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommModelNameType是一个手续费率模板名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommModelNameType[161]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommModelMemoType是一个手续费率模板备注类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommModelMemoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateInvestorRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_RIR_All '1' +///费率模板 +#define Sgit_FTDC_RIR_Model '2' +///单一投资者 +#define Sgit_FTDC_RIR_Single '3' + +typedef char TSgitFtdcRateInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentBrokerIDType是一个代理经纪公司代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentBrokerIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDRIdentityIDType是一个交易中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcDRIdentityIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDRIdentityNameType是一个交易中心名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDRIdentityNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDBLinkIDType是一个DBLink标识号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDBLinkIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSyncDataStatusType是一个主次用系统数据同步状态类型 +///////////////////////////////////////////////////////////////////////// +///未同步 +#define Sgit_FTDC_SDS_Initialize '0' +///同步中 +#define Sgit_FTDC_SDS_Settlementing '1' +///已同步 +#define Sgit_FTDC_SDS_Settlemented '2' + +typedef char TSgitFtdcSyncDataStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSourceType是一个成交来源类型 +///////////////////////////////////////////////////////////////////////// +///来自交易所普通回报 +#define Sgit_FTDC_TSRC_NORMAL '0' +///来自查询 +#define Sgit_FTDC_TSRC_QUERY '1' + +typedef char TSgitFtdcTradeSourceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFlexStatModeType是一个产品合约统计方式类型 +///////////////////////////////////////////////////////////////////////// +///产品统计 +#define Sgit_FTDC_FSM_Product '1' +///交易所统计 +#define Sgit_FTDC_FSM_Exchange '2' +///统计所有 +#define Sgit_FTDC_FSM_All '3' + +typedef char TSgitFtdcFlexStatModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcByInvestorRangeType是一个投资者范围统计方式类型 +///////////////////////////////////////////////////////////////////////// +///属性统计 +#define Sgit_FTDC_BIR_Property '1' +///统计所有 +#define Sgit_FTDC_BIR_All '2' + +typedef char TSgitFtdcByInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSRiskRateType是一个风险度类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSRiskRateType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTBankIDType是一个银行标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFBTBankIDType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceNo12Type是一个序号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSequenceNo12Type; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyInvestorRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_PIR_All '1' +///投资者属性 +#define Sgit_FTDC_PIR_Property '2' +///单一投资者 +#define Sgit_FTDC_PIR_Single '3' + +typedef char TSgitFtdcPropertyInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileStatusType是一个文件状态类型 +///////////////////////////////////////////////////////////////////////// +///未生成 +#define Sgit_FTDC_FIS_NoCreate '0' +///已生成 +#define Sgit_FTDC_FIS_Created '1' +///生成失败 +#define Sgit_FTDC_FIS_Failed '2' + +typedef char TSgitFtdcFileStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileGenStyleType是一个文件生成方式类型 +///////////////////////////////////////////////////////////////////////// +///下发 +#define Sgit_FTDC_FGS_FileTransmit '0' +///生成 +#define Sgit_FTDC_FGS_FileGen '1' + +typedef char TSgitFtdcFileGenStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSysOperModeType是一个系统日志操作方法类型 +///////////////////////////////////////////////////////////////////////// +///增加 +#define Sgit_FTDC_SoM_Add '1' +///修改 +#define Sgit_FTDC_SoM_Update '2' +///删除 +#define Sgit_FTDC_SoM_Delete '3' +///复制 +#define Sgit_FTDC_SoM_Copy '4' +///激活 +#define Sgit_FTDC_SoM_AcTive '5' +///注销 +#define Sgit_FTDC_SoM_CanCel '6' +///重置 +#define Sgit_FTDC_SoM_ReSet '7' + +typedef char TSgitFtdcSysOperModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSysOperTypeType是一个系统日志操作类型类型 +///////////////////////////////////////////////////////////////////////// +///修改操作员密码 +#define Sgit_FTDC_SoT_UpdatePassword '0' +///操作员组织架构关系 +#define Sgit_FTDC_SoT_UserDepartment '1' +///角色管理 +#define Sgit_FTDC_SoT_RoleManager '2' +///角色功能设置 +#define Sgit_FTDC_SoT_RoleFunction '3' +///基础参数设置 +#define Sgit_FTDC_SoT_BaseParam '4' +///设置操作员 +#define Sgit_FTDC_SoT_SetUserID '5' +///用户角色设置 +#define Sgit_FTDC_SoT_SetUserRole '6' +///用户IP限制 +#define Sgit_FTDC_SoT_UserIpRestriction '7' +///组织架构管理 +#define Sgit_FTDC_SoT_DepartmentManager '8' +///组织架构向查询分类复制 +#define Sgit_FTDC_SoT_DepartmentCopy '9' +///交易编码管理 +#define Sgit_FTDC_SoT_Tradingcode 'A' +///投资者状态维护 +#define Sgit_FTDC_SoT_InvestorStatus 'B' +///投资者权限管理 +#define Sgit_FTDC_SoT_InvestorAuthority 'C' +///属性设置 +#define Sgit_FTDC_SoT_PropertySet 'D' +///重置投资者密码 +#define Sgit_FTDC_SoT_ReSetInvestorPasswd 'E' +///投资者个性信息维护 +#define Sgit_FTDC_SoT_InvestorPersonalityInfo 'F' + +typedef char TSgitFtdcSysOperTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCDataQueyTypeType是一个上报数据查询类型类型 +///////////////////////////////////////////////////////////////////////// +///查询当前交易日报送的数据 +#define Sgit_FTDC_CSRCQ_Current '0' +///查询历史报送的代理经纪公司的数据 +#define Sgit_FTDC_CSRCQ_History '1' + +typedef char TSgitFtdcCSRCDataQueyTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFreezeStatusType是一个休眠状态类型 +///////////////////////////////////////////////////////////////////////// +///活跃 +#define Sgit_FTDC_FRS_Normal '1' +///休眠 +#define Sgit_FTDC_FRS_Freeze '0' + +typedef char TSgitFtdcFreezeStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcStandardStatusType是一个规范状态类型 +///////////////////////////////////////////////////////////////////////// +///已规范 +#define Sgit_FTDC_STST_Standard '0' +///未规范 +#define Sgit_FTDC_STST_NonStandard '1' + +typedef char TSgitFtdcStandardStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCFreezeStatusType是一个休眠状态类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCFreezeStatusType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRightParamTypeType是一个配置类型类型 +///////////////////////////////////////////////////////////////////////// +///休眠户 +#define Sgit_FTDC_RPT_Freeze '1' +///激活休眠户 +#define Sgit_FTDC_RPT_FreezeActive '2' + +typedef char TSgitFtdcRightParamTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRightTemplateIDType是一个模板代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRightTemplateIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRightTemplateNameType是一个模板名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRightTemplateNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataStatusType是一个反洗钱审核表数据状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_AMLDS_Normal '0' +///已删除 +#define Sgit_FTDC_AMLDS_Deleted '1' + +typedef char TSgitFtdcDataStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCheckStatusType是一个审核状态类型 +///////////////////////////////////////////////////////////////////////// +///未复核 +#define Sgit_FTDC_AMLCHS_Init '0' +///复核中 +#define Sgit_FTDC_AMLCHS_Checking '1' +///已复核 +#define Sgit_FTDC_AMLCHS_Checked '2' +///拒绝上报 +#define Sgit_FTDC_AMLCHS_RefuseReport '3' + +typedef char TSgitFtdcAMLCheckStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAmlDateTypeType是一个日期类型类型 +///////////////////////////////////////////////////////////////////////// +///检查日期 +#define Sgit_FTDC_AMLDT_DrawDay '0' +///发生日期 +#define Sgit_FTDC_AMLDT_TouchDay '1' + +typedef char TSgitFtdcAmlDateTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAmlCheckLevelType是一个审核级别类型 +///////////////////////////////////////////////////////////////////////// +///零级审核 +#define Sgit_FTDC_AMLCL_CheckLevel0 '0' +///一级审核 +#define Sgit_FTDC_AMLCL_CheckLevel1 '1' +///二级审核 +#define Sgit_FTDC_AMLCL_CheckLevel2 '2' +///三级审核 +#define Sgit_FTDC_AMLCL_CheckLevel3 '3' + +typedef char TSgitFtdcAmlCheckLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAmlCheckFlowType是一个反洗钱数据抽取审核流程类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAmlCheckFlowType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataTypeType是一个数据类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDataTypeType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExportFileTypeType是一个导出文件类型类型 +///////////////////////////////////////////////////////////////////////// +///CSV +#define Sgit_FTDC_EFT_CSV '0' +///Excel +#define Sgit_FTDC_EFT_EXCEL '1' +///DBF +#define Sgit_FTDC_EFT_DBF '2' + +typedef char TSgitFtdcExportFileTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerTypeType是一个结算配置类型类型 +///////////////////////////////////////////////////////////////////////// +///结算前准备 +#define Sgit_FTDC_SMT_Before '1' +///结算 +#define Sgit_FTDC_SMT_Settlement '2' +///结算后核对 +#define Sgit_FTDC_SMT_After '3' +///结算完成 +#define Sgit_FTDC_SMT_Settlemented '4' + +typedef char TSgitFtdcSettleManagerTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerIDType是一个结算配置代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettleManagerIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerNameType是一个结算配置名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettleManagerNameType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerLevelType是一个结算配置等级类型 +///////////////////////////////////////////////////////////////////////// +///必要 +#define Sgit_FTDC_SML_Must '1' +///警告 +#define Sgit_FTDC_SML_Alarm '2' +///提示 +#define Sgit_FTDC_SML_Prompt '3' +///不检查 +#define Sgit_FTDC_SML_Ignore '4' + +typedef char TSgitFtdcSettleManagerLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerGroupType是一个模块分组类型 +///////////////////////////////////////////////////////////////////////// +///交易所核对 +#define Sgit_FTDC_SMG_Exhcange '1' +///内部核对 +#define Sgit_FTDC_SMG_ASP '2' +///上报数据核对 +#define Sgit_FTDC_SMG_CSRC '3' + +typedef char TSgitFtdcSettleManagerGroupType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckResultMemoType是一个核对结果说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCheckResultMemoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionUrlType是一个功能链接类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionUrlType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthInfoType是一个客户端认证信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthInfoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthCodeType是一个客户端认证码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthCodeType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLimitUseTypeType是一个保值额度使用类型类型 +///////////////////////////////////////////////////////////////////////// +///可重复使用 +#define Sgit_FTDC_LUT_Repeatable '1' +///不可重复使用 +#define Sgit_FTDC_LUT_Unrepeatable '2' + +typedef char TSgitFtdcLimitUseTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataResourceType是一个数据来源类型 +///////////////////////////////////////////////////////////////////////// +///本系统 +#define Sgit_FTDC_DAR_Settle '1' +///交易所 +#define Sgit_FTDC_DAR_Exchange '2' +///报送数据 +#define Sgit_FTDC_DAR_CSRC '3' + +typedef char TSgitFtdcDataResourceType; + +#endif diff --git a/vn.sgit/pyscript/SgitFtdcUserApiStruct.h b/vn.sgit/pyscript/SgitFtdcUserApiStruct.h new file mode 100644 index 00000000..c2637568 --- /dev/null +++ b/vn.sgit/pyscript/SgitFtdcUserApiStruct.h @@ -0,0 +1,5862 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#if !defined(Sgit_FTDCSTRUCT_H) +#define Sgit_FTDCSTRUCT_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "SgitFtdcUserApiDataType.h" + +///信息分发 +struct CSgitFtdcDisseminationField +{ + ///序列系列号 + TSgitFtdcSequenceSeriesType SequenceSeries; + ///序列号 + TSgitFtdcSequenceNoType SequenceNo; +}; + +///用户登录请求 +struct CSgitFtdcReqUserLoginField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///密码 + TSgitFtdcPasswordType Password; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///接口端产品信息 + TSgitFtdcProductInfoType InterfaceProductInfo; + ///协议信息 + TSgitFtdcProtocolInfoType ProtocolInfo; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; + ///动态密码 + TSgitFtdcPasswordType OneTimePassword; + ///终端IP地址 + TSgitFtdcIPAddressType ClientIPAddress; +}; + +///用户登录应答 +struct CSgitFtdcRspUserLoginField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///登录成功时间 + TSgitFtdcTimeType LoginTime; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///交易系统名称 + TSgitFtdcSystemNameType SystemName; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///最大报单引用 + TSgitFtdcOrderRefType MaxOrderRef; + ///上期所时间 + TSgitFtdcTimeType SHFETime; + ///大商所时间 + TSgitFtdcTimeType DCETime; + ///郑商所时间 + TSgitFtdcTimeType CZCETime; + ///中金所时间 + TSgitFtdcTimeType FFEXTime; +}; + +///用户登出请求 +struct CSgitFtdcUserLogoutField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///强制交易员退出 +struct CSgitFtdcForceUserLogoutField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///客户端认证请求 +struct CSgitFtdcReqAuthenticateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///认证码 + TSgitFtdcAuthCodeType AuthCode; +}; + +///客户端认证响应 +struct CSgitFtdcRspAuthenticateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; +}; + +///客户端认证信息 +struct CSgitFtdcAuthenticationInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///认证信息 + TSgitFtdcAuthInfoType AuthInfo; + ///是否为认证结果 + TSgitFtdcBoolType IsResult; +}; + +///银期转帐报文头 +struct CSgitFtdcTransferHeaderField +{ + ///版本号,常量,1.0 + TSgitFtdcVersionType Version; + ///交易代码,必填 + TSgitFtdcTradeCodeType TradeCode; + ///交易日期,必填,格式:yyyymmdd + TSgitFtdcTradeDateType TradeDate; + ///交易时间,必填,格式:hhmmss + TSgitFtdcTradeTimeType TradeTime; + ///发起方流水号,N/A + TSgitFtdcTradeSerialType TradeSerial; + ///期货公司代码,必填 + TSgitFtdcFutureIDType FutureID; + ///银行代码,根据查询银行得到,必填 + TSgitFtdcBankIDType BankID; + ///银行分中心代码,根据查询银行得到,必填 + TSgitFtdcBankBrchIDType BankBrchID; + ///操作员,N/A + TSgitFtdcOperNoType OperNo; + ///交易设备类型,N/A + TSgitFtdcDeviceIDType DeviceID; + ///记录数,N/A + TSgitFtdcRecordNumType RecordNum; + ///会话编号,N/A + TSgitFtdcSessionIDType SessionID; + ///请求编号,N/A + TSgitFtdcRequestIDType RequestID; +}; + +///银行资金转期货请求,TradeCode=202001 +struct CSgitFtdcTransferBankToFutureReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///密码标志 + TSgitFtdcFuturePwdFlagType FuturePwdFlag; + ///密码 + TSgitFtdcFutureAccPwdType FutureAccPwd; + ///转账金额 + TSgitFtdcMoneyType TradeAmt; + ///客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种:RMB-人民币 USD-美圆 HKD-港元 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///银行资金转期货请求响应 +struct CSgitFtdcTransferBankToFutureRspField +{ + ///响应代码 + TSgitFtdcRetCodeType RetCode; + ///响应信息 + TSgitFtdcRetInfoType RetInfo; + ///资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///转帐金额 + TSgitFtdcMoneyType TradeAmt; + ///应收客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///期货资金转银行请求,TradeCode=202002 +struct CSgitFtdcTransferFutureToBankReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///密码标志 + TSgitFtdcFuturePwdFlagType FuturePwdFlag; + ///密码 + TSgitFtdcFutureAccPwdType FutureAccPwd; + ///转账金额 + TSgitFtdcMoneyType TradeAmt; + ///客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种:RMB-人民币 USD-美圆 HKD-港元 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///期货资金转银行请求响应 +struct CSgitFtdcTransferFutureToBankRspField +{ + ///响应代码 + TSgitFtdcRetCodeType RetCode; + ///响应信息 + TSgitFtdcRetInfoType RetInfo; + ///资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///转帐金额 + TSgitFtdcMoneyType TradeAmt; + ///应收客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///查询银行资金请求,TradeCode=204002 +struct CSgitFtdcTransferQryBankReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///密码标志 + TSgitFtdcFuturePwdFlagType FuturePwdFlag; + ///密码 + TSgitFtdcFutureAccPwdType FutureAccPwd; + ///币种:RMB-人民币 USD-美圆 HKD-港元 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///查询银行资金请求响应 +struct CSgitFtdcTransferQryBankRspField +{ + ///响应代码 + TSgitFtdcRetCodeType RetCode; + ///响应信息 + TSgitFtdcRetInfoType RetInfo; + ///资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///银行余额 + TSgitFtdcMoneyType TradeAmt; + ///银行可用余额 + TSgitFtdcMoneyType UseAmt; + ///银行可取余额 + TSgitFtdcMoneyType FetchAmt; + ///币种 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///查询银行交易明细请求,TradeCode=204999 +struct CSgitFtdcTransferQryDetailReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; +}; + +///查询银行交易明细请求响应 +struct CSgitFtdcTransferQryDetailRspField +{ + ///交易日期 + TSgitFtdcDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///交易代码 + TSgitFtdcTradeCodeType TradeCode; + ///期货流水号 + TSgitFtdcTradeSerialNoType FutureSerial; + ///期货公司代码 + TSgitFtdcFutureIDType FutureID; + ///资金帐号 + TSgitFtdcFutureAccountType FutureAccount; + ///银行流水号 + TSgitFtdcTradeSerialNoType BankSerial; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; + ///银行账号 + TSgitFtdcBankAccountType BankAccount; + ///证件号码 + TSgitFtdcCertCodeType CertCode; + ///货币代码 + TSgitFtdcCurrencyCodeType CurrencyCode; + ///发生金额 + TSgitFtdcMoneyType TxAmount; + ///有效标志 + TSgitFtdcTransferValidFlagType Flag; +}; + +///响应信息 +struct CSgitFtdcRspInfoField +{ + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///交易所 +struct CSgitFtdcExchangeField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所名称 + TSgitFtdcExchangeNameType ExchangeName; + ///交易所属性 + TSgitFtdcExchangePropertyType ExchangeProperty; +}; + +///产品 +struct CSgitFtdcProductField +{ + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; + ///产品名称 + TSgitFtdcProductNameType ProductName; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///产品类型 + TSgitFtdcProductClassType ProductClass; + ///合约数量乘数 + TSgitFtdcVolumeMultipleType VolumeMultiple; + ///最小变动价位 + TSgitFtdcPriceType PriceTick; + ///市价单最大下单量 + TSgitFtdcVolumeType MaxMarketOrderVolume; + ///市价单最小下单量 + TSgitFtdcVolumeType MinMarketOrderVolume; + ///限价单最大下单量 + TSgitFtdcVolumeType MaxLimitOrderVolume; + ///限价单最小下单量 + TSgitFtdcVolumeType MinLimitOrderVolume; + ///持仓类型 + TSgitFtdcPositionTypeType PositionType; + ///持仓日期类型 + TSgitFtdcPositionDateTypeType PositionDateType; +}; + +///合约 +struct CSgitFtdcInstrumentField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约名称 + TSgitFtdcInstrumentNameType InstrumentName; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; + ///产品类型 + TSgitFtdcProductClassType ProductClass; + ///交割年份 + TSgitFtdcYearType DeliveryYear; + ///交割月 + TSgitFtdcMonthType DeliveryMonth; + ///市价单最大下单量 + TSgitFtdcVolumeType MaxMarketOrderVolume; + ///市价单最小下单量 + TSgitFtdcVolumeType MinMarketOrderVolume; + ///限价单最大下单量 + TSgitFtdcVolumeType MaxLimitOrderVolume; + ///限价单最小下单量 + TSgitFtdcVolumeType MinLimitOrderVolume; + ///合约数量乘数 + TSgitFtdcVolumeMultipleType VolumeMultiple; + ///最小变动价位 + TSgitFtdcPriceType PriceTick; + ///创建日 + TSgitFtdcDateType CreateDate; + ///上市日 + TSgitFtdcDateType OpenDate; + ///到期日 + TSgitFtdcDateType ExpireDate; + ///开始交割日 + TSgitFtdcDateType StartDelivDate; + ///结束交割日 + TSgitFtdcDateType EndDelivDate; + ///合约生命周期状态 + TSgitFtdcInstLifePhaseType InstLifePhase; + ///当前是否交易 + TSgitFtdcBoolType IsTrading; + ///持仓类型 + TSgitFtdcPositionTypeType PositionType; + ///持仓日期类型 + TSgitFtdcPositionDateTypeType PositionDateType; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatio; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatio; +}; + +///经纪公司 +struct CSgitFtdcBrokerField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///经纪公司简称 + TSgitFtdcBrokerAbbrType BrokerAbbr; + ///经纪公司名称 + TSgitFtdcBrokerNameType BrokerName; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///交易所交易员 +struct CSgitFtdcTraderField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///密码 + TSgitFtdcPasswordType Password; + ///安装数量 + TSgitFtdcInstallCountType InstallCount; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///投资者 +struct CSgitFtdcInvestorField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者名称 + TSgitFtdcPartyNameType InvestorName; + ///证件类型 + TSgitFtdcIdCardTypeType IdentifiedCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///联系电话 + TSgitFtdcTelephoneType Telephone; + ///通讯地址 + TSgitFtdcAddressType Address; + ///开户日期 + TSgitFtdcDateType OpenDate; + ///手机 + TSgitFtdcMobileType Mobile; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; +}; + +///交易编码 +struct CSgitFtdcTradingCodeField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///交易编码类型 + TSgitFtdcClientIDTypeType ClientIDType; +}; + +///会员编码和经纪公司编码对照表 +struct CSgitFtdcPartBrokerField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///管理用户 +struct CSgitFtdcSuperUserField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户名称 + TSgitFtdcUserNameType UserName; + ///密码 + TSgitFtdcPasswordType Password; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///管理用户功能权限 +struct CSgitFtdcSuperUserFunctionField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; + ///功能代码 + TSgitFtdcFunctionCodeType FunctionCode; +}; + +///投资者组 +struct CSgitFtdcInvestorGroupField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者分组名称 + TSgitFtdcInvestorGroupNameType InvestorGroupName; +}; + +///资金账户 +struct CSgitFtdcTradingAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///上次质押金额 + TSgitFtdcMoneyType PreMortgage; + ///上次信用额度 + TSgitFtdcMoneyType PreCredit; + ///上次存款额 + TSgitFtdcMoneyType PreDeposit; + ///上次结算准备金 + TSgitFtdcMoneyType PreBalance; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///利息基数 + TSgitFtdcMoneyType InterestBase; + ///利息收入 + TSgitFtdcMoneyType Interest; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///出金金额 + TSgitFtdcMoneyType Withdraw; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///当前保证金总额 + TSgitFtdcMoneyType CurrMargin; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///期货结算准备金 + TSgitFtdcMoneyType Balance; + ///可用资金 + TSgitFtdcMoneyType Available; + ///可取资金 + TSgitFtdcMoneyType WithdrawQuota; + ///基本准备金 + TSgitFtdcMoneyType Reserve; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///信用额度 + TSgitFtdcMoneyType Credit; + ///质押金额 + TSgitFtdcMoneyType Mortgage; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///投资者交割保证金 + TSgitFtdcMoneyType DeliveryMargin; + ///交易所交割保证金 + TSgitFtdcMoneyType ExchangeDeliveryMargin; +}; + +///投资者持仓 +struct CSgitFtdcInvestorPositionField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///持仓多空方向 + TSgitFtdcPosiDirectionType PosiDirection; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///持仓日期 + TSgitFtdcPositionDateType PositionDate; + ///上日持仓 + TSgitFtdcVolumeType YdPosition; + ///今日持仓 + TSgitFtdcVolumeType Position; + ///多头冻结 + TSgitFtdcVolumeType LongFrozen; + ///空头冻结 + TSgitFtdcVolumeType ShortFrozen; + ///开仓冻结金额 + TSgitFtdcMoneyType LongFrozenAmount; + ///开仓冻结金额 + TSgitFtdcMoneyType ShortFrozenAmount; + ///开仓量 + TSgitFtdcVolumeType OpenVolume; + ///平仓量 + TSgitFtdcVolumeType CloseVolume; + ///开仓金额 + TSgitFtdcMoneyType OpenAmount; + ///平仓金额 + TSgitFtdcMoneyType CloseAmount; + ///持仓成本 + TSgitFtdcMoneyType PositionCost; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///占用的保证金 + TSgitFtdcMoneyType UseMargin; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///开仓成本 + TSgitFtdcMoneyType OpenCost; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///组合成交形成的持仓 + TSgitFtdcVolumeType CombPosition; + ///组合多头冻结 + TSgitFtdcVolumeType CombLongFrozen; + ///组合空头冻结 + TSgitFtdcVolumeType CombShortFrozen; + ///逐日盯市平仓盈亏 + TSgitFtdcMoneyType CloseProfitByDate; + ///逐笔对冲平仓盈亏 + TSgitFtdcMoneyType CloseProfitByTrade; + ///今日持仓 + TSgitFtdcVolumeType TodayPosition; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; +}; + +///合约保证金率 +struct CSgitFtdcInstrumentMarginRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///是否相对交易所收取 + TSgitFtdcBoolType IsRelative; +}; + +///合约手续费率 +struct CSgitFtdcInstrumentCommissionRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///开仓手续费率 + TSgitFtdcRatioType OpenRatioByMoney; + ///开仓手续费 + TSgitFtdcRatioType OpenRatioByVolume; + ///平仓手续费率 + TSgitFtdcRatioType CloseRatioByMoney; + ///平仓手续费 + TSgitFtdcRatioType CloseRatioByVolume; + ///平今手续费率 + TSgitFtdcRatioType CloseTodayRatioByMoney; + ///平今手续费 + TSgitFtdcRatioType CloseTodayRatioByVolume; +}; + +///深度行情 +struct CSgitFtdcDepthMarketDataField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///最新价 + TSgitFtdcPriceType LastPrice; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///昨收盘 + TSgitFtdcPriceType PreClosePrice; + ///昨持仓量 + TSgitFtdcLargeVolumeType PreOpenInterest; + ///今开盘 + TSgitFtdcPriceType OpenPrice; + ///最高价 + TSgitFtdcPriceType HighestPrice; + ///最低价 + TSgitFtdcPriceType LowestPrice; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交金额 + TSgitFtdcMoneyType Turnover; + ///持仓量 + TSgitFtdcLargeVolumeType OpenInterest; + ///今收盘 + TSgitFtdcPriceType ClosePrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///涨停板价 + TSgitFtdcPriceType UpperLimitPrice; + ///跌停板价 + TSgitFtdcPriceType LowerLimitPrice; + ///昨虚实度 + TSgitFtdcRatioType PreDelta; + ///今虚实度 + TSgitFtdcRatioType CurrDelta; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///最后修改毫秒 + TSgitFtdcMillisecType UpdateMillisec; + ///申买价一 + TSgitFtdcPriceType BidPrice1; + ///申买量一 + TSgitFtdcVolumeType BidVolume1; + ///申卖价一 + TSgitFtdcPriceType AskPrice1; + ///申卖量一 + TSgitFtdcVolumeType AskVolume1; + ///申买价二 + TSgitFtdcPriceType BidPrice2; + ///申买量二 + TSgitFtdcVolumeType BidVolume2; + ///申卖价二 + TSgitFtdcPriceType AskPrice2; + ///申卖量二 + TSgitFtdcVolumeType AskVolume2; + ///申买价三 + TSgitFtdcPriceType BidPrice3; + ///申买量三 + TSgitFtdcVolumeType BidVolume3; + ///申卖价三 + TSgitFtdcPriceType AskPrice3; + ///申卖量三 + TSgitFtdcVolumeType AskVolume3; + ///申买价四 + TSgitFtdcPriceType BidPrice4; + ///申买量四 + TSgitFtdcVolumeType BidVolume4; + ///申卖价四 + TSgitFtdcPriceType AskPrice4; + ///申卖量四 + TSgitFtdcVolumeType AskVolume4; + ///申买价五 + TSgitFtdcPriceType BidPrice5; + ///申买量五 + TSgitFtdcVolumeType BidVolume5; + ///申卖价五 + TSgitFtdcPriceType AskPrice5; + ///申卖量五 + TSgitFtdcVolumeType AskVolume5; + ///当日均价 + TSgitFtdcPriceType AveragePrice; +}; + +///投资者合约交易权限 +struct CSgitFtdcInstrumentTradingRightField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易权限 + TSgitFtdcTradingRightType TradingRight; +}; + +///经纪公司用户 +struct CSgitFtdcBrokerUserField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户名称 + TSgitFtdcUserNameType UserName; + ///用户类型 + TSgitFtdcUserTypeType UserType; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///是否使用令牌 + TSgitFtdcBoolType IsUsingOTP; +}; + +///经纪公司用户口令 +struct CSgitFtdcBrokerUserPasswordField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///密码 + TSgitFtdcPasswordType Password; +}; + +///经纪公司用户功能权限 +struct CSgitFtdcBrokerUserFunctionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///经纪公司功能代码 + TSgitFtdcBrokerFunctionCodeType BrokerFunctionCode; +}; + +///交易所交易员报盘机 +struct CSgitFtdcTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所交易员连接状态 + TSgitFtdcTraderConnectStatusType TraderConnectStatus; + ///发出连接请求的日期 + TSgitFtdcDateType ConnectRequestDate; + ///发出连接请求的时间 + TSgitFtdcTimeType ConnectRequestTime; + ///上次报告日期 + TSgitFtdcDateType LastReportDate; + ///上次报告时间 + TSgitFtdcTimeType LastReportTime; + ///完成连接日期 + TSgitFtdcDateType ConnectDate; + ///完成连接时间 + TSgitFtdcTimeType ConnectTime; + ///启动日期 + TSgitFtdcDateType StartDate; + ///启动时间 + TSgitFtdcTimeType StartTime; + ///交易日 + TSgitFtdcDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///本席位最大成交编号 + TSgitFtdcTradeIDType MaxTradeID; + ///本席位最大报单备拷 + TSgitFtdcReturnCodeType MaxOrderMessageReference; +}; + +///投资者结算结果 +struct CSgitFtdcSettlementInfoField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///消息正文 + TSgitFtdcContentType Content; +}; + +///合约保证金率调整 +struct CSgitFtdcInstrumentMarginRateAdjustField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///是否相对交易所收取 + TSgitFtdcBoolType IsRelative; +}; + +///交易所保证金率 +struct CSgitFtdcExchangeMarginRateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; +}; + +///交易所保证金率调整 +struct CSgitFtdcExchangeMarginRateAdjustField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///跟随交易所投资者多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///跟随交易所投资者多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///跟随交易所投资者空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///跟随交易所投资者空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///交易所多头保证金率 + TSgitFtdcRatioType ExchLongMarginRatioByMoney; + ///交易所多头保证金费 + TSgitFtdcMoneyType ExchLongMarginRatioByVolume; + ///交易所空头保证金率 + TSgitFtdcRatioType ExchShortMarginRatioByMoney; + ///交易所空头保证金费 + TSgitFtdcMoneyType ExchShortMarginRatioByVolume; + ///不跟随交易所投资者多头保证金率 + TSgitFtdcRatioType NoLongMarginRatioByMoney; + ///不跟随交易所投资者多头保证金费 + TSgitFtdcMoneyType NoLongMarginRatioByVolume; + ///不跟随交易所投资者空头保证金率 + TSgitFtdcRatioType NoShortMarginRatioByMoney; + ///不跟随交易所投资者空头保证金费 + TSgitFtdcMoneyType NoShortMarginRatioByVolume; +}; + +///结算引用 +struct CSgitFtdcSettlementRefField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; +}; + +///当前时间 +struct CSgitFtdcCurrentTimeField +{ + ///当前日期 + TSgitFtdcDateType CurrDate; + ///当前时间 + TSgitFtdcTimeType CurrTime; + ///当前时间(毫秒) + TSgitFtdcMillisecType CurrMillisec; +}; + +///通讯阶段 +struct CSgitFtdcCommPhaseField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///通讯时段编号 + TSgitFtdcCommPhaseNoType CommPhaseNo; +}; + +///登录信息 +struct CSgitFtdcLoginInfoField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///登录日期 + TSgitFtdcDateType LoginDate; + ///登录时间 + TSgitFtdcTimeType LoginTime; + ///IP地址 + TSgitFtdcIPAddressType IPAddress; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///接口端产品信息 + TSgitFtdcProductInfoType InterfaceProductInfo; + ///协议信息 + TSgitFtdcProtocolInfoType ProtocolInfo; + ///系统名称 + TSgitFtdcSystemNameType SystemName; + ///密码 + TSgitFtdcPasswordType Password; + ///最大报单引用 + TSgitFtdcOrderRefType MaxOrderRef; + ///上期所时间 + TSgitFtdcTimeType SHFETime; + ///大商所时间 + TSgitFtdcTimeType DCETime; + ///郑商所时间 + TSgitFtdcTimeType CZCETime; + ///中金所时间 + TSgitFtdcTimeType FFEXTime; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; + ///动态密码 + TSgitFtdcPasswordType OneTimePassword; +}; + +///登录信息 +struct CSgitFtdcLogoutAllField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///系统名称 + TSgitFtdcSystemNameType SystemName; +}; + +///前置状态 +struct CSgitFtdcFrontStatusField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///上次报告日期 + TSgitFtdcDateType LastReportDate; + ///上次报告时间 + TSgitFtdcTimeType LastReportTime; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///用户口令变更 +struct CSgitFtdcUserPasswordUpdateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///原来的口令 + TSgitFtdcPasswordType OldPassword; + ///新的口令 + TSgitFtdcPasswordType NewPassword; +}; + +///输入报单 +struct CSgitFtdcInputOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; +}; + +///报单 +struct CSgitFtdcOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///报单提交状态 + TSgitFtdcOrderSubmitStatusType OrderSubmitStatus; + ///报单提示序号 + TSgitFtdcSequenceNoType NotifySequence; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///报单来源 + TSgitFtdcOrderSourceType OrderSource; + ///报单状态 + TSgitFtdcOrderStatusType OrderStatus; + ///报单类型 + TSgitFtdcOrderTypeType OrderType; + ///今成交数量 + TSgitFtdcVolumeType VolumeTraded; + ///剩余数量 + TSgitFtdcVolumeType VolumeTotal; + ///报单日期 + TSgitFtdcDateType InsertDate; + ///委托时间 + TSgitFtdcTimeType InsertTime; + ///激活时间 + TSgitFtdcTimeType ActiveTime; + ///挂起时间 + TSgitFtdcTimeType SuspendTime; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///撤销时间 + TSgitFtdcTimeType CancelTime; + ///最后修改交易所交易员代码 + TSgitFtdcTraderIDType ActiveTraderID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///操作用户代码 + TSgitFtdcUserIDType ActiveUserID; + ///经纪公司报单编号 + TSgitFtdcSequenceNoType BrokerOrderSeq; + ///相关报单 + TSgitFtdcOrderSysIDType RelativeOrderSysID; +}; + +///交易所报单 +struct CSgitFtdcExchangeOrderField +{ + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///报单提交状态 + TSgitFtdcOrderSubmitStatusType OrderSubmitStatus; + ///报单提示序号 + TSgitFtdcSequenceNoType NotifySequence; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///报单来源 + TSgitFtdcOrderSourceType OrderSource; + ///报单状态 + TSgitFtdcOrderStatusType OrderStatus; + ///报单类型 + TSgitFtdcOrderTypeType OrderType; + ///今成交数量 + TSgitFtdcVolumeType VolumeTraded; + ///剩余数量 + TSgitFtdcVolumeType VolumeTotal; + ///报单日期 + TSgitFtdcDateType InsertDate; + ///委托时间 + TSgitFtdcTimeType InsertTime; + ///激活时间 + TSgitFtdcTimeType ActiveTime; + ///挂起时间 + TSgitFtdcTimeType SuspendTime; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///撤销时间 + TSgitFtdcTimeType CancelTime; + ///最后修改交易所交易员代码 + TSgitFtdcTraderIDType ActiveTraderID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; +}; + +///交易所报单插入失败 +struct CSgitFtdcExchangeOrderInsertErrorField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///输入报单操作 +struct CSgitFtdcInputOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///报单操作 +struct CSgitFtdcOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///操作日期 + TSgitFtdcDateType ActionDate; + ///操作时间 + TSgitFtdcTimeType ActionTime; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///报单操作状态 + TSgitFtdcOrderActionStatusType OrderActionStatus; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///交易所报单操作 +struct CSgitFtdcExchangeOrderActionField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///操作日期 + TSgitFtdcDateType ActionDate; + ///操作时间 + TSgitFtdcTimeType ActionTime; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///报单操作状态 + TSgitFtdcOrderActionStatusType OrderActionStatus; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///交易所报单操作失败 +struct CSgitFtdcExchangeOrderActionErrorField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///交易所成交 +struct CSgitFtdcExchangeTradeField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易角色 + TSgitFtdcTradingRoleType TradingRole; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///价格 + TSgitFtdcPriceType Price; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交时期 + TSgitFtdcDateType TradeDate; + ///成交时间 + TSgitFtdcTimeType TradeTime; + ///成交类型 + TSgitFtdcTradeTypeType TradeType; + ///成交价来源 + TSgitFtdcPriceSourceType PriceSource; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///成交来源 + TSgitFtdcTradeSourceType TradeSource; +}; + +///成交 +struct CSgitFtdcTradeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易角色 + TSgitFtdcTradingRoleType TradingRole; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///价格 + TSgitFtdcPriceType Price; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交时期 + TSgitFtdcDateType TradeDate; + ///成交时间 + TSgitFtdcTimeType TradeTime; + ///成交类型 + TSgitFtdcTradeTypeType TradeType; + ///成交价来源 + TSgitFtdcPriceSourceType PriceSource; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///经纪公司报单编号 + TSgitFtdcSequenceNoType BrokerOrderSeq; + ///成交来源 + TSgitFtdcTradeSourceType TradeSource; +}; + +///用户会话 +struct CSgitFtdcUserSessionField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///登录日期 + TSgitFtdcDateType LoginDate; + ///登录时间 + TSgitFtdcTimeType LoginTime; + ///IP地址 + TSgitFtdcIPAddressType IPAddress; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///接口端产品信息 + TSgitFtdcProductInfoType InterfaceProductInfo; + ///协议信息 + TSgitFtdcProtocolInfoType ProtocolInfo; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; +}; + +///查询最大报单数量 +struct CSgitFtdcQueryMaxOrderVolumeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///最大允许报单数量 + TSgitFtdcVolumeType MaxVolume; +}; + +///投资者结算结果确认信息 +struct CSgitFtdcSettlementInfoConfirmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///确认日期 + TSgitFtdcDateType ConfirmDate; + ///确认时间 + TSgitFtdcTimeType ConfirmTime; +}; + +///出入金同步 +struct CSgitFtdcSyncDepositField +{ + ///出入金流水号 + TSgitFtdcDepositSeqNoType DepositSeqNo; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///是否强制进行 + TSgitFtdcBoolType IsForce; +}; + +///经纪公司同步 +struct CSgitFtdcBrokerSyncField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///正在同步中的投资者 +struct CSgitFtdcSyncingInvestorField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者名称 + TSgitFtdcPartyNameType InvestorName; + ///证件类型 + TSgitFtdcIdCardTypeType IdentifiedCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///联系电话 + TSgitFtdcTelephoneType Telephone; + ///通讯地址 + TSgitFtdcAddressType Address; + ///开户日期 + TSgitFtdcDateType OpenDate; + ///手机 + TSgitFtdcMobileType Mobile; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; +}; + +///正在同步中的交易代码 +struct CSgitFtdcSyncingTradingCodeField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///交易编码类型 + TSgitFtdcClientIDTypeType ClientIDType; +}; + +///正在同步中的投资者分组 +struct CSgitFtdcSyncingInvestorGroupField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者分组名称 + TSgitFtdcInvestorGroupNameType InvestorGroupName; +}; + +///正在同步中的交易账号 +struct CSgitFtdcSyncingTradingAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///上次质押金额 + TSgitFtdcMoneyType PreMortgage; + ///上次信用额度 + TSgitFtdcMoneyType PreCredit; + ///上次存款额 + TSgitFtdcMoneyType PreDeposit; + ///上次结算准备金 + TSgitFtdcMoneyType PreBalance; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///利息基数 + TSgitFtdcMoneyType InterestBase; + ///利息收入 + TSgitFtdcMoneyType Interest; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///出金金额 + TSgitFtdcMoneyType Withdraw; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///当前保证金总额 + TSgitFtdcMoneyType CurrMargin; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///期货结算准备金 + TSgitFtdcMoneyType Balance; + ///可用资金 + TSgitFtdcMoneyType Available; + ///可取资金 + TSgitFtdcMoneyType WithdrawQuota; + ///基本准备金 + TSgitFtdcMoneyType Reserve; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///信用额度 + TSgitFtdcMoneyType Credit; + ///质押金额 + TSgitFtdcMoneyType Mortgage; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///投资者交割保证金 + TSgitFtdcMoneyType DeliveryMargin; + ///交易所交割保证金 + TSgitFtdcMoneyType ExchangeDeliveryMargin; +}; + +///正在同步中的投资者持仓 +struct CSgitFtdcSyncingInvestorPositionField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///持仓多空方向 + TSgitFtdcPosiDirectionType PosiDirection; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///持仓日期 + TSgitFtdcPositionDateType PositionDate; + ///上日持仓 + TSgitFtdcVolumeType YdPosition; + ///今日持仓 + TSgitFtdcVolumeType Position; + ///多头冻结 + TSgitFtdcVolumeType LongFrozen; + ///空头冻结 + TSgitFtdcVolumeType ShortFrozen; + ///开仓冻结金额 + TSgitFtdcMoneyType LongFrozenAmount; + ///开仓冻结金额 + TSgitFtdcMoneyType ShortFrozenAmount; + ///开仓量 + TSgitFtdcVolumeType OpenVolume; + ///平仓量 + TSgitFtdcVolumeType CloseVolume; + ///开仓金额 + TSgitFtdcMoneyType OpenAmount; + ///平仓金额 + TSgitFtdcMoneyType CloseAmount; + ///持仓成本 + TSgitFtdcMoneyType PositionCost; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///占用的保证金 + TSgitFtdcMoneyType UseMargin; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///开仓成本 + TSgitFtdcMoneyType OpenCost; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///组合成交形成的持仓 + TSgitFtdcVolumeType CombPosition; + ///组合多头冻结 + TSgitFtdcVolumeType CombLongFrozen; + ///组合空头冻结 + TSgitFtdcVolumeType CombShortFrozen; + ///逐日盯市平仓盈亏 + TSgitFtdcMoneyType CloseProfitByDate; + ///逐笔对冲平仓盈亏 + TSgitFtdcMoneyType CloseProfitByTrade; + ///今日持仓 + TSgitFtdcVolumeType TodayPosition; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; +}; + +///正在同步中的合约保证金率 +struct CSgitFtdcSyncingInstrumentMarginRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///是否相对交易所收取 + TSgitFtdcBoolType IsRelative; +}; + +///正在同步中的合约手续费率 +struct CSgitFtdcSyncingInstrumentCommissionRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///开仓手续费率 + TSgitFtdcRatioType OpenRatioByMoney; + ///开仓手续费 + TSgitFtdcRatioType OpenRatioByVolume; + ///平仓手续费率 + TSgitFtdcRatioType CloseRatioByMoney; + ///平仓手续费 + TSgitFtdcRatioType CloseRatioByVolume; + ///平今手续费率 + TSgitFtdcRatioType CloseTodayRatioByMoney; + ///平今手续费 + TSgitFtdcRatioType CloseTodayRatioByVolume; +}; + +///正在同步中的合约交易权限 +struct CSgitFtdcSyncingInstrumentTradingRightField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易权限 + TSgitFtdcTradingRightType TradingRight; +}; + +///查询报单 +struct CSgitFtdcQryOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///开始时间 + TSgitFtdcTimeType InsertTimeStart; + ///结束时间 + TSgitFtdcTimeType InsertTimeEnd; +}; + +///查询成交 +struct CSgitFtdcQryTradeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///开始时间 + TSgitFtdcTimeType TradeTimeStart; + ///结束时间 + TSgitFtdcTimeType TradeTimeEnd; +}; + +///查询投资者持仓 +struct CSgitFtdcQryInvestorPositionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询资金账户 +struct CSgitFtdcQryTradingAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///查询投资者 +struct CSgitFtdcQryInvestorField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///查询交易编码 +struct CSgitFtdcQryTradingCodeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易编码类型 + TSgitFtdcClientIDTypeType ClientIDType; +}; + +///查询交易编码 +struct CSgitFtdcQryInvestorGroupField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///查询交易编码 +struct CSgitFtdcQryInstrumentMarginRateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; +}; + +///查询交易编码 +struct CSgitFtdcQryInstrumentCommissionRateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询交易编码 +struct CSgitFtdcQryInstrumentTradingRightField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询经纪公司 +struct CSgitFtdcQryBrokerField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///查询交易员 +struct CSgitFtdcQryTraderField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询经纪公司会员代码 +struct CSgitFtdcQryPartBrokerField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; +}; + +///查询管理用户功能权限 +struct CSgitFtdcQrySuperUserFunctionField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询用户会话 +struct CSgitFtdcQryUserSessionField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询前置状态 +struct CSgitFtdcQryFrontStatusField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; +}; + +///查询交易所报单 +struct CSgitFtdcQryExchangeOrderField +{ + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询报单操作 +struct CSgitFtdcQryOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///查询交易所报单操作 +struct CSgitFtdcQryExchangeOrderActionField +{ + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询管理用户 +struct CSgitFtdcQrySuperUserField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询交易所 +struct CSgitFtdcQryExchangeField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///查询产品 +struct CSgitFtdcQryProductField +{ + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; +}; + +///查询合约 +struct CSgitFtdcQryInstrumentField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; +}; + +///查询行情 +struct CSgitFtdcQryDepthMarketDataField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询经纪公司用户 +struct CSgitFtdcQryBrokerUserField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询经纪公司用户权限 +struct CSgitFtdcQryBrokerUserFunctionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询交易员报盘机 +struct CSgitFtdcQryTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询出入金流水 +struct CSgitFtdcQrySyncDepositField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///出入金流水号 + TSgitFtdcDepositSeqNoType DepositSeqNo; +}; + +///查询投资者结算结果 +struct CSgitFtdcQrySettlementInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易日 + TSgitFtdcDateType TradingDay; +}; + +///查询报单 +struct CSgitFtdcQryHisOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///开始时间 + TSgitFtdcTimeType InsertTimeStart; + ///结束时间 + TSgitFtdcTimeType InsertTimeEnd; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; +}; + +///市场行情 +struct CSgitFtdcMarketDataField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///最新价 + TSgitFtdcPriceType LastPrice; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///昨收盘 + TSgitFtdcPriceType PreClosePrice; + ///昨持仓量 + TSgitFtdcLargeVolumeType PreOpenInterest; + ///今开盘 + TSgitFtdcPriceType OpenPrice; + ///最高价 + TSgitFtdcPriceType HighestPrice; + ///最低价 + TSgitFtdcPriceType LowestPrice; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交金额 + TSgitFtdcMoneyType Turnover; + ///持仓量 + TSgitFtdcLargeVolumeType OpenInterest; + ///今收盘 + TSgitFtdcPriceType ClosePrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///涨停板价 + TSgitFtdcPriceType UpperLimitPrice; + ///跌停板价 + TSgitFtdcPriceType LowerLimitPrice; + ///昨虚实度 + TSgitFtdcRatioType PreDelta; + ///今虚实度 + TSgitFtdcRatioType CurrDelta; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///最后修改毫秒 + TSgitFtdcMillisecType UpdateMillisec; +}; + +///行情基础属性 +struct CSgitFtdcMarketDataBaseField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///昨收盘 + TSgitFtdcPriceType PreClosePrice; + ///昨持仓量 + TSgitFtdcLargeVolumeType PreOpenInterest; + ///昨虚实度 + TSgitFtdcRatioType PreDelta; +}; + +///行情静态属性 +struct CSgitFtdcMarketDataStaticField +{ + ///今开盘 + TSgitFtdcPriceType OpenPrice; + ///最高价 + TSgitFtdcPriceType HighestPrice; + ///最低价 + TSgitFtdcPriceType LowestPrice; + ///今收盘 + TSgitFtdcPriceType ClosePrice; + ///涨停板价 + TSgitFtdcPriceType UpperLimitPrice; + ///跌停板价 + TSgitFtdcPriceType LowerLimitPrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///今虚实度 + TSgitFtdcRatioType CurrDelta; +}; + +///行情最新成交属性 +struct CSgitFtdcMarketDataLastMatchField +{ + ///最新价 + TSgitFtdcPriceType LastPrice; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交金额 + TSgitFtdcMoneyType Turnover; + ///持仓量 + TSgitFtdcLargeVolumeType OpenInterest; +}; + +///行情最优价属性 +struct CSgitFtdcMarketDataBestPriceField +{ + ///申买价一 + TSgitFtdcPriceType BidPrice1; + ///申买量一 + TSgitFtdcVolumeType BidVolume1; + ///申卖价一 + TSgitFtdcPriceType AskPrice1; + ///申卖量一 + TSgitFtdcVolumeType AskVolume1; +}; + +///行情申买二、三属性 +struct CSgitFtdcMarketDataBid23Field +{ + ///申买价二 + TSgitFtdcPriceType BidPrice2; + ///申买量二 + TSgitFtdcVolumeType BidVolume2; + ///申买价三 + TSgitFtdcPriceType BidPrice3; + ///申买量三 + TSgitFtdcVolumeType BidVolume3; +}; + +///行情申卖二、三属性 +struct CSgitFtdcMarketDataAsk23Field +{ + ///申卖价二 + TSgitFtdcPriceType AskPrice2; + ///申卖量二 + TSgitFtdcVolumeType AskVolume2; + ///申卖价三 + TSgitFtdcPriceType AskPrice3; + ///申卖量三 + TSgitFtdcVolumeType AskVolume3; +}; + +///行情申买四、五属性 +struct CSgitFtdcMarketDataBid45Field +{ + ///申买价四 + TSgitFtdcPriceType BidPrice4; + ///申买量四 + TSgitFtdcVolumeType BidVolume4; + ///申买价五 + TSgitFtdcPriceType BidPrice5; + ///申买量五 + TSgitFtdcVolumeType BidVolume5; +}; + +///行情申卖四、五属性 +struct CSgitFtdcMarketDataAsk45Field +{ + ///申卖价四 + TSgitFtdcPriceType AskPrice4; + ///申卖量四 + TSgitFtdcVolumeType AskVolume4; + ///申卖价五 + TSgitFtdcPriceType AskPrice5; + ///申卖量五 + TSgitFtdcVolumeType AskVolume5; +}; + +///行情更新时间属性 +struct CSgitFtdcMarketDataUpdateTimeField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///最后修改毫秒 + TSgitFtdcMillisecType UpdateMillisec; +}; + +///行情交易所代码属性 +struct CSgitFtdcMarketDataExchangeField +{ + ///交易所代码 + TSgitFtdcPriceType ExchangeID; +}; + +///指定的合约 +struct CSgitFtdcSpecificInstrumentField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///合约状态 +struct CSgitFtdcInstrumentStatusField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///结算组代码 + TSgitFtdcSettlementGroupIDType SettlementGroupID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///合约交易状态 + TSgitFtdcInstrumentStatusType InstrumentStatus; + ///交易阶段编号 + TSgitFtdcTradingSegmentSNType TradingSegmentSN; + ///进入本状态时间 + TSgitFtdcTimeType EnterTime; + ///进入本状态原因 + TSgitFtdcInstStatusEnterReasonType EnterReason; +}; + +///查询合约状态 +struct CSgitFtdcQryInstrumentStatusField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; +}; + +///投资者账户 +struct CSgitFtdcInvestorAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; +}; + +///浮动盈亏算法 +struct CSgitFtdcPositionProfitAlgorithmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///盈亏算法 + TSgitFtdcAlgorithmType Algorithm; + ///备注 + TSgitFtdcMemoType Memo; +}; + +///会员资金折扣 +struct CSgitFtdcDiscountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///资金折扣比例 + TSgitFtdcRatioType Discount; +}; + +///查询转帐银行 +struct CSgitFtdcQryTransferBankField +{ + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; +}; + +///转帐银行 +struct CSgitFtdcTransferBankField +{ + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; + ///银行名称 + TSgitFtdcBankNameType BankName; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///查询投资者持仓明细 +struct CSgitFtdcQryInvestorPositionDetailField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///投资者持仓明细 +struct CSgitFtdcInvestorPositionDetailField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///买卖 + TSgitFtdcDirectionType Direction; + ///开仓日期 + TSgitFtdcDateType OpenDate; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///数量 + TSgitFtdcVolumeType Volume; + ///开仓价 + TSgitFtdcPriceType OpenPrice; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///成交类型 + TSgitFtdcTradeTypeType TradeType; + ///组合合约代码 + TSgitFtdcInstrumentIDType CombInstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///逐日盯市平仓盈亏 + TSgitFtdcMoneyType CloseProfitByDate; + ///逐笔对冲平仓盈亏 + TSgitFtdcMoneyType CloseProfitByTrade; + ///逐日盯市持仓盈亏 + TSgitFtdcMoneyType PositionProfitByDate; + ///逐笔对冲持仓盈亏 + TSgitFtdcMoneyType PositionProfitByTrade; + ///投资者保证金 + TSgitFtdcMoneyType Margin; + ///交易所保证金 + TSgitFtdcMoneyType ExchMargin; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; + ///昨结算价 + TSgitFtdcPriceType LastSettlementPrice; + ///结算价 + TSgitFtdcPriceType SettlementPrice; + ///平仓量 + TSgitFtdcVolumeType CloseVolume; + ///平仓金额 + TSgitFtdcMoneyType CloseAmount; +}; + +///资金账户口令域 +struct CSgitFtdcTradingAccountPasswordField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///密码 + TSgitFtdcPasswordType Password; +}; + +///交易所行情报盘机 +struct CSgitFtdcMDTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所交易员连接状态 + TSgitFtdcTraderConnectStatusType TraderConnectStatus; + ///发出连接请求的日期 + TSgitFtdcDateType ConnectRequestDate; + ///发出连接请求的时间 + TSgitFtdcTimeType ConnectRequestTime; + ///上次报告日期 + TSgitFtdcDateType LastReportDate; + ///上次报告时间 + TSgitFtdcTimeType LastReportTime; + ///完成连接日期 + TSgitFtdcDateType ConnectDate; + ///完成连接时间 + TSgitFtdcTimeType ConnectTime; + ///启动日期 + TSgitFtdcDateType StartDate; + ///启动时间 + TSgitFtdcTimeType StartTime; + ///交易日 + TSgitFtdcDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///本席位最大成交编号 + TSgitFtdcTradeIDType MaxTradeID; + ///本席位最大报单备拷 + TSgitFtdcReturnCodeType MaxOrderMessageReference; +}; + +///查询行情报盘机 +struct CSgitFtdcQryMDTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询客户通知 +struct CSgitFtdcQryNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///客户通知 +struct CSgitFtdcNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///消息正文 + TSgitFtdcContentType Content; + ///经纪公司通知内容序列号 + TSgitFtdcSequenceLabelType SequenceLabel; +}; + +///用户权限 +struct CSgitFtdcUserRightField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///客户权限类型 + TSgitFtdcUserRightTypeType UserRightType; + ///是否禁止 + TSgitFtdcBoolType IsForbidden; +}; + +///查询结算信息确认域 +struct CSgitFtdcQrySettlementInfoConfirmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///装载结算信息 +struct CSgitFtdcLoadSettlementInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///经纪公司可提资金算法表 +struct CSgitFtdcBrokerWithdrawAlgorithmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///可提资金算法 + TSgitFtdcAlgorithmType WithdrawAlgorithm; + ///资金使用率 + TSgitFtdcRatioType UsingRatio; + ///可提是否包含平仓盈利 + TSgitFtdcIncludeCloseProfitType IncludeCloseProfit; + ///本日无仓且无成交客户是否受可提比例限制 + TSgitFtdcAllWithoutTradeType AllWithoutTrade; + ///可用是否包含平仓盈利 + TSgitFtdcIncludeCloseProfitType AvailIncludeCloseProfit; + ///是否启用用户事件 + TSgitFtdcBoolType IsBrokerUserEvent; +}; + +///资金账户口令变更域 +struct CSgitFtdcTradingAccountPasswordUpdateV1Field +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///原来的口令 + TSgitFtdcPasswordType OldPassword; + ///新的口令 + TSgitFtdcPasswordType NewPassword; +}; + +///资金账户口令变更域 +struct CSgitFtdcTradingAccountPasswordUpdateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///原来的口令 + TSgitFtdcPasswordType OldPassword; + ///新的口令 + TSgitFtdcPasswordType NewPassword; +}; + +///查询组合合约分腿 +struct CSgitFtdcQryCombinationLegField +{ + ///组合合约代码 + TSgitFtdcInstrumentIDType CombInstrumentID; + ///单腿编号 + TSgitFtdcLegIDType LegID; + ///单腿合约代码 + TSgitFtdcInstrumentIDType LegInstrumentID; +}; + +///查询组合合约分腿 +struct CSgitFtdcQrySyncStatusField +{ + ///交易日 + TSgitFtdcDateType TradingDay; +}; + +///组合交易合约的单腿 +struct CSgitFtdcCombinationLegField +{ + ///组合合约代码 + TSgitFtdcInstrumentIDType CombInstrumentID; + ///单腿编号 + TSgitFtdcLegIDType LegID; + ///单腿合约代码 + TSgitFtdcInstrumentIDType LegInstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///单腿乘数 + TSgitFtdcLegMultipleType LegMultiple; + ///派生层数 + TSgitFtdcImplyLevelType ImplyLevel; +}; + +///数据同步状态 +struct CSgitFtdcSyncStatusField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///数据同步状态 + TSgitFtdcDataSyncStatusType DataSyncStatus; +}; + +///查询联系人 +struct CSgitFtdcQryLinkManField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///联系人 +struct CSgitFtdcLinkManField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///联系人类型 + TSgitFtdcPersonTypeType PersonType; + ///证件类型 + TSgitFtdcIdCardTypeType IdentifiedCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///名称 + TSgitFtdcPartyNameType PersonName; + ///联系电话 + TSgitFtdcTelephoneType Telephone; + ///通讯地址 + TSgitFtdcAddressType Address; + ///邮政编码 + TSgitFtdcZipCodeType ZipCode; + ///优先级 + TSgitFtdcPriorityType Priority; +}; + +///查询经纪公司用户事件 +struct CSgitFtdcQryBrokerUserEventField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户事件类型 + TSgitFtdcUserEventTypeType UserEventType; +}; + +///查询经纪公司用户事件 +struct CSgitFtdcBrokerUserEventField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户事件类型 + TSgitFtdcUserEventTypeType UserEventType; + ///用户事件序号 + TSgitFtdcSequenceNoType EventSequenceNo; + ///事件发生日期 + TSgitFtdcDateType EventDate; + ///事件发生时间 + TSgitFtdcTimeType EventTime; + ///用户事件信息 + TSgitFtdcUserEventInfoType UserEventInfo; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询签约银行请求 +struct CSgitFtdcQryContractBankField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; +}; + +///查询签约银行响应 +struct CSgitFtdcContractBankField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; + ///银行名称 + TSgitFtdcBankNameType BankName; +}; + +///投资者组合持仓明细 +struct CSgitFtdcInvestorPositionCombineDetailField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///开仓日期 + TSgitFtdcDateType OpenDate; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///组合编号 + TSgitFtdcTradeIDType ComTradeID; + ///撮合编号 + TSgitFtdcTradeIDType TradeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///买卖 + TSgitFtdcDirectionType Direction; + ///持仓量 + TSgitFtdcVolumeType TotalAmt; + ///投资者保证金 + TSgitFtdcMoneyType Margin; + ///交易所保证金 + TSgitFtdcMoneyType ExchMargin; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; + ///单腿编号 + TSgitFtdcLegIDType LegID; + ///单腿乘数 + TSgitFtdcLegMultipleType LegMultiple; + ///组合持仓合约编码 + TSgitFtdcInstrumentIDType CombInstrumentID; +}; + +///预埋单 +struct CSgitFtdcParkedOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///预埋报单编号 + TSgitFtdcParkedOrderIDType ParkedOrderID; + ///用户类型 + TSgitFtdcUserTypeType UserType; + ///预埋单状态 + TSgitFtdcParkedOrderStatusType Status; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///输入预埋单操作 +struct CSgitFtdcParkedOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///预埋撤单单编号 + TSgitFtdcParkedOrderActionIDType ParkedOrderActionID; + ///用户类型 + TSgitFtdcUserTypeType UserType; + ///预埋撤单状态 + TSgitFtdcParkedOrderStatusType Status; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询预埋单 +struct CSgitFtdcQryParkedOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///查询预埋撤单 +struct CSgitFtdcQryParkedOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///删除预埋单 +struct CSgitFtdcRemoveParkedOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///预埋报单编号 + TSgitFtdcParkedOrderIDType ParkedOrderID; +}; + +///删除预埋撤单 +struct CSgitFtdcRemoveParkedOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///预埋撤单编号 + TSgitFtdcParkedOrderActionIDType ParkedOrderActionID; +}; + +///经纪公司可提资金算法表 +struct CSgitFtdcInvestorWithdrawAlgorithmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///可提资金比例 + TSgitFtdcRatioType UsingRatio; +}; + +///查询组合持仓明细 +struct CSgitFtdcQryInvestorPositionCombineDetailField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///组合持仓合约编码 + TSgitFtdcInstrumentIDType CombInstrumentID; +}; + +///成交均价 +struct CSgitFtdcMarketDataAveragePriceField +{ + ///当日均价 + TSgitFtdcPriceType AveragePrice; +}; + +///校验投资者密码 +struct CSgitFtdcVerifyInvestorPasswordField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///密码 + TSgitFtdcPasswordType Password; +}; + +///用户IP +struct CSgitFtdcUserIPField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///IP地址 + TSgitFtdcIPAddressType IPAddress; + ///IP地址掩码 + TSgitFtdcIPAddressType IPMask; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; +}; + +///用户事件通知信息 +struct CSgitFtdcTradingNoticeInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///发送时间 + TSgitFtdcTimeType SendTime; + ///消息正文 + TSgitFtdcContentType FieldContent; + ///序列系列号 + TSgitFtdcSequenceSeriesType SequenceSeries; + ///序列号 + TSgitFtdcSequenceNoType SequenceNo; +}; + +///用户事件通知 +struct CSgitFtdcTradingNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///序列系列号 + TSgitFtdcSequenceSeriesType SequenceSeries; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///发送时间 + TSgitFtdcTimeType SendTime; + ///序列号 + TSgitFtdcSequenceNoType SequenceNo; + ///消息正文 + TSgitFtdcContentType FieldContent; +}; + +///查询交易事件通知 +struct CSgitFtdcQryTradingNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///查询错误报单 +struct CSgitFtdcQryErrOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///错误报单 +struct CSgitFtdcErrOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询错误报单操作 +struct CSgitFtdcErrorConditionalOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///报单提交状态 + TSgitFtdcOrderSubmitStatusType OrderSubmitStatus; + ///报单提示序号 + TSgitFtdcSequenceNoType NotifySequence; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///报单来源 + TSgitFtdcOrderSourceType OrderSource; + ///报单状态 + TSgitFtdcOrderStatusType OrderStatus; + ///报单类型 + TSgitFtdcOrderTypeType OrderType; + ///今成交数量 + TSgitFtdcVolumeType VolumeTraded; + ///剩余数量 + TSgitFtdcVolumeType VolumeTotal; + ///报单日期 + TSgitFtdcDateType InsertDate; + ///委托时间 + TSgitFtdcTimeType InsertTime; + ///激活时间 + TSgitFtdcTimeType ActiveTime; + ///挂起时间 + TSgitFtdcTimeType SuspendTime; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///撤销时间 + TSgitFtdcTimeType CancelTime; + ///最后修改交易所交易员代码 + TSgitFtdcTraderIDType ActiveTraderID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///操作用户代码 + TSgitFtdcUserIDType ActiveUserID; + ///经纪公司报单编号 + TSgitFtdcSequenceNoType BrokerOrderSeq; + ///相关报单 + TSgitFtdcOrderSysIDType RelativeOrderSysID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询错误报单操作 +struct CSgitFtdcQryErrOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///错误报单操作 +struct CSgitFtdcErrOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///操作日期 + TSgitFtdcDateType ActionDate; + ///操作时间 + TSgitFtdcTimeType ActionTime; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///报单操作状态 + TSgitFtdcOrderActionStatusType OrderActionStatus; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询交易所状态 +struct CSgitFtdcQryExchangeSequenceField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///交易所状态 +struct CSgitFtdcExchangeSequenceField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///合约交易状态 + TSgitFtdcInstrumentStatusType MarketStatus; +}; + +///根据价格查询最大报单数量 +struct CSgitFtdcQueryMaxOrderVolumeWithPriceField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///最大允许报单数量 + TSgitFtdcVolumeType MaxVolume; + ///报单价格 + TSgitFtdcPriceType Price; +}; + +///查询经纪公司交易参数 +struct CSgitFtdcQryBrokerTradingParamsField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///经纪公司交易参数 +struct CSgitFtdcBrokerTradingParamsField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///保证金价格类型 + TSgitFtdcMarginPriceTypeType MarginPriceType; + ///盈亏算法 + TSgitFtdcAlgorithmType Algorithm; + ///可用是否包含平仓盈利 + TSgitFtdcIncludeCloseProfitType AvailIncludeCloseProfit; +}; + +///查询经纪公司交易算法 +struct CSgitFtdcQryBrokerTradingAlgosField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///经纪公司交易算法 +struct CSgitFtdcBrokerTradingAlgosField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///持仓处理算法编号 + TSgitFtdcHandlePositionAlgoIDType HandlePositionAlgoID; + ///寻找保证金率算法编号 + TSgitFtdcFindMarginRateAlgoIDType FindMarginRateAlgoID; + ///资金处理算法编号 + TSgitFtdcHandleTradingAccountAlgoIDType HandleTradingAccountAlgoID; +}; + +///查询经纪公司资金 +struct CSgitFtdcQueryBrokerDepositField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///经纪公司资金 +struct CSgitFtdcBrokerDepositField +{ + ///交易日期 + TSgitFtdcTradeDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///上次结算准备金 + TSgitFtdcMoneyType PreBalance; + ///当前保证金总额 + TSgitFtdcMoneyType CurrMargin; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///期货结算准备金 + TSgitFtdcMoneyType Balance; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///出金金额 + TSgitFtdcMoneyType Withdraw; + ///可提资金 + TSgitFtdcMoneyType Available; + ///基本准备金 + TSgitFtdcMoneyType Reserve; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; +}; + +///查询保证金监管系统经纪公司密钥 +struct CSgitFtdcQryCFMMCBrokerKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///保证金监管系统经纪公司密钥 +struct CSgitFtdcCFMMCBrokerKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///经纪公司统一编码 + TSgitFtdcParticipantIDType ParticipantID; + ///密钥生成日期 + TSgitFtdcDateType CreateDate; + ///密钥生成时间 + TSgitFtdcTimeType CreateTime; + ///密钥编号 + TSgitFtdcSequenceNoType KeyID; + ///动态密钥 + TSgitFtdcCFMMCKeyType CurrentKey; + ///动态密钥类型 + TSgitFtdcCFMMCKeyKindType KeyKind; +}; + +///保证金监管系统经纪公司资金账户密钥 +struct CSgitFtdcCFMMCTradingAccountKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///经纪公司统一编码 + TSgitFtdcParticipantIDType ParticipantID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///密钥编号 + TSgitFtdcSequenceNoType KeyID; + ///动态密钥 + TSgitFtdcCFMMCKeyType CurrentKey; +}; + +///请求查询保证金监管系统经纪公司资金账户密钥 +struct CSgitFtdcQryCFMMCTradingAccountKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///用户动态令牌参数 +struct CSgitFtdcBrokerUserOTPParamField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///动态令牌提供商 + TSgitFtdcOTPVendorsIDType OTPVendorsID; + ///动态令牌序列号 + TSgitFtdcSerialNumberType SerialNumber; + ///令牌密钥 + TSgitFtdcAuthKeyType AuthKey; + ///漂移值 + TSgitFtdcLastDriftType LastDrift; + ///成功值 + TSgitFtdcLastSuccessType LastSuccess; + ///动态令牌类型 + TSgitFtdcOTPTypeType OTPType; +}; + +///手工同步用户动态令牌 +struct CSgitFtdcManualSyncBrokerUserOTPField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///动态令牌类型 + TSgitFtdcOTPTypeType OTPType; + ///第一个动态密码 + TSgitFtdcPasswordType FirstOTP; + ///第二个动态密码 + TSgitFtdcPasswordType SecondOTP; +}; + +///投资者手续费率模板 +struct CSgitFtdcCommRateModelField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; + ///模板名称 + TSgitFtdcCommModelNameType CommModelName; +}; + +///请求查询投资者手续费率模板 +struct CSgitFtdcQryCommRateModelField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; +}; + +///仓单折抵信息 +struct CSgitFtdcEWarrantOffsetField +{ + ///交易日期 + TSgitFtdcTradeDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///数量 + TSgitFtdcVolumeType Volume; +}; + +///查询仓单折抵信息 +struct CSgitFtdcQryEWarrantOffsetField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///转帐开户请求 +struct CSgitFtdcReqOpenAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///转帐销户请求 +struct CSgitFtdcReqCancelAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///变更银行账户请求 +struct CSgitFtdcReqChangeAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///新银行帐号 + TSgitFtdcBankAccountType NewBankAccount; + ///新银行密码 + TSgitFtdcPasswordType NewBankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易ID + TSgitFtdcTIDType TID; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///转账请求 +struct CSgitFtdcReqTransferField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; +}; + +///银行发起银行资金转期货响应 +struct CSgitFtdcRspTransferField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///冲正请求 +struct CSgitFtdcReqRepealField +{ + ///冲正时间间隔 + TSgitFtdcRepealTimeIntervalType RepealTimeInterval; + ///已经冲正次数 + TSgitFtdcRepealedTimesType RepealedTimes; + ///银行冲正标志 + TSgitFtdcBankRepealFlagType BankRepealFlag; + ///期商冲正标志 + TSgitFtdcBrokerRepealFlagType BrokerRepealFlag; + ///被冲正平台流水号 + TSgitFtdcPlateSerialType PlateRepealSerial; + ///被冲正银行流水号 + TSgitFtdcBankSerialType BankRepealSerial; + ///被冲正期货流水号 + TSgitFtdcFutureSerialType FutureRepealSerial; + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; +}; + +///冲正响应 +struct CSgitFtdcRspRepealField +{ + ///冲正时间间隔 + TSgitFtdcRepealTimeIntervalType RepealTimeInterval; + ///已经冲正次数 + TSgitFtdcRepealedTimesType RepealedTimes; + ///银行冲正标志 + TSgitFtdcBankRepealFlagType BankRepealFlag; + ///期商冲正标志 + TSgitFtdcBrokerRepealFlagType BrokerRepealFlag; + ///被冲正平台流水号 + TSgitFtdcPlateSerialType PlateRepealSerial; + ///被冲正银行流水号 + TSgitFtdcBankSerialType BankRepealSerial; + ///被冲正期货流水号 + TSgitFtdcFutureSerialType FutureRepealSerial; + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询账户信息请求 +struct CSgitFtdcReqQueryAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///查询账户信息响应 +struct CSgitFtdcRspQueryAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///银行可用金额 + TSgitFtdcTradeAmountType BankUseAmount; + ///银行可取金额 + TSgitFtdcTradeAmountType BankFetchAmount; +}; + +///期商签到签退 +struct CSgitFtdcFutureSignIOField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///期商签到响应 +struct CSgitFtdcRspFutureSignInField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; + ///PIN密钥 + TSgitFtdcPasswordKeyType PinKey; + ///MAC密钥 + TSgitFtdcPasswordKeyType MacKey; +}; + +///期商签退请求 +struct CSgitFtdcReqFutureSignOutField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///期商签退响应 +struct CSgitFtdcRspFutureSignOutField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询指定流水号的交易结果请求 +struct CSgitFtdcReqQueryTradeResultBySerialField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///流水号 + TSgitFtdcSerialType Reference; + ///本流水号发布者的机构类型 + TSgitFtdcInstitutionTypeType RefrenceIssureType; + ///本流水号发布者机构编码 + TSgitFtdcOrganCodeType RefrenceIssure; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///查询指定流水号的交易结果响应 +struct CSgitFtdcRspQueryTradeResultBySerialField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; + ///流水号 + TSgitFtdcSerialType Reference; + ///本流水号发布者的机构类型 + TSgitFtdcInstitutionTypeType RefrenceIssureType; + ///本流水号发布者机构编码 + TSgitFtdcOrganCodeType RefrenceIssure; + ///原始返回代码 + TSgitFtdcReturnCodeType OriginReturnCode; + ///原始返回码描述 + TSgitFtdcDescrInfoForReturnCodeType OriginDescrInfoForReturnCode; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///日终文件就绪请求 +struct CSgitFtdcReqDayEndFileReadyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///文件业务功能 + TSgitFtdcFileBusinessCodeType FileBusinessCode; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///返回结果 +struct CSgitFtdcReturnResultField +{ + ///返回代码 + TSgitFtdcReturnCodeType ReturnCode; + ///返回码描述 + TSgitFtdcDescrInfoForReturnCodeType DescrInfoForReturnCode; +}; + +///验证期货资金密码 +struct CSgitFtdcVerifyFuturePasswordField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///验证客户信息 +struct CSgitFtdcVerifyCustInfoField +{ + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; +}; + +///验证期货资金密码和客户信息 +struct CSgitFtdcVerifyFuturePasswordAndCustInfoField +{ + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; +}; + +///验证期货资金密码和客户信息 +struct CSgitFtdcDepositResultInformField +{ + ///出入金流水号,该流水号为银期报盘返回的流水号 + TSgitFtdcDepositSeqNoType DepositSeqNo; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///返回代码 + TSgitFtdcReturnCodeType ReturnCode; + ///返回码描述 + TSgitFtdcDescrInfoForReturnCodeType DescrInfoForReturnCode; +}; + +///交易核心向银期报盘发出密钥同步请求 +struct CSgitFtdcReqSyncKeyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///交易核心给银期报盘的消息 + TSgitFtdcAddInfoType Message; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///交易核心向银期报盘发出密钥同步响应 +struct CSgitFtdcRspSyncKeyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///交易核心给银期报盘的消息 + TSgitFtdcAddInfoType Message; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询账户信息通知 +struct CSgitFtdcNotifyQueryAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///银行可用金额 + TSgitFtdcTradeAmountType BankUseAmount; + ///银行可取金额 + TSgitFtdcTradeAmountType BankFetchAmount; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///银期转账交易流水表 +struct CSgitFtdcTransferSerialField +{ + ///平台流水号 + TSgitFtdcPlateSerialType PlateSerial; + ///交易发起方日期 + TSgitFtdcTradeDateType TradeDate; + ///交易日期 + TSgitFtdcDateType TradingDay; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///交易代码 + TSgitFtdcTradeCodeType TradeCode; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///银行编码 + TSgitFtdcBankIDType BankID; + ///银行分支机构编码 + TSgitFtdcBankBrchIDType BankBranchID; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///期货公司编码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///期货公司帐号类型 + TSgitFtdcFutureAccTypeType FutureAccType; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///交易金额 + TSgitFtdcTradeAmountType TradeAmount; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///有效标志 + TSgitFtdcAvailabilityFlagType AvailabilityFlag; + ///操作员 + TSgitFtdcOperatorCodeType OperatorCode; + ///新银行帐号 + TSgitFtdcBankAccountType BankNewAccount; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///请求查询转帐流水 +struct CSgitFtdcQryTransferSerialField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///银行编码 + TSgitFtdcBankIDType BankID; +}; + +///期商签到通知 +struct CSgitFtdcNotifyFutureSignInField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; + ///PIN密钥 + TSgitFtdcPasswordKeyType PinKey; + ///MAC密钥 + TSgitFtdcPasswordKeyType MacKey; +}; + +///期商签退通知 +struct CSgitFtdcNotifyFutureSignOutField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///交易核心向银期报盘发出密钥同步处理结果的通知 +struct CSgitFtdcNotifySyncKeyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///交易核心给银期报盘的消息 + TSgitFtdcAddInfoType Message; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///请求查询银期签约关系 +struct CSgitFtdcQryAccountregisterField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///银行编码 + TSgitFtdcBankIDType BankID; +}; + +///客户开销户信息表 +struct CSgitFtdcAccountregisterField +{ + ///交易日期 + TSgitFtdcTradeDateType TradeDay; + ///银行编码 + TSgitFtdcBankIDType BankID; + ///银行分支机构编码 + TSgitFtdcBankBrchIDType BankBranchID; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///期货公司编码 + TSgitFtdcBrokerIDType BrokerID; + ///期货公司分支机构编码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///开销户类别 + TSgitFtdcOpenOrDestroyType OpenOrDestroy; + ///签约日期 + TSgitFtdcTradeDateType RegDate; + ///解约日期 + TSgitFtdcTradeDateType OutDate; + ///交易ID + TSgitFtdcTIDType TID; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; +}; + +///银期开户信息 +struct CSgitFtdcOpenAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///银期销户信息 +struct CSgitFtdcCancelAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///银期变更银行账号信息 +struct CSgitFtdcChangeAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///新银行帐号 + TSgitFtdcBankAccountType NewBankAccount; + ///新银行密码 + TSgitFtdcPasswordType NewBankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易ID + TSgitFtdcTIDType TID; + ///摘要 + TSgitFtdcDigestType Digest; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///灾备中心交易权限 +struct CSgitFtdcUserRightsAssignField +{ + ///应用单元代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///交易中心代码 + TSgitFtdcDRIdentityIDType DRIdentityID; +}; + +///经济公司是否有在本标示的交易权限 +struct CSgitFtdcBrokerUserRightAssignField +{ + ///应用单元代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易中心代码 + TSgitFtdcDRIdentityIDType DRIdentityID; + ///能否交易 + TSgitFtdcBoolType Tradeable; +}; + +///灾备交易转换报文 +struct CSgitFtdcDRTransferField +{ + ///原交易中心代码 + TSgitFtdcDRIdentityIDType OrigDRIdentityID; + ///目标交易中心代码 + TSgitFtdcDRIdentityIDType DestDRIdentityID; + ///原应用单元代码 + TSgitFtdcBrokerIDType OrigBrokerID; + ///目标易用单元代码 + TSgitFtdcBrokerIDType DestBrokerID; +}; + +//合约价位查询域 +struct CSgitMBLQuotReq +{ + TSgitFtdcInstrumentIDType StartContractID; //起始合约号 + TSgitFtdcInstrumentIDType EndContractID; //结束合约号 + TSgitFtdcDirectionType BsFlag; //买卖标志 +}; + +//合约价位域 +struct CSgitMBLQuotData +{ + TSgitFtdcInstrumentIDType ContractID; //合约号 + TSgitFtdcDirectionType BsFlag; //买卖标志 + TSgitFtdcPriceType Price; //价格 + TSgitFtdcVolumeType Qty; //数量 +}; + +//订阅合约行情行情 +struct CSgitSubQuotField +{ + TSgitFtdcInstrumentIDType ContractID; //合约号 +}; + +#endif diff --git a/vn.sgit/pyscript/generate_data_type.py b/vn.sgit/pyscript/generate_data_type.py new file mode 100644 index 00000000..be5d7737 --- /dev/null +++ b/vn.sgit/pyscript/generate_data_type.py @@ -0,0 +1,111 @@ +# encoding: UTF-8 + +__author__ = 'CHENXY' + +# C++鍜宲ython绫诲瀷鐨勬槧灏勫瓧鍏 +type_dict = { + 'int': 'int', + 'char': 'string', + 'double': 'float' +} + + +def process_line(line): + """澶勭悊姣忚""" + if '///' in line: # 娉ㄩ噴 + py_line = process_comment(line) + elif 'typedef' in line: # 绫诲瀷鐢虫槑 + py_line = process_typedef(line) + elif '#define' in line: # 瀹氫箟甯搁噺 + py_line = process_define(line) + elif line == '\n': # 绌鸿 + py_line = line + else: + py_line = '' + + return py_line + + +def process_comment(line): + """澶勭悊娉ㄩ噴""" + # if line[3] == '/': + # py_line = '' + # else: + # py_line = '#' + line[3:] + py_line = '#' + line[3:] + return py_line + + +def process_typedef(line): + """澶勭悊绫诲瀷鐢虫槑""" + content = line.split(' ') + type_ = type_dict[content[1]] + + if content[1] != 'unsigned': + keyword = content[-1] + else: + keyword = content[-1] + keyword = keyword.replace(';\n', '') + print content, keyword + + if '[' in keyword: + i = keyword.index('[') + keyword = keyword[:i] + else: + keyword = keyword.replace(';\n', '') # 鍒犻櫎琛屾湯鍒嗗彿 + + if 'char' in line: + if '[' in line: + type_ = 'string' + else: + type_ = 'char' + + py_line = 'typedefDict["%s"] = "%s"\n' % (keyword, type_) + + return py_line + + +def process_define(line): + """澶勭悊瀹氫箟甯搁噺""" + content = line.split(' ') + constant = content[1] + + if len(content)>2: + value = content[-1] + py_line = 'defineDict["%s"] = %s' % (constant, value) + else: + py_line = '' + + return py_line + + +def main(): + """涓诲嚱鏁""" + try: + fcpp = open('SgitFtdcUserApiDataType.h','r') + fpy = open('sgit_data_type.py', 'w') + + fpy.write('# encoding: UTF-8\n') + fpy.write('\n') + fpy.write('defineDict = {}\n') + fpy.write('typedefDict = {}\n') + fpy.write('\n') + + for n, line in enumerate(fcpp): + py_line = process_line(line) + if py_line: + fpy.write(py_line.decode('gbk').encode('utf-8')) + print n + + fcpp.close() + fpy.close() + + print u'data_type.py鐢熸垚杩囩▼瀹屾垚' + except Exception, e: + print u'data_type.py鐢熸垚杩囩▼鍑洪敊' + print e + + +if __name__ == '__main__': + main() + diff --git a/vn.sgit/pyscript/generate_md_functions.py b/vn.sgit/pyscript/generate_md_functions.py new file mode 100644 index 00000000..5060664d --- /dev/null +++ b/vn.sgit/pyscript/generate_md_functions.py @@ -0,0 +1,310 @@ +# encoding: UTF-8 + +__author__ = 'CHENXY' + +from string import join +from sgit_struct import structDict + + + +def processCallBack(line): + orignalLine = line + line = line.replace(' virtual void ', '') # 鍒犻櫎琛岄鐨勬棤鏁堝唴瀹 + line = line.replace('{};\n', '') # 鍒犻櫎琛屽熬鐨勬棤鏁堝唴瀹 + + content = line.split('(') + cbName = content[0] # 鍥炶皟鍑芥暟鍚嶇О + + cbArgs = content[1] # 鍥炶皟鍑芥暟鍙傛暟 + if cbArgs[-1] == ' ': + cbArgs = cbArgs.replace(') ', '') + else: + cbArgs = cbArgs.replace(')', '') + + cbArgsList = cbArgs.split(', ') # 灏嗘瘡涓弬鏁拌浆鍖栦负鍒楄〃 + + cbArgsTypeList = [] + cbArgsValueList = [] + + for arg in cbArgsList: # 寮濮嬪鐞嗗弬鏁 + content = arg.split(' ') + if len(content) > 1: + if 'struct' not in content: + cbArgsTypeList.append(content[0]) # 鍙傛暟绫诲瀷鍒楄〃 + cbArgsValueList.append(content[1]) # 鍙傛暟鏁版嵁鍒楄〃 + else: + print content + cbArgsTypeList.append(content[1]) # 鍙傛暟绫诲瀷鍒楄〃 + cbArgsValueList.append(content[2]+content[3]) # 鍙傛暟鏁版嵁鍒楄〃 + + createTask(cbName, cbArgsTypeList, cbArgsValueList, orignalLine) + createProcess(cbName, cbArgsTypeList, cbArgsValueList) + + # 鐢熸垚.h鏂囦欢涓殑process閮ㄥ垎 + process_line = 'void process' + cbName[2:] + '(Task task);\n' + fheaderprocess.write(process_line) + fheaderprocess.write('\n') + + # 鐢熸垚.h鏂囦欢涓殑on閮ㄥ垎 + if 'OnRspError' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict error) {};\n' + elif 'OnRspQry' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error, int id, bool last) {};\n' + elif 'OnRsp' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error, int id, bool last) {};\n' + elif 'OnRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data) {};\n' + elif 'OnErrRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error) {};\n' + else: + on_line = '' + fheaderon.write(on_line) + fheaderon.write('\n') + + # 鐢熸垚灏佽閮ㄥ垎 + createWrap(cbName) + + +#---------------------------------------------------------------------- +def createWrap(cbName): + """鍦≒ython灏佽娈典唬鐮佷腑杩涜澶勭悊""" + # 鐢熸垚.h鏂囦欢涓殑on閮ㄥ垎 + if 'OnRspError' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict error)\n' + override_line = '("on' + cbName[2:] + '")(error);\n' + elif 'OnRsp' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error, int id, bool last)\n' + override_line = '("on' + cbName[2:] + '")(data, error, id, last);\n' + elif 'OnRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data)\n' + override_line = '("on' + cbName[2:] + '")(data);\n' + elif 'OnErrRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error)\n' + override_line = '("on' + cbName[2:] + '")(data, error);\n' + else: + on_line = '' + + if on_line is not '': + fwrap.write(on_line) + fwrap.write('{\n') + fwrap.write('\ttry\n') + fwrap.write('\t{\n') + fwrap.write('\t\tthis->get_override'+override_line) + fwrap.write('\t}\n') + fwrap.write('\tcatch (error_already_set const &)\n') + fwrap.write('\t{\n') + fwrap.write('\t\tPyErr_Print();\n') + fwrap.write('\t}\n') + fwrap.write('};\n') + fwrap.write('\n') + + + +def createTask(cbName, cbArgsTypeList, cbArgsValueList, orignalLine): + # 浠庡洖璋冨嚱鏁扮敓鎴愪换鍔″璞★紝骞舵斁鍏ラ槦鍒 + funcline = orignalLine.replace(' virtual void ', 'void ' + apiName + '::') + funcline = funcline.replace('{};', '') + funcline = funcline.replace(' {}', '') + + ftask.write(funcline) + ftask.write('{\n') + ftask.write("\tTask task = Task();\n") + + ftask.write("\ttask.task_name = " + cbName.upper() + ";\n") + + # define甯搁噺 + global define_count + fdefine.write("#define " + cbName.upper() + ' ' + str(define_count) + '\n') + define_count = define_count + 1 + + # switch娈典唬鐮 + fswitch.write("case " + cbName.upper() + ':\n') + fswitch.write("{\n") + fswitch.write("\tthis->" + cbName.replace('On', 'process') + '(task);\n') + fswitch.write("\tbreak;\n") + fswitch.write("}\n") + fswitch.write("\n") + + for i, type_ in enumerate(cbArgsTypeList): + if type_ == 'int': + ftask.write("\ttask.task_id = " + cbArgsValueList[i] + ";\n") + elif type_ == 'bool': + ftask.write("\ttask.task_last = " + cbArgsValueList[i] + ";\n") + elif 'CSgitFtdcRspInfoField' in type_: + ftask.write("\n") + ftask.write("\tif (pRspInfo)\n") + ftask.write("\t{\n") + ftask.write("\t\ttask.task_error = " + cbArgsValueList[i] + ";\n") + ftask.write("\t}\n") + ftask.write("\telse\n") + ftask.write("\t{\n") + ftask.write("\t\tCSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField();\n") + ftask.write("\t\tmemset(&empty_error, 0, sizeof(empty_error));\n") + ftask.write("\t\ttask.task_error = empty_error;\n") + ftask.write("\t}\n") + else: + ftask.write("\n") + ftask.write("\tif (" + cbArgsValueList[i][1:] + ")\n") + ftask.write("\t{\n") + ftask.write("\t\ttask.task_data = " + cbArgsValueList[i] + ";\n") + ftask.write("\t}\n") + ftask.write("\telse\n") + ftask.write("\t{\n") + ftask.write("\t\t" + type_ + " empty_data = " + type_ + "();\n") + ftask.write("\t\tmemset(&empty_data, 0, sizeof(empty_data));\n") + ftask.write("\t\ttask.task_data = empty_data;\n") + ftask.write("\t}\n") + + ftask.write("\tthis->task_queue.push(task);\n") + ftask.write("};\n") + ftask.write("\n") + + +def createProcess(cbName, cbArgsTypeList, cbArgsValueList): + # 浠庨槦鍒椾腑鎻愬彇浠诲姟锛屽苟杞寲涓簆ython瀛楀吀 + fprocess.write("void " + apiName + '::' + cbName.replace('On', 'process') + '(Task task)' + "\n") + fprocess.write("{\n") + fprocess.write("\tPyLock lock;\n") + + onArgsList = [] + + for i, type_ in enumerate(cbArgsTypeList): + if 'CSgitFtdcRspInfoField' in type_: + fprocess.write("\t"+ type_ + ' task_error = any_cast<' + type_ + '>(task.task_error);\n') + fprocess.write("\t"+ "dict error;\n") + + struct = structDict[type_] + for key in struct.keys(): + fprocess.write("\t"+ 'error["' + key + '"] = task_error.' + key + ';\n') + + fprocess.write("\n") + + onArgsList.append('error') + + elif type_ in structDict: + fprocess.write("\t"+ type_ + ' task_data = any_cast<' + type_ + '>(task.task_data);\n') + fprocess.write("\t"+ "dict data;\n") + + struct = structDict[type_] + for key in struct.keys(): + fprocess.write("\t"+ 'data["' + key + '"] = task_data.' + key + ';\n') + + fprocess.write("\n") + + onArgsList.append('data') + + elif type_ == 'bool': + onArgsList.append('task.task_last') + + elif type_ == 'int': + onArgsList.append('task.task_id') + + onArgs = join(onArgsList, ', ') + fprocess.write('\tthis->' + cbName.replace('On', 'on') + '(' + onArgs +');\n') + + fprocess.write("};\n") + fprocess.write("\n") + + +def processFunction(line): + line = line.replace(' virtual int ', '') # 鍒犻櫎琛岄鐨勬棤鏁堝唴瀹 + line = line.replace(') = 0;\n', '') # 鍒犻櫎琛屽熬鐨勬棤鏁堝唴瀹 + + content = line.split('(') + fcName = content[0] # 鍥炶皟鍑芥暟鍚嶇О + + fcArgs = content[1] # 鍥炶皟鍑芥暟鍙傛暟 + fcArgs = fcArgs.replace(')', '') + + fcArgsList = fcArgs.split(',') # 灏嗘瘡涓弬鏁拌浆鍖栦负鍒楄〃 + + fcArgsTypeList = [] + fcArgsValueList = [] + + for arg in fcArgsList: # 寮濮嬪鐞嗗弬鏁 + content = arg.split(' ') + if len(content) >= 2: + fcArgsTypeList.append(content[0]) # 鍙傛暟绫诲瀷鍒楄〃 + fcArgsValueList.append(content[1]) # 鍙傛暟鏁版嵁鍒楄〃 + + print line + print fcArgs + print fcArgsList + print fcArgsTypeList + if len(fcArgsTypeList)>0 and fcArgsTypeList[0] in structDict: + createFunction(fcName, fcArgsTypeList, fcArgsValueList) + + # 鐢熸垚.h鏂囦欢涓殑涓诲姩鍑芥暟閮ㄥ垎 + if 'Req' in fcName: + req_line = 'int req' + fcName[3:] + '(dict req, int nRequestID);\n' + fheaderfunction.write(req_line) + fheaderfunction.write('\n') + + +def createFunction(fcName, fcArgsTypeList, fcArgsValueList): + type_ = fcArgsTypeList[0] + struct = structDict[type_] + + ffunction.write('int ' + apiName + '::req' + fcName[3:] + '(dict req, int nRequestID)\n') + ffunction.write('{\n') + ffunction.write('\t' + type_ +' myreq = ' + type_ + '();\n') + ffunction.write('\tmemset(&myreq, 0, sizeof(myreq));\n') + + for key, value in struct.items(): + if value == 'string': + line = '\tgetString(req, "' + key + '", myreq.' + key + ');\n' + elif value == 'char': + line = '\tgetChar(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'int': + line = '\tgetInt(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'long': + line = '\tgetLong(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'short': + line = '\tgetShort(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'double': + line = '\tgetDouble(req, "' + key + '", &myreq.' + key + ');\n' + ffunction.write(line) + + ffunction.write('\tint i = this->api->' + fcName + '(&myreq, nRequestID);\n') + ffunction.write('\treturn i;\n') + + ffunction.write('};\n') + ffunction.write('\n') + + + + +######################################################### +apiName = 'MdApi' + +fcpp = open('SgitFtdcMdApi.h', 'r') +ftask = open('sgit_md_task.cpp', 'w') +fprocess = open('sgit_md_process.cpp', 'w') +ffunction = open('sgit_md_function.cpp', 'w') +fdefine = open('sgit_md_define.cpp', 'w') +fswitch = open('sgit_md_switch.cpp', 'w') +fheaderprocess = open('sgit_md_header_process.h', 'w') +fheaderon = open('sgit_md_header_on.h', 'w') +fheaderfunction = open('sgit_md_header_function.h', 'w') +fwrap = open('sgit_md_wrap.cpp', 'w') + +define_count = 1 + +for line in fcpp: + if " virtual void On" in line: + print 'callback' + processCallBack(line) + elif " virtual int" in line: + print 'function' + processFunction(line) + +fcpp.close() +ftask.close() +fprocess.close() +ffunction.close() +fswitch.close() +fdefine.close() +fheaderprocess.close() +fheaderon.close() +fheaderfunction.close() +fwrap.close() \ No newline at end of file diff --git a/vn.sgit/pyscript/generate_struct.py b/vn.sgit/pyscript/generate_struct.py new file mode 100644 index 00000000..87b4c322 --- /dev/null +++ b/vn.sgit/pyscript/generate_struct.py @@ -0,0 +1,78 @@ +# encoding: UTF-8 + +__author__ = 'CHENXY' + +from sgit_data_type import * +import re + +def main(): + """涓诲嚱鏁""" + fcpp = open('SgitFtdcUserApiStruct.h', 'r') + fpy = open('sgit_struct.py', 'w') + + fpy.write('# encoding: UTF-8\n') + fpy.write('\n') + fpy.write('structDict = {}\n') + fpy.write('\n') + + for no, line in enumerate(fcpp): + # 缁撴瀯浣撶敵鏄庢敞閲 + if '///' in line and '\t' not in line: + py_line = '#' + line[3:] + + # 缁撴瀯浣撳彉閲忔敞閲 + elif '\t///' in line: + py_line = '#' + line[4:] + + # 缁撴瀯浣撶敵鏄 + elif 'struct' in line: + content = line.split(' ') + name = content[-1].replace('\n','') + py_line = '%s = {}\n' % name + + # 缁撴瀯浣撳彉閲 + elif ' ' in line and '///' not in line and '{' not in line: + #content = line.split('\t') + + if ' ;' in line: + line = line.replace(' ;', ';') + + if ' ' in line: + line = re.sub(' +', '\t', line) + + if '\t\t' in line: + line = re.sub('\t+', '\t', line) + + if '//' in line: + n = line.index('//') + line = line[:n] + + print no, ':', line + + content = line.split('\t') + print content + + typedef = content[1] + type_ = typedefDict[typedef] + variable = content[2].replace(';\n', "") + if ';' in variable: + variable = variable.replace(';', '') + py_line = '%s["%s"] = "%s"\n' % (name, variable, type_) + + # 缁撴瀯浣撶粨鏉 + elif '}' in line: + py_line = "structDict['%s'] = %s\n\n" % (name, name) + + # 缁撴瀯浣撳紑濮 + elif '{' in line: + py_line = '' + + # 鍏朵粬 + else: + py_line = '\n' + + fpy.write(py_line.decode('gbk').encode('utf-8')) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/vn.sgit/pyscript/generate_td_functions.py b/vn.sgit/pyscript/generate_td_functions.py new file mode 100644 index 00000000..39b82ab7 --- /dev/null +++ b/vn.sgit/pyscript/generate_td_functions.py @@ -0,0 +1,310 @@ +# encoding: UTF-8 + +__author__ = 'CHENXY' + +from string import join +from sgit_struct import structDict + + + +def processCallBack(line): + orignalLine = line + line = line.replace(' virtual void ', '') # 鍒犻櫎琛岄鐨勬棤鏁堝唴瀹 + line = line.replace('{};\n', '') # 鍒犻櫎琛屽熬鐨勬棤鏁堝唴瀹 + + content = line.split('(') + cbName = content[0] # 鍥炶皟鍑芥暟鍚嶇О + + cbArgs = content[1] # 鍥炶皟鍑芥暟鍙傛暟 + if cbArgs[-1] == ' ': + cbArgs = cbArgs.replace(') ', '') + else: + cbArgs = cbArgs.replace(')', '') + + cbArgsList = cbArgs.split(', ') # 灏嗘瘡涓弬鏁拌浆鍖栦负鍒楄〃 + + cbArgsTypeList = [] + cbArgsValueList = [] + + for arg in cbArgsList: # 寮濮嬪鐞嗗弬鏁 + content = arg.split(' ') + if len(content) > 1: + if 'struct' not in content: + cbArgsTypeList.append(content[0]) # 鍙傛暟绫诲瀷鍒楄〃 + cbArgsValueList.append(content[1]) # 鍙傛暟鏁版嵁鍒楄〃 + else: + print content + cbArgsTypeList.append(content[1]) # 鍙傛暟绫诲瀷鍒楄〃 + cbArgsValueList.append(content[2]+content[3]) # 鍙傛暟鏁版嵁鍒楄〃 + + createTask(cbName, cbArgsTypeList, cbArgsValueList, orignalLine) + createProcess(cbName, cbArgsTypeList, cbArgsValueList) + + # 鐢熸垚.h鏂囦欢涓殑process閮ㄥ垎 + process_line = 'void process' + cbName[2:] + '(Task task);\n' + fheaderprocess.write(process_line) + fheaderprocess.write('\n') + + # 鐢熸垚.h鏂囦欢涓殑on閮ㄥ垎 + if 'OnRspError' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict error) {};\n' + elif 'OnRspQry' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error, int id, bool last) {};\n' + elif 'OnRsp' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error, int id, bool last) {};\n' + elif 'OnRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data) {};\n' + elif 'OnErrRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error) {};\n' + else: + on_line = '' + fheaderon.write(on_line) + fheaderon.write('\n') + + # 鐢熸垚灏佽閮ㄥ垎 + createWrap(cbName) + + +#---------------------------------------------------------------------- +def createWrap(cbName): + """鍦≒ython灏佽娈典唬鐮佷腑杩涜澶勭悊""" + # 鐢熸垚.h鏂囦欢涓殑on閮ㄥ垎 + if 'OnRspError' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict error)\n' + override_line = '("on' + cbName[2:] + '")(error);\n' + elif 'OnRsp' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error, int id, bool last)\n' + override_line = '("on' + cbName[2:] + '")(data, error, id, last);\n' + elif 'OnRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data)\n' + override_line = '("on' + cbName[2:] + '")(data);\n' + elif 'OnErrRtn' in cbName: + on_line = 'virtual void on' + cbName[2:] + '(dict data, dict error)\n' + override_line = '("on' + cbName[2:] + '")(data, error);\n' + else: + on_line = '' + + if on_line is not '': + fwrap.write(on_line) + fwrap.write('{\n') + fwrap.write('\ttry\n') + fwrap.write('\t{\n') + fwrap.write('\t\tthis->get_override'+override_line) + fwrap.write('\t}\n') + fwrap.write('\tcatch (error_already_set const &)\n') + fwrap.write('\t{\n') + fwrap.write('\t\tPyErr_Print();\n') + fwrap.write('\t}\n') + fwrap.write('};\n') + fwrap.write('\n') + + + +def createTask(cbName, cbArgsTypeList, cbArgsValueList, orignalLine): + # 浠庡洖璋冨嚱鏁扮敓鎴愪换鍔″璞★紝骞舵斁鍏ラ槦鍒 + funcline = orignalLine.replace(' virtual void ', 'void ' + apiName + '::') + funcline = funcline.replace('{};', '') + funcline = funcline.replace(' {}', '') + + ftask.write(funcline) + ftask.write('{\n') + ftask.write("\tTask task = Task();\n") + + ftask.write("\ttask.task_name = " + cbName.upper() + ";\n") + + # define甯搁噺 + global define_count + fdefine.write("#define " + cbName.upper() + ' ' + str(define_count) + '\n') + define_count = define_count + 1 + + # switch娈典唬鐮 + fswitch.write("case " + cbName.upper() + ':\n') + fswitch.write("{\n") + fswitch.write("\tthis->" + cbName.replace('On', 'process') + '(task);\n') + fswitch.write("\tbreak;\n") + fswitch.write("}\n") + fswitch.write("\n") + + for i, type_ in enumerate(cbArgsTypeList): + if type_ == 'int': + ftask.write("\ttask.task_id = " + cbArgsValueList[i] + ";\n") + elif type_ == 'bool': + ftask.write("\ttask.task_last = " + cbArgsValueList[i] + ";\n") + elif 'CSgitFtdcRspInfoField' in type_: + ftask.write("\n") + ftask.write("\tif (pRspInfo)\n") + ftask.write("\t{\n") + ftask.write("\t\ttask.task_error = " + cbArgsValueList[i] + ";\n") + ftask.write("\t}\n") + ftask.write("\telse\n") + ftask.write("\t{\n") + ftask.write("\t\tCSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField();\n") + ftask.write("\t\tmemset(&empty_error, 0, sizeof(empty_error));\n") + ftask.write("\t\ttask.task_error = empty_error;\n") + ftask.write("\t}\n") + else: + ftask.write("\n") + ftask.write("\tif (" + cbArgsValueList[i][1:] + ")\n") + ftask.write("\t{\n") + ftask.write("\t\ttask.task_data = " + cbArgsValueList[i] + ";\n") + ftask.write("\t}\n") + ftask.write("\telse\n") + ftask.write("\t{\n") + ftask.write("\t\t" + type_ + " empty_data = " + type_ + "();\n") + ftask.write("\t\tmemset(&empty_data, 0, sizeof(empty_data));\n") + ftask.write("\t\ttask.task_data = empty_data;\n") + ftask.write("\t}\n") + + ftask.write("\tthis->task_queue.push(task);\n") + ftask.write("};\n") + ftask.write("\n") + + +def createProcess(cbName, cbArgsTypeList, cbArgsValueList): + # 浠庨槦鍒椾腑鎻愬彇浠诲姟锛屽苟杞寲涓簆ython瀛楀吀 + fprocess.write("void " + apiName + '::' + cbName.replace('On', 'process') + '(Task task)' + "\n") + fprocess.write("{\n") + fprocess.write("\tPyLock lock;\n") + + onArgsList = [] + + for i, type_ in enumerate(cbArgsTypeList): + if 'CSgitFtdcRspInfoField' in type_: + fprocess.write("\t"+ type_ + ' task_error = any_cast<' + type_ + '>(task.task_error);\n') + fprocess.write("\t"+ "dict error;\n") + + struct = structDict[type_] + for key in struct.keys(): + fprocess.write("\t"+ 'error["' + key + '"] = task_error.' + key + ';\n') + + fprocess.write("\n") + + onArgsList.append('error') + + elif type_ in structDict: + fprocess.write("\t"+ type_ + ' task_data = any_cast<' + type_ + '>(task.task_data);\n') + fprocess.write("\t"+ "dict data;\n") + + struct = structDict[type_] + for key in struct.keys(): + fprocess.write("\t"+ 'data["' + key + '"] = task_data.' + key + ';\n') + + fprocess.write("\n") + + onArgsList.append('data') + + elif type_ == 'bool': + onArgsList.append('task.task_last') + + elif type_ == 'int': + onArgsList.append('task.task_id') + + onArgs = join(onArgsList, ', ') + fprocess.write('\tthis->' + cbName.replace('On', 'on') + '(' + onArgs +');\n') + + fprocess.write("};\n") + fprocess.write("\n") + + +def processFunction(line): + line = line.replace(' virtual int ', '') # 鍒犻櫎琛岄鐨勬棤鏁堝唴瀹 + line = line.replace(') = 0;\n', '') # 鍒犻櫎琛屽熬鐨勬棤鏁堝唴瀹 + + content = line.split('(') + fcName = content[0] # 鍥炶皟鍑芥暟鍚嶇О + + fcArgs = content[1] # 鍥炶皟鍑芥暟鍙傛暟 + fcArgs = fcArgs.replace(')', '') + + fcArgsList = fcArgs.split(',') # 灏嗘瘡涓弬鏁拌浆鍖栦负鍒楄〃 + + fcArgsTypeList = [] + fcArgsValueList = [] + + for arg in fcArgsList: # 寮濮嬪鐞嗗弬鏁 + content = arg.split(' ') + if len(content) >= 2: + fcArgsTypeList.append(content[0]) # 鍙傛暟绫诲瀷鍒楄〃 + fcArgsValueList.append(content[1]) # 鍙傛暟鏁版嵁鍒楄〃 + + print line + print fcArgs + print fcArgsList + print fcArgsTypeList + if len(fcArgsTypeList)>0 and fcArgsTypeList[0] in structDict: + createFunction(fcName, fcArgsTypeList, fcArgsValueList) + + # 鐢熸垚.h鏂囦欢涓殑涓诲姩鍑芥暟閮ㄥ垎 + if 'Req' in fcName: + req_line = 'int req' + fcName[3:] + '(dict req, int nRequestID);\n' + fheaderfunction.write(req_line) + fheaderfunction.write('\n') + + +def createFunction(fcName, fcArgsTypeList, fcArgsValueList): + type_ = fcArgsTypeList[0] + struct = structDict[type_] + + ffunction.write('int ' + apiName + '::req' + fcName[3:] + '(dict req, int nRequestID)\n') + ffunction.write('{\n') + ffunction.write('\t' + type_ +' myreq = ' + type_ + '();\n') + ffunction.write('\tmemset(&myreq, 0, sizeof(myreq));\n') + + for key, value in struct.items(): + if value == 'string': + line = '\tgetString(req, "' + key + '", myreq.' + key + ');\n' + elif value == 'char': + line = '\tgetChar(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'int': + line = '\tgetInt(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'long': + line = '\tgetLong(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'short': + line = '\tgetShort(req, "' + key + '", &myreq.' + key + ');\n' + elif value == 'float': + line = '\tgetDouble(req, "' + key + '", &myreq.' + key + ');\n' + ffunction.write(line) + + ffunction.write('\tint i = this->api->' + fcName + '(&myreq, nRequestID);\n') + ffunction.write('\treturn i;\n') + + ffunction.write('};\n') + ffunction.write('\n') + + + + +######################################################### +apiName = 'TdApi' + +fcpp = open('SgitFtdcTraderApi.h', 'r') +ftask = open('sgit_td_task.cpp', 'w') +fprocess = open('sgit_td_process.cpp', 'w') +ffunction = open('sgit_td_function.cpp', 'w') +fdefine = open('sgit_td_define.cpp', 'w') +fswitch = open('sgit_td_switch.cpp', 'w') +fheaderprocess = open('sgit_td_header_process.h', 'w') +fheaderon = open('sgit_td_header_on.h', 'w') +fheaderfunction = open('sgit_td_header_function.h', 'w') +fwrap = open('sgit_td_wrap.cpp', 'w') + +define_count = 1 + +for line in fcpp: + if " virtual void On" in line: + print 'callback' + processCallBack(line) + elif " virtual int" in line: + print 'function' + processFunction(line) + +fcpp.close() +ftask.close() +fprocess.close() +ffunction.close() +fswitch.close() +fdefine.close() +fheaderprocess.close() +fheaderon.close() +fheaderfunction.close() +fwrap.close() \ No newline at end of file diff --git a/vn.sgit/pyscript/sgit_data_type.py b/vn.sgit/pyscript/sgit_data_type.py new file mode 100644 index 00000000..c88a26b0 --- /dev/null +++ b/vn.sgit/pyscript/sgit_data_type.py @@ -0,0 +1,4812 @@ +# encoding: UTF-8 + +defineDict = {} +typedefDict = {} + +#////////////////////////////////////////////////////////////////////// + +#////////////////////////////////////////////////////////////////////// + + + +#////////////////////////////////////////////////////////////////////// +#TFtdcTraderIDType鏄竴涓氦鏄撴墍浜ゆ槗鍛樹唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTraderIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorIDType鏄竴涓姇璧勮呬唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInvestorIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerIDType鏄竴涓粡绾叕鍙镐唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBrokerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerAbbrType鏄竴涓粡绾叕鍙哥畝绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBrokerAbbrType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerNameType鏄竴涓粡绾叕鍙稿悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBrokerNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeInstIDType鏄竴涓悎绾﹀湪浜ゆ槗鎵鐨勪唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcExchangeInstIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderRefType鏄竴涓姤鍗曞紩鐢ㄧ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrderRefType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParticipantIDType鏄竴涓細鍛樹唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcParticipantIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserIDType鏄竴涓敤鎴蜂唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUserIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPasswordType鏄竴涓瘑鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPasswordType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientIDType鏄竴涓氦鏄撶紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClientIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentIDType鏄竴涓悎绾︿唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstrumentIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMarketIDType鏄竴涓競鍦轰唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMarketIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductNameType鏄竴涓骇鍝佸悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProductNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeIDType鏄竴涓氦鏄撴墍浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcExchangeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeNameType鏄竴涓氦鏄撴墍鍚嶇О绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcExchangeNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeAbbrType鏄竴涓氦鏄撴墍绠绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcExchangeAbbrType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeFlagType鏄竴涓氦鏄撴墍鏍囧織绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcExchangeFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMacAddressType鏄竴涓狹ac鍦板潃绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMacAddressType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangePropertyType鏄竴涓氦鏄撴墍灞炴х被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_EXP_Normal"] = '0' +#鏍规嵁鎴愪氦鐢熸垚鎶ュ崟 +defineDict["Sgit_FTDC_EXP_GenOrderByTrade"] = '1' + +typedefDict["TSgitFtdcExchangePropertyType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDateType鏄竴涓棩鏈熺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimeType鏄竴涓椂闂寸被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLongTimeType鏄竴涓暱鏃堕棿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLongTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentNameType鏄竴涓悎绾﹀悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstrumentNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementGroupIDType鏄竴涓粨绠楃粍浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSettlementGroupIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderSysIDType鏄竴涓姤鍗曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrderSysIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeIDType鏄竴涓垚浜ょ紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommandTypeType鏄竴涓狣B鍛戒护绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommandTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIPAddressType鏄竴涓狪P鍦板潃绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcIPAddressType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductInfoType鏄竴涓骇鍝佷俊鎭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProductInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProtocolInfoType鏄竴涓崗璁俊鎭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProtocolInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessUnitType鏄竴涓笟鍔″崟鍏冪被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBusinessUnitType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDepositSeqNoType鏄竴涓嚭鍏ラ噾娴佹按鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDepositSeqNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIdentifiedCardNoType鏄竴涓瘉浠跺彿鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcIdentifiedCardNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIdCardTypeType鏄竴涓瘉浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#缁勭粐鏈烘瀯浠g爜 +defineDict["Sgit_FTDC_ICT_EID"] = '0' +#韬唤璇 +defineDict["Sgit_FTDC_ICT_IDCard"] = '1' +#鍐涘畼璇 +defineDict["Sgit_FTDC_ICT_OfficerIDCard"] = '2' +#璀﹀畼璇 +defineDict["Sgit_FTDC_ICT_PoliceIDCard"] = '3' +#澹叺璇 +defineDict["Sgit_FTDC_ICT_SoldierIDCard"] = '4' +#鎴峰彛绨 +defineDict["Sgit_FTDC_ICT_HouseholdRegister"] = '5' +#鎶ょ収 +defineDict["Sgit_FTDC_ICT_Passport"] = '6' +#鍙拌優璇 +defineDict["Sgit_FTDC_ICT_TaiwanCompatriotIDCard"] = '7' +#鍥炰埂璇 +defineDict["Sgit_FTDC_ICT_HomeComingCard"] = '8' +#钀ヤ笟鎵х収鍙 +defineDict["Sgit_FTDC_ICT_LicenseNo"] = '9' +#绋庡姟鐧昏鍙 +defineDict["Sgit_FTDC_ICT_TaxNo"] = 'A' +#鍏朵粬璇佷欢 +defineDict["Sgit_FTDC_ICT_OtherCard"] = 'x' + +typedefDict["TSgitFtdcIdCardTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderLocalIDType鏄竴涓湰鍦版姤鍗曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrderLocalIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserNameType鏄竴涓敤鎴峰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUserNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPartyNameType鏄竴涓弬涓庝汉鍚嶇О绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPartyNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcErrorMsgType鏄竴涓敊璇俊鎭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcErrorMsgType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFieldNameType鏄竴涓瓧娈靛悕绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFieldNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFieldContentType鏄竴涓瓧娈靛唴瀹圭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFieldContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemNameType鏄竴涓郴缁熷悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSystemNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcContentType鏄竴涓秷鎭鏂囩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorRangeType鏄竴涓姇璧勮呰寖鍥寸被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_IR_All"] = '1' +#鎶曡祫鑰呯粍 +defineDict["Sgit_FTDC_IR_Group"] = '2' +#鍗曚竴鎶曡祫鑰 +defineDict["Sgit_FTDC_IR_Single"] = '3' + +typedefDict["TSgitFtdcInvestorRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDepartmentRangeType鏄竴涓姇璧勮呰寖鍥寸被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_DR_All"] = '1' +#缁勭粐鏋舵瀯 +defineDict["Sgit_FTDC_DR_Group"] = '2' +#鍗曚竴鎶曡祫鑰 +defineDict["Sgit_FTDC_DR_Single"] = '3' + +typedefDict["TSgitFtdcDepartmentRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataSyncStatusType鏄竴涓暟鎹悓姝ョ姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈悓姝 +defineDict["Sgit_FTDC_DS_Asynchronous"] = '1' +#鍚屾涓 +defineDict["Sgit_FTDC_DS_Synchronizing"] = '2' +#宸插悓姝 +defineDict["Sgit_FTDC_DS_Synchronized"] = '3' + +typedefDict["TSgitFtdcDataSyncStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerDataSyncStatusType鏄竴涓粡绾叕鍙告暟鎹悓姝ョ姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#宸插悓姝 +defineDict["Sgit_FTDC_BDS_Synchronized"] = '1' +#鍚屾涓 +defineDict["Sgit_FTDC_BDS_Synchronizing"] = '2' + +typedefDict["TSgitFtdcBrokerDataSyncStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeConnectStatusType鏄竴涓氦鏄撴墍杩炴帴鐘舵佺被鍨 +#////////////////////////////////////////////////////////////////////// +#娌℃湁浠讳綍杩炴帴 +defineDict["Sgit_FTDC_ECS_NoConnection"] = '1' +#宸茬粡鍙戝嚭鍚堢害鏌ヨ璇锋眰 +defineDict["Sgit_FTDC_ECS_QryInstrumentSent"] = '2' +#宸茬粡鑾峰彇淇℃伅 +defineDict["Sgit_FTDC_ECS_GotInformation"] = '9' + +typedefDict["TSgitFtdcExchangeConnectStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTraderConnectStatusType鏄竴涓氦鏄撴墍浜ゆ槗鍛樿繛鎺ョ姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#娌℃湁浠讳綍杩炴帴 +defineDict["Sgit_FTDC_TCS_NotConnected"] = '1' +#宸茬粡杩炴帴 +defineDict["Sgit_FTDC_TCS_Connected"] = '2' +#宸茬粡鍙戝嚭鍚堢害鏌ヨ璇锋眰 +defineDict["Sgit_FTDC_TCS_QryInstrumentSent"] = '3' +#璁㈤槄绉佹湁娴 +defineDict["Sgit_FTDC_TCS_SubPrivateFlow"] = '4' + +typedefDict["TSgitFtdcTraderConnectStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionCodeType鏄竴涓姛鑳戒唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏁版嵁寮傛鍖 +defineDict["Sgit_FTDC_FC_DataAsync"] = '1' +#寮哄埗鐢ㄦ埛鐧诲嚭 +defineDict["Sgit_FTDC_FC_ForceUserLogout"] = '2' +#鍙樻洿绠$悊鐢ㄦ埛鍙d护 +defineDict["Sgit_FTDC_FC_UserPasswordUpdate"] = '3' +#鍙樻洿缁忕邯鍏徃鍙d护 +defineDict["Sgit_FTDC_FC_BrokerPasswordUpdate"] = '4' +#鍙樻洿鎶曡祫鑰呭彛浠 +defineDict["Sgit_FTDC_FC_InvestorPasswordUpdate"] = '5' +#鎶ュ崟鎻掑叆 +defineDict["Sgit_FTDC_FC_OrderInsert"] = '6' +#鎶ュ崟鎿嶄綔 +defineDict["Sgit_FTDC_FC_OrderAction"] = '7' +#鍚屾绯荤粺鏁版嵁 +defineDict["Sgit_FTDC_FC_SyncSystemData"] = '8' +#鍚屾缁忕邯鍏徃鏁版嵁 +defineDict["Sgit_FTDC_FC_SyncBrokerData"] = '9' +#鎵归噺鍚屾缁忕邯鍏徃鏁版嵁 +defineDict["Sgit_FTDC_FC_BachSyncBrokerData"] = 'A' +#瓒呯骇鏌ヨ +defineDict["Sgit_FTDC_FC_SuperQuery"] = 'B' +#鎶ュ崟鎻掑叆 +defineDict["Sgit_FTDC_FC_ParkedOrderInsert"] = 'C' +#鎶ュ崟鎿嶄綔 +defineDict["Sgit_FTDC_FC_ParkedOrderAction"] = 'D' +#鍚屾鍔ㄦ佷护鐗 +defineDict["Sgit_FTDC_FC_SyncOTP"] = 'E' + +typedefDict["TSgitFtdcFunctionCodeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerFunctionCodeType鏄竴涓粡绾叕鍙稿姛鑳戒唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#寮哄埗鐢ㄦ埛鐧诲嚭 +defineDict["Sgit_FTDC_BFC_ForceUserLogout"] = '1' +#鍙樻洿鐢ㄦ埛鍙d护 +defineDict["Sgit_FTDC_BFC_UserPasswordUpdate"] = '2' +#鍚屾缁忕邯鍏徃鏁版嵁 +defineDict["Sgit_FTDC_BFC_SyncBrokerData"] = '3' +#鎵归噺鍚屾缁忕邯鍏徃鏁版嵁 +defineDict["Sgit_FTDC_BFC_BachSyncBrokerData"] = '4' +#鎶ュ崟鎻掑叆 +defineDict["Sgit_FTDC_BFC_OrderInsert"] = '5' +#鎶ュ崟鎿嶄綔 +defineDict["Sgit_FTDC_BFC_OrderAction"] = '6' +#鍏ㄩ儴鏌ヨ +defineDict["Sgit_FTDC_BFC_AllQuery"] = '7' +#绯荤粺鍔熻兘锛氱櫥鍏/鐧诲嚭/淇敼瀵嗙爜绛 +defineDict["Sgit_FTDC_BFC_log"] = 'a' +#鍩烘湰鏌ヨ锛氭煡璇㈠熀纭鏁版嵁锛屽鍚堢害锛屼氦鏄撴墍绛夊父閲 +defineDict["Sgit_FTDC_BFC_BaseQry"] = 'b' +#浜ゆ槗鏌ヨ锛氬鏌ユ垚浜わ紝濮旀墭 +defineDict["Sgit_FTDC_BFC_TradeQry"] = 'c' +#浜ゆ槗鍔熻兘锛氭姤鍗曪紝鎾ゅ崟 +defineDict["Sgit_FTDC_BFC_Trade"] = 'd' +#閾舵湡杞处 +defineDict["Sgit_FTDC_BFC_Virement"] = 'e' +#椋庨櫓鐩戞帶 +defineDict["Sgit_FTDC_BFC_Risk"] = 'f' +#鏌ヨ/绠$悊锛氭煡璇細璇濓紝韪汉绛 +defineDict["Sgit_FTDC_BFC_Session"] = 'g' +#椋庢帶閫氱煡鎺у埗 +defineDict["Sgit_FTDC_BFC_RiskNoticeCtl"] = 'h' +#椋庢帶閫氱煡鍙戦 +defineDict["Sgit_FTDC_BFC_RiskNotice"] = 'i' +#瀵熺湅缁忕邯鍏徃璧勯噾鏉冮檺 +defineDict["Sgit_FTDC_BFC_BrokerDeposit"] = 'j' +#璧勯噾鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryFund"] = 'k' +#鎶ュ崟鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryOrder"] = 'l' +#鎴愪氦鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryTrade"] = 'm' +#鎸佷粨鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryPosition"] = 'n' +#琛屾儏鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryMarketData"] = 'o' +#鐢ㄦ埛浜嬩欢鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryUserEvent"] = 'p' +#椋庨櫓閫氱煡鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryRiskNotify"] = 'q' +#鍑哄叆閲戞煡璇 +defineDict["Sgit_FTDC_BFC_QueryFundChange"] = 'r' +#鎶曡祫鑰呬俊鎭煡璇 +defineDict["Sgit_FTDC_BFC_QueryInvestor"] = 's' +#浜ゆ槗缂栫爜鏌ヨ +defineDict["Sgit_FTDC_BFC_QueryTradingCode"] = 't' +#寮哄钩 +defineDict["Sgit_FTDC_BFC_ForceClose"] = 'u' +#鍘嬪姏娴嬭瘯 +defineDict["Sgit_FTDC_BFC_PressTest"] = 'v' +#鏉冪泭鍙嶇畻 +defineDict["Sgit_FTDC_BFC_RemainCalc"] = 'w' +#鍑鎸佷粨淇濊瘉閲戞寚鏍 +defineDict["Sgit_FTDC_BFC_NetPositionInd"] = 'x' +#椋庨櫓棰勭畻 +defineDict["Sgit_FTDC_BFC_RiskPredict"] = 'y' +#鏁版嵁瀵煎嚭 +defineDict["Sgit_FTDC_BFC_DataExport"] = 'z' +#椋庢帶鎸囨爣璁剧疆 +defineDict["Sgit_FTDC_BFC_RiskTargetSetup"] = 'A' +#琛屾儏棰勮 +defineDict["Sgit_FTDC_BFC_MarketDataWarn"] = 'B' +#涓氬姟閫氱煡鏌ヨ +defineDict["Sgit_FTDC_BFC_QryBizNotice"] = 'C' +#涓氬姟閫氱煡妯℃澘璁剧疆 +defineDict["Sgit_FTDC_BFC_CfgBizNotice"] = 'D' +#鍚屾鍔ㄦ佷护鐗 +defineDict["Sgit_FTDC_BFC_SyncOTP"] = 'E' +#鍙戦佷笟鍔¢氱煡 +defineDict["Sgit_FTDC_BFC_SendBizNotice"] = 'F' +#椋庨櫓绾у埆鏍囧噯璁剧疆 +defineDict["Sgit_FTDC_BFC_CfgRiskLevelStd"] = 'G' + +typedefDict["TSgitFtdcBrokerFunctionCodeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderActionStatusType鏄竴涓姤鍗曟搷浣滅姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#宸茬粡鎻愪氦 +defineDict["Sgit_FTDC_OAS_Submitted"] = 'a' +#宸茬粡鎺ュ彈 +defineDict["Sgit_FTDC_OAS_Accepted"] = 'b' +#宸茬粡琚嫆缁 +defineDict["Sgit_FTDC_OAS_Rejected"] = 'c' + +typedefDict["TSgitFtdcOrderActionStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderStatusType鏄竴涓姤鍗曠姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鍏ㄩ儴鎴愪氦 +defineDict["Sgit_FTDC_OST_AllTraded"] = '0' +#閮ㄥ垎鎴愪氦杩樺湪闃熷垪涓 +defineDict["Sgit_FTDC_OST_PartTradedQueueing"] = '1' +#閮ㄥ垎鎴愪氦涓嶅湪闃熷垪涓 +defineDict["Sgit_FTDC_OST_PartTradedNotQueueing"] = '2' +#鏈垚浜よ繕鍦ㄩ槦鍒椾腑 +defineDict["Sgit_FTDC_OST_NoTradeQueueing"] = '3' +#鏈垚浜や笉鍦ㄩ槦鍒椾腑 +defineDict["Sgit_FTDC_OST_NoTradeNotQueueing"] = '4' +#鎾ゅ崟 +defineDict["Sgit_FTDC_OST_Canceled"] = '5' +#鏈煡 +defineDict["Sgit_FTDC_OST_Unknown"] = 'a' +#灏氭湭瑙﹀彂 +defineDict["Sgit_FTDC_OST_NotTouched"] = 'b' +#宸茶Е鍙 +defineDict["Sgit_FTDC_OST_Touched"] = 'c' + +typedefDict["TSgitFtdcOrderStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderSubmitStatusType鏄竴涓姤鍗曟彁浜ょ姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#宸茬粡鎻愪氦 +defineDict["Sgit_FTDC_OSS_InsertSubmitted"] = '0' +#鎾ゅ崟宸茬粡鎻愪氦 +defineDict["Sgit_FTDC_OSS_CancelSubmitted"] = '1' +#淇敼宸茬粡鎻愪氦 +defineDict["Sgit_FTDC_OSS_ModifySubmitted"] = '2' +#宸茬粡鎺ュ彈 +defineDict["Sgit_FTDC_OSS_Accepted"] = '3' +#鎶ュ崟宸茬粡琚嫆缁 +defineDict["Sgit_FTDC_OSS_InsertRejected"] = '4' +#鎾ゅ崟宸茬粡琚嫆缁 +defineDict["Sgit_FTDC_OSS_CancelRejected"] = '5' +#鏀瑰崟宸茬粡琚嫆缁 +defineDict["Sgit_FTDC_OSS_ModifyRejected"] = '6' + +typedefDict["TSgitFtdcOrderSubmitStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionDateType鏄竴涓寔浠撴棩鏈熺被鍨 +#////////////////////////////////////////////////////////////////////// +#浠婃棩鎸佷粨 +defineDict["Sgit_FTDC_PSD_Today"] = '1' +#鍘嗗彶鎸佷粨 +defineDict["Sgit_FTDC_PSD_History"] = '2' + +typedefDict["TSgitFtdcPositionDateType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionDateTypeType鏄竴涓寔浠撴棩鏈熺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#浣跨敤鍘嗗彶鎸佷粨 +defineDict["Sgit_FTDC_PDT_UseHistory"] = '1' +#涓嶄娇鐢ㄥ巻鍙叉寔浠 +defineDict["Sgit_FTDC_PDT_NoUseHistory"] = '2' + +typedefDict["TSgitFtdcPositionDateTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradingRoleType鏄竴涓氦鏄撹鑹茬被鍨 +#////////////////////////////////////////////////////////////////////// +#浠g悊 +defineDict["Sgit_FTDC_ER_Broker"] = '1' +#鑷惀 +defineDict["Sgit_FTDC_ER_Host"] = '2' +#鍋氬競鍟 +defineDict["Sgit_FTDC_ER_Maker"] = '3' + +typedefDict["TSgitFtdcTradingRoleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductClassType鏄竴涓骇鍝佺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈熻揣 +defineDict["Sgit_FTDC_PC_Futures"] = '1' +#鏈熸潈 +defineDict["Sgit_FTDC_PC_Options"] = '2' +#缁勫悎 +defineDict["Sgit_FTDC_PC_Combination"] = '3' +#鍗虫湡 +defineDict["Sgit_FTDC_PC_Spot"] = '4' +#鏈熻浆鐜 +defineDict["Sgit_FTDC_PC_EFP"] = '5' + +typedefDict["TSgitFtdcProductClassType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstLifePhaseType鏄竴涓悎绾︾敓鍛藉懆鏈熺姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈笂甯 +defineDict["Sgit_FTDC_IP_NotStart"] = '0' +#涓婂競 +defineDict["Sgit_FTDC_IP_Started"] = '1' +#鍋滅墝 +defineDict["Sgit_FTDC_IP_Pause"] = '2' +#鍒版湡 +defineDict["Sgit_FTDC_IP_Expired"] = '3' + +typedefDict["TSgitFtdcInstLifePhaseType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDirectionType鏄竴涓拱鍗栨柟鍚戠被鍨 +#////////////////////////////////////////////////////////////////////// +#涔 +defineDict["Sgit_FTDC_D_Buy"] = '0' +#鍗 +defineDict["Sgit_FTDC_D_Sell"] = '1' + +typedefDict["TSgitFtdcDirectionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionTypeType鏄竴涓寔浠撶被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鍑鎸佷粨 +defineDict["Sgit_FTDC_PT_Net"] = '1' +#缁煎悎鎸佷粨 +defineDict["Sgit_FTDC_PT_Gross"] = '2' + +typedefDict["TSgitFtdcPositionTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPosiDirectionType鏄竴涓寔浠撳绌烘柟鍚戠被鍨 +#////////////////////////////////////////////////////////////////////// +#鍑 +defineDict["Sgit_FTDC_PD_Net"] = '1' +#澶氬ご +defineDict["Sgit_FTDC_PD_Long"] = '2' +#绌哄ご +defineDict["Sgit_FTDC_PD_Short"] = '3' + +typedefDict["TSgitFtdcPosiDirectionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSysSettlementStatusType鏄竴涓郴缁熺粨绠楃姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嶆椿璺 +defineDict["Sgit_FTDC_SS_NonActive"] = '1' +#鍚姩 +defineDict["Sgit_FTDC_SS_Startup"] = '2' +#鎿嶄綔 +defineDict["Sgit_FTDC_SS_Operating"] = '3' +#缁撶畻 +defineDict["Sgit_FTDC_SS_Settlement"] = '4' +#缁撶畻瀹屾垚 +defineDict["Sgit_FTDC_SS_SettlementFinished"] = '5' + +typedefDict["TSgitFtdcSysSettlementStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRatioAttrType鏄竴涓垂鐜囧睘鎬х被鍨 +#////////////////////////////////////////////////////////////////////// +#浜ゆ槗璐圭巼 +defineDict["Sgit_FTDC_RA_Trade"] = '0' +#缁撶畻璐圭巼 +defineDict["Sgit_FTDC_RA_Settlement"] = '1' + +typedefDict["TSgitFtdcRatioAttrType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHedgeFlagType鏄竴涓姇鏈哄淇濇爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鎶曟満 +defineDict["Sgit_FTDC_HF_Speculation"] = '1' +#濂楀埄 +defineDict["Sgit_FTDC_HF_Arbitrage"] = '2' +#濂椾繚 +defineDict["Sgit_FTDC_HF_Hedge"] = '3' + +typedefDict["TSgitFtdcHedgeFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillHedgeFlagType鏄竴涓姇鏈哄淇濇爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鎶曟満 +defineDict["Sgit_FTDC_BHF_Speculation"] = '1' +#濂楀埄 +defineDict["Sgit_FTDC_BHF_Arbitrage"] = '2' +#濂椾繚 +defineDict["Sgit_FTDC_BHF_Hedge"] = '3' + +typedefDict["TSgitFtdcBillHedgeFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientIDTypeType鏄竴涓氦鏄撶紪鐮佺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鎶曟満 +defineDict["Sgit_FTDC_CIDT_Speculation"] = '1' +#濂楀埄 +defineDict["Sgit_FTDC_CIDT_Arbitrage"] = '2' +#濂椾繚 +defineDict["Sgit_FTDC_CIDT_Hedge"] = '3' + +typedefDict["TSgitFtdcClientIDTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderPriceTypeType鏄竴涓姤鍗曚环鏍兼潯浠剁被鍨 +#////////////////////////////////////////////////////////////////////// +#浠绘剰浠 +defineDict["Sgit_FTDC_OPT_AnyPrice"] = '1' +#闄愪环 +defineDict["Sgit_FTDC_OPT_LimitPrice"] = '2' +#鏈浼樹环 +defineDict["Sgit_FTDC_OPT_BestPrice"] = '3' +#鏈鏂颁环 +defineDict["Sgit_FTDC_OPT_LastPrice"] = '4' +#鏈鏂颁环娴姩涓婃诞1涓猼icks +defineDict["Sgit_FTDC_OPT_LastPricePlusOneTicks"] = '5' +#鏈鏂颁环娴姩涓婃诞2涓猼icks +defineDict["Sgit_FTDC_OPT_LastPricePlusTwoTicks"] = '6' +#鏈鏂颁环娴姩涓婃诞3涓猼icks +defineDict["Sgit_FTDC_OPT_LastPricePlusThreeTicks"] = '7' +#鍗栦竴浠 +defineDict["Sgit_FTDC_OPT_AskPrice1"] = '8' +#鍗栦竴浠锋诞鍔ㄤ笂娴1涓猼icks +defineDict["Sgit_FTDC_OPT_AskPrice1PlusOneTicks"] = '9' +#鍗栦竴浠锋诞鍔ㄤ笂娴2涓猼icks +defineDict["Sgit_FTDC_OPT_AskPrice1PlusTwoTicks"] = 'A' +#鍗栦竴浠锋诞鍔ㄤ笂娴3涓猼icks +defineDict["Sgit_FTDC_OPT_AskPrice1PlusThreeTicks"] = 'B' +#涔颁竴浠 +defineDict["Sgit_FTDC_OPT_BidPrice1"] = 'C' +#涔颁竴浠锋诞鍔ㄤ笂娴1涓猼icks +defineDict["Sgit_FTDC_OPT_BidPrice1PlusOneTicks"] = 'D' +#涔颁竴浠锋诞鍔ㄤ笂娴2涓猼icks +defineDict["Sgit_FTDC_OPT_BidPrice1PlusTwoTicks"] = 'E' +#涔颁竴浠锋诞鍔ㄤ笂娴3涓猼icks +defineDict["Sgit_FTDC_OPT_BidPrice1PlusThreeTicks"] = 'F' + +typedefDict["TSgitFtdcOrderPriceTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOffsetFlagType鏄竴涓紑骞虫爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#寮浠 +defineDict["Sgit_FTDC_OF_Open"] = '0' +#骞充粨 +defineDict["Sgit_FTDC_OF_Close"] = '1' +#寮哄钩 +defineDict["Sgit_FTDC_OF_ForceClose"] = '2' +#骞充粖 +defineDict["Sgit_FTDC_OF_CloseToday"] = '3' +#骞虫槰 +defineDict["Sgit_FTDC_OF_CloseYesterday"] = '4' +#寮哄噺 +defineDict["Sgit_FTDC_OF_ForceOff"] = '5' +#鏈湴寮哄钩 +defineDict["Sgit_FTDC_OF_LocalForceClose"] = '6' + +typedefDict["TSgitFtdcOffsetFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForceCloseReasonType鏄竴涓己骞冲師鍥犵被鍨 +#////////////////////////////////////////////////////////////////////// +#闈炲己骞 +defineDict["Sgit_FTDC_FCC_NotForceClose"] = '0' +#璧勯噾涓嶈冻 +defineDict["Sgit_FTDC_FCC_LackDeposit"] = '1' +#瀹㈡埛瓒呬粨 +defineDict["Sgit_FTDC_FCC_ClientOverPositionLimit"] = '2' +#浼氬憳瓒呬粨 +defineDict["Sgit_FTDC_FCC_MemberOverPositionLimit"] = '3' +#鎸佷粨闈炴暣鏁板 +defineDict["Sgit_FTDC_FCC_NotMultiple"] = '4' +#杩濊 +defineDict["Sgit_FTDC_FCC_Violation"] = '5' +#鍏跺畠 +defineDict["Sgit_FTDC_FCC_Other"] = '6' +#鑷劧浜轰复杩戜氦鍓 +defineDict["Sgit_FTDC_FCC_PersonDeliv"] = '7' + +typedefDict["TSgitFtdcForceCloseReasonType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderTypeType鏄竴涓姤鍗曠被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_ORDT_Normal"] = '0' +#鎶ヤ环琛嶇敓 +defineDict["Sgit_FTDC_ORDT_DeriveFromQuote"] = '1' +#缁勫悎琛嶇敓 +defineDict["Sgit_FTDC_ORDT_DeriveFromCombination"] = '2' +#缁勫悎鎶ュ崟 +defineDict["Sgit_FTDC_ORDT_Combination"] = '3' +#鏉′欢鍗 +defineDict["Sgit_FTDC_ORDT_ConditionalOrder"] = '4' +#浜掓崲鍗 +defineDict["Sgit_FTDC_ORDT_Swap"] = '5' + +typedefDict["TSgitFtdcOrderTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimeConditionType鏄竴涓湁鏁堟湡绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#绔嬪嵆瀹屾垚锛屽惁鍒欐挙閿 +defineDict["Sgit_FTDC_TC_IOC"] = '1' +#鏈妭鏈夋晥 +defineDict["Sgit_FTDC_TC_GFS"] = '2' +#褰撴棩鏈夋晥 +defineDict["Sgit_FTDC_TC_GFD"] = '3' +#鎸囧畾鏃ユ湡鍓嶆湁鏁 +defineDict["Sgit_FTDC_TC_GTD"] = '4' +#鎾ら攢鍓嶆湁鏁 +defineDict["Sgit_FTDC_TC_GTC"] = '5' +#闆嗗悎绔炰环鏈夋晥 +defineDict["Sgit_FTDC_TC_GFA"] = '6' + +typedefDict["TSgitFtdcTimeConditionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVolumeConditionType鏄竴涓垚浜ら噺绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#浠讳綍鏁伴噺 +defineDict["Sgit_FTDC_VC_AV"] = '1' +#鏈灏忔暟閲 +defineDict["Sgit_FTDC_VC_MV"] = '2' +#鍏ㄩ儴鏁伴噺 +defineDict["Sgit_FTDC_VC_CV"] = '3' + +typedefDict["TSgitFtdcVolumeConditionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcContingentConditionType鏄竴涓Е鍙戞潯浠剁被鍨 +#////////////////////////////////////////////////////////////////////// +#绔嬪嵆 +defineDict["Sgit_FTDC_CC_Immediately"] = '1' +#姝㈡崯 +defineDict["Sgit_FTDC_CC_Touch"] = '2' +#姝㈣耽 +defineDict["Sgit_FTDC_CC_TouchProfit"] = '3' +#棰勫煁鍗 +defineDict["Sgit_FTDC_CC_ParkedOrder"] = '4' +#鏈鏂颁环澶т簬鏉′欢浠 +defineDict["Sgit_FTDC_CC_LastPriceGreaterThanStopPrice"] = '5' +#鏈鏂颁环澶т簬绛変簬鏉′欢浠 +defineDict["Sgit_FTDC_CC_LastPriceGreaterEqualStopPrice"] = '6' +#鏈鏂颁环灏忎簬鏉′欢浠 +defineDict["Sgit_FTDC_CC_LastPriceLesserThanStopPrice"] = '7' +#鏈鏂颁环灏忎簬绛変簬鏉′欢浠 +defineDict["Sgit_FTDC_CC_LastPriceLesserEqualStopPrice"] = '8' +#鍗栦竴浠峰ぇ浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_AskPriceGreaterThanStopPrice"] = '9' +#鍗栦竴浠峰ぇ浜庣瓑浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_AskPriceGreaterEqualStopPrice"] = 'A' +#鍗栦竴浠峰皬浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_AskPriceLesserThanStopPrice"] = 'B' +#鍗栦竴浠峰皬浜庣瓑浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_AskPriceLesserEqualStopPrice"] = 'C' +#涔颁竴浠峰ぇ浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_BidPriceGreaterThanStopPrice"] = 'D' +#涔颁竴浠峰ぇ浜庣瓑浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_BidPriceGreaterEqualStopPrice"] = 'E' +#涔颁竴浠峰皬浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_BidPriceLesserThanStopPrice"] = 'F' +#涔颁竴浠峰皬浜庣瓑浜庢潯浠朵环 +defineDict["Sgit_FTDC_CC_BidPriceLesserEqualStopPrice"] = 'H' + +typedefDict["TSgitFtdcContingentConditionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcActionFlagType鏄竴涓搷浣滄爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鍒犻櫎 +defineDict["Sgit_FTDC_AF_Delete"] = '0' +#淇敼 +defineDict["Sgit_FTDC_AF_Modify"] = '3' + +typedefDict["TSgitFtdcActionFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradingRightType鏄竴涓氦鏄撴潈闄愮被鍨 +#////////////////////////////////////////////////////////////////////// +#鍙互浜ゆ槗 +defineDict["Sgit_FTDC_TR_Allow"] = '0' +#鍙兘骞充粨 +defineDict["Sgit_FTDC_TR_CloseOnly"] = '1' +#涓嶈兘浜ゆ槗 +defineDict["Sgit_FTDC_TR_Forbidden"] = '2' + +typedefDict["TSgitFtdcTradingRightType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderSourceType鏄竴涓姤鍗曟潵婧愮被鍨 +#////////////////////////////////////////////////////////////////////// +#鏉ヨ嚜鍙備笌鑰 +defineDict["Sgit_FTDC_OSRC_Participant"] = '0' +#鏉ヨ嚜绠$悊鍛 +defineDict["Sgit_FTDC_OSRC_Administrator"] = '1' + +typedefDict["TSgitFtdcOrderSourceType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeTypeType鏄竴涓垚浜ょ被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鏅氭垚浜 +defineDict["Sgit_FTDC_TRDT_Common"] = '0' +#鏈熸潈鎵ц +defineDict["Sgit_FTDC_TRDT_OptionsExecution"] = '1' +#OTC鎴愪氦 +defineDict["Sgit_FTDC_TRDT_OTC"] = '2' +#鏈熻浆鐜拌鐢熸垚浜 +defineDict["Sgit_FTDC_TRDT_EFPDerived"] = '3' +#缁勫悎琛嶇敓鎴愪氦 +defineDict["Sgit_FTDC_TRDT_CombinationDerived"] = '4' + +typedefDict["TSgitFtdcTradeTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriceSourceType鏄竴涓垚浜や环鏉ユ簮绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鍓嶆垚浜や环 +defineDict["Sgit_FTDC_PSRC_LastPrice"] = '0' +#涔板鎵樹环 +defineDict["Sgit_FTDC_PSRC_Buy"] = '1' +#鍗栧鎵樹环 +defineDict["Sgit_FTDC_PSRC_Sell"] = '2' + +typedefDict["TSgitFtdcPriceSourceType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentStatusType鏄竴涓悎绾︿氦鏄撶姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#寮鐩樺墠 +defineDict["Sgit_FTDC_IS_BeforeTrading"] = '0' +#闈炰氦鏄 +defineDict["Sgit_FTDC_IS_NoTrading"] = '1' +#杩炵画浜ゆ槗 +defineDict["Sgit_FTDC_IS_Continous"] = '2' +#闆嗗悎绔炰环鎶ュ崟 +defineDict["Sgit_FTDC_IS_AuctionOrdering"] = '3' +#闆嗗悎绔炰环浠锋牸骞宠  +defineDict["Sgit_FTDC_IS_AuctionBalance"] = '4' +#闆嗗悎绔炰环鎾悎 +defineDict["Sgit_FTDC_IS_AuctionMatch"] = '5' +#鏀剁洏 +defineDict["Sgit_FTDC_IS_Closed"] = '6' + +typedefDict["TSgitFtdcInstrumentStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstStatusEnterReasonType鏄竴涓搧绉嶈繘鍏ヤ氦鏄撶姸鎬佸師鍥犵被鍨 +#////////////////////////////////////////////////////////////////////// +#鑷姩鍒囨崲 +defineDict["Sgit_FTDC_IER_Automatic"] = '1' +#鎵嬪姩鍒囨崲 +defineDict["Sgit_FTDC_IER_Manual"] = '2' +#鐔旀柇 +defineDict["Sgit_FTDC_IER_Fuse"] = '3' + +typedefDict["TSgitFtdcInstStatusEnterReasonType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrderActionRefType鏄竴涓姤鍗曟搷浣滃紩鐢ㄧ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrderActionRefType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstallCountType鏄竴涓畨瑁呮暟閲忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstallCountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstallIDType鏄竴涓畨瑁呯紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstallIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcErrorIDType鏄竴涓敊璇唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcErrorIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementIDType鏄竴涓粨绠楃紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSettlementIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVolumeType鏄竴涓暟閲忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcVolumeType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFrontIDType鏄竴涓墠缃紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFrontIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSessionIDType鏄竴涓細璇濈紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSessionIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceNoType鏄竴涓簭鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSequenceNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommandNoType鏄竴涓狣B鍛戒护搴忓彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommandNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMillisecType鏄竴涓椂闂达紙姣锛夌被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMillisecType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVolumeMultipleType鏄竴涓悎绾︽暟閲忎箻鏁扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcVolumeMultipleType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradingSegmentSNType鏄竴涓氦鏄撻樁娈电紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradingSegmentSNType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRequestIDType鏄竴涓姹傜紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRequestIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcYearType鏄竴涓勾浠界被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcYearType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMonthType鏄竴涓湀浠界被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMonthType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBoolType鏄竴涓竷灏斿瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBoolType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriceType鏄竴涓环鏍肩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPriceType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombOffsetFlagType鏄竴涓粍鍚堝紑骞虫爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCombOffsetFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombHedgeFlagType鏄竴涓粍鍚堟姇鏈哄淇濇爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCombHedgeFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRatioType鏄竴涓瘮鐜囩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRatioType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMoneyType鏄竴涓祫閲戠被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLargeVolumeType鏄竴涓ぇ棰濇暟閲忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLargeVolumeType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceSeriesType鏄竴涓簭鍒楃郴鍒楀彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSequenceSeriesType"] = "short" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommPhaseNoType鏄竴涓氳鏃舵缂栧彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommPhaseNoType"] = "short" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceLabelType鏄竴涓簭鍒楃紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSequenceLabelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPriorityType鏄竴涓紭鍏堢骇绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPriorityType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcContractCodeType鏄竴涓悎鍚岀紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcContractCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCityType鏄竴涓競绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCityType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIsStockType鏄竴涓槸鍚﹁偂姘戠被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcIsStockType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcChannelType鏄竴涓笭閬撶被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcChannelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAddressType鏄竴涓氳鍦板潃绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAddressType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcZipCodeType鏄竴涓偖鏀跨紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcZipCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTelephoneType鏄竴涓仈绯荤數璇濈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTelephoneType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFaxType鏄竴涓紶鐪熺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFaxType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMobileType鏄竴涓墜鏈虹被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMobileType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEMailType鏄竴涓數瀛愰偖浠剁被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcEMailType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMemoType鏄竴涓娉ㄧ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCompanyCodeType鏄竴涓紒涓氫唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCompanyCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWebsiteType鏄竴涓綉绔欏湴鍧绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcWebsiteType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTaxNoType鏄竴涓◣鍔$櫥璁板彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTaxNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBatchStatusType鏄竴涓鐞嗙姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈笂浼 +defineDict["Sgit_FTDC_BS_NoUpload"] = '1' +#宸蹭笂浼 +defineDict["Sgit_FTDC_BS_Uploaded"] = '2' +#瀹℃牳澶辫触 +defineDict["Sgit_FTDC_BS_Failed"] = '3' + +typedefDict["TSgitFtdcBatchStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyIDType鏄竴涓睘鎬т唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPropertyIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyNameType鏄竴涓睘鎬у悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPropertyNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLicenseNoType鏄竴涓惀涓氭墽鐓у彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLicenseNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentIDType鏄竴涓粡绾汉浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAgentIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentNameType鏄竴涓粡绾汉鍚嶇О绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAgentNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentGroupIDType鏄竴涓粡绾汉缁勪唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAgentGroupIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentGroupNameType鏄竴涓粡绾汉缁勫悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAgentGroupNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnStyleType鏄竴涓寜鍝佺杩旇繕鏂瑰紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎸夋墍鏈夊搧绉 +defineDict["Sgit_FTDC_RS_All"] = '1' +#鎸夊搧绉 +defineDict["Sgit_FTDC_RS_ByProduct"] = '2' + +typedefDict["TSgitFtdcReturnStyleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnPatternType鏄竴涓繑杩樻ā寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鎸夋垚浜ゆ墜鏁 +defineDict["Sgit_FTDC_RP_ByVolume"] = '1' +#鎸夌暀瀛樻墜缁垂 +defineDict["Sgit_FTDC_RP_ByFeeOnHand"] = '2' + +typedefDict["TSgitFtdcReturnPatternType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnLevelType鏄竴涓繑杩樼骇鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#绾у埆1 +defineDict["Sgit_FTDC_RL_Level1"] = '1' +#绾у埆2 +defineDict["Sgit_FTDC_RL_Level2"] = '2' +#绾у埆3 +defineDict["Sgit_FTDC_RL_Level3"] = '3' +#绾у埆4 +defineDict["Sgit_FTDC_RL_Level4"] = '4' +#绾у埆5 +defineDict["Sgit_FTDC_RL_Level5"] = '5' +#绾у埆6 +defineDict["Sgit_FTDC_RL_Level6"] = '6' +#绾у埆7 +defineDict["Sgit_FTDC_RL_Level7"] = '7' +#绾у埆8 +defineDict["Sgit_FTDC_RL_Level8"] = '8' +#绾у埆9 +defineDict["Sgit_FTDC_RL_Level9"] = '9' + +typedefDict["TSgitFtdcReturnLevelType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnStandardType鏄竴涓繑杩樻爣鍑嗙被鍨 +#////////////////////////////////////////////////////////////////////// +#鍒嗛樁娈佃繑杩 +defineDict["Sgit_FTDC_RSD_ByPeriod"] = '1' +#鎸夋煇涓鏍囧噯 +defineDict["Sgit_FTDC_RSD_ByStandard"] = '2' + +typedefDict["TSgitFtdcReturnStandardType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMortgageTypeType鏄竴涓川鎶肩被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#璐ㄥ嚭 +defineDict["Sgit_FTDC_MT_Out"] = '0' +#璐ㄥ叆 +defineDict["Sgit_FTDC_MT_In"] = '1' + +typedefDict["TSgitFtdcMortgageTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorSettlementParamIDType鏄竴涓姇璧勮呯粨绠楀弬鏁颁唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鍩虹淇濊瘉閲 +defineDict["Sgit_FTDC_ISPI_BaseMargin"] = '1' +#鏈浣庢潈鐩婃爣鍑 +defineDict["Sgit_FTDC_ISPI_LowestInterest"] = '2' +#璐ㄦ娂姣斾緥 +defineDict["Sgit_FTDC_ISPI_MortgageRatio"] = '4' +#淇濊瘉閲戠畻娉 +defineDict["Sgit_FTDC_ISPI_MarginWay"] = '5' +#缁撶畻鍗(鐩競)鏉冪泭绛変簬缁撳瓨 +defineDict["Sgit_FTDC_ISPI_BillDeposit"] = '9' + +typedefDict["TSgitFtdcInvestorSettlementParamIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeSettlementParamIDType鏄竴涓氦鏄撴墍缁撶畻鍙傛暟浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#璐ㄦ娂姣斾緥 +defineDict["Sgit_FTDC_ESPI_MortgageRatio"] = '1' +#鍒嗛」璧勯噾瀵煎叆椤 +defineDict["Sgit_FTDC_ESPI_OtherFundItem"] = '2' +#鍒嗛」璧勯噾鍏ヤ氦鏄撴墍鍑哄叆閲 +defineDict["Sgit_FTDC_ESPI_OtherFundImport"] = '3' +#涓婃湡鎵浜ゅ壊鎵嬬画璐规敹鍙栨柟寮 +defineDict["Sgit_FTDC_ESPI_SHFEDelivFee"] = '4' +#澶у晢鎵浜ゅ壊鎵嬬画璐规敹鍙栨柟寮 +defineDict["Sgit_FTDC_ESPI_DCEDelivFee"] = '5' +#涓噾鎵寮鎴锋渶浣庡彲鐢ㄩ噾棰 +defineDict["Sgit_FTDC_ESPI_CFFEXMinPrepa"] = '6' + +typedefDict["TSgitFtdcExchangeSettlementParamIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemParamIDType鏄竴涓郴缁熷弬鏁颁唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鎶曡祫鑰呬唬鐮佹渶灏忛暱搴 +defineDict["Sgit_FTDC_SPI_InvestorIDMinLength"] = '1' +#鎶曡祫鑰呭笎鍙蜂唬鐮佹渶灏忛暱搴 +defineDict["Sgit_FTDC_SPI_AccountIDMinLength"] = '2' +#鎶曡祫鑰呭紑鎴烽粯璁ょ櫥褰曟潈闄 +defineDict["Sgit_FTDC_SPI_UserRightLogon"] = '3' +#鎶曡祫鑰呬氦鏄撶粨绠楀崟鎴愪氦姹囨绘柟寮 +defineDict["Sgit_FTDC_SPI_SettlementBillTrade"] = '4' +#缁熶竴寮鎴锋洿鏂颁氦鏄撶紪鐮佹柟寮 +defineDict["Sgit_FTDC_SPI_TradingCode"] = '5' +#缁撶畻鏄惁鍒ゆ柇瀛樺湪鏈鏍哥殑鍑哄叆閲戝拰鍒嗛」璧勯噾 +defineDict["Sgit_FTDC_SPI_CheckFund"] = '6' +#鏄惁鍚敤鎵嬬画璐规ā鏉挎暟鎹潈闄 +defineDict["Sgit_FTDC_SPI_CommModelRight"] = '7' +#鏄惁瑙勮寖鐢ㄦ埛鎵嶈兘婵娲 +defineDict["Sgit_FTDC_SPI_IsStandardActive"] = '8' +#涓婁紶鐨勪氦鏄撴墍缁撶畻鏂囦欢璺緞 +defineDict["Sgit_FTDC_SPI_UploadSettlementFile"] = 'U' +#涓婃姤淇濊瘉閲戠洃鎺т腑蹇冩枃浠惰矾寰 +defineDict["Sgit_FTDC_SPI_DownloadCSRCFile"] = 'D' +#鐢熸垚鐨勭粨绠楀崟鏂囦欢璺緞 +defineDict["Sgit_FTDC_SPI_SettlementBillFile"] = 'S' +#璇佺洃浼氭枃浠舵爣璇 +defineDict["Sgit_FTDC_SPI_CSRCOthersFile"] = 'C' +#鎶曡祫鑰呯収鐗囪矾寰 +defineDict["Sgit_FTDC_SPI_InvestorPhoto"] = 'P' +#鍏ㄧ粨缁忕邯鍏徃涓婁紶鏂囦欢璺緞 +defineDict["Sgit_FTDC_SPI_CSRCData"] = 'R' +#寮鎴峰瘑鐮佸綍鍏ユ柟寮 +defineDict["Sgit_FTDC_SPI_InvestorPwdModel"] = 'I' +#鎶曡祫鑰呬腑閲戞墍缁撶畻鏂囦欢涓嬭浇璺緞 +defineDict["Sgit_FTDC_SPI_CFFEXInvestorSettleFile"] = 'F' +#鎶曡祫鑰呬唬鐮佺紪鐮佹柟寮 +defineDict["Sgit_FTDC_SPI_InvestorIDType"] = 'a' + +typedefDict["TSgitFtdcSystemParamIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeParamIDType鏄竴涓氦鏄撶郴缁熷弬鏁颁唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#绯荤粺鍔犲瘑绠楁硶 +defineDict["Sgit_FTDC_TPID_EncryptionStandard"] = 'E' +#绯荤粺椋庨櫓绠楁硶 +defineDict["Sgit_FTDC_TPID_RiskMode"] = 'R' +#绯荤粺椋庨櫓绠楁硶鏄惁鍏ㄥ眬 0-鍚 1-鏄 +defineDict["Sgit_FTDC_TPID_RiskModeGlobal"] = 'G' + +typedefDict["TSgitFtdcTradeParamIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementParamValueType鏄竴涓弬鏁颁唬鐮佸肩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSettlementParamValueType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCounterIDType鏄竴涓鏁板櫒浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCounterIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorGroupNameType鏄竴涓姇璧勮呭垎缁勫悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInvestorGroupNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrandCodeType鏄竴涓墝鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBrandCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWarehouseType鏄竴涓粨搴撶被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcWarehouseType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductDateType鏄竴涓骇鏈熺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProductDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcGradeType鏄竴涓瓑绾х被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcGradeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClassifyType鏄竴涓被鍒被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClassifyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPositionType鏄竴涓揣浣嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPositionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcYieldlyType鏄竴涓骇鍦扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcYieldlyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcWeightType鏄竴涓叕瀹氶噸閲忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcWeightType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSubEntryFundNoType鏄竴涓垎椤硅祫閲戞祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSubEntryFundNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileIDType鏄竴涓枃浠舵爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +#璧勯噾鏁版嵁 +defineDict["Sgit_FTDC_FI_SettlementFund"] = 'F' +#鎴愪氦鏁版嵁 +defineDict["Sgit_FTDC_FI_Trade"] = 'T' +#鎶曡祫鑰呮寔浠撴暟鎹 +defineDict["Sgit_FTDC_FI_InvestorPosition"] = 'P' +#鎶曡祫鑰呭垎椤硅祫閲戞暟鎹 +defineDict["Sgit_FTDC_FI_SubEntryFund"] = 'O' +#閮戝晢鎵缁勫悎鎸佷粨鏁版嵁 +defineDict["Sgit_FTDC_FI_CZCECombinationPos"] = 'C' +#涓婃姤淇濊瘉閲戠洃鎺т腑蹇冩暟鎹 +defineDict["Sgit_FTDC_FI_CSRCData"] = 'R' + +typedefDict["TSgitFtdcFileIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileNameType鏄竴涓枃浠跺悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileTypeType鏄竴涓枃浠朵笂浼犵被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#缁撶畻 +defineDict["Sgit_FTDC_FUT_Settlement"] = '0' +#鏍稿 +defineDict["Sgit_FTDC_FUT_Check"] = '1' + +typedefDict["TSgitFtdcFileTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileFormatType鏄竴涓枃浠舵牸寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鏂囨湰鏂囦欢(.txt) +defineDict["Sgit_FTDC_FFT_Txt"] = '0' +#鍘嬬缉鏂囦欢(.zip) +defineDict["Sgit_FTDC_FFT_Zip"] = '1' +#DBF鏂囦欢(.dbf) +defineDict["Sgit_FTDC_FFT_DBF"] = '2' + +typedefDict["TSgitFtdcFileFormatType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileUploadStatusType鏄竴涓枃浠剁姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#涓婁紶鎴愬姛 +defineDict["Sgit_FTDC_FUS_SucceedUpload"] = '1' +#涓婁紶澶辫触 +defineDict["Sgit_FTDC_FUS_FailedUpload"] = '2' +#瀵煎叆鎴愬姛 +defineDict["Sgit_FTDC_FUS_SucceedLoad"] = '3' +#瀵煎叆閮ㄥ垎鎴愬姛 +defineDict["Sgit_FTDC_FUS_PartSucceedLoad"] = '4' +#瀵煎叆澶辫触 +defineDict["Sgit_FTDC_FUS_FailedLoad"] = '5' + +typedefDict["TSgitFtdcFileUploadStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferDirectionType鏄竴涓Щ浠撴柟鍚戠被鍨 +#////////////////////////////////////////////////////////////////////// +#绉诲嚭 +defineDict["Sgit_FTDC_TD_Out"] = '0' +#绉诲叆 +defineDict["Sgit_FTDC_TD_In"] = '1' + +typedefDict["TSgitFtdcTransferDirectionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUploadModeType鏄竴涓笂浼犳枃浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUploadModeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAccountIDType鏄竴涓姇璧勮呭笎鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAccountIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankFlagType鏄竴涓摱琛岀粺涓鏍囪瘑绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#宸ュ晢閾惰 +defineDict["Sgit_FTDC_BF_ICBC"] = '1' +#鍐滀笟閾惰 +defineDict["Sgit_FTDC_BF_ABC"] = '2' +#涓浗閾惰 +defineDict["Sgit_FTDC_BF_BC"] = '3' +#寤鸿閾惰 +defineDict["Sgit_FTDC_BF_CBC"] = '4' +#浜ら氶摱琛 +defineDict["Sgit_FTDC_BF_BOC"] = '5' +#鍏朵粬閾惰 +defineDict["Sgit_FTDC_BF_Other"] = 'Z' + +typedefDict["TSgitFtdcBankFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccountType鏄竴涓摱琛岃处鎴风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOpenNameType鏄竴涓摱琛岃处鎴风殑寮鎴蜂汉鍚嶇О绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOpenNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOpenBankType鏄竴涓摱琛岃处鎴风殑寮鎴疯绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOpenBankType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankNameType鏄竴涓摱琛屽悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPublishPathType鏄竴涓彂甯冭矾寰勭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPublishPathType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperatorIDType鏄竴涓搷浣滃憳浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOperatorIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMonthCountType鏄竴涓湀浠芥暟閲忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMonthCountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAdvanceMonthArrayType鏄竴涓湀浠芥彁鍓嶆暟缁勭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAdvanceMonthArrayType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDateExprType鏄竴涓棩鏈熻〃杈惧紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDateExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentIDExprType鏄竴涓悎绾︿唬鐮佽〃杈惧紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstrumentIDExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentNameExprType鏄竴涓悎绾﹀悕绉拌〃杈惧紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstrumentNameExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSpecialCreateRuleType鏄竴涓壒娈婄殑鍒涘缓瑙勫垯绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#娌℃湁鐗规畩鍒涘缓瑙勫垯 +defineDict["Sgit_FTDC_SC_NoSpecialRule"] = '0' +#涓嶅寘鍚槬鑺 +defineDict["Sgit_FTDC_SC_NoSpringFestival"] = '1' + +typedefDict["TSgitFtdcSpecialCreateRuleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBasisPriceTypeType鏄竴涓寕鐗屽熀鍑嗕环绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#涓婁竴鍚堢害缁撶畻浠 +defineDict["Sgit_FTDC_IPT_LastSettlement"] = '1' +#涓婁竴鍚堢害鏀剁洏浠 +defineDict["Sgit_FTDC_IPT_LaseClose"] = '2' + +typedefDict["TSgitFtdcBasisPriceTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProductLifePhaseType鏄竴涓骇鍝佺敓鍛藉懆鏈熺姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#娲昏穬 +defineDict["Sgit_FTDC_PLP_Active"] = '1' +#涓嶆椿璺 +defineDict["Sgit_FTDC_PLP_NonActive"] = '2' +#娉ㄩ攢 +defineDict["Sgit_FTDC_PLP_Canceled"] = '3' + +typedefDict["TSgitFtdcProductLifePhaseType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDeliveryModeType鏄竴涓氦鍓叉柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鐜伴噾浜ゅ壊 +defineDict["Sgit_FTDC_DM_CashDeliv"] = '1' +#瀹炵墿浜ゅ壊 +defineDict["Sgit_FTDC_DM_CommodityDeliv"] = '2' + +typedefDict["TSgitFtdcDeliveryModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLogLevelType鏄竴涓棩蹇楃骇鍒被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLogLevelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessNameType鏄竴涓瓨鍌ㄨ繃绋嬪悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProcessNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperationMemoType鏄竴涓搷浣滄憳瑕佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOperationMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundIOTypeType鏄竴涓嚭鍏ラ噾绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鍑哄叆閲 +defineDict["Sgit_FTDC_FIOT_FundIO"] = '1' +#閾舵湡杞笎 +defineDict["Sgit_FTDC_FIOT_Transfer"] = '2' + +typedefDict["TSgitFtdcFundIOTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundTypeType鏄竴涓祫閲戠被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰瀛樻 +defineDict["Sgit_FTDC_FT_Deposite"] = '1' +#鍒嗛」璧勯噾 +defineDict["Sgit_FTDC_FT_ItemFund"] = '2' +#鍏徃璋冩暣 +defineDict["Sgit_FTDC_FT_Company"] = '3' + +typedefDict["TSgitFtdcFundTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundDirectionType鏄竴涓嚭鍏ラ噾鏂瑰悜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鍏ラ噾 +defineDict["Sgit_FTDC_FD_In"] = '1' +#鍑洪噾 +defineDict["Sgit_FTDC_FD_Out"] = '2' + +typedefDict["TSgitFtdcFundDirectionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundStatusType鏄竴涓祫閲戠姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#宸插綍鍏 +defineDict["Sgit_FTDC_FS_Record"] = '1' +#宸插鏍 +defineDict["Sgit_FTDC_FS_Check"] = '2' +#宸插啿閿 +defineDict["Sgit_FTDC_FS_Charge"] = '3' + +typedefDict["TSgitFtdcFundStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillNoType鏄竴涓エ鎹彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBillNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillNameType鏄竴涓エ鎹悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBillNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPublishStatusType鏄竴涓彂甯冪姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈彂甯 +defineDict["Sgit_FTDC_PS_None"] = '1' +#姝e湪鍙戝竷 +defineDict["Sgit_FTDC_PS_Publishing"] = '2' +#宸插彂甯 +defineDict["Sgit_FTDC_PS_Published"] = '3' + +typedefDict["TSgitFtdcPublishStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueIDType鏄竴涓灇涓惧间唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcEnumValueIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueTypeType鏄竴涓灇涓惧肩被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcEnumValueTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueLabelType鏄竴涓灇涓惧煎悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcEnumValueLabelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEnumValueResultType鏄竴涓灇涓惧肩粨鏋滅被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcEnumValueResultType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemStatusType鏄竴涓郴缁熺姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嶆椿璺 +defineDict["Sgit_FTDC_ES_NonActive"] = '1' +#鍚姩 +defineDict["Sgit_FTDC_ES_Startup"] = '2' +#浜ゆ槗寮濮嬪垵濮嬪寲 +defineDict["Sgit_FTDC_ES_Initialize"] = '3' +#浜ゆ槗瀹屾垚鍒濆鍖 +defineDict["Sgit_FTDC_ES_Initialized"] = '4' +#鏀跺競寮濮 +defineDict["Sgit_FTDC_ES_Close"] = '5' +#鏀跺競瀹屾垚 +defineDict["Sgit_FTDC_ES_Closed"] = '6' +#缁撶畻 +defineDict["Sgit_FTDC_ES_Settlement"] = '7' + +typedefDict["TSgitFtdcSystemStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementStatusType鏄竴涓粨绠楃姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鍒濆 +defineDict["Sgit_FTDC_STS_Initialize"] = '0' +#缁撶畻涓 +defineDict["Sgit_FTDC_STS_Settlementing"] = '1' +#宸茬粨绠 +defineDict["Sgit_FTDC_STS_Settlemented"] = '2' +#缁撶畻瀹屾垚 +defineDict["Sgit_FTDC_STS_Finished"] = '3' + +typedefDict["TSgitFtdcSettlementStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRangeIntTypeType鏄竴涓檺瀹氬肩被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRangeIntTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRangeIntFromType鏄竴涓檺瀹氬间笅闄愮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRangeIntFromType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRangeIntToType鏄竴涓檺瀹氬间笂闄愮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRangeIntToType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionIDType鏄竴涓姛鑳戒唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFunctionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionValueCodeType鏄竴涓姛鑳界紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFunctionValueCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionNameType鏄竴涓姛鑳藉悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFunctionNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRoleIDType鏄竴涓鑹茬紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRoleIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRoleNameType鏄竴涓鑹插悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRoleNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDescriptionType鏄竴涓弿杩扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDescriptionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombineIDType鏄竴涓粍鍚堢紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCombineIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCombineTypeType鏄竴涓粍鍚堢被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCombineTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorTypeType鏄竴涓姇璧勮呯被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鑷劧浜 +defineDict["Sgit_FTDC_CT_Person"] = '0' +#娉曚汉 +defineDict["Sgit_FTDC_CT_Company"] = '1' +#鎶曡祫鍩洪噾 +defineDict["Sgit_FTDC_CT_Fund"] = '2' + +typedefDict["TSgitFtdcInvestorTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerTypeType鏄竴涓粡绾叕鍙哥被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#浜ゆ槗浼氬憳 +defineDict["Sgit_FTDC_BT_Trade"] = '0' +#浜ゆ槗缁撶畻浼氬憳 +defineDict["Sgit_FTDC_BT_TradeSettle"] = '1' + +typedefDict["TSgitFtdcBrokerTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskLevelType鏄竴涓闄╃瓑绾х被鍨 +#////////////////////////////////////////////////////////////////////// +#浣庨闄╁鎴 +defineDict["Sgit_FTDC_FAS_Low"] = '1' +#鏅氬鎴 +defineDict["Sgit_FTDC_FAS_Normal"] = '2' +#鍏虫敞瀹㈡埛 +defineDict["Sgit_FTDC_FAS_Focus"] = '3' +#椋庨櫓瀹㈡埛 +defineDict["Sgit_FTDC_FAS_Risk"] = '4' + +typedefDict["TSgitFtdcRiskLevelType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFeeAcceptStyleType鏄竴涓墜缁垂鏀跺彇鏂瑰紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎸変氦鏄撴敹鍙 +defineDict["Sgit_FTDC_FAS_ByTrade"] = '1' +#鎸変氦鍓叉敹鍙 +defineDict["Sgit_FTDC_FAS_ByDeliv"] = '2' +#涓嶆敹 +defineDict["Sgit_FTDC_FAS_None"] = '3' +#鎸夋寚瀹氭墜缁垂鏀跺彇 +defineDict["Sgit_FTDC_FAS_FixFee"] = '4' + +typedefDict["TSgitFtdcFeeAcceptStyleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPasswordTypeType鏄竴涓瘑鐮佺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#浜ゆ槗瀵嗙爜 +defineDict["Sgit_FTDC_PWDT_Trade"] = '1' +#璧勯噾瀵嗙爜 +defineDict["Sgit_FTDC_PWDT_Account"] = '2' + +typedefDict["TSgitFtdcPasswordTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAlgorithmType鏄竴涓泩浜忕畻娉曠被鍨 +#////////////////////////////////////////////////////////////////////// +#娴泩娴簭閮借绠 +defineDict["Sgit_FTDC_AG_All"] = '1' +#娴泩涓嶈锛屾诞浜忚 +defineDict["Sgit_FTDC_AG_OnlyLost"] = '2' +#娴泩璁★紝娴簭涓嶈 +defineDict["Sgit_FTDC_AG_OnlyGain"] = '3' +#娴泩娴簭閮戒笉璁$畻 +defineDict["Sgit_FTDC_AG_None"] = '4' + +typedefDict["TSgitFtdcAlgorithmType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIncludeCloseProfitType鏄竴涓槸鍚﹀寘鍚钩浠撶泩鍒╃被鍨 +#////////////////////////////////////////////////////////////////////// +#鍖呭惈骞充粨鐩堝埄 +defineDict["Sgit_FTDC_ICP_Include"] = '0' +#涓嶅寘鍚钩浠撶泩鍒 +defineDict["Sgit_FTDC_ICP_NotInclude"] = '2' + +typedefDict["TSgitFtdcIncludeCloseProfitType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAllWithoutTradeType鏄竴涓槸鍚﹀彈鍙彁姣斾緥闄愬埗绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#涓嶅彈鍙彁姣斾緥闄愬埗 +defineDict["Sgit_FTDC_AWT_Enable"] = '0' +#鍙楀彲鎻愭瘮渚嬮檺鍒 +defineDict["Sgit_FTDC_AWT_Disable"] = '2' + +typedefDict["TSgitFtdcAllWithoutTradeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommentType鏄竴涓泩浜忕畻娉曡鏄庣被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVersionType鏄竴涓増鏈彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcVersionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeCodeType鏄竴涓氦鏄撲唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeDateType鏄竴涓氦鏄撴棩鏈熺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeTimeType鏄竴涓氦鏄撴椂闂寸被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSerialType鏄竴涓彂璧锋柟娴佹按鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSerialNoType鏄竴涓彂璧锋柟娴佹按鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeSerialNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureIDType鏄竴涓湡璐у叕鍙镐唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankIDType鏄竴涓摱琛屼唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankBrchIDType鏄竴涓摱琛屽垎涓績浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankBrchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankBranchIDType鏄竴涓垎涓績浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperNoType鏄竴涓氦鏄撴煖鍛樼被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOperNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDeviceIDType鏄竴涓笭閬撴爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDeviceIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRecordNumType鏄竴涓褰曟暟绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRecordNumType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccountType鏄竴涓湡璐ц祫閲戣处鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFuturePwdFlagType鏄竴涓祫閲戝瘑鐮佹牳瀵规爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嶆牳瀵 +defineDict["Sgit_FTDC_FPWD_UnCheck"] = '0' +#鏍稿 +defineDict["Sgit_FTDC_FPWD_Check"] = '1' + +typedefDict["TSgitFtdcFuturePwdFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferTypeType鏄竴涓摱鏈熻浆璐︾被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰杞湡璐 +defineDict["Sgit_FTDC_TT_BankToFuture"] = '0' +#鏈熻揣杞摱琛 +defineDict["Sgit_FTDC_TT_FutureToBank"] = '1' + +typedefDict["TSgitFtdcTransferTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccPwdType鏄竴涓湡璐ц祫閲戝瘑鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureAccPwdType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencyCodeType鏄竴涓竵绉嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCurrencyCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRetCodeType鏄竴涓搷搴斾唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRetCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRetInfoType鏄竴涓搷搴斾俊鎭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRetInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeAmtType鏄竴涓摱琛屾讳綑棰濈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeAmtType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUseAmtType鏄竴涓摱琛屽彲鐢ㄤ綑棰濈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUseAmtType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFetchAmtType鏄竴涓摱琛屽彲鍙栦綑棰濈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFetchAmtType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferValidFlagType鏄竴涓浆璐︽湁鏁堟爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鏃犳晥鎴栧け璐 +defineDict["Sgit_FTDC_TVF_Invalid"] = '0' +#鏈夋晥 +defineDict["Sgit_FTDC_TVF_Valid"] = '1' +#鍐叉 +defineDict["Sgit_FTDC_TVF_Reverse"] = '2' + +typedefDict["TSgitFtdcTransferValidFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCertCodeType鏄竴涓瘉浠跺彿鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCertCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReasonType鏄竴涓簨鐢辩被鍨 +#////////////////////////////////////////////////////////////////////// +#閿欏崟 +defineDict["Sgit_FTDC_RN_CD"] = '0' +#璧勯噾鍦ㄩ +defineDict["Sgit_FTDC_RN_ZT"] = '1' +#鍏跺畠 +defineDict["Sgit_FTDC_RN_QT"] = '2' + +typedefDict["TSgitFtdcReasonType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundProjectIDType鏄竴涓祫閲戦」鐩紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFundProjectIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSexType鏄竴涓у埆绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鏈煡 +defineDict["Sgit_FTDC_SEX_None"] = '0' +#鐢 +defineDict["Sgit_FTDC_SEX_Man"] = '1' +#濂 +defineDict["Sgit_FTDC_SEX_Woman"] = '2' + +typedefDict["TSgitFtdcSexType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProfessionType鏄竴涓亴涓氱被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProfessionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNationalType鏄竴涓浗绫嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcNationalType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProvinceType鏄竴涓渷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProvinceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRegionType鏄竴涓尯绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRegionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCountryType鏄竴涓浗瀹剁被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCountryType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLicenseNOType鏄竴涓惀涓氭墽鐓х被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLicenseNOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCompanyTypeType鏄竴涓紒涓氭ц川绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCompanyTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessScopeType鏄竴涓粡钀ヨ寖鍥寸被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBusinessScopeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCapitalCurrencyType鏄竴涓敞鍐岃祫鏈竵绉嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCapitalCurrencyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserTypeType鏄竴涓敤鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鎶曡祫鑰 +defineDict["Sgit_FTDC_UT_Investor"] = '0' +#鎿嶄綔鍛 +defineDict["Sgit_FTDC_UT_Operator"] = '1' +#绠$悊鍛 +defineDict["Sgit_FTDC_UT_SuperUser"] = '2' + +typedefDict["TSgitFtdcUserTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateTypeType鏄竴涓垂鐜囩被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#淇濊瘉閲戠巼 +defineDict["Sgit_FTDC_RATETYPE_MarginRate"] = '2' + +typedefDict["TSgitFtdcRateTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNoteTypeType鏄竴涓氱煡绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#浜ゆ槗缁撶畻鍗 +defineDict["Sgit_FTDC_NOTETYPE_TradeSettleBill"] = '1' +#浜ゆ槗缁撶畻鏈堟姤 +defineDict["Sgit_FTDC_NOTETYPE_TradeSettleMonth"] = '2' +#杩藉姞淇濊瘉閲戦氱煡涔 +defineDict["Sgit_FTDC_NOTETYPE_CallMarginNotes"] = '3' +#寮鸿骞充粨閫氱煡涔 +defineDict["Sgit_FTDC_NOTETYPE_ForceCloseNotes"] = '4' +#鎴愪氦閫氱煡涔 +defineDict["Sgit_FTDC_NOTETYPE_TradeNotes"] = '5' +#浜ゅ壊閫氱煡涔 +defineDict["Sgit_FTDC_NOTETYPE_DelivNotes"] = '6' + +typedefDict["TSgitFtdcNoteTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementStyleType鏄竴涓粨绠楀崟鏂瑰紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#閫愭棩鐩競 +defineDict["Sgit_FTDC_SBS_Day"] = '1' +#閫愮瑪瀵瑰啿 +defineDict["Sgit_FTDC_SBS_Volume"] = '2' + +typedefDict["TSgitFtdcSettlementStyleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerDNSType鏄竴涓煙鍚嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBrokerDNSType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSentenceType鏄竴涓鍙ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSentenceType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettlementBillTypeType鏄竴涓粨绠楀崟绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鏃ユ姤 +defineDict["Sgit_FTDC_ST_Day"] = '0' +#鏈堟姤 +defineDict["Sgit_FTDC_ST_Month"] = '1' + +typedefDict["TSgitFtdcSettlementBillTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserRightTypeType鏄竴涓鎴锋潈闄愮被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鐧诲綍 +defineDict["Sgit_FTDC_URT_Logon"] = '1' +#閾舵湡杞笎 +defineDict["Sgit_FTDC_URT_Transfer"] = '2' +#閭瘎缁撶畻鍗 +defineDict["Sgit_FTDC_URT_EMail"] = '3' +#浼犵湡缁撶畻鍗 +defineDict["Sgit_FTDC_URT_Fax"] = '4' +#鏉′欢鍗 +defineDict["Sgit_FTDC_URT_ConditionOrder"] = '5' + +typedefDict["TSgitFtdcUserRightTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMarginPriceTypeType鏄竴涓繚璇侀噾浠锋牸绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鏄ㄧ粨绠椾环 +defineDict["Sgit_FTDC_MPT_PreSettlementPrice"] = '1' +#鏈鏂颁环 +defineDict["Sgit_FTDC_MPT_SettlementPrice"] = '2' +#鎴愪氦鍧囦环 +defineDict["Sgit_FTDC_MPT_AveragePrice"] = '3' +#寮浠撲环 +defineDict["Sgit_FTDC_MPT_OpenPrice"] = '4' + +typedefDict["TSgitFtdcMarginPriceTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBillGenStatusType鏄竴涓粨绠楀崟鐢熸垚鐘舵佺被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嶇敓鎴 +defineDict["Sgit_FTDC_BGS_None"] = '0' +#鏈敓鎴 +defineDict["Sgit_FTDC_BGS_NoGenerated"] = '1' +#宸茬敓鎴 +defineDict["Sgit_FTDC_BGS_Generated"] = '2' + +typedefDict["TSgitFtdcBillGenStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAlgoTypeType鏄竴涓畻娉曠被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鎸佷粨澶勭悊绠楁硶 +defineDict["Sgit_FTDC_AT_HandlePositionAlgo"] = '1' +#瀵绘壘淇濊瘉閲戠巼绠楁硶 +defineDict["Sgit_FTDC_AT_FindMarginRateAlgo"] = '2' + +typedefDict["TSgitFtdcAlgoTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHandlePositionAlgoIDType鏄竴涓寔浠撳鐞嗙畻娉曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +#鍩烘湰 +defineDict["Sgit_FTDC_HPA_Base"] = '1' +#澶ц繛鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_HPA_DCE"] = '2' +#閮戝窞鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_HPA_CZCE"] = '3' + +typedefDict["TSgitFtdcHandlePositionAlgoIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFindMarginRateAlgoIDType鏄竴涓鎵句繚璇侀噾鐜囩畻娉曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +#鍩烘湰 +defineDict["Sgit_FTDC_FMRA_Base"] = '1' +#澶ц繛鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_FMRA_DCE"] = '2' +#閮戝窞鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_FMRA_CZCE"] = '3' + +typedefDict["TSgitFtdcFindMarginRateAlgoIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcHandleTradingAccountAlgoIDType鏄竴涓祫閲戝鐞嗙畻娉曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +#鍩烘湰 +defineDict["Sgit_FTDC_HTAA_Base"] = '1' +#澶ц繛鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_HTAA_DCE"] = '2' +#閮戝窞鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_HTAA_CZCE"] = '3' + +typedefDict["TSgitFtdcHandleTradingAccountAlgoIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPersonTypeType鏄竴涓仈绯讳汉绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎸囧畾涓嬪崟浜 +defineDict["Sgit_FTDC_PST_Order"] = '1' +#寮鎴锋巿鏉冧汉 +defineDict["Sgit_FTDC_PST_Open"] = '2' +#璧勯噾璋冩嫧浜 +defineDict["Sgit_FTDC_PST_Fund"] = '3' +#缁撶畻鍗曠‘璁や汉 +defineDict["Sgit_FTDC_PST_Settlement"] = '4' +#娉曚汉 +defineDict["Sgit_FTDC_PST_Company"] = '5' +#娉曚汉浠h〃 +defineDict["Sgit_FTDC_PST_Corporation"] = '6' +#鎶曡祫鑰呰仈绯讳汉 +defineDict["Sgit_FTDC_PST_LinkMan"] = '7' + +typedefDict["TSgitFtdcPersonTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQueryInvestorRangeType鏄竴涓煡璇㈣寖鍥寸被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_QIR_All"] = '1' +#鏌ヨ鍒嗙被 +defineDict["Sgit_FTDC_QIR_Group"] = '2' +#鍗曚竴鎶曡祫鑰 +defineDict["Sgit_FTDC_QIR_Single"] = '3' + +typedefDict["TSgitFtdcQueryInvestorRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorRiskStatusType鏄竴涓姇璧勮呴闄╃姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_IRS_Normal"] = '1' +#璀﹀憡 +defineDict["Sgit_FTDC_IRS_Warn"] = '2' +#杩戒繚 +defineDict["Sgit_FTDC_IRS_Call"] = '3' +#寮哄钩 +defineDict["Sgit_FTDC_IRS_Force"] = '4' +#寮傚父 +defineDict["Sgit_FTDC_IRS_Exception"] = '5' + +typedefDict["TSgitFtdcInvestorRiskStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLegIDType鏄竴涓崟鑵跨紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLegIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLegMultipleType鏄竴涓崟鑵夸箻鏁扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLegMultipleType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcImplyLevelType鏄竴涓淳鐢熷眰鏁扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcImplyLevelType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearAccountType鏄竴涓粨绠楄处鎴风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClearAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganNOType鏄竴涓粨绠楄处鎴风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrganNOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearbarchIDType鏄竴涓粨绠楄处鎴疯仈琛屽彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClearbarchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserEventTypeType鏄竴涓敤鎴蜂簨浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鐧诲綍 +defineDict["Sgit_FTDC_UET_Login"] = '1' +#鐧诲嚭 +defineDict["Sgit_FTDC_UET_Logout"] = '2' +#浜ゆ槗鎴愬姛 +defineDict["Sgit_FTDC_UET_Trading"] = '3' +#浜ゆ槗澶辫触 +defineDict["Sgit_FTDC_UET_TradingError"] = '4' +#淇敼瀵嗙爜 +defineDict["Sgit_FTDC_UET_UpdatePassword"] = '5' +#瀹㈡埛绔璇 +defineDict["Sgit_FTDC_UET_Authenticate"] = '6' +#鍏朵粬 +defineDict["Sgit_FTDC_UET_Other"] = '9' + +typedefDict["TSgitFtdcUserEventTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserEventInfoType鏄竴涓敤鎴蜂簨浠朵俊鎭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUserEventInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCloseStyleType鏄竴涓钩浠撴柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鍏堝紑鍏堝钩 +defineDict["Sgit_FTDC_ICS_Close"] = '0' +#鍏堝钩浠婂啀骞虫槰 +defineDict["Sgit_FTDC_ICS_CloseToday"] = '1' + +typedefDict["TSgitFtdcCloseStyleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStatModeType鏄竴涓粺璁℃柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#---- +defineDict["Sgit_FTDC_SM_Non"] = '0' +#鎸夊悎绾︾粺璁 +defineDict["Sgit_FTDC_SM_Instrument"] = '1' +#鎸変骇鍝佺粺璁 +defineDict["Sgit_FTDC_SM_Product"] = '2' +#鎸夋姇璧勮呯粺璁 +defineDict["Sgit_FTDC_SM_Investor"] = '3' + +typedefDict["TSgitFtdcStatModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParkedOrderStatusType鏄竴涓鍩嬪崟鐘舵佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈彂閫 +defineDict["Sgit_FTDC_PAOS_NotSend"] = '1' +#宸插彂閫 +defineDict["Sgit_FTDC_PAOS_Send"] = '2' +#宸插垹闄 +defineDict["Sgit_FTDC_PAOS_Deleted"] = '3' + +typedefDict["TSgitFtdcParkedOrderStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParkedOrderIDType鏄竴涓鍩嬫姤鍗曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcParkedOrderIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParkedOrderActionIDType鏄竴涓鍩嬫挙鍗曠紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcParkedOrderActionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirDealStatusType鏄竴涓鐞嗙姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e湪澶勭悊 +defineDict["Sgit_FTDC_VDS_Dealing"] = '1' +#澶勭悊鎴愬姛 +defineDict["Sgit_FTDC_VDS_DeaclSucceed"] = '2' + +typedefDict["TSgitFtdcVirDealStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrgSystemIDType鏄竴涓師鏈夌郴缁熶唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#缁煎悎浜ゆ槗骞冲彴 +defineDict["Sgit_FTDC_ORGS_Standard"] = '0' +#鏄撶洓绯荤粺 +defineDict["Sgit_FTDC_ORGS_ESunny"] = '1' +#閲戜粫杈綱6绯荤粺 +defineDict["Sgit_FTDC_ORGS_KingStarV6"] = '2' + +typedefDict["TSgitFtdcOrgSystemIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirTradeStatusType鏄竴涓氦鏄撶姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父澶勭悊涓 +defineDict["Sgit_FTDC_VTS_NaturalDeal"] = '0' +#鎴愬姛缁撴潫 +defineDict["Sgit_FTDC_VTS_SucceedEnd"] = '1' +#澶辫触缁撴潫 +defineDict["Sgit_FTDC_VTS_FailedEND"] = '2' +#寮傚父涓 +defineDict["Sgit_FTDC_VTS_Exception"] = '3' +#宸蹭汉宸ュ紓甯稿鐞 +defineDict["Sgit_FTDC_VTS_ManualDeal"] = '4' +#閫氳寮傚父 锛岃浜哄伐澶勭悊 +defineDict["Sgit_FTDC_VTS_MesException"] = '5' +#绯荤粺鍑洪敊锛岃浜哄伐澶勭悊 +defineDict["Sgit_FTDC_VTS_SysException"] = '6' + +typedefDict["TSgitFtdcVirTradeStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirBankAccTypeType鏄竴涓摱琛屽笎鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#瀛樻姌 +defineDict["Sgit_FTDC_VBAT_BankBook"] = '1' +#鍌ㄨ搫鍗 +defineDict["Sgit_FTDC_VBAT_BankCard"] = '2' +#淇$敤鍗 +defineDict["Sgit_FTDC_VBAT_CreditCard"] = '3' + +typedefDict["TSgitFtdcVirBankAccTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirementStatusType鏄竴涓摱琛屽笎鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_VMS_Natural"] = '0' +#閿鎴 +defineDict["Sgit_FTDC_VMS_Canceled"] = '9' + +typedefDict["TSgitFtdcVirementStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirementAvailAbilityType鏄竴涓湁鏁堟爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈‘璁 +defineDict["Sgit_FTDC_VAA_NoAvailAbility"] = '0' +#鏈夋晥 +defineDict["Sgit_FTDC_VAA_AvailAbility"] = '1' +#鍐叉 +defineDict["Sgit_FTDC_VAA_Repeal"] = '2' + +typedefDict["TSgitFtdcVirementAvailAbilityType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcVirementTradeCodeType鏄竴涓氦鏄撲唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰鍙戣捣閾惰璧勯噾杞湡璐 +defineDict["Sgit_FTDC_VTC_BankBankToFuture"] = '102001' +#閾惰鍙戣捣鏈熻揣璧勯噾杞摱琛 +defineDict["Sgit_FTDC_VTC_BankFutureToBank"] = '102002' +#鏈熻揣鍙戣捣閾惰璧勯噾杞湡璐 +defineDict["Sgit_FTDC_VTC_FutureBankToFuture"] = '202001' +#鏈熻揣鍙戣捣鏈熻揣璧勯噾杞摱琛 +defineDict["Sgit_FTDC_VTC_FutureFutureToBank"] = '202002' + +typedefDict["TSgitFtdcVirementTradeCodeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPhotoTypeNameType鏄竴涓奖鍍忕被鍨嬪悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPhotoTypeNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPhotoTypeIDType鏄竴涓奖鍍忕被鍨嬩唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPhotoTypeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPhotoNameType鏄竴涓奖鍍忓悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPhotoNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTopicIDType鏄竴涓富棰樹唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTopicIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReportTypeIDType鏄竴涓氦鏄撴姤鍛婄被鍨嬫爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcReportTypeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCharacterIDType鏄竴涓氦鏄撶壒寰佷唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCharacterIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLParamIDType鏄竴涓弬鏁颁唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInvestorTypeType鏄竴涓姇璧勮呯被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLInvestorTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLIdCardTypeType鏄竴涓瘉浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLIdCardTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTradeDirectType鏄竴涓祫閲戣繘鍑烘柟鍚戠被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLTradeDirectType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTradeModelType鏄竴涓祫閲戣繘鍑烘柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLTradeModelType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLParamIDType鏄竴涓弬鏁颁唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLParamIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLOpParamValueType鏄竴涓笟鍔″弬鏁颁唬鐮佸肩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLOpParamValueType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCustomerCardTypeType鏄竴涓鎴疯韩浠借瘉浠/璇佹槑鏂囦欢绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLCustomerCardTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInstitutionNameType鏄竴涓噾铻嶆満鏋勭綉鐐瑰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLInstitutionNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLDistrictIDType鏄竴涓噾铻嶆満鏋勭綉鐐规墍鍦ㄥ湴鍖鸿鏀垮尯鍒掍唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLDistrictIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLRelationShipType鏄竴涓噾铻嶆満鏋勭綉鐐逛笌澶ч浜ゆ槗鐨勫叧绯荤被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLRelationShipType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInstitutionTypeType鏄竴涓噾铻嶆満鏋勭綉鐐逛唬鐮佺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLInstitutionTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLInstitutionIDType鏄竴涓噾铻嶆満鏋勭綉鐐逛唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLInstitutionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLAccountTypeType鏄竴涓处鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLAccountTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTradingTypeType鏄竴涓氦鏄撴柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLTradingTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLTransactClassType鏄竴涓秹澶栨敹鏀氦鏄撳垎绫讳笌浠g爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLTransactClassType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCapitalIOType鏄竴涓祫閲戞敹浠樻爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLCapitalIOType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLSiteType鏄竴涓氦鏄撳湴鐐圭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLSiteType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCapitalPurposeType鏄竴涓祫閲戠敤閫旂被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLCapitalPurposeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLReportTypeType鏄竴涓姤鏂囩被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLReportTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLSerialNoType鏄竴涓紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLSerialNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLStatusType鏄竴涓姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLGenStatusType鏄竴涓狝ml鐢熸垚鏂瑰紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#绋嬪簭鐢熸垚 +defineDict["Sgit_FTDC_GEN_Program"] = '0' +#浜哄伐鐢熸垚 +defineDict["Sgit_FTDC_GEN_HandWork"] = '1' + +typedefDict["TSgitFtdcAMLGenStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLSeqCodeType鏄竴涓笟鍔℃爣璇嗗彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLSeqCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLFileNameType鏄竴涓狝ML鏂囦欢鍚嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLFileNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLMoneyType鏄竴涓弽娲楅挶璧勯噾绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLFileAmountType鏄竴涓弽娲楅挶璧勯噾绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLFileAmountType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCFMMCKeyType鏄竴涓瘑閽ョ被鍨(淇濊瘉閲戠洃绠)绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCFMMCKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCFMMCKeyKindType鏄竴涓姩鎬佸瘑閽ョ被鍒(淇濊瘉閲戠洃绠)绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#涓诲姩璇锋眰鏇存柊 +defineDict["Sgit_FTDC_CFMMCKK_REQUEST"] = 'R' +#CFMMC鑷姩鏇存柊 +defineDict["Sgit_FTDC_CFMMCKK_AUTO"] = 'A' +#CFMMC鎵嬪姩鏇存柊 +defineDict["Sgit_FTDC_CFMMCKK_MANUAL"] = 'M' + +typedefDict["TSgitFtdcCFMMCKeyKindType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLReportNameType鏄竴涓姤鏂囧悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAMLReportNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIndividualNameType鏄竴涓釜浜哄鍚嶇被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcIndividualNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCurrencyIDType鏄竴涓竵绉嶄唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCurrencyIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCustNumberType鏄竴涓鎴风紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCustNumberType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganCodeType鏄竴涓満鏋勭紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrganCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganNameType鏄竴涓満鏋勫悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrganNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSuperOrganCodeType鏄竴涓笂绾ф満鏋勭紪鐮,鍗虫湡璐у叕鍙告婚儴銆侀摱琛屾昏绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSuperOrganCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSubBranchIDType鏄竴涓垎鏀満鏋勭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSubBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSubBranchNameType鏄竴涓垎鏀満鏋勫悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSubBranchNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBranchNetCodeType鏄竴涓満鏋勭綉鐐瑰彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBranchNetCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBranchNetNameType鏄竴涓満鏋勭綉鐐瑰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBranchNetNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganFlagType鏄竴涓満鏋勬爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOrganFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankCodingForFutureType鏄竴涓摱琛屽鏈熻揣鍏徃鐨勭紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankCodingForFutureType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankReturnCodeType鏄竴涓摱琛屽杩斿洖鐮佺殑瀹氫箟绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPlateReturnCodeType鏄竴涓摱鏈熻浆甯愬钩鍙板杩斿洖鐮佺殑瀹氫箟绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPlateReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankSubBranchIDType鏄竴涓摱琛屽垎鏀満鏋勭紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankSubBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureBranchIDType鏄竴涓湡璐у垎鏀満鏋勭紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureBranchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReturnCodeType鏄竴涓繑鍥炰唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOperatorCodeType鏄竴涓搷浣滃憳绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOperatorCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearDepIDType鏄竴涓満鏋勭粨绠楀笎鎴锋満鏋勫彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClearDepIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearBrchIDType鏄竴涓満鏋勭粨绠楀笎鎴疯仈琛屽彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClearBrchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClearNameType鏄竴涓満鏋勭粨绠楀笎鎴峰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClearNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccountNameType鏄竴涓摱琛屽笎鎴峰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankAccountNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvDepIDType鏄竴涓満鏋勬姇璧勪汉璐﹀彿鏈烘瀯鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInvDepIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvBrchIDType鏄竴涓満鏋勬姇璧勪汉鑱旇鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInvBrchIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMessageFormatVersionType鏄竴涓俊鎭牸寮忕増鏈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMessageFormatVersionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDigestType鏄竴涓憳瑕佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDigestType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthenticDataType鏄竴涓璇佹暟鎹被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAuthenticDataType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPasswordKeyType鏄竴涓瘑閽ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPasswordKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccountNameType鏄竴涓湡璐у笎鎴峰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureAccountNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMobilePhoneType鏄竴涓墜鏈虹被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcMobilePhoneType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureMainKeyType鏄竴涓湡璐у叕鍙镐富瀵嗛挜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureMainKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureWorkKeyType鏄竴涓湡璐у叕鍙稿伐浣滃瘑閽ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureWorkKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureTransKeyType鏄竴涓湡璐у叕鍙镐紶杈撳瘑閽ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureTransKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankMainKeyType鏄竴涓摱琛屼富瀵嗛挜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankMainKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankWorkKeyType鏄竴涓摱琛屽伐浣滃瘑閽ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankWorkKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankTransKeyType鏄竴涓摱琛屼紶杈撳瘑閽ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankTransKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankServerDescriptionType鏄竴涓摱琛屾湇鍔″櫒鎻忚堪淇℃伅绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankServerDescriptionType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAddInfoType鏄竴涓檮鍔犱俊鎭被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAddInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDescrInfoForReturnCodeType鏄竴涓繑鍥炵爜鎻忚堪绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDescrInfoForReturnCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCountryCodeType鏄竴涓浗瀹朵唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCountryCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSerialType鏄竴涓祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPlateSerialType鏄竴涓钩鍙版祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPlateSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankSerialType鏄竴涓摱琛屾祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankSerialType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCorrectSerialType鏄竴涓鍐叉浜ゆ槗娴佹按鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCorrectSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureSerialType鏄竴涓湡璐у叕鍙告祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureSerialType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplicationIDType鏄竴涓簲鐢ㄦ爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcApplicationIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankProxyIDType鏄竴涓摱琛屼唬鐞嗘爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankProxyIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTCoreIDType鏄竴涓摱鏈熻浆甯愭牳蹇冪郴缁熸爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFBTCoreIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServerPortType鏄竴涓湇鍔$鍙e彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcServerPortType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRepealedTimesType鏄竴涓凡缁忓啿姝f鏁扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRepealedTimesType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRepealTimeIntervalType鏄竴涓啿姝f椂闂撮棿闅旂被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRepealTimeIntervalType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTotalTimesType鏄竴涓瘡鏃ョ疮璁¤浆甯愭鏁扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTotalTimesType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTRequestIDType鏄竴涓姹侷D绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFBTRequestIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTIDType鏄竴涓氦鏄揑D绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeAmountType鏄竴涓氦鏄撻噾棰濓紙鍏冿級绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTradeAmountType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCustFeeType鏄竴涓簲鏀跺鎴疯垂鐢紙鍏冿級绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCustFeeType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureFeeType鏄竴涓簲鏀舵湡璐у叕鍙歌垂鐢紙鍏冿級绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFutureFeeType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSingleMaxAmtType鏄竴涓崟绗旀渶楂橀檺棰濈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSingleMaxAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSingleMinAmtType鏄竴涓崟绗旀渶浣庨檺棰濈被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSingleMinAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTotalAmtType鏄竴涓瘡鏃ョ疮璁¤浆甯愰搴︾被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTotalAmtType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCertificationTypeType鏄竴涓瘉浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#韬唤璇 +defineDict["Sgit_FTDC_CFT_IDCard"] = '0' +#鎶ょ収 +defineDict["Sgit_FTDC_CFT_Passport"] = '1' +#鍐涘畼璇 +defineDict["Sgit_FTDC_CFT_OfficerIDCard"] = '2' +#澹叺璇 +defineDict["Sgit_FTDC_CFT_SoldierIDCard"] = '3' +#鍥炰埂璇 +defineDict["Sgit_FTDC_CFT_HomeComingCard"] = '4' +#鎴峰彛绨 +defineDict["Sgit_FTDC_CFT_HouseholdRegister"] = '5' +#钀ヤ笟鎵х収鍙 +defineDict["Sgit_FTDC_CFT_LicenseNo"] = '6' +#缁勭粐鏈烘瀯浠g爜璇 +defineDict["Sgit_FTDC_CFT_InstitutionCodeCard"] = '7' +#涓存椂钀ヤ笟鎵х収鍙 +defineDict["Sgit_FTDC_CFT_TempLicenseNo"] = '8' +#姘戝姙闈炰紒涓氱櫥璁拌瘉涔 +defineDict["Sgit_FTDC_CFT_NoEnterpriseLicenseNo"] = '9' +#鍏朵粬璇佷欢 +defineDict["Sgit_FTDC_CFT_OtherCard"] = 'x' +#涓荤閮ㄩ棬鎵规枃 +defineDict["Sgit_FTDC_CFT_SuperDepAgree"] = 'a' + +typedefDict["TSgitFtdcCertificationTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileBusinessCodeType鏄竴涓枃浠朵笟鍔″姛鑳界被鍨 +#////////////////////////////////////////////////////////////////////// +#鍏朵粬 +defineDict["Sgit_FTDC_FBC_Others"] = '0' +#杞处浜ゆ槗鏄庣粏瀵硅处 +defineDict["Sgit_FTDC_FBC_TransferDetails"] = '1' +#瀹㈡埛璐︽埛鐘舵佸璐 +defineDict["Sgit_FTDC_FBC_CustAccStatus"] = '2' +#璐︽埛绫讳氦鏄撴槑缁嗗璐 +defineDict["Sgit_FTDC_FBC_AccountTradeDetails"] = '3' +#鏈熻揣璐︽埛淇℃伅鍙樻洿鏄庣粏瀵硅处 +defineDict["Sgit_FTDC_FBC_FutureAccountChangeInfoDetails"] = '4' +#瀹㈡埛璧勯噾鍙拌处浣欓鏄庣粏瀵硅处 +defineDict["Sgit_FTDC_FBC_CustMoneyDetail"] = '5' +#瀹㈡埛閿鎴风粨鎭槑缁嗗璐 +defineDict["Sgit_FTDC_FBC_CustCancelAccountInfo"] = '6' +#瀹㈡埛璧勯噾浣欓瀵硅处缁撴灉 +defineDict["Sgit_FTDC_FBC_CustMoneyResult"] = '7' +#鍏跺畠瀵硅处寮傚父缁撴灉鏂囦欢 +defineDict["Sgit_FTDC_FBC_OthersExceptionResult"] = '8' +#瀹㈡埛缁撴伅鍑棰濇槑缁 +defineDict["Sgit_FTDC_FBC_CustInterestNetMoneyDetails"] = '9' +#瀹㈡埛璧勯噾浜ゆ敹鏄庣粏 +defineDict["Sgit_FTDC_FBC_CustMoneySendAndReceiveDetails"] = 'a' +#娉曚汉瀛樼閾惰璧勯噾浜ゆ敹姹囨 +defineDict["Sgit_FTDC_FBC_CorporationMoneyTotal"] = 'b' +#涓讳綋闂磋祫閲戜氦鏀舵眹鎬 +defineDict["Sgit_FTDC_FBC_MainbodyMoneyTotal"] = 'c' +#鎬诲垎骞宠 鐩戠鏁版嵁 +defineDict["Sgit_FTDC_FBC_MainPartMonitorData"] = 'd' +#瀛樼閾惰澶囦粯閲戜綑棰 +defineDict["Sgit_FTDC_FBC_PreparationMoney"] = 'e' +#鍗忓姙瀛樼閾惰璧勯噾鐩戠鏁版嵁 +defineDict["Sgit_FTDC_FBC_BankMoneyMonitorData"] = 'f' + +typedefDict["TSgitFtdcFileBusinessCodeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCashExchangeCodeType鏄竴涓眹閽炴爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#姹 +defineDict["Sgit_FTDC_CEC_Exchange"] = '1' +#閽 +defineDict["Sgit_FTDC_CEC_Cash"] = '2' + +typedefDict["TSgitFtdcCashExchangeCodeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcYesNoIndicatorType鏄竴涓槸鎴栧惁鏍囪瘑绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鏄 +defineDict["Sgit_FTDC_YNI_Yes"] = '0' +#鍚 +defineDict["Sgit_FTDC_YNI_No"] = '1' + +typedefDict["TSgitFtdcYesNoIndicatorType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBanlanceTypeType鏄竴涓綑棰濈被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#褰撳墠浣欓 +defineDict["Sgit_FTDC_BLT_CurrentMoney"] = '0' +#鍙敤浣欓 +defineDict["Sgit_FTDC_BLT_UsableMoney"] = '1' +#鍙彇浣欓 +defineDict["Sgit_FTDC_BLT_FetchableMoney"] = '2' +#鍐荤粨浣欓 +defineDict["Sgit_FTDC_BLT_FreezeMoney"] = '3' + +typedefDict["TSgitFtdcBanlanceTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcGenderType鏄竴涓у埆绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鏈煡鐘舵 +defineDict["Sgit_FTDC_GD_Unknown"] = '0' +#鐢 +defineDict["Sgit_FTDC_GD_Male"] = '1' +#濂 +defineDict["Sgit_FTDC_GD_Female"] = '2' + +typedefDict["TSgitFtdcGenderType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFeePayFlagType鏄竴涓垂鐢ㄦ敮浠樻爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鐢卞彈鐩婃柟鏀粯璐圭敤 +defineDict["Sgit_FTDC_FPF_BEN"] = '0' +#鐢卞彂閫佹柟鏀粯璐圭敤 +defineDict["Sgit_FTDC_FPF_OUR"] = '1' +#鐢卞彂閫佹柟鏀粯鍙戣捣鐨勮垂鐢紝鍙楃泭鏂规敮浠樻帴鍙楃殑璐圭敤 +defineDict["Sgit_FTDC_FPF_SHA"] = '2' + +typedefDict["TSgitFtdcFeePayFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPassWordKeyTypeType鏄竴涓瘑閽ョ被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#浜ゆ崲瀵嗛挜 +defineDict["Sgit_FTDC_PWKT_ExchangeKey"] = '0' +#瀵嗙爜瀵嗛挜 +defineDict["Sgit_FTDC_PWKT_PassWordKey"] = '1' +#MAC瀵嗛挜 +defineDict["Sgit_FTDC_PWKT_MACKey"] = '2' +#鎶ユ枃瀵嗛挜 +defineDict["Sgit_FTDC_PWKT_MessageKey"] = '3' + +typedefDict["TSgitFtdcPassWordKeyTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTPassWordTypeType鏄竴涓瘑鐮佺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鏌ヨ +defineDict["Sgit_FTDC_PWT_Query"] = '0' +#鍙栨 +defineDict["Sgit_FTDC_PWT_Fetch"] = '1' +#杞笎 +defineDict["Sgit_FTDC_PWT_Transfer"] = '2' +#浜ゆ槗 +defineDict["Sgit_FTDC_PWT_Trade"] = '3' + +typedefDict["TSgitFtdcFBTPassWordTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTEncryModeType鏄竴涓姞瀵嗘柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嶅姞瀵 +defineDict["Sgit_FTDC_EM_NoEncry"] = '0' +#DES +defineDict["Sgit_FTDC_EM_DES"] = '1' +#3DES +defineDict["Sgit_FTDC_EM_3DES"] = '2' + +typedefDict["TSgitFtdcFBTEncryModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankRepealFlagType鏄竴涓摱琛屽啿姝f爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰鏃犻渶鑷姩鍐叉 +defineDict["Sgit_FTDC_BRF_BankNotNeedRepeal"] = '0' +#閾惰寰呰嚜鍔ㄥ啿姝 +defineDict["Sgit_FTDC_BRF_BankWaitingRepeal"] = '1' +#閾惰宸茶嚜鍔ㄥ啿姝 +defineDict["Sgit_FTDC_BRF_BankBeenRepealed"] = '2' + +typedefDict["TSgitFtdcBankRepealFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerRepealFlagType鏄竴涓湡鍟嗗啿姝f爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈熷晢鏃犻渶鑷姩鍐叉 +defineDict["Sgit_FTDC_BRORF_BrokerNotNeedRepeal"] = '0' +#鏈熷晢寰呰嚜鍔ㄥ啿姝 +defineDict["Sgit_FTDC_BRORF_BrokerWaitingRepeal"] = '1' +#鏈熷晢宸茶嚜鍔ㄥ啿姝 +defineDict["Sgit_FTDC_BRORF_BrokerBeenRepealed"] = '2' + +typedefDict["TSgitFtdcBrokerRepealFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstitutionTypeType鏄竴涓満鏋勭被鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰 +defineDict["Sgit_FTDC_TS_Bank"] = '0' +#鏈熷晢 +defineDict["Sgit_FTDC_TS_Future"] = '1' +#鍒稿晢 +defineDict["Sgit_FTDC_TS_Store"] = '2' + +typedefDict["TSgitFtdcInstitutionTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLastFragmentType鏄竴涓渶鍚庡垎鐗囨爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鏄渶鍚庡垎鐗 +defineDict["Sgit_FTDC_LF_Yes"] = '0' +#涓嶆槸鏈鍚庡垎鐗 +defineDict["Sgit_FTDC_LF_No"] = '1' + +typedefDict["TSgitFtdcLastFragmentType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccStatusType鏄竴涓摱琛岃处鎴风姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_BAS_Normal"] = '0' +#鍐荤粨 +defineDict["Sgit_FTDC_BAS_Freeze"] = '1' +#鎸傚け +defineDict["Sgit_FTDC_BAS_ReportLoss"] = '2' + +typedefDict["TSgitFtdcBankAccStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMoneyAccountStatusType鏄竴涓祫閲戣处鎴风姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_MAS_Normal"] = '0' +#閿鎴 +defineDict["Sgit_FTDC_MAS_Cancel"] = '1' + +typedefDict["TSgitFtdcMoneyAccountStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcManageStatusType鏄竴涓瓨绠$姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鎸囧畾瀛樼 +defineDict["Sgit_FTDC_MSS_Point"] = '0' +#棰勬寚瀹 +defineDict["Sgit_FTDC_MSS_PrePoint"] = '1' +#鎾ら攢鎸囧畾 +defineDict["Sgit_FTDC_MSS_CancelPoint"] = '2' + +typedefDict["TSgitFtdcManageStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSystemTypeType鏄竴涓簲鐢ㄧ郴缁熺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#閾舵湡杞笎 +defineDict["Sgit_FTDC_SYT_FutureBankTransfer"] = '0' +#閾惰瘉杞笎 +defineDict["Sgit_FTDC_SYT_StockBankTransfer"] = '1' +#绗笁鏂瑰瓨绠 +defineDict["Sgit_FTDC_SYT_TheThirdPartStore"] = '2' + +typedefDict["TSgitFtdcSystemTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTxnEndFlagType鏄竴涓摱鏈熻浆甯愬垝杞粨鏋滄爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父澶勭悊涓 +defineDict["Sgit_FTDC_TEF_NormalProcessing"] = '0' +#鎴愬姛缁撴潫 +defineDict["Sgit_FTDC_TEF_Success"] = '1' +#澶辫触缁撴潫 +defineDict["Sgit_FTDC_TEF_Failed"] = '2' +#寮傚父涓 +defineDict["Sgit_FTDC_TEF_Abnormal"] = '3' +#宸蹭汉宸ュ紓甯稿鐞 +defineDict["Sgit_FTDC_TEF_ManualProcessedForException"] = '4' +#閫氳寮傚父 锛岃浜哄伐澶勭悊 +defineDict["Sgit_FTDC_TEF_CommuFailedNeedManualProcess"] = '5' +#绯荤粺鍑洪敊锛岃浜哄伐澶勭悊 +defineDict["Sgit_FTDC_TEF_SysErrorNeedManualProcess"] = '6' + +typedefDict["TSgitFtdcTxnEndFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessStatusType鏄竴涓摱鏈熻浆甯愭湇鍔″鐞嗙姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈鐞 +defineDict["Sgit_FTDC_PSS_NotProcess"] = '0' +#寮濮嬪鐞 +defineDict["Sgit_FTDC_PSS_StartProcess"] = '1' +#澶勭悊瀹屾垚 +defineDict["Sgit_FTDC_PSS_Finished"] = '2' + +typedefDict["TSgitFtdcProcessStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCustTypeType鏄竴涓鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鑷劧浜 +defineDict["Sgit_FTDC_CUSTT_Person"] = '0' +#鏈烘瀯鎴 +defineDict["Sgit_FTDC_CUSTT_Institution"] = '1' + +typedefDict["TSgitFtdcCustTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTTransferDirectionType鏄竴涓摱鏈熻浆甯愭柟鍚戠被鍨 +#////////////////////////////////////////////////////////////////////// +#鍏ラ噾锛岄摱琛岃浆鏈熻揣 +defineDict["Sgit_FTDC_FBTTD_FromBankToFuture"] = '1' +#鍑洪噾锛屾湡璐ц浆閾惰 +defineDict["Sgit_FTDC_FBTTD_FromFutureToBank"] = '2' + +typedefDict["TSgitFtdcFBTTransferDirectionType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOpenOrDestroyType鏄竴涓紑閿鎴风被鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#寮鎴 +defineDict["Sgit_FTDC_OOD_Open"] = '1' +#閿鎴 +defineDict["Sgit_FTDC_OOD_Destroy"] = '0' + +typedefDict["TSgitFtdcOpenOrDestroyType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAvailabilityFlagType鏄竴涓湁鏁堟爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈‘璁 +defineDict["Sgit_FTDC_AVAF_Invalid"] = '0' +#鏈夋晥 +defineDict["Sgit_FTDC_AVAF_Valid"] = '1' +#鍐叉 +defineDict["Sgit_FTDC_AVAF_Repeal"] = '2' + +typedefDict["TSgitFtdcAvailabilityFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganTypeType鏄竴涓満鏋勭被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰浠g悊 +defineDict["Sgit_FTDC_OT_Bank"] = '1' +#浜ゆ槗鍓嶇疆 +defineDict["Sgit_FTDC_OT_Future"] = '2' +#閾舵湡杞笎骞冲彴绠$悊 +defineDict["Sgit_FTDC_OT_PlateForm"] = '9' + +typedefDict["TSgitFtdcOrganTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganLevelType鏄竴涓満鏋勭骇鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰鎬昏鎴栨湡鍟嗘婚儴 +defineDict["Sgit_FTDC_OL_HeadQuarters"] = '1' +#閾惰鍒嗕腑蹇冩垨鏈熻揣鍏徃钀ヤ笟閮 +defineDict["Sgit_FTDC_OL_Branch"] = '2' + +typedefDict["TSgitFtdcOrganLevelType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProtocalIDType鏄竴涓崗璁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈熷晢鍗忚 +defineDict["Sgit_FTDC_PID_FutureProtocal"] = '0' +#宸ヨ鍗忚 +defineDict["Sgit_FTDC_PID_ICBCProtocal"] = '1' +#鍐滆鍗忚 +defineDict["Sgit_FTDC_PID_ABCProtocal"] = '2' +#涓浗閾惰鍗忚 +defineDict["Sgit_FTDC_PID_CBCProtocal"] = '3' +#寤鸿鍗忚 +defineDict["Sgit_FTDC_PID_CCBProtocal"] = '4' +#浜よ鍗忚 +defineDict["Sgit_FTDC_PID_BOCOMProtocal"] = '5' +#閾舵湡杞笎骞冲彴鍗忚 +defineDict["Sgit_FTDC_PID_FBTPlateFormProtocal"] = 'X' + +typedefDict["TSgitFtdcProtocalIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcConnectModeType鏄竴涓鎺ュ瓧杩炴帴鏂瑰紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鐭繛鎺 +defineDict["Sgit_FTDC_CM_ShortConnect"] = '0' +#闀胯繛鎺 +defineDict["Sgit_FTDC_CM_LongConnect"] = '1' + +typedefDict["TSgitFtdcConnectModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSyncModeType鏄竴涓鎺ュ瓧閫氫俊鏂瑰紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#寮傛 +defineDict["Sgit_FTDC_SRM_ASync"] = '0' +#鍚屾 +defineDict["Sgit_FTDC_SRM_Sync"] = '1' + +typedefDict["TSgitFtdcSyncModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAccTypeType鏄竴涓摱琛屽笎鍙风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰瀛樻姌 +defineDict["Sgit_FTDC_BAT_BankBook"] = '1' +#鍌ㄨ搫鍗 +defineDict["Sgit_FTDC_BAT_SavingCard"] = '2' +#淇$敤鍗 +defineDict["Sgit_FTDC_BAT_CreditCard"] = '3' + +typedefDict["TSgitFtdcBankAccTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureAccTypeType鏄竴涓湡璐у叕鍙稿笎鍙风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰瀛樻姌 +defineDict["Sgit_FTDC_FAT_BankBook"] = '1' +#鍌ㄨ搫鍗 +defineDict["Sgit_FTDC_FAT_SavingCard"] = '2' +#淇$敤鍗 +defineDict["Sgit_FTDC_FAT_CreditCard"] = '3' + +typedefDict["TSgitFtdcFutureAccTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOrganStatusType鏄竴涓帴鍏ユ満鏋勭姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鍚敤 +defineDict["Sgit_FTDC_OS_Ready"] = '0' +#绛惧埌 +defineDict["Sgit_FTDC_OS_CheckIn"] = '1' +#绛鹃 +defineDict["Sgit_FTDC_OS_CheckOut"] = '2' +#瀵瑰笎鏂囦欢鍒拌揪 +defineDict["Sgit_FTDC_OS_CheckFileArrived"] = '3' +#瀵瑰笎 +defineDict["Sgit_FTDC_OS_CheckDetail"] = '4' +#鏃ョ粓娓呯悊 +defineDict["Sgit_FTDC_OS_DayEndClean"] = '5' +#娉ㄩ攢 +defineDict["Sgit_FTDC_OS_Invalid"] = '9' + +typedefDict["TSgitFtdcOrganStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCCBFeeModeType鏄竴涓缓琛屾敹璐规ā寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鎸夐噾棰濇墸鏀 +defineDict["Sgit_FTDC_CCBFM_ByAmount"] = '1' +#鎸夋湀鎵f敹 +defineDict["Sgit_FTDC_CCBFM_ByMonth"] = '2' + +typedefDict["TSgitFtdcCCBFeeModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommApiTypeType鏄竴涓氳API绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#瀹㈡埛绔 +defineDict["Sgit_FTDC_CAPIT_Client"] = '1' +#鏈嶅姟绔 +defineDict["Sgit_FTDC_CAPIT_Server"] = '2' +#浜ゆ槗绯荤粺鐨刄serApi +defineDict["Sgit_FTDC_CAPIT_UserApi"] = '3' + +typedefDict["TSgitFtdcCommApiTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServiceIDType鏄竴涓湇鍔$紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcServiceIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServiceLineNoType鏄竴涓湇鍔$嚎璺紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcServiceLineNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcServiceNameType鏄竴涓湇鍔″悕绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcServiceNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLinkStatusType鏄竴涓繛鎺ョ姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#宸茬粡杩炴帴 +defineDict["Sgit_FTDC_LS_Connected"] = '1' +#娌℃湁杩炴帴 +defineDict["Sgit_FTDC_LS_Disconnected"] = '2' + +typedefDict["TSgitFtdcLinkStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommApiPointerType鏄竴涓氳API鎸囬拡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommApiPointerType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPwdFlagType鏄竴涓瘑鐮佹牳瀵规爣蹇楃被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嶆牳瀵 +defineDict["Sgit_FTDC_BPWDF_NoCheck"] = '0' +#鏄庢枃鏍稿 +defineDict["Sgit_FTDC_BPWDF_BlankCheck"] = '1' +#瀵嗘枃鏍稿 +defineDict["Sgit_FTDC_BPWDF_EncryptCheck"] = '2' + +typedefDict["TSgitFtdcPwdFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSecuAccTypeType鏄竴涓湡璐у笎鍙风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#璧勯噾甯愬彿 +defineDict["Sgit_FTDC_SAT_AccountID"] = '1' +#璧勯噾鍗″彿 +defineDict["Sgit_FTDC_SAT_CardID"] = '2' +#涓婃捣鑲′笢甯愬彿 +defineDict["Sgit_FTDC_SAT_SHStockholderID"] = '3' +#娣卞湷鑲′笢甯愬彿 +defineDict["Sgit_FTDC_SAT_SZStockholderID"] = '4' + +typedefDict["TSgitFtdcSecuAccTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTransferStatusType鏄竴涓浆璐︿氦鏄撶姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_TRFS_Normal"] = '0' +#琚啿姝 +defineDict["Sgit_FTDC_TRFS_Repealed"] = '1' + +typedefDict["TSgitFtdcTransferStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSponsorTypeType鏄竴涓彂璧锋柟绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鏈熷晢 +defineDict["Sgit_FTDC_SPTYPE_Broker"] = '0' +#閾惰 +defineDict["Sgit_FTDC_SPTYPE_Bank"] = '1' + +typedefDict["TSgitFtdcSponsorTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcReqRspTypeType鏄竴涓姹傚搷搴旂被鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#璇锋眰 +defineDict["Sgit_FTDC_REQRSP_Request"] = '0' +#鍝嶅簲 +defineDict["Sgit_FTDC_REQRSP_Response"] = '1' + +typedefDict["TSgitFtdcReqRspTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTUserEventTypeType鏄竴涓摱鏈熻浆甯愮敤鎴蜂簨浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#绛惧埌 +defineDict["Sgit_FTDC_FBTUET_SignIn"] = '0' +#閾惰杞湡璐 +defineDict["Sgit_FTDC_FBTUET_FromBankToFuture"] = '1' +#鏈熻揣杞摱琛 +defineDict["Sgit_FTDC_FBTUET_FromFutureToBank"] = '2' +#寮鎴 +defineDict["Sgit_FTDC_FBTUET_OpenAccount"] = '3' +#閿鎴 +defineDict["Sgit_FTDC_FBTUET_CancelAccount"] = '4' +#鍙樻洿閾惰璐︽埛 +defineDict["Sgit_FTDC_FBTUET_ChangeAccount"] = '5' +#鍐叉閾惰杞湡璐 +defineDict["Sgit_FTDC_FBTUET_RepealFromBankToFuture"] = '6' +#鍐叉鏈熻揣杞摱琛 +defineDict["Sgit_FTDC_FBTUET_RepealFromFutureToBank"] = '7' +#鏌ヨ閾惰璐︽埛 +defineDict["Sgit_FTDC_FBTUET_QueryBankAccount"] = '8' +#鏌ヨ鏈熻揣璐︽埛 +defineDict["Sgit_FTDC_FBTUET_QueryFutureAccount"] = '9' +#绛鹃 +defineDict["Sgit_FTDC_FBTUET_SignOut"] = 'A' +#瀵嗛挜鍚屾 +defineDict["Sgit_FTDC_FBTUET_SyncKey"] = 'B' +#鍏朵粬 +defineDict["Sgit_FTDC_FBTUET_Other"] = 'Z' + +typedefDict["TSgitFtdcFBTUserEventTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankIDByBankType鏄竴涓摱琛岃嚜宸辩殑缂栫爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcBankIDByBankType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNotifyClassType鏄竴涓闄╅氱煡绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_NC_NOERROR"] = '0' +#璀︾ず +defineDict["Sgit_FTDC_NC_Warn"] = '1' +#杩戒繚 +defineDict["Sgit_FTDC_NC_Call"] = '2' +#寮哄钩 +defineDict["Sgit_FTDC_NC_Force"] = '3' +#绌夸粨 +defineDict["Sgit_FTDC_NC_CHUANCANG"] = '4' +#寮傚父 +defineDict["Sgit_FTDC_NC_Exception"] = '5' + +typedefDict["TSgitFtdcNotifyClassType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskNofityInfoType鏄竴涓鎴烽闄╅氱煡娑堟伅绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRiskNofityInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForceCloseSceneIdType鏄竴涓己骞冲満鏅紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcForceCloseSceneIdType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcForceCloseTypeType鏄竴涓己骞冲崟绫诲瀷绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎵嬪伐寮哄钩 +defineDict["Sgit_FTDC_FCT_Manual"] = '0' +#鍗曚竴鎶曡祫鑰呰緟鍔╁己骞 +defineDict["Sgit_FTDC_FCT_Single"] = '1' +#鎵归噺鎶曡祫鑰呰緟鍔╁己骞 +defineDict["Sgit_FTDC_FCT_Group"] = '2' + +typedefDict["TSgitFtdcForceCloseTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInstrumentIDsType鏄竴涓涓骇鍝佷唬鐮,鐢+鍒嗛殧,濡俢u+zn绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInstrumentIDsType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskNotifyMethodType鏄竴涓闄╅氱煡閫斿緞绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#绯荤粺閫氱煡 +defineDict["Sgit_FTDC_RNM_System"] = '0' +#鐭俊閫氱煡 +defineDict["Sgit_FTDC_RNM_SMS"] = '1' +#閭欢閫氱煡 +defineDict["Sgit_FTDC_RNM_EMail"] = '2' +#浜哄伐閫氱煡 +defineDict["Sgit_FTDC_RNM_Manual"] = '3' + +typedefDict["TSgitFtdcRiskNotifyMethodType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskNotifyStatusType鏄竴涓闄╅氱煡鐘舵佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈敓鎴 +defineDict["Sgit_FTDC_RNS_NotGen"] = '0' +#宸茬敓鎴愭湭鍙戦 +defineDict["Sgit_FTDC_RNS_Generated"] = '1' +#鍙戦佸け璐 +defineDict["Sgit_FTDC_RNS_SendError"] = '2' +#宸插彂閫佹湭鎺ユ敹 +defineDict["Sgit_FTDC_RNS_SendOk"] = '3' +#宸叉帴鏀舵湭纭 +defineDict["Sgit_FTDC_RNS_Received"] = '4' +#宸茬‘璁 +defineDict["Sgit_FTDC_RNS_Confirmed"] = '5' + +typedefDict["TSgitFtdcRiskNotifyStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskUserEventType鏄竴涓鎺х敤鎴锋搷浣滀簨浠剁被鍨 +#////////////////////////////////////////////////////////////////////// +#瀵煎嚭鏁版嵁 +defineDict["Sgit_FTDC_RUE_ExportData"] = '0' + +typedefDict["TSgitFtdcRiskUserEventType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParamIDType鏄竴涓弬鏁颁唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcParamIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParamNameType鏄竴涓弬鏁板悕绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcParamNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcParamValueType鏄竴涓弬鏁板肩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcParamValueType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcConditionalOrderSortTypeType鏄竴涓潯浠跺崟绱㈠紩鏉′欢绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#浣跨敤鏈鏂颁环鍗囧簭 +defineDict["Sgit_FTDC_COST_LastPriceAsc"] = '0' +#浣跨敤鏈鏂颁环闄嶅簭 +defineDict["Sgit_FTDC_COST_LastPriceDesc"] = '1' +#浣跨敤鍗栦环鍗囧簭 +defineDict["Sgit_FTDC_COST_AskPriceAsc"] = '2' +#浣跨敤鍗栦环闄嶅簭 +defineDict["Sgit_FTDC_COST_AskPriceDesc"] = '3' +#浣跨敤涔颁环鍗囧簭 +defineDict["Sgit_FTDC_COST_BidPriceAsc"] = '4' +#浣跨敤涔颁环闄嶅簭 +defineDict["Sgit_FTDC_COST_BidPriceDesc"] = '5' + +typedefDict["TSgitFtdcConditionalOrderSortTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSendTypeType鏄竴涓姤閫佺姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈彂閫 +defineDict["Sgit_FTDC_UOAST_NoSend"] = '0' +#宸插彂閫 +defineDict["Sgit_FTDC_UOAST_Sended"] = '1' +#宸茬敓鎴 +defineDict["Sgit_FTDC_UOAST_Generated"] = '2' +#鎶ラ佸け璐 +defineDict["Sgit_FTDC_UOAST_SendFail"] = '3' +#鎺ユ敹鎴愬姛 +defineDict["Sgit_FTDC_UOAST_Success"] = '4' +#鎺ユ敹澶辫触 +defineDict["Sgit_FTDC_UOAST_Fail"] = '5' +#鍙栨秷鎶ラ +defineDict["Sgit_FTDC_UOAST_Cancel"] = '6' + +typedefDict["TSgitFtdcSendTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientIDStatusType鏄竴涓氦鏄撶紪鐮佺姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈敵璇 +defineDict["Sgit_FTDC_UOACS_NoApply"] = '1' +#宸叉彁浜ょ敵璇 +defineDict["Sgit_FTDC_UOACS_Submited"] = '2' +#宸插彂閫佺敵璇 +defineDict["Sgit_FTDC_UOACS_Sended"] = '3' +#瀹屾垚 +defineDict["Sgit_FTDC_UOACS_Success"] = '4' +#鎷掔粷 +defineDict["Sgit_FTDC_UOACS_Refuse"] = '5' +#宸叉挙閿缂栫爜 +defineDict["Sgit_FTDC_UOACS_Cancel"] = '6' + +typedefDict["TSgitFtdcClientIDStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIndustryIDType鏄竴涓涓氱紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcIndustryIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuestionIDType鏄竴涓壒鏈変俊鎭紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcQuestionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuestionContentType鏄竴涓壒鏈変俊鎭鏄庣被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcQuestionContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOptionIDType鏄竴涓夐」缂栧彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOptionIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOptionContentType鏄竴涓夐」璇存槑绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOptionContentType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQuestionTypeType鏄竴涓壒鏈変俊鎭被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鍗曢 +defineDict["Sgit_FTDC_QT_Radio"] = '1' +#澶氶 +defineDict["Sgit_FTDC_QT_Option"] = '2' +#濉┖ +defineDict["Sgit_FTDC_QT_Blank"] = '3' + +typedefDict["TSgitFtdcQuestionTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessIDType鏄竴涓笟鍔℃祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcProcessIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSeqNoType鏄竴涓祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSeqNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAProcessStatusType鏄竴涓祦绋嬬姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUOAProcessStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcProcessTypeType鏄竴涓祦绋嬪姛鑳界被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鐢宠浜ゆ槗缂栫爜 +defineDict["Sgit_FTDC_PT_ApplyTradingCode"] = '1' +#鎾ら攢浜ゆ槗缂栫爜 +defineDict["Sgit_FTDC_PT_CancelTradingCode"] = '2' +#淇敼韬唤淇℃伅 +defineDict["Sgit_FTDC_PT_ModifyIDCard"] = '3' +#淇敼涓鑸俊鎭 +defineDict["Sgit_FTDC_PT_ModifyNoIDCard"] = '4' +#浜ゆ槗鎵寮鎴锋姤澶 +defineDict["Sgit_FTDC_PT_ExchOpenBak"] = '5' +#浜ゆ槗鎵閿鎴锋姤澶 +defineDict["Sgit_FTDC_PT_ExchCancelBak"] = '6' +#琛ユ姤瑙勮寖璧勬枡 +defineDict["Sgit_FTDC_PT_StandardAccount"] = '7' +#璐︽埛浼戠湢 +defineDict["Sgit_FTDC_PT_FreezeAccount"] = '8' +#婵娲讳紤鐪犺处鎴 +defineDict["Sgit_FTDC_PT_ActiveFreezeAccount"] = '9' + +typedefDict["TSgitFtdcProcessTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBusinessTypeType鏄竴涓笟鍔$被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#璇锋眰 +defineDict["Sgit_FTDC_BT_Request"] = '1' +#搴旂瓟 +defineDict["Sgit_FTDC_BT_Response"] = '2' +#閫氱煡 +defineDict["Sgit_FTDC_BT_Notice"] = '3' + +typedefDict["TSgitFtdcBusinessTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCfmmcReturnCodeType鏄竴涓洃鎺т腑蹇冭繑鍥炵爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎴愬姛 +defineDict["Sgit_FTDC_CRC_Success"] = '0' +#璇ュ鎴峰凡缁忔湁娴佺▼鍦ㄥ鐞嗕腑 +defineDict["Sgit_FTDC_CRC_Working"] = '1' +#鐩戞帶涓鎴疯祫鏂欐鏌ュけ璐 +defineDict["Sgit_FTDC_CRC_InfoFail"] = '2' +#鐩戞帶涓疄鍚嶅埗妫鏌ュけ璐 +defineDict["Sgit_FTDC_CRC_IDCardFail"] = '3' +#鍏朵粬閿欒 +defineDict["Sgit_FTDC_CRC_OtherFail"] = '4' + +typedefDict["TSgitFtdcCfmmcReturnCodeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExReturnCodeType鏄竴涓氦鏄撴墍杩斿洖鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcExReturnCodeType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientTypeType鏄竴涓鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_CfMMCCT_All"] = '0' +#涓汉 +defineDict["Sgit_FTDC_CfMMCCT_Person"] = '1' +#鍗曚綅 +defineDict["Sgit_FTDC_CfMMCCT_Company"] = '2' + +typedefDict["TSgitFtdcClientTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExchangeIDTypeType鏄竴涓氦鏄撴墍缂栧彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#涓婃捣鏈熻揣浜ゆ槗鎵 +defineDict["Sgit_FTDC_EIDT_SHFE"] = 'S' +#閮戝窞鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_EIDT_CZCE"] = 'Z' +#澶ц繛鍟嗗搧浜ゆ槗鎵 +defineDict["Sgit_FTDC_EIDT_DCE"] = 'D' +#涓浗閲戣瀺鏈熻揣浜ゆ槗鎵 +defineDict["Sgit_FTDC_EIDT_CFFEX"] = 'J' +#榛勯噾 +defineDict["Sgit_FTDC_EIDT_GOLD"] = 'G' +#PAT +defineDict["Sgit_FTDC_EIDT_PAT"] = 'P' + +typedefDict["TSgitFtdcExchangeIDTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExClientIDTypeType鏄竴涓氦鏄撶紪鐮佺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#濂椾繚 +defineDict["Sgit_FTDC_ECIDT_Hedge"] = '1' +#濂楀埄 +defineDict["Sgit_FTDC_ECIDT_Arbitrage"] = '2' +#鎶曟満 +defineDict["Sgit_FTDC_ECIDT_Speculation"] = '3' + +typedefDict["TSgitFtdcExClientIDTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcClientClassifyType鏄竴涓鎴峰垎绫荤爜绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcClientClassifyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAOrganTypeType鏄竴涓崟浣嶆ц川绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUOAOrganTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOACountryCodeType鏄竴涓浗瀹朵唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUOACountryCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAreaCodeType鏄竴涓尯鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAreaCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFuturesIDType鏄竴涓洃鎺т腑蹇冧负瀹㈡埛鍒嗛厤鐨勪唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFuturesIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCffmcDateType鏄竴涓棩鏈熺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCffmcDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCffmcTimeType鏄竴涓椂闂寸被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCffmcTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcNocIDType鏄竴涓粍缁囨満鏋勪唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcNocIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUpdateFlagType鏄竴涓洿鏂扮姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈洿鏂 +defineDict["Sgit_FTDC_UF_NoUpdate"] = '0' +#鏇存柊鍏ㄩ儴淇℃伅鎴愬姛 +defineDict["Sgit_FTDC_UF_Success"] = '1' +#鏇存柊鍏ㄩ儴淇℃伅澶辫触 +defineDict["Sgit_FTDC_UF_Fail"] = '2' +#鏇存柊浜ゆ槗缂栫爜鎴愬姛 +defineDict["Sgit_FTDC_UF_TCSuccess"] = '3' +#鏇存柊浜ゆ槗缂栫爜澶辫触 +defineDict["Sgit_FTDC_UF_TCFail"] = '4' +#宸蹭涪寮 +defineDict["Sgit_FTDC_UF_Cancel"] = '5' + +typedefDict["TSgitFtdcUpdateFlagType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplyOperateIDType鏄竴涓敵璇峰姩浣滅被鍨 +#////////////////////////////////////////////////////////////////////// +#寮鎴 +defineDict["Sgit_FTDC_AOID_OpenInvestor"] = '1' +#淇敼韬唤淇℃伅 +defineDict["Sgit_FTDC_AOID_ModifyIDCard"] = '2' +#淇敼涓鑸俊鎭 +defineDict["Sgit_FTDC_AOID_ModifyNoIDCard"] = '3' +#鐢宠浜ゆ槗缂栫爜 +defineDict["Sgit_FTDC_AOID_ApplyTradingCode"] = '4' +#鎾ら攢浜ゆ槗缂栫爜 +defineDict["Sgit_FTDC_AOID_CancelTradingCode"] = '5' +#閿鎴 +defineDict["Sgit_FTDC_AOID_CancelInvestor"] = '6' +#璐︽埛浼戠湢 +defineDict["Sgit_FTDC_AOID_FreezeAccount"] = '8' +#婵娲讳紤鐪犺处鎴 +defineDict["Sgit_FTDC_AOID_ActiveFreezeAccount"] = '9' + +typedefDict["TSgitFtdcApplyOperateIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcApplyStatusIDType鏄竴涓敵璇风姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈ˉ鍏 +defineDict["Sgit_FTDC_ASID_NoComplete"] = '1' +#宸叉彁浜 +defineDict["Sgit_FTDC_ASID_Submited"] = '2' +#宸插鏍 +defineDict["Sgit_FTDC_ASID_Checked"] = '3' +#宸叉嫆缁 +defineDict["Sgit_FTDC_ASID_Refused"] = '4' +#宸插垹闄 +defineDict["Sgit_FTDC_ASID_Deleted"] = '5' + +typedefDict["TSgitFtdcApplyStatusIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSendMethodType鏄竴涓彂閫佹柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鏂囦欢鍙戦 +defineDict["Sgit_FTDC_UOASM_ByAPI"] = '1' +#鐢靛瓙鍙戦 +defineDict["Sgit_FTDC_UOASM_ByFile"] = '2' + +typedefDict["TSgitFtdcSendMethodType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEventTypeType鏄竴涓笟鍔℃搷浣滅被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcEventTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcEventModeType鏄竴涓搷浣滄柟娉曠被鍨 +#////////////////////////////////////////////////////////////////////// +#澧炲姞 +defineDict["Sgit_FTDC_EvM_ADD"] = '1' +#淇敼 +defineDict["Sgit_FTDC_EvM_UPDATE"] = '2' +#鍒犻櫎 +defineDict["Sgit_FTDC_EvM_DELETE"] = '3' +#澶嶆牳 +defineDict["Sgit_FTDC_EvM_CHECK"] = '4' +#澶嶅埗 +defineDict["Sgit_FTDC_EvM_COPY"] = '5' +#娉ㄩ攢 +defineDict["Sgit_FTDC_EvM_CANCEL"] = '6' +#鍐查攢 +defineDict["Sgit_FTDC_EvM_Reverse"] = '7' + +typedefDict["TSgitFtdcEventModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUOAAutoSendType鏄竴涓粺涓寮鎴风敵璇疯嚜鍔ㄥ彂閫佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鑷姩鍙戦佸苟鎺ユ敹 +defineDict["Sgit_FTDC_UOAA_ASR"] = '1' +#鑷姩鍙戦侊紝涓嶈嚜鍔ㄦ帴鏀 +defineDict["Sgit_FTDC_UOAA_ASNR"] = '2' +#涓嶈嚜鍔ㄥ彂閫侊紝鑷姩鎺ユ敹 +defineDict["Sgit_FTDC_UOAA_NSAR"] = '3' +#涓嶈嚜鍔ㄥ彂閫侊紝涔熶笉鑷姩鎺ユ敹 +defineDict["Sgit_FTDC_UOAA_NSR"] = '4' + +typedefDict["TSgitFtdcUOAAutoSendType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcQueryDepthType鏄竴涓煡璇㈡繁搴︾被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcQueryDepthType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataCenterIDType鏄竴涓暟鎹腑蹇冧唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDataCenterIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFlowIDType鏄竴涓祦绋婭D绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎶曡祫鑰呭搴旀姇璧勮呯粍璁剧疆 +defineDict["Sgit_FTDC_EvM_InvestorGroupFlow"] = '1' +#鎶曡祫鑰呮墜缁垂鐜囪缃 +defineDict["Sgit_FTDC_EvM_InvestorRate"] = '2' +#鎶曡祫鑰呮墜缁垂鐜囨ā鏉垮叧绯昏缃 +defineDict["Sgit_FTDC_EvM_InvestorCommRateModel"] = '3' + +typedefDict["TSgitFtdcFlowIDType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckLevelType鏄竴涓鏍哥骇鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#闆剁骇澶嶆牳 +defineDict["Sgit_FTDC_CL_Zero"] = '0' +#涓绾у鏍 +defineDict["Sgit_FTDC_CL_One"] = '1' +#浜岀骇澶嶆牳 +defineDict["Sgit_FTDC_CL_Two"] = '2' + +typedefDict["TSgitFtdcCheckLevelType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckNoType鏄竴涓搷浣滄鏁扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCheckNoType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckStatusType鏄竴涓鏍哥骇鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈鏍 +defineDict["Sgit_FTDC_CHS_Init"] = '0' +#澶嶆牳涓 +defineDict["Sgit_FTDC_CHS_Checking"] = '1' +#宸插鏍 +defineDict["Sgit_FTDC_CHS_Checked"] = '2' +#鎷掔粷 +defineDict["Sgit_FTDC_CHS_Refuse"] = '3' +#浣滃簾 +defineDict["Sgit_FTDC_CHS_Cancel"] = '4' + +typedefDict["TSgitFtdcCheckStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUsedStatusType鏄竴涓敓鏁堢姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈敓鏁 +defineDict["Sgit_FTDC_CHU_Unused"] = '0' +#宸茬敓鏁 +defineDict["Sgit_FTDC_CHU_Used"] = '1' +#鐢熸晥澶辫触 +defineDict["Sgit_FTDC_CHU_Fail"] = '2' + +typedefDict["TSgitFtdcUsedStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateTemplateNameType鏄竴涓ā鍨嬪悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRateTemplateNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyStringType鏄竴涓敤浜庢煡璇㈢殑鎶曡祫灞炴у瓧娈电被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcPropertyStringType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBankAcountOriginType鏄竴涓处鎴锋潵婧愮被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵嬪伐褰曞叆 +defineDict["Sgit_FTDC_BAO_ByAccProperty"] = '0' +#閾舵湡杞处 +defineDict["Sgit_FTDC_BAO_ByFBTransfer"] = '1' + +typedefDict["TSgitFtdcBankAcountOriginType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcMonthBillTradeSumType鏄竴涓粨绠楀崟鏈堟姤鎴愪氦姹囨绘柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鍚屾棩鍚屽悎绾 +defineDict["Sgit_FTDC_MBTS_ByInstrument"] = '0' +#鍚屾棩鍚屽悎绾﹀悓浠锋牸 +defineDict["Sgit_FTDC_MBTS_ByDayInsPrc"] = '1' +#鍚屽悎绾 +defineDict["Sgit_FTDC_MBTS_ByDayIns"] = '2' + +typedefDict["TSgitFtdcMonthBillTradeSumType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTTradeCodeEnumType鏄竴涓摱鏈熶氦鏄撲唬鐮佹灇涓剧被鍨 +#////////////////////////////////////////////////////////////////////// +#閾惰鍙戣捣閾惰杞湡璐 +defineDict["Sgit_FTDC_FTC_BankLaunchBankToBroker"] = '102001' +#鏈熻揣鍙戣捣閾惰杞湡璐 +defineDict["Sgit_FTDC_FTC_BrokerLaunchBankToBroker"] = '202001' +#閾惰鍙戣捣鏈熻揣杞摱琛 +defineDict["Sgit_FTDC_FTC_BankLaunchBrokerToBank"] = '102002' +#鏈熻揣鍙戣捣鏈熻揣杞摱琛 +defineDict["Sgit_FTDC_FTC_BrokerLaunchBrokerToBank"] = '202002' + +typedefDict["TSgitFtdcFBTTradeCodeEnumType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateTemplateIDType鏄竴涓ā鍨嬩唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRateTemplateIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRiskRateType鏄竴涓闄╁害绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRiskRateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimestampType鏄竴涓椂闂存埑绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTimestampType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorIDRuleNameType鏄竴涓彿娈佃鍒欏悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInvestorIDRuleNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcInvestorIDRuleExprType鏄竴涓彿娈佃鍒欒〃杈惧紡绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcInvestorIDRuleExprType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLastDriftType鏄竴涓笂娆TP婕傜Щ鍊肩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLastDriftType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLastSuccessType鏄竴涓笂娆TP鎴愬姛鍊肩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcLastSuccessType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthKeyType鏄竴涓护鐗屽瘑閽ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAuthKeyType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSerialNumberType鏄竴涓簭鍒楀彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSerialNumberType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPTypeType鏄竴涓姩鎬佷护鐗岀被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鏃犲姩鎬佷护鐗 +defineDict["Sgit_FTDC_OTP_NONE"] = '0' +#鏃堕棿浠ょ墝 +defineDict["Sgit_FTDC_OTP_TOTP"] = '1' + +typedefDict["TSgitFtdcOTPTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPVendorsIDType鏄竴涓姩鎬佷护鐗屾彁渚涘晢绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOTPVendorsIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPVendorsNameType鏄竴涓姩鎬佷护鐗屾彁渚涘晢鍚嶇О绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcOTPVendorsNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcOTPStatusType鏄竴涓姩鎬佷护鐗岀姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈娇鐢 +defineDict["Sgit_FTDC_OTPS_Unused"] = '0' +#宸蹭娇鐢 +defineDict["Sgit_FTDC_OTPS_Used"] = '1' +#娉ㄩ攢 +defineDict["Sgit_FTDC_OTPS_Disuse"] = '2' + +typedefDict["TSgitFtdcOTPStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcBrokerUserTypeType鏄竴涓粡娴庡叕鍙哥敤鎴风被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鎶曡祫鑰 +defineDict["Sgit_FTDC_BUT_Investor"] = '1' +#鎿嶄綔鍛 +defineDict["Sgit_FTDC_BUT_BrokerUser"] = '2' + +typedefDict["TSgitFtdcBrokerUserTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFutureTypeType鏄竴涓湡璐х被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鍟嗗搧鏈熻揣 +defineDict["Sgit_FTDC_FUTT_Commodity"] = '1' +#閲戣瀺鏈熻揣 +defineDict["Sgit_FTDC_FUTT_Financial"] = '2' + +typedefDict["TSgitFtdcFutureTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFundEventTypeType鏄竴涓祫閲戠鐞嗘搷浣滅被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#杞处闄愰 +defineDict["Sgit_FTDC_FET_Restriction"] = '0' +#褰撴棩杞处闄愰 +defineDict["Sgit_FTDC_FET_TodayRestriction"] = '1' +#鏈熷晢娴佹按 +defineDict["Sgit_FTDC_FET_Transfer"] = '2' +#璧勯噾鍐荤粨 +defineDict["Sgit_FTDC_FET_Credit"] = '3' +#鎶曡祫鑰呭彲鎻愯祫閲戞瘮渚 +defineDict["Sgit_FTDC_FET_InvestorWithdrawAlm"] = '4' +#鍗曚釜閾惰甯愭埛杞处闄愰 +defineDict["Sgit_FTDC_FET_BankRestriction"] = '5' +#閾舵湡绛剧害璐︽埛 +defineDict["Sgit_FTDC_FET_Accountregister"] = '6' +#浜ゆ槗鎵鍑哄叆閲 +defineDict["Sgit_FTDC_FET_ExchangeFundIO"] = '7' +#鎶曡祫鑰呭嚭鍏ラ噾 +defineDict["Sgit_FTDC_FET_InvestorFundIO"] = '8' + +typedefDict["TSgitFtdcFundEventTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAccountSourceTypeType鏄竴涓祫閲戣处鎴锋潵婧愮被鍨 +#////////////////////////////////////////////////////////////////////// +#閾舵湡鍚屾 +defineDict["Sgit_FTDC_AST_FBTransfer"] = '0' +#鎵嬪伐褰曞叆 +defineDict["Sgit_FTDC_AST_ManualEntry"] = '1' + +typedefDict["TSgitFtdcAccountSourceTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCodeSourceTypeType鏄竴涓氦鏄撶紪鐮佹潵婧愮被鍨 +#////////////////////////////////////////////////////////////////////// +#缁熶竴寮鎴(宸茶鑼) +defineDict["Sgit_FTDC_CST_UnifyAccount"] = '0' +#鎵嬪伐褰曞叆(鏈鑼) +defineDict["Sgit_FTDC_CST_ManualEntry"] = '1' + +typedefDict["TSgitFtdcCodeSourceTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserRangeType鏄竴涓搷浣滃憳鑼冨洿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_UR_All"] = '0' +#鍗曚竴鎿嶄綔鍛 +defineDict["Sgit_FTDC_UR_Single"] = '1' + +typedefDict["TSgitFtdcUserRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTimeSpanType鏄竴涓椂闂磋法搴︾被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcTimeSpanType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcImportSequenceIDType鏄竴涓姩鎬佷护鐗屽鍏ユ壒娆$紪鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcImportSequenceIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcByGroupType鏄竴涓氦鏄撶粺璁¤〃鎸夊鎴风粺璁℃柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鎸夋姇璧勮呯粺璁 +defineDict["Sgit_FTDC_BG_Investor"] = '2' +#鎸夌被缁熻 +defineDict["Sgit_FTDC_BG_Group"] = '1' + +typedefDict["TSgitFtdcByGroupType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSumStatModeType鏄竴涓氦鏄撶粺璁¤〃鎸夎寖鍥寸粺璁℃柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#鎸夊悎绾︾粺璁 +defineDict["Sgit_FTDC_TSSM_Instrument"] = '1' +#鎸変骇鍝佺粺璁 +defineDict["Sgit_FTDC_TSSM_Product"] = '2' +#鎸変氦鏄撴墍缁熻 +defineDict["Sgit_FTDC_TSSM_Exchange"] = '3' + +typedefDict["TSgitFtdcTradeSumStatModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcComTypeType鏄竴涓粍鍚堟垚浜ょ被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcComTypeType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserProductIDType鏄竴涓骇鍝佹爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUserProductIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserProductNameType鏄竴涓骇鍝佸悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUserProductNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcUserProductMemoType鏄竴涓骇鍝佽鏄庣被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcUserProductMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCCancelFlagType鏄竴涓柊澧炴垨鍙樻洿鏍囧織绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCCancelFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCDateType鏄竴涓棩鏈熺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCDateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCInvestorNameType鏄竴涓鎴峰悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCInvestorNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCInvestorIDType鏄竴涓鎴蜂唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCInvestorIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCIdentifiedCardNoType鏄竴涓瘉浠跺彿鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCIdentifiedCardNoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCClientIDType鏄竴涓氦鏄撶紪鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCClientIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCBankFlagType鏄竴涓摱琛屾爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCBankFlagType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCBankAccountType鏄竴涓摱琛岃处鎴风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCBankAccountType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCOpenNameType鏄竴涓紑鎴蜂汉绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCOpenNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMemoType鏄竴涓鏄庣被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCTimeType鏄竴涓椂闂寸被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCTimeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCTradeIDType鏄竴涓垚浜ゆ祦姘村彿绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCTradeIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCExchangeInstIDType鏄竴涓悎绾︿唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCExchangeInstIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMortgageNameType鏄竴涓川鎶煎搧鍚嶇О绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCMortgageNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCReasonType鏄竴涓簨鐢辩被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCReasonType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcIsSettlementType鏄竴涓槸鍚︿负闈炵粨绠椾細鍛樼被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcIsSettlementType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCMoneyType鏄竴涓祫閲戠被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCMoneyType"] = "float" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommModelNameType鏄竴涓墜缁垂鐜囨ā鏉垮悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommModelNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCommModelMemoType鏄竴涓墜缁垂鐜囨ā鏉垮娉ㄧ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCommModelMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRateInvestorRangeType鏄竴涓姇璧勮呰寖鍥寸被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_RIR_All"] = '1' +#璐圭巼妯℃澘 +defineDict["Sgit_FTDC_RIR_Model"] = '2' +#鍗曚竴鎶曡祫鑰 +defineDict["Sgit_FTDC_RIR_Single"] = '3' + +typedefDict["TSgitFtdcRateInvestorRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAgentBrokerIDType鏄竴涓唬鐞嗙粡绾叕鍙镐唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAgentBrokerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDRIdentityIDType鏄竴涓氦鏄撲腑蹇冧唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDRIdentityIDType"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDRIdentityNameType鏄竴涓氦鏄撲腑蹇冨悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDRIdentityNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDBLinkIDType鏄竴涓狣BLink鏍囪瘑鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDBLinkIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSyncDataStatusType鏄竴涓富娆$敤绯荤粺鏁版嵁鍚屾鐘舵佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈悓姝 +defineDict["Sgit_FTDC_SDS_Initialize"] = '0' +#鍚屾涓 +defineDict["Sgit_FTDC_SDS_Settlementing"] = '1' +#宸插悓姝 +defineDict["Sgit_FTDC_SDS_Settlemented"] = '2' + +typedefDict["TSgitFtdcSyncDataStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcTradeSourceType鏄竴涓垚浜ゆ潵婧愮被鍨 +#////////////////////////////////////////////////////////////////////// +#鏉ヨ嚜浜ゆ槗鎵鏅氬洖鎶 +defineDict["Sgit_FTDC_TSRC_NORMAL"] = '0' +#鏉ヨ嚜鏌ヨ +defineDict["Sgit_FTDC_TSRC_QUERY"] = '1' + +typedefDict["TSgitFtdcTradeSourceType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFlexStatModeType鏄竴涓骇鍝佸悎绾︾粺璁℃柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#浜у搧缁熻 +defineDict["Sgit_FTDC_FSM_Product"] = '1' +#浜ゆ槗鎵缁熻 +defineDict["Sgit_FTDC_FSM_Exchange"] = '2' +#缁熻鎵鏈 +defineDict["Sgit_FTDC_FSM_All"] = '3' + +typedefDict["TSgitFtdcFlexStatModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcByInvestorRangeType鏄竴涓姇璧勮呰寖鍥寸粺璁℃柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#灞炴х粺璁 +defineDict["Sgit_FTDC_BIR_Property"] = '1' +#缁熻鎵鏈 +defineDict["Sgit_FTDC_BIR_All"] = '2' + +typedefDict["TSgitFtdcByInvestorRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSRiskRateType鏄竴涓闄╁害绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSRiskRateType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFBTBankIDType鏄竴涓摱琛屾爣璇嗙被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFBTBankIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSequenceNo12Type鏄竴涓簭鍙风被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSequenceNo12Type"] = "int" + +#////////////////////////////////////////////////////////////////////// +#TFtdcPropertyInvestorRangeType鏄竴涓姇璧勮呰寖鍥寸被鍨 +#////////////////////////////////////////////////////////////////////// +#鎵鏈 +defineDict["Sgit_FTDC_PIR_All"] = '1' +#鎶曡祫鑰呭睘鎬 +defineDict["Sgit_FTDC_PIR_Property"] = '2' +#鍗曚竴鎶曡祫鑰 +defineDict["Sgit_FTDC_PIR_Single"] = '3' + +typedefDict["TSgitFtdcPropertyInvestorRangeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileStatusType鏄竴涓枃浠剁姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈敓鎴 +defineDict["Sgit_FTDC_FIS_NoCreate"] = '0' +#宸茬敓鎴 +defineDict["Sgit_FTDC_FIS_Created"] = '1' +#鐢熸垚澶辫触 +defineDict["Sgit_FTDC_FIS_Failed"] = '2' + +typedefDict["TSgitFtdcFileStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFileGenStyleType鏄竴涓枃浠剁敓鎴愭柟寮忕被鍨 +#////////////////////////////////////////////////////////////////////// +#涓嬪彂 +defineDict["Sgit_FTDC_FGS_FileTransmit"] = '0' +#鐢熸垚 +defineDict["Sgit_FTDC_FGS_FileGen"] = '1' + +typedefDict["TSgitFtdcFileGenStyleType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSysOperModeType鏄竴涓郴缁熸棩蹇楁搷浣滄柟娉曠被鍨 +#////////////////////////////////////////////////////////////////////// +#澧炲姞 +defineDict["Sgit_FTDC_SoM_Add"] = '1' +#淇敼 +defineDict["Sgit_FTDC_SoM_Update"] = '2' +#鍒犻櫎 +defineDict["Sgit_FTDC_SoM_Delete"] = '3' +#澶嶅埗 +defineDict["Sgit_FTDC_SoM_Copy"] = '4' +#婵娲 +defineDict["Sgit_FTDC_SoM_AcTive"] = '5' +#娉ㄩ攢 +defineDict["Sgit_FTDC_SoM_CanCel"] = '6' +#閲嶇疆 +defineDict["Sgit_FTDC_SoM_ReSet"] = '7' + +typedefDict["TSgitFtdcSysOperModeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSysOperTypeType鏄竴涓郴缁熸棩蹇楁搷浣滅被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#淇敼鎿嶄綔鍛樺瘑鐮 +defineDict["Sgit_FTDC_SoT_UpdatePassword"] = '0' +#鎿嶄綔鍛樼粍缁囨灦鏋勫叧绯 +defineDict["Sgit_FTDC_SoT_UserDepartment"] = '1' +#瑙掕壊绠$悊 +defineDict["Sgit_FTDC_SoT_RoleManager"] = '2' +#瑙掕壊鍔熻兘璁剧疆 +defineDict["Sgit_FTDC_SoT_RoleFunction"] = '3' +#鍩虹鍙傛暟璁剧疆 +defineDict["Sgit_FTDC_SoT_BaseParam"] = '4' +#璁剧疆鎿嶄綔鍛 +defineDict["Sgit_FTDC_SoT_SetUserID"] = '5' +#鐢ㄦ埛瑙掕壊璁剧疆 +defineDict["Sgit_FTDC_SoT_SetUserRole"] = '6' +#鐢ㄦ埛IP闄愬埗 +defineDict["Sgit_FTDC_SoT_UserIpRestriction"] = '7' +#缁勭粐鏋舵瀯绠$悊 +defineDict["Sgit_FTDC_SoT_DepartmentManager"] = '8' +#缁勭粐鏋舵瀯鍚戞煡璇㈠垎绫诲鍒 +defineDict["Sgit_FTDC_SoT_DepartmentCopy"] = '9' +#浜ゆ槗缂栫爜绠$悊 +defineDict["Sgit_FTDC_SoT_Tradingcode"] = 'A' +#鎶曡祫鑰呯姸鎬佺淮鎶 +defineDict["Sgit_FTDC_SoT_InvestorStatus"] = 'B' +#鎶曡祫鑰呮潈闄愮鐞 +defineDict["Sgit_FTDC_SoT_InvestorAuthority"] = 'C' +#灞炴ц缃 +defineDict["Sgit_FTDC_SoT_PropertySet"] = 'D' +#閲嶇疆鎶曡祫鑰呭瘑鐮 +defineDict["Sgit_FTDC_SoT_ReSetInvestorPasswd"] = 'E' +#鎶曡祫鑰呬釜鎬т俊鎭淮鎶 +defineDict["Sgit_FTDC_SoT_InvestorPersonalityInfo"] = 'F' + +typedefDict["TSgitFtdcSysOperTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCDataQueyTypeType鏄竴涓笂鎶ユ暟鎹煡璇㈢被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鏌ヨ褰撳墠浜ゆ槗鏃ユ姤閫佺殑鏁版嵁 +defineDict["Sgit_FTDC_CSRCQ_Current"] = '0' +#鏌ヨ鍘嗗彶鎶ラ佺殑浠g悊缁忕邯鍏徃鐨勬暟鎹 +defineDict["Sgit_FTDC_CSRCQ_History"] = '1' + +typedefDict["TSgitFtdcCSRCDataQueyTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFreezeStatusType鏄竴涓紤鐪犵姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#娲昏穬 +defineDict["Sgit_FTDC_FRS_Normal"] = '1' +#浼戠湢 +defineDict["Sgit_FTDC_FRS_Freeze"] = '0' + +typedefDict["TSgitFtdcFreezeStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcStandardStatusType鏄竴涓鑼冪姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#宸茶鑼 +defineDict["Sgit_FTDC_STST_Standard"] = '0' +#鏈鑼 +defineDict["Sgit_FTDC_STST_NonStandard"] = '1' + +typedefDict["TSgitFtdcStandardStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCSRCFreezeStatusType鏄竴涓紤鐪犵姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCSRCFreezeStatusType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRightParamTypeType鏄竴涓厤缃被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#浼戠湢鎴 +defineDict["Sgit_FTDC_RPT_Freeze"] = '1' +#婵娲讳紤鐪犳埛 +defineDict["Sgit_FTDC_RPT_FreezeActive"] = '2' + +typedefDict["TSgitFtdcRightParamTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRightTemplateIDType鏄竴涓ā鏉夸唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRightTemplateIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcRightTemplateNameType鏄竴涓ā鏉垮悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcRightTemplateNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataStatusType鏄竴涓弽娲楅挶瀹℃牳琛ㄦ暟鎹姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#姝e父 +defineDict["Sgit_FTDC_AMLDS_Normal"] = '0' +#宸插垹闄 +defineDict["Sgit_FTDC_AMLDS_Deleted"] = '1' + +typedefDict["TSgitFtdcDataStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAMLCheckStatusType鏄竴涓鏍哥姸鎬佺被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈鏍 +defineDict["Sgit_FTDC_AMLCHS_Init"] = '0' +#澶嶆牳涓 +defineDict["Sgit_FTDC_AMLCHS_Checking"] = '1' +#宸插鏍 +defineDict["Sgit_FTDC_AMLCHS_Checked"] = '2' +#鎷掔粷涓婃姤 +defineDict["Sgit_FTDC_AMLCHS_RefuseReport"] = '3' + +typedefDict["TSgitFtdcAMLCheckStatusType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmlDateTypeType鏄竴涓棩鏈熺被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#妫鏌ユ棩鏈 +defineDict["Sgit_FTDC_AMLDT_DrawDay"] = '0' +#鍙戠敓鏃ユ湡 +defineDict["Sgit_FTDC_AMLDT_TouchDay"] = '1' + +typedefDict["TSgitFtdcAmlDateTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmlCheckLevelType鏄竴涓鏍哥骇鍒被鍨 +#////////////////////////////////////////////////////////////////////// +#闆剁骇瀹℃牳 +defineDict["Sgit_FTDC_AMLCL_CheckLevel0"] = '0' +#涓绾у鏍 +defineDict["Sgit_FTDC_AMLCL_CheckLevel1"] = '1' +#浜岀骇瀹℃牳 +defineDict["Sgit_FTDC_AMLCL_CheckLevel2"] = '2' +#涓夌骇瀹℃牳 +defineDict["Sgit_FTDC_AMLCL_CheckLevel3"] = '3' + +typedefDict["TSgitFtdcAmlCheckLevelType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAmlCheckFlowType鏄竴涓弽娲楅挶鏁版嵁鎶藉彇瀹℃牳娴佺▼绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAmlCheckFlowType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataTypeType鏄竴涓暟鎹被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcDataTypeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcExportFileTypeType鏄竴涓鍑烘枃浠剁被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#CSV +defineDict["Sgit_FTDC_EFT_CSV"] = '0' +#Excel +defineDict["Sgit_FTDC_EFT_EXCEL"] = '1' +#DBF +defineDict["Sgit_FTDC_EFT_DBF"] = '2' + +typedefDict["TSgitFtdcExportFileTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerTypeType鏄竴涓粨绠楅厤缃被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#缁撶畻鍓嶅噯澶 +defineDict["Sgit_FTDC_SMT_Before"] = '1' +#缁撶畻 +defineDict["Sgit_FTDC_SMT_Settlement"] = '2' +#缁撶畻鍚庢牳瀵 +defineDict["Sgit_FTDC_SMT_After"] = '3' +#缁撶畻瀹屾垚 +defineDict["Sgit_FTDC_SMT_Settlemented"] = '4' + +typedefDict["TSgitFtdcSettleManagerTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerIDType鏄竴涓粨绠楅厤缃唬鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSettleManagerIDType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerNameType鏄竴涓粨绠楅厤缃悕绉扮被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcSettleManagerNameType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerLevelType鏄竴涓粨绠楅厤缃瓑绾х被鍨 +#////////////////////////////////////////////////////////////////////// +#蹇呰 +defineDict["Sgit_FTDC_SML_Must"] = '1' +#璀﹀憡 +defineDict["Sgit_FTDC_SML_Alarm"] = '2' +#鎻愮ず +defineDict["Sgit_FTDC_SML_Prompt"] = '3' +#涓嶆鏌 +defineDict["Sgit_FTDC_SML_Ignore"] = '4' + +typedefDict["TSgitFtdcSettleManagerLevelType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcSettleManagerGroupType鏄竴涓ā鍧楀垎缁勭被鍨 +#////////////////////////////////////////////////////////////////////// +#浜ゆ槗鎵鏍稿 +defineDict["Sgit_FTDC_SMG_Exhcange"] = '1' +#鍐呴儴鏍稿 +defineDict["Sgit_FTDC_SMG_ASP"] = '2' +#涓婃姤鏁版嵁鏍稿 +defineDict["Sgit_FTDC_SMG_CSRC"] = '3' + +typedefDict["TSgitFtdcSettleManagerGroupType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcCheckResultMemoType鏄竴涓牳瀵圭粨鏋滆鏄庣被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcCheckResultMemoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcFunctionUrlType鏄竴涓姛鑳介摼鎺ョ被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcFunctionUrlType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthInfoType鏄竴涓鎴风璁よ瘉淇℃伅绫诲瀷 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAuthInfoType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcAuthCodeType鏄竴涓鎴风璁よ瘉鐮佺被鍨 +#////////////////////////////////////////////////////////////////////// +typedefDict["TSgitFtdcAuthCodeType"] = "string" + +#////////////////////////////////////////////////////////////////////// +#TFtdcLimitUseTypeType鏄竴涓繚鍊奸搴︿娇鐢ㄧ被鍨嬬被鍨 +#////////////////////////////////////////////////////////////////////// +#鍙噸澶嶄娇鐢 +defineDict["Sgit_FTDC_LUT_Repeatable"] = '1' +#涓嶅彲閲嶅浣跨敤 +defineDict["Sgit_FTDC_LUT_Unrepeatable"] = '2' + +typedefDict["TSgitFtdcLimitUseTypeType"] = "char" + +#////////////////////////////////////////////////////////////////////// +#TFtdcDataResourceType鏄竴涓暟鎹潵婧愮被鍨 +#////////////////////////////////////////////////////////////////////// +#鏈郴缁 +defineDict["Sgit_FTDC_DAR_Settle"] = '1' +#浜ゆ槗鎵 +defineDict["Sgit_FTDC_DAR_Exchange"] = '2' +#鎶ラ佹暟鎹 +defineDict["Sgit_FTDC_DAR_CSRC"] = '3' + +typedefDict["TSgitFtdcDataResourceType"] = "char" + diff --git a/vn.sgit/pyscript/sgit_md_define.cpp b/vn.sgit/pyscript/sgit_md_define.cpp new file mode 100644 index 00000000..291bc8ee --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_define.cpp @@ -0,0 +1,5 @@ +#define ONFRONTCONNECTED 1 +#define ONFRONTDISCONNECTED 2 +#define ONRSPUSERLOGIN 3 +#define ONRSPUSERLOGOUT 4 +#define ONRTNDEPTHMARKETDATA 5 diff --git a/vn.sgit/pyscript/sgit_md_function.cpp b/vn.sgit/pyscript/sgit_md_function.cpp new file mode 100644 index 00000000..14447a6c --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_function.cpp @@ -0,0 +1,37 @@ +int MdApi::reqQuot(dict req, int nRequestID) +{ + CSgitSubQuotField myreq = CSgitSubQuotField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "ContractID", myreq.ContractID); + int i = this->api->SubQuot(&myreq, nRequestID); + return i; +}; + +int MdApi::reqUserLogin(dict req, int nRequestID) +{ + CSgitFtdcReqUserLoginField myreq = CSgitFtdcReqUserLoginField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "MacAddress", myreq.MacAddress); + getString(req, "UserProductInfo", myreq.UserProductInfo); + getString(req, "UserID", myreq.UserID); + getString(req, "TradingDay", myreq.TradingDay); + getString(req, "InterfaceProductInfo", myreq.InterfaceProductInfo); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "ClientIPAddress", myreq.ClientIPAddress); + getString(req, "OneTimePassword", myreq.OneTimePassword); + getString(req, "ProtocolInfo", myreq.ProtocolInfo); + getString(req, "Password", myreq.Password); + int i = this->api->ReqUserLogin(&myreq, nRequestID); + return i; +}; + +int MdApi::reqUserLogout(dict req, int nRequestID) +{ + CSgitFtdcUserLogoutField myreq = CSgitFtdcUserLogoutField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "UserID", myreq.UserID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqUserLogout(&myreq, nRequestID); + return i; +}; + diff --git a/vn.sgit/pyscript/sgit_md_header_function.h b/vn.sgit/pyscript/sgit_md_header_function.h new file mode 100644 index 00000000..1da92a49 --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_header_function.h @@ -0,0 +1,4 @@ +int reqUserLogin(dict req, int nRequestID); + +int reqUserLogout(dict req, int nRequestID); + diff --git a/vn.sgit/pyscript/sgit_md_header_on.h b/vn.sgit/pyscript/sgit_md_header_on.h new file mode 100644 index 00000000..445d58cd --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_header_on.h @@ -0,0 +1,8 @@ + + +virtual void onRspUserLogin(dict data, dict error, int id, bool last) {}; + +virtual void onRspUserLogout(dict data, dict error, int id, bool last) {}; + +virtual void onRtnDepthMarketData(dict data) {}; + diff --git a/vn.sgit/pyscript/sgit_md_header_process.h b/vn.sgit/pyscript/sgit_md_header_process.h new file mode 100644 index 00000000..630833d4 --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_header_process.h @@ -0,0 +1,10 @@ +void processFrontConnected(Task task); + +void processFrontDisconnected(Task task); + +void processRspUserLogin(Task task); + +void processRspUserLogout(Task task); + +void processRtnDepthMarketData(Task task); + diff --git a/vn.sgit/pyscript/sgit_md_process.cpp b/vn.sgit/pyscript/sgit_md_process.cpp new file mode 100644 index 00000000..ffc42aec --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_process.cpp @@ -0,0 +1,106 @@ +void MdApi::processFrontConnected(Task task) +{ + PyLock lock; + this->onFrontConnected(); +}; + +void MdApi::processFrontDisconnected(Task task) +{ + PyLock lock; + this->onFrontDisconnected(); +}; + +void MdApi::processRspUserLogin(Task task) +{ + PyLock lock; + CSgitFtdcRspUserLoginField task_data = any_cast(task.task_data); + dict data; + data["CZCETime"] = task_data.CZCETime; + data["SHFETime"] = task_data.SHFETime; + data["MaxOrderRef"] = task_data.MaxOrderRef; + data["UserID"] = task_data.UserID; + data["TradingDay"] = task_data.TradingDay; + data["SessionID"] = task_data.SessionID; + data["SystemName"] = task_data.SystemName; + data["FrontID"] = task_data.FrontID; + data["FFEXTime"] = task_data.FFEXTime; + data["BrokerID"] = task_data.BrokerID; + data["DCETime"] = task_data.DCETime; + data["LoginTime"] = task_data.LoginTime; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogin(data, error, task.task_id, task.task_last); +}; + +void MdApi::processRspUserLogout(Task task) +{ + PyLock lock; + CSgitFtdcUserLogoutField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["BrokerID"] = task_data.BrokerID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogout(data, error, task.task_id, task.task_last); +}; + +void MdApi::processRtnDepthMarketData(Task task) +{ + PyLock lock; + CSgitFtdcDepthMarketDataField 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["PreClosePrice"] = task_data.PreClosePrice; + data["AskPrice1"] = task_data.AskPrice1; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["AskVolume1"] = task_data.AskVolume1; + data["UpdateTime"] = task_data.UpdateTime; + data["UpdateMillisec"] = task_data.UpdateMillisec; + data["AveragePrice"] = task_data.AveragePrice; + data["BidVolume5"] = task_data.BidVolume5; + data["BidVolume4"] = task_data.BidVolume4; + data["BidVolume3"] = task_data.BidVolume3; + data["BidVolume2"] = task_data.BidVolume2; + data["PreOpenInterest"] = task_data.PreOpenInterest; + data["AskPrice2"] = task_data.AskPrice2; + data["Volume"] = task_data.Volume; + data["AskVolume3"] = task_data.AskVolume3; + data["AskVolume2"] = task_data.AskVolume2; + data["AskVolume5"] = task_data.AskVolume5; + data["AskVolume4"] = task_data.AskVolume4; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; + data["BidVolume1"] = task_data.BidVolume1; + data["InstrumentID"] = task_data.InstrumentID; + data["ClosePrice"] = task_data.ClosePrice; + data["ExchangeID"] = task_data.ExchangeID; + data["TradingDay"] = task_data.TradingDay; + data["PreDelta"] = task_data.PreDelta; + data["OpenInterest"] = task_data.OpenInterest; + data["CurrDelta"] = task_data.CurrDelta; + data["Turnover"] = task_data.Turnover; + data["LastPrice"] = task_data.LastPrice; + data["SettlementPrice"] = task_data.SettlementPrice; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["LowestPrice"] = task_data.LowestPrice; + + this->onRtnDepthMarketData(data); +}; + diff --git a/vn.sgit/pyscript/sgit_md_switch.cpp b/vn.sgit/pyscript/sgit_md_switch.cpp new file mode 100644 index 00000000..d26c06a2 --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_switch.cpp @@ -0,0 +1,30 @@ +case ONFRONTCONNECTED: +{ + this->processFrontConnected(task); + break; +} + +case ONFRONTDISCONNECTED: +{ + this->processFrontDisconnected(task); + break; +} + +case ONRSPUSERLOGIN: +{ + this->processRspUserLogin(task); + break; +} + +case ONRSPUSERLOGOUT: +{ + this->processRspUserLogout(task); + break; +} + +case ONRTNDEPTHMARKETDATA: +{ + this->processRtnDepthMarketData(task); + break; +} + diff --git a/vn.sgit/pyscript/sgit_md_task.cpp b/vn.sgit/pyscript/sgit_md_task.cpp new file mode 100644 index 00000000..fb78b79a --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_task.cpp @@ -0,0 +1,107 @@ +void MdApi::OnFrontConnected() +{ + Task task = Task(); + task.task_name = ONFRONTCONNECTED; + this->task_queue.push(task); +}; + +void MdApi::OnFrontDisconnected(char *pErrMsg) +{ + Task task = Task(); + task.task_name = ONFRONTDISCONNECTED; + + if (pErrMsg{}; +) + { + task.task_data = *pErrMsg{}; +; + } + else + { + char empty_data = char(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void MdApi::OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGIN; + + if (pRspUserLogin) + { + task.task_data = *pRspUserLogin; + } + else + { + CSgitFtdcRspUserLoginField empty_data = CSgitFtdcRspUserLoginField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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::OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGOUT; + + if (pUserLogout) + { + task.task_data = *pUserLogout; + } + else + { + CSgitFtdcUserLogoutField empty_data = CSgitFtdcUserLogoutField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcDepthMarketDataField *pDepthMarketData) +{ + Task task = Task(); + task.task_name = ONRTNDEPTHMARKETDATA; + + if (pDepthMarketData) + { + task.task_data = *pDepthMarketData; + } + else + { + CSgitFtdcDepthMarketDataField empty_data = CSgitFtdcDepthMarketDataField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + diff --git a/vn.sgit/pyscript/sgit_md_wrap.cpp b/vn.sgit/pyscript/sgit_md_wrap.cpp new file mode 100644 index 00000000..e4266f22 --- /dev/null +++ b/vn.sgit/pyscript/sgit_md_wrap.cpp @@ -0,0 +1,36 @@ +virtual void onRspUserLogin(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspUserLogin")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspUserLogout(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspUserLogout")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRtnDepthMarketData(dict data) +{ + try + { + this->get_override("onRtnDepthMarketData")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + diff --git a/vn.sgit/pyscript/sgit_struct.py b/vn.sgit/pyscript/sgit_struct.py new file mode 100644 index 00000000..528a69ab --- /dev/null +++ b/vn.sgit/pyscript/sgit_struct.py @@ -0,0 +1,5866 @@ +# encoding: UTF-8 + +structDict = {} + +#////////////////////////////////////////////////////////////////////// + +#////////////////////////////////////////////////////////////////////// + + + + + + + + + + +#淇℃伅鍒嗗彂 +CSgitFtdcDisseminationField = {} +#搴忓垪绯诲垪鍙 +CSgitFtdcDisseminationField["SequenceSeries"] = "short" +#搴忓垪鍙 +CSgitFtdcDisseminationField["SequenceNo"] = "int" +structDict['CSgitFtdcDisseminationField'] = CSgitFtdcDisseminationField + + +#鐢ㄦ埛鐧诲綍璇锋眰 +CSgitFtdcReqUserLoginField = {} +#浜ゆ槗鏃 +CSgitFtdcReqUserLoginField["TradingDay"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcReqUserLoginField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcReqUserLoginField["UserID"] = "string" +#瀵嗙爜 +CSgitFtdcReqUserLoginField["Password"] = "string" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcReqUserLoginField["UserProductInfo"] = "string" +#鎺ュ彛绔骇鍝佷俊鎭 +CSgitFtdcReqUserLoginField["InterfaceProductInfo"] = "string" +#鍗忚淇℃伅 +CSgitFtdcReqUserLoginField["ProtocolInfo"] = "string" +#Mac鍦板潃 +CSgitFtdcReqUserLoginField["MacAddress"] = "string" +#鍔ㄦ佸瘑鐮 +CSgitFtdcReqUserLoginField["OneTimePassword"] = "string" +#缁堢IP鍦板潃 +CSgitFtdcReqUserLoginField["ClientIPAddress"] = "string" +structDict['CSgitFtdcReqUserLoginField'] = CSgitFtdcReqUserLoginField + + +#鐢ㄦ埛鐧诲綍搴旂瓟 +CSgitFtdcRspUserLoginField = {} +#浜ゆ槗鏃 +CSgitFtdcRspUserLoginField["TradingDay"] = "string" +#鐧诲綍鎴愬姛鏃堕棿 +CSgitFtdcRspUserLoginField["LoginTime"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcRspUserLoginField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcRspUserLoginField["UserID"] = "string" +#浜ゆ槗绯荤粺鍚嶇О +CSgitFtdcRspUserLoginField["SystemName"] = "string" +#鍓嶇疆缂栧彿 +CSgitFtdcRspUserLoginField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcRspUserLoginField["SessionID"] = "int" +#鏈澶ф姤鍗曞紩鐢 +CSgitFtdcRspUserLoginField["MaxOrderRef"] = "string" +#涓婃湡鎵鏃堕棿 +CSgitFtdcRspUserLoginField["SHFETime"] = "string" +#澶у晢鎵鏃堕棿 +CSgitFtdcRspUserLoginField["DCETime"] = "string" +#閮戝晢鎵鏃堕棿 +CSgitFtdcRspUserLoginField["CZCETime"] = "string" +#涓噾鎵鏃堕棿 +CSgitFtdcRspUserLoginField["FFEXTime"] = "string" +structDict['CSgitFtdcRspUserLoginField'] = CSgitFtdcRspUserLoginField + + +#鐢ㄦ埛鐧诲嚭璇锋眰 +CSgitFtdcUserLogoutField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcUserLogoutField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcUserLogoutField["UserID"] = "string" +structDict['CSgitFtdcUserLogoutField'] = CSgitFtdcUserLogoutField + + +#寮哄埗浜ゆ槗鍛橀鍑 +CSgitFtdcForceUserLogoutField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcForceUserLogoutField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcForceUserLogoutField["UserID"] = "string" +structDict['CSgitFtdcForceUserLogoutField'] = CSgitFtdcForceUserLogoutField + + +#瀹㈡埛绔璇佽姹 +CSgitFtdcReqAuthenticateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcReqAuthenticateField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcReqAuthenticateField["UserID"] = "string" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcReqAuthenticateField["UserProductInfo"] = "string" +#璁よ瘉鐮 +CSgitFtdcReqAuthenticateField["AuthCode"] = "string" +structDict['CSgitFtdcReqAuthenticateField'] = CSgitFtdcReqAuthenticateField + + +#瀹㈡埛绔璇佸搷搴 +CSgitFtdcRspAuthenticateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcRspAuthenticateField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcRspAuthenticateField["UserID"] = "string" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcRspAuthenticateField["UserProductInfo"] = "string" +structDict['CSgitFtdcRspAuthenticateField'] = CSgitFtdcRspAuthenticateField + + +#瀹㈡埛绔璇佷俊鎭 +CSgitFtdcAuthenticationInfoField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcAuthenticationInfoField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcAuthenticationInfoField["UserID"] = "string" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcAuthenticationInfoField["UserProductInfo"] = "string" +#璁よ瘉淇℃伅 +CSgitFtdcAuthenticationInfoField["AuthInfo"] = "string" +#鏄惁涓鸿璇佺粨鏋 +CSgitFtdcAuthenticationInfoField["IsResult"] = "int" +structDict['CSgitFtdcAuthenticationInfoField'] = CSgitFtdcAuthenticationInfoField + + +#閾舵湡杞笎鎶ユ枃澶 +CSgitFtdcTransferHeaderField = {} +#鐗堟湰鍙凤紝甯搁噺锛1.0 +CSgitFtdcTransferHeaderField["Version"] = "string" +#浜ゆ槗浠g爜锛屽繀濉 +CSgitFtdcTransferHeaderField["TradeCode"] = "string" +#浜ゆ槗鏃ユ湡锛屽繀濉紝鏍煎紡锛歽yyymmdd +CSgitFtdcTransferHeaderField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿锛屽繀濉紝鏍煎紡锛歨hmmss +CSgitFtdcTransferHeaderField["TradeTime"] = "string" +#鍙戣捣鏂规祦姘村彿锛孨/A +CSgitFtdcTransferHeaderField["TradeSerial"] = "string" +#鏈熻揣鍏徃浠g爜锛屽繀濉 +CSgitFtdcTransferHeaderField["FutureID"] = "string" +#閾惰浠g爜锛屾牴鎹煡璇㈤摱琛屽緱鍒帮紝蹇呭~ +CSgitFtdcTransferHeaderField["BankID"] = "string" +#閾惰鍒嗕腑蹇冧唬鐮侊紝鏍规嵁鏌ヨ閾惰寰楀埌锛屽繀濉 +CSgitFtdcTransferHeaderField["BankBrchID"] = "string" +#鎿嶄綔鍛橈紝N/A +CSgitFtdcTransferHeaderField["OperNo"] = "string" +#浜ゆ槗璁惧绫诲瀷锛孨/A +CSgitFtdcTransferHeaderField["DeviceID"] = "string" +#璁板綍鏁帮紝N/A +CSgitFtdcTransferHeaderField["RecordNum"] = "string" +#浼氳瘽缂栧彿锛孨/A +CSgitFtdcTransferHeaderField["SessionID"] = "int" +#璇锋眰缂栧彿锛孨/A +CSgitFtdcTransferHeaderField["RequestID"] = "int" +structDict['CSgitFtdcTransferHeaderField'] = CSgitFtdcTransferHeaderField + + +#閾惰璧勯噾杞湡璐ц姹傦紝TradeCode=202001 +CSgitFtdcTransferBankToFutureReqField = {} +#鏈熻揣璧勯噾璐︽埛 +CSgitFtdcTransferBankToFutureReqField["FutureAccount"] = "string" +#瀵嗙爜鏍囧織 +CSgitFtdcTransferBankToFutureReqField["FuturePwdFlag"] = "char" +#瀵嗙爜 +CSgitFtdcTransferBankToFutureReqField["FutureAccPwd"] = "string" +#杞处閲戦 +CSgitFtdcTransferBankToFutureReqField["TradeAmt"] = "float" +#瀹㈡埛鎵嬬画璐 +CSgitFtdcTransferBankToFutureReqField["CustFee"] = "float" +#甯佺锛歊MB-浜烘皯甯 USD-缇庡渾 HKD-娓厓 +CSgitFtdcTransferBankToFutureReqField["CurrencyCode"] = "string" +structDict['CSgitFtdcTransferBankToFutureReqField'] = CSgitFtdcTransferBankToFutureReqField + + +#閾惰璧勯噾杞湡璐ц姹傚搷搴 +CSgitFtdcTransferBankToFutureRspField = {} +#鍝嶅簲浠g爜 +CSgitFtdcTransferBankToFutureRspField["RetCode"] = "string" +#鍝嶅簲淇℃伅 +CSgitFtdcTransferBankToFutureRspField["RetInfo"] = "string" +#璧勯噾璐︽埛 +CSgitFtdcTransferBankToFutureRspField["FutureAccount"] = "string" +#杞笎閲戦 +CSgitFtdcTransferBankToFutureRspField["TradeAmt"] = "float" +#搴旀敹瀹㈡埛鎵嬬画璐 +CSgitFtdcTransferBankToFutureRspField["CustFee"] = "float" +#甯佺 +CSgitFtdcTransferBankToFutureRspField["CurrencyCode"] = "string" +structDict['CSgitFtdcTransferBankToFutureRspField'] = CSgitFtdcTransferBankToFutureRspField + + +#鏈熻揣璧勯噾杞摱琛岃姹傦紝TradeCode=202002 +CSgitFtdcTransferFutureToBankReqField = {} +#鏈熻揣璧勯噾璐︽埛 +CSgitFtdcTransferFutureToBankReqField["FutureAccount"] = "string" +#瀵嗙爜鏍囧織 +CSgitFtdcTransferFutureToBankReqField["FuturePwdFlag"] = "char" +#瀵嗙爜 +CSgitFtdcTransferFutureToBankReqField["FutureAccPwd"] = "string" +#杞处閲戦 +CSgitFtdcTransferFutureToBankReqField["TradeAmt"] = "float" +#瀹㈡埛鎵嬬画璐 +CSgitFtdcTransferFutureToBankReqField["CustFee"] = "float" +#甯佺锛歊MB-浜烘皯甯 USD-缇庡渾 HKD-娓厓 +CSgitFtdcTransferFutureToBankReqField["CurrencyCode"] = "string" +structDict['CSgitFtdcTransferFutureToBankReqField'] = CSgitFtdcTransferFutureToBankReqField + + +#鏈熻揣璧勯噾杞摱琛岃姹傚搷搴 +CSgitFtdcTransferFutureToBankRspField = {} +#鍝嶅簲浠g爜 +CSgitFtdcTransferFutureToBankRspField["RetCode"] = "string" +#鍝嶅簲淇℃伅 +CSgitFtdcTransferFutureToBankRspField["RetInfo"] = "string" +#璧勯噾璐︽埛 +CSgitFtdcTransferFutureToBankRspField["FutureAccount"] = "string" +#杞笎閲戦 +CSgitFtdcTransferFutureToBankRspField["TradeAmt"] = "float" +#搴旀敹瀹㈡埛鎵嬬画璐 +CSgitFtdcTransferFutureToBankRspField["CustFee"] = "float" +#甯佺 +CSgitFtdcTransferFutureToBankRspField["CurrencyCode"] = "string" +structDict['CSgitFtdcTransferFutureToBankRspField'] = CSgitFtdcTransferFutureToBankRspField + + +#鏌ヨ閾惰璧勯噾璇锋眰锛孴radeCode=204002 +CSgitFtdcTransferQryBankReqField = {} +#鏈熻揣璧勯噾璐︽埛 +CSgitFtdcTransferQryBankReqField["FutureAccount"] = "string" +#瀵嗙爜鏍囧織 +CSgitFtdcTransferQryBankReqField["FuturePwdFlag"] = "char" +#瀵嗙爜 +CSgitFtdcTransferQryBankReqField["FutureAccPwd"] = "string" +#甯佺锛歊MB-浜烘皯甯 USD-缇庡渾 HKD-娓厓 +CSgitFtdcTransferQryBankReqField["CurrencyCode"] = "string" +structDict['CSgitFtdcTransferQryBankReqField'] = CSgitFtdcTransferQryBankReqField + + +#鏌ヨ閾惰璧勯噾璇锋眰鍝嶅簲 +CSgitFtdcTransferQryBankRspField = {} +#鍝嶅簲浠g爜 +CSgitFtdcTransferQryBankRspField["RetCode"] = "string" +#鍝嶅簲淇℃伅 +CSgitFtdcTransferQryBankRspField["RetInfo"] = "string" +#璧勯噾璐︽埛 +CSgitFtdcTransferQryBankRspField["FutureAccount"] = "string" +#閾惰浣欓 +CSgitFtdcTransferQryBankRspField["TradeAmt"] = "float" +#閾惰鍙敤浣欓 +CSgitFtdcTransferQryBankRspField["UseAmt"] = "float" +#閾惰鍙彇浣欓 +CSgitFtdcTransferQryBankRspField["FetchAmt"] = "float" +#甯佺 +CSgitFtdcTransferQryBankRspField["CurrencyCode"] = "string" +structDict['CSgitFtdcTransferQryBankRspField'] = CSgitFtdcTransferQryBankRspField + + +#鏌ヨ閾惰浜ゆ槗鏄庣粏璇锋眰锛孴radeCode=204999 +CSgitFtdcTransferQryDetailReqField = {} +#鏈熻揣璧勯噾璐︽埛 +CSgitFtdcTransferQryDetailReqField["FutureAccount"] = "string" +structDict['CSgitFtdcTransferQryDetailReqField'] = CSgitFtdcTransferQryDetailReqField + + +#鏌ヨ閾惰浜ゆ槗鏄庣粏璇锋眰鍝嶅簲 +CSgitFtdcTransferQryDetailRspField = {} +#浜ゆ槗鏃ユ湡 +CSgitFtdcTransferQryDetailRspField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcTransferQryDetailRspField["TradeTime"] = "string" +#浜ゆ槗浠g爜 +CSgitFtdcTransferQryDetailRspField["TradeCode"] = "string" +#鏈熻揣娴佹按鍙 +CSgitFtdcTransferQryDetailRspField["FutureSerial"] = "int" +#鏈熻揣鍏徃浠g爜 +CSgitFtdcTransferQryDetailRspField["FutureID"] = "string" +#璧勯噾甯愬彿 +CSgitFtdcTransferQryDetailRspField["FutureAccount"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcTransferQryDetailRspField["BankSerial"] = "int" +#閾惰浠g爜 +CSgitFtdcTransferQryDetailRspField["BankID"] = "string" +#閾惰鍒嗕腑蹇冧唬鐮 +CSgitFtdcTransferQryDetailRspField["BankBrchID"] = "string" +#閾惰璐﹀彿 +CSgitFtdcTransferQryDetailRspField["BankAccount"] = "string" +#璇佷欢鍙风爜 +CSgitFtdcTransferQryDetailRspField["CertCode"] = "string" +#璐у竵浠g爜 +CSgitFtdcTransferQryDetailRspField["CurrencyCode"] = "string" +#鍙戠敓閲戦 +CSgitFtdcTransferQryDetailRspField["TxAmount"] = "float" +#鏈夋晥鏍囧織 +CSgitFtdcTransferQryDetailRspField["Flag"] = "char" +structDict['CSgitFtdcTransferQryDetailRspField'] = CSgitFtdcTransferQryDetailRspField + + +#鍝嶅簲淇℃伅 +CSgitFtdcRspInfoField = {} +#閿欒浠g爜 +CSgitFtdcRspInfoField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspInfoField["ErrorMsg"] = "string" +structDict['CSgitFtdcRspInfoField'] = CSgitFtdcRspInfoField + + +#浜ゆ槗鎵 +CSgitFtdcExchangeField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeField["ExchangeID"] = "string" +#浜ゆ槗鎵鍚嶇О +CSgitFtdcExchangeField["ExchangeName"] = "string" +#浜ゆ槗鎵灞炴 +CSgitFtdcExchangeField["ExchangeProperty"] = "char" +structDict['CSgitFtdcExchangeField'] = CSgitFtdcExchangeField + + +#浜у搧 +CSgitFtdcProductField = {} +#浜у搧浠g爜 +CSgitFtdcProductField["ProductID"] = "string" +#浜у搧鍚嶇О +CSgitFtdcProductField["ProductName"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcProductField["ExchangeID"] = "string" +#浜у搧绫诲瀷 +CSgitFtdcProductField["ProductClass"] = "char" +#鍚堢害鏁伴噺涔樻暟 +CSgitFtdcProductField["VolumeMultiple"] = "int" +#鏈灏忓彉鍔ㄤ环浣 +CSgitFtdcProductField["PriceTick"] = "float" +#甯備环鍗曟渶澶т笅鍗曢噺 +CSgitFtdcProductField["MaxMarketOrderVolume"] = "int" +#甯備环鍗曟渶灏忎笅鍗曢噺 +CSgitFtdcProductField["MinMarketOrderVolume"] = "int" +#闄愪环鍗曟渶澶т笅鍗曢噺 +CSgitFtdcProductField["MaxLimitOrderVolume"] = "int" +#闄愪环鍗曟渶灏忎笅鍗曢噺 +CSgitFtdcProductField["MinLimitOrderVolume"] = "int" +#鎸佷粨绫诲瀷 +CSgitFtdcProductField["PositionType"] = "char" +#鎸佷粨鏃ユ湡绫诲瀷 +CSgitFtdcProductField["PositionDateType"] = "char" +structDict['CSgitFtdcProductField'] = CSgitFtdcProductField + + +#鍚堢害 +CSgitFtdcInstrumentField = {} +#鍚堢害浠g爜 +CSgitFtdcInstrumentField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcInstrumentField["ExchangeID"] = "string" +#鍚堢害鍚嶇О +CSgitFtdcInstrumentField["InstrumentName"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcInstrumentField["ExchangeInstID"] = "string" +#浜у搧浠g爜 +CSgitFtdcInstrumentField["ProductID"] = "string" +#浜у搧绫诲瀷 +CSgitFtdcInstrumentField["ProductClass"] = "char" +#浜ゅ壊骞翠唤 +CSgitFtdcInstrumentField["DeliveryYear"] = "int" +#浜ゅ壊鏈 +CSgitFtdcInstrumentField["DeliveryMonth"] = "int" +#甯備环鍗曟渶澶т笅鍗曢噺 +CSgitFtdcInstrumentField["MaxMarketOrderVolume"] = "int" +#甯備环鍗曟渶灏忎笅鍗曢噺 +CSgitFtdcInstrumentField["MinMarketOrderVolume"] = "int" +#闄愪环鍗曟渶澶т笅鍗曢噺 +CSgitFtdcInstrumentField["MaxLimitOrderVolume"] = "int" +#闄愪环鍗曟渶灏忎笅鍗曢噺 +CSgitFtdcInstrumentField["MinLimitOrderVolume"] = "int" +#鍚堢害鏁伴噺涔樻暟 +CSgitFtdcInstrumentField["VolumeMultiple"] = "int" +#鏈灏忓彉鍔ㄤ环浣 +CSgitFtdcInstrumentField["PriceTick"] = "float" +#鍒涘缓鏃 +CSgitFtdcInstrumentField["CreateDate"] = "string" +#涓婂競鏃 +CSgitFtdcInstrumentField["OpenDate"] = "string" +#鍒版湡鏃 +CSgitFtdcInstrumentField["ExpireDate"] = "string" +#寮濮嬩氦鍓叉棩 +CSgitFtdcInstrumentField["StartDelivDate"] = "string" +#缁撴潫浜ゅ壊鏃 +CSgitFtdcInstrumentField["EndDelivDate"] = "string" +#鍚堢害鐢熷懡鍛ㄦ湡鐘舵 +CSgitFtdcInstrumentField["InstLifePhase"] = "char" +#褰撳墠鏄惁浜ゆ槗 +CSgitFtdcInstrumentField["IsTrading"] = "int" +#鎸佷粨绫诲瀷 +CSgitFtdcInstrumentField["PositionType"] = "char" +#鎸佷粨鏃ユ湡绫诲瀷 +CSgitFtdcInstrumentField["PositionDateType"] = "char" +#澶氬ご淇濊瘉閲戠巼 +CSgitFtdcInstrumentField["LongMarginRatio"] = "float" +#绌哄ご淇濊瘉閲戠巼 +CSgitFtdcInstrumentField["ShortMarginRatio"] = "float" +structDict['CSgitFtdcInstrumentField'] = CSgitFtdcInstrumentField + + +#缁忕邯鍏徃 +CSgitFtdcBrokerField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerField["BrokerID"] = "string" +#缁忕邯鍏徃绠绉 +CSgitFtdcBrokerField["BrokerAbbr"] = "string" +#缁忕邯鍏徃鍚嶇О +CSgitFtdcBrokerField["BrokerName"] = "string" +#鏄惁娲昏穬 +CSgitFtdcBrokerField["IsActive"] = "int" +structDict['CSgitFtdcBrokerField'] = CSgitFtdcBrokerField + + +#浜ゆ槗鎵浜ゆ槗鍛 +CSgitFtdcTraderField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcTraderField["ExchangeID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcTraderField["TraderID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcTraderField["ParticipantID"] = "string" +#瀵嗙爜 +CSgitFtdcTraderField["Password"] = "string" +#瀹夎鏁伴噺 +CSgitFtdcTraderField["InstallCount"] = "int" +#缁忕邯鍏徃浠g爜 +CSgitFtdcTraderField["BrokerID"] = "string" +structDict['CSgitFtdcTraderField'] = CSgitFtdcTraderField + + +#鎶曡祫鑰 +CSgitFtdcInvestorField = {} +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInvestorField["InvestorID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorField["BrokerID"] = "string" +#鎶曡祫鑰呭垎缁勪唬鐮 +CSgitFtdcInvestorField["InvestorGroupID"] = "string" +#鎶曡祫鑰呭悕绉 +CSgitFtdcInvestorField["InvestorName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcInvestorField["IdentifiedCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcInvestorField["IdentifiedCardNo"] = "string" +#鏄惁娲昏穬 +CSgitFtdcInvestorField["IsActive"] = "int" +#鑱旂郴鐢佃瘽 +CSgitFtdcInvestorField["Telephone"] = "string" +#閫氳鍦板潃 +CSgitFtdcInvestorField["Address"] = "string" +#寮鎴锋棩鏈 +CSgitFtdcInvestorField["OpenDate"] = "string" +#鎵嬫満 +CSgitFtdcInvestorField["Mobile"] = "string" +#鎵嬬画璐圭巼妯℃澘浠g爜 +CSgitFtdcInvestorField["CommModelID"] = "string" +structDict['CSgitFtdcInvestorField'] = CSgitFtdcInvestorField + + +#浜ゆ槗缂栫爜 +CSgitFtdcTradingCodeField = {} +#鎶曡祫鑰呬唬鐮 +CSgitFtdcTradingCodeField["InvestorID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingCodeField["BrokerID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcTradingCodeField["ExchangeID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcTradingCodeField["ClientID"] = "string" +#鏄惁娲昏穬 +CSgitFtdcTradingCodeField["IsActive"] = "int" +#浜ゆ槗缂栫爜绫诲瀷 +CSgitFtdcTradingCodeField["ClientIDType"] = "char" +structDict['CSgitFtdcTradingCodeField'] = CSgitFtdcTradingCodeField + + +#浼氬憳缂栫爜鍜岀粡绾叕鍙哥紪鐮佸鐓ц〃 +CSgitFtdcPartBrokerField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcPartBrokerField["BrokerID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcPartBrokerField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcPartBrokerField["ParticipantID"] = "string" +#鏄惁娲昏穬 +CSgitFtdcPartBrokerField["IsActive"] = "int" +structDict['CSgitFtdcPartBrokerField'] = CSgitFtdcPartBrokerField + + +#绠$悊鐢ㄦ埛 +CSgitFtdcSuperUserField = {} +#鐢ㄦ埛浠g爜 +CSgitFtdcSuperUserField["UserID"] = "string" +#鐢ㄦ埛鍚嶇О +CSgitFtdcSuperUserField["UserName"] = "string" +#瀵嗙爜 +CSgitFtdcSuperUserField["Password"] = "string" +#鏄惁娲昏穬 +CSgitFtdcSuperUserField["IsActive"] = "int" +structDict['CSgitFtdcSuperUserField'] = CSgitFtdcSuperUserField + + +#绠$悊鐢ㄦ埛鍔熻兘鏉冮檺 +CSgitFtdcSuperUserFunctionField = {} +#鐢ㄦ埛浠g爜 +CSgitFtdcSuperUserFunctionField["UserID"] = "string" +#鍔熻兘浠g爜 +CSgitFtdcSuperUserFunctionField["FunctionCode"] = "char" +structDict['CSgitFtdcSuperUserFunctionField'] = CSgitFtdcSuperUserFunctionField + + +#鎶曡祫鑰呯粍 +CSgitFtdcInvestorGroupField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorGroupField["BrokerID"] = "string" +#鎶曡祫鑰呭垎缁勪唬鐮 +CSgitFtdcInvestorGroupField["InvestorGroupID"] = "string" +#鎶曡祫鑰呭垎缁勫悕绉 +CSgitFtdcInvestorGroupField["InvestorGroupName"] = "string" +structDict['CSgitFtdcInvestorGroupField'] = CSgitFtdcInvestorGroupField + + +#璧勯噾璐︽埛 +CSgitFtdcTradingAccountField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingAccountField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcTradingAccountField["AccountID"] = "string" +#涓婃璐ㄦ娂閲戦 +CSgitFtdcTradingAccountField["PreMortgage"] = "float" +#涓婃淇$敤棰濆害 +CSgitFtdcTradingAccountField["PreCredit"] = "float" +#涓婃瀛樻棰 +CSgitFtdcTradingAccountField["PreDeposit"] = "float" +#涓婃缁撶畻鍑嗗閲 +CSgitFtdcTradingAccountField["PreBalance"] = "float" +#涓婃鍗犵敤鐨勪繚璇侀噾 +CSgitFtdcTradingAccountField["PreMargin"] = "float" +#鍒╂伅鍩烘暟 +CSgitFtdcTradingAccountField["InterestBase"] = "float" +#鍒╂伅鏀跺叆 +CSgitFtdcTradingAccountField["Interest"] = "float" +#鍏ラ噾閲戦 +CSgitFtdcTradingAccountField["Deposit"] = "float" +#鍑洪噾閲戦 +CSgitFtdcTradingAccountField["Withdraw"] = "float" +#鍐荤粨鐨勪繚璇侀噾 +CSgitFtdcTradingAccountField["FrozenMargin"] = "float" +#鍐荤粨鐨勮祫閲 +CSgitFtdcTradingAccountField["FrozenCash"] = "float" +#鍐荤粨鐨勬墜缁垂 +CSgitFtdcTradingAccountField["FrozenCommission"] = "float" +#褰撳墠淇濊瘉閲戞婚 +CSgitFtdcTradingAccountField["CurrMargin"] = "float" +#璧勯噾宸 +CSgitFtdcTradingAccountField["CashIn"] = "float" +#鎵嬬画璐 +CSgitFtdcTradingAccountField["Commission"] = "float" +#骞充粨鐩堜簭 +CSgitFtdcTradingAccountField["CloseProfit"] = "float" +#鎸佷粨鐩堜簭 +CSgitFtdcTradingAccountField["PositionProfit"] = "float" +#鏈熻揣缁撶畻鍑嗗閲 +CSgitFtdcTradingAccountField["Balance"] = "float" +#鍙敤璧勯噾 +CSgitFtdcTradingAccountField["Available"] = "float" +#鍙彇璧勯噾 +CSgitFtdcTradingAccountField["WithdrawQuota"] = "float" +#鍩烘湰鍑嗗閲 +CSgitFtdcTradingAccountField["Reserve"] = "float" +#浜ゆ槗鏃 +CSgitFtdcTradingAccountField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcTradingAccountField["SettlementID"] = "int" +#淇$敤棰濆害 +CSgitFtdcTradingAccountField["Credit"] = "float" +#璐ㄦ娂閲戦 +CSgitFtdcTradingAccountField["Mortgage"] = "float" +#浜ゆ槗鎵淇濊瘉閲 +CSgitFtdcTradingAccountField["ExchangeMargin"] = "float" +#鎶曡祫鑰呬氦鍓蹭繚璇侀噾 +CSgitFtdcTradingAccountField["DeliveryMargin"] = "float" +#浜ゆ槗鎵浜ゅ壊淇濊瘉閲 +CSgitFtdcTradingAccountField["ExchangeDeliveryMargin"] = "float" +structDict['CSgitFtdcTradingAccountField'] = CSgitFtdcTradingAccountField + + +#鎶曡祫鑰呮寔浠 +CSgitFtdcInvestorPositionField = {} +#鍚堢害浠g爜 +CSgitFtdcInvestorPositionField["InstrumentID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorPositionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInvestorPositionField["InvestorID"] = "string" +#鎸佷粨澶氱┖鏂瑰悜 +CSgitFtdcInvestorPositionField["PosiDirection"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcInvestorPositionField["HedgeFlag"] = "char" +#鎸佷粨鏃ユ湡 +CSgitFtdcInvestorPositionField["PositionDate"] = "char" +#涓婃棩鎸佷粨 +CSgitFtdcInvestorPositionField["YdPosition"] = "int" +#浠婃棩鎸佷粨 +CSgitFtdcInvestorPositionField["Position"] = "int" +#澶氬ご鍐荤粨 +CSgitFtdcInvestorPositionField["LongFrozen"] = "int" +#绌哄ご鍐荤粨 +CSgitFtdcInvestorPositionField["ShortFrozen"] = "int" +#寮浠撳喕缁撻噾棰 +CSgitFtdcInvestorPositionField["LongFrozenAmount"] = "float" +#寮浠撳喕缁撻噾棰 +CSgitFtdcInvestorPositionField["ShortFrozenAmount"] = "float" +#寮浠撻噺 +CSgitFtdcInvestorPositionField["OpenVolume"] = "int" +#骞充粨閲 +CSgitFtdcInvestorPositionField["CloseVolume"] = "int" +#寮浠撻噾棰 +CSgitFtdcInvestorPositionField["OpenAmount"] = "float" +#骞充粨閲戦 +CSgitFtdcInvestorPositionField["CloseAmount"] = "float" +#鎸佷粨鎴愭湰 +CSgitFtdcInvestorPositionField["PositionCost"] = "float" +#涓婃鍗犵敤鐨勪繚璇侀噾 +CSgitFtdcInvestorPositionField["PreMargin"] = "float" +#鍗犵敤鐨勪繚璇侀噾 +CSgitFtdcInvestorPositionField["UseMargin"] = "float" +#鍐荤粨鐨勪繚璇侀噾 +CSgitFtdcInvestorPositionField["FrozenMargin"] = "float" +#鍐荤粨鐨勮祫閲 +CSgitFtdcInvestorPositionField["FrozenCash"] = "float" +#鍐荤粨鐨勬墜缁垂 +CSgitFtdcInvestorPositionField["FrozenCommission"] = "float" +#璧勯噾宸 +CSgitFtdcInvestorPositionField["CashIn"] = "float" +#鎵嬬画璐 +CSgitFtdcInvestorPositionField["Commission"] = "float" +#骞充粨鐩堜簭 +CSgitFtdcInvestorPositionField["CloseProfit"] = "float" +#鎸佷粨鐩堜簭 +CSgitFtdcInvestorPositionField["PositionProfit"] = "float" +#涓婃缁撶畻浠 +CSgitFtdcInvestorPositionField["PreSettlementPrice"] = "float" +#鏈缁撶畻浠 +CSgitFtdcInvestorPositionField["SettlementPrice"] = "float" +#浜ゆ槗鏃 +CSgitFtdcInvestorPositionField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcInvestorPositionField["SettlementID"] = "int" +#寮浠撴垚鏈 +CSgitFtdcInvestorPositionField["OpenCost"] = "float" +#浜ゆ槗鎵淇濊瘉閲 +CSgitFtdcInvestorPositionField["ExchangeMargin"] = "float" +#缁勫悎鎴愪氦褰㈡垚鐨勬寔浠 +CSgitFtdcInvestorPositionField["CombPosition"] = "int" +#缁勫悎澶氬ご鍐荤粨 +CSgitFtdcInvestorPositionField["CombLongFrozen"] = "int" +#缁勫悎绌哄ご鍐荤粨 +CSgitFtdcInvestorPositionField["CombShortFrozen"] = "int" +#閫愭棩鐩競骞充粨鐩堜簭 +CSgitFtdcInvestorPositionField["CloseProfitByDate"] = "float" +#閫愮瑪瀵瑰啿骞充粨鐩堜簭 +CSgitFtdcInvestorPositionField["CloseProfitByTrade"] = "float" +#浠婃棩鎸佷粨 +CSgitFtdcInvestorPositionField["TodayPosition"] = "int" +#淇濊瘉閲戠巼 +CSgitFtdcInvestorPositionField["MarginRateByMoney"] = "float" +#淇濊瘉閲戠巼(鎸夋墜鏁) +CSgitFtdcInvestorPositionField["MarginRateByVolume"] = "float" +structDict['CSgitFtdcInvestorPositionField'] = CSgitFtdcInvestorPositionField + + +#鍚堢害淇濊瘉閲戠巼 +CSgitFtdcInstrumentMarginRateField = {} +#鍚堢害浠g爜 +CSgitFtdcInstrumentMarginRateField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcInstrumentMarginRateField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInstrumentMarginRateField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInstrumentMarginRateField["InvestorID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcInstrumentMarginRateField["HedgeFlag"] = "char" +#澶氬ご淇濊瘉閲戠巼 +CSgitFtdcInstrumentMarginRateField["LongMarginRatioByMoney"] = "float" +#澶氬ご淇濊瘉閲戣垂 +CSgitFtdcInstrumentMarginRateField["LongMarginRatioByVolume"] = "float" +#绌哄ご淇濊瘉閲戠巼 +CSgitFtdcInstrumentMarginRateField["ShortMarginRatioByMoney"] = "float" +#绌哄ご淇濊瘉閲戣垂 +CSgitFtdcInstrumentMarginRateField["ShortMarginRatioByVolume"] = "float" +#鏄惁鐩稿浜ゆ槗鎵鏀跺彇 +CSgitFtdcInstrumentMarginRateField["IsRelative"] = "int" +structDict['CSgitFtdcInstrumentMarginRateField'] = CSgitFtdcInstrumentMarginRateField + + +#鍚堢害鎵嬬画璐圭巼 +CSgitFtdcInstrumentCommissionRateField = {} +#鍚堢害浠g爜 +CSgitFtdcInstrumentCommissionRateField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcInstrumentCommissionRateField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInstrumentCommissionRateField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInstrumentCommissionRateField["InvestorID"] = "string" +#寮浠撴墜缁垂鐜 +CSgitFtdcInstrumentCommissionRateField["OpenRatioByMoney"] = "float" +#寮浠撴墜缁垂 +CSgitFtdcInstrumentCommissionRateField["OpenRatioByVolume"] = "float" +#骞充粨鎵嬬画璐圭巼 +CSgitFtdcInstrumentCommissionRateField["CloseRatioByMoney"] = "float" +#骞充粨鎵嬬画璐 +CSgitFtdcInstrumentCommissionRateField["CloseRatioByVolume"] = "float" +#骞充粖鎵嬬画璐圭巼 +CSgitFtdcInstrumentCommissionRateField["CloseTodayRatioByMoney"] = "float" +#骞充粖鎵嬬画璐 +CSgitFtdcInstrumentCommissionRateField["CloseTodayRatioByVolume"] = "float" +structDict['CSgitFtdcInstrumentCommissionRateField'] = CSgitFtdcInstrumentCommissionRateField + + +#娣卞害琛屾儏 +CSgitFtdcDepthMarketDataField = {} +#浜ゆ槗鏃 +CSgitFtdcDepthMarketDataField["TradingDay"] = "string" +#鍚堢害浠g爜 +CSgitFtdcDepthMarketDataField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcDepthMarketDataField["ExchangeID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcDepthMarketDataField["ExchangeInstID"] = "string" +#鏈鏂颁环 +CSgitFtdcDepthMarketDataField["LastPrice"] = "float" +#涓婃缁撶畻浠 +CSgitFtdcDepthMarketDataField["PreSettlementPrice"] = "float" +#鏄ㄦ敹鐩 +CSgitFtdcDepthMarketDataField["PreClosePrice"] = "float" +#鏄ㄦ寔浠撻噺 +CSgitFtdcDepthMarketDataField["PreOpenInterest"] = "float" +#浠婂紑鐩 +CSgitFtdcDepthMarketDataField["OpenPrice"] = "float" +#鏈楂樹环 +CSgitFtdcDepthMarketDataField["HighestPrice"] = "float" +#鏈浣庝环 +CSgitFtdcDepthMarketDataField["LowestPrice"] = "float" +#鏁伴噺 +CSgitFtdcDepthMarketDataField["Volume"] = "int" +#鎴愪氦閲戦 +CSgitFtdcDepthMarketDataField["Turnover"] = "float" +#鎸佷粨閲 +CSgitFtdcDepthMarketDataField["OpenInterest"] = "float" +#浠婃敹鐩 +CSgitFtdcDepthMarketDataField["ClosePrice"] = "float" +#鏈缁撶畻浠 +CSgitFtdcDepthMarketDataField["SettlementPrice"] = "float" +#娑ㄥ仠鏉夸环 +CSgitFtdcDepthMarketDataField["UpperLimitPrice"] = "float" +#璺屽仠鏉夸环 +CSgitFtdcDepthMarketDataField["LowerLimitPrice"] = "float" +#鏄ㄨ櫄瀹炲害 +CSgitFtdcDepthMarketDataField["PreDelta"] = "float" +#浠婅櫄瀹炲害 +CSgitFtdcDepthMarketDataField["CurrDelta"] = "float" +#鏈鍚庝慨鏀规椂闂 +CSgitFtdcDepthMarketDataField["UpdateTime"] = "string" +#鏈鍚庝慨鏀规绉 +CSgitFtdcDepthMarketDataField["UpdateMillisec"] = "int" +#鐢充拱浠蜂竴 +CSgitFtdcDepthMarketDataField["BidPrice1"] = "float" +#鐢充拱閲忎竴 +CSgitFtdcDepthMarketDataField["BidVolume1"] = "int" +#鐢冲崠浠蜂竴 +CSgitFtdcDepthMarketDataField["AskPrice1"] = "float" +#鐢冲崠閲忎竴 +CSgitFtdcDepthMarketDataField["AskVolume1"] = "int" +#鐢充拱浠蜂簩 +CSgitFtdcDepthMarketDataField["BidPrice2"] = "float" +#鐢充拱閲忎簩 +CSgitFtdcDepthMarketDataField["BidVolume2"] = "int" +#鐢冲崠浠蜂簩 +CSgitFtdcDepthMarketDataField["AskPrice2"] = "float" +#鐢冲崠閲忎簩 +CSgitFtdcDepthMarketDataField["AskVolume2"] = "int" +#鐢充拱浠蜂笁 +CSgitFtdcDepthMarketDataField["BidPrice3"] = "float" +#鐢充拱閲忎笁 +CSgitFtdcDepthMarketDataField["BidVolume3"] = "int" +#鐢冲崠浠蜂笁 +CSgitFtdcDepthMarketDataField["AskPrice3"] = "float" +#鐢冲崠閲忎笁 +CSgitFtdcDepthMarketDataField["AskVolume3"] = "int" +#鐢充拱浠峰洓 +CSgitFtdcDepthMarketDataField["BidPrice4"] = "float" +#鐢充拱閲忓洓 +CSgitFtdcDepthMarketDataField["BidVolume4"] = "int" +#鐢冲崠浠峰洓 +CSgitFtdcDepthMarketDataField["AskPrice4"] = "float" +#鐢冲崠閲忓洓 +CSgitFtdcDepthMarketDataField["AskVolume4"] = "int" +#鐢充拱浠蜂簲 +CSgitFtdcDepthMarketDataField["BidPrice5"] = "float" +#鐢充拱閲忎簲 +CSgitFtdcDepthMarketDataField["BidVolume5"] = "int" +#鐢冲崠浠蜂簲 +CSgitFtdcDepthMarketDataField["AskPrice5"] = "float" +#鐢冲崠閲忎簲 +CSgitFtdcDepthMarketDataField["AskVolume5"] = "int" +#褰撴棩鍧囦环 +CSgitFtdcDepthMarketDataField["AveragePrice"] = "float" +structDict['CSgitFtdcDepthMarketDataField'] = CSgitFtdcDepthMarketDataField + + +#鎶曡祫鑰呭悎绾︿氦鏄撴潈闄 +CSgitFtdcInstrumentTradingRightField = {} +#鍚堢害浠g爜 +CSgitFtdcInstrumentTradingRightField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcInstrumentTradingRightField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInstrumentTradingRightField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInstrumentTradingRightField["InvestorID"] = "string" +#浜ゆ槗鏉冮檺 +CSgitFtdcInstrumentTradingRightField["TradingRight"] = "char" +structDict['CSgitFtdcInstrumentTradingRightField'] = CSgitFtdcInstrumentTradingRightField + + +#缁忕邯鍏徃鐢ㄦ埛 +CSgitFtdcBrokerUserField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerUserField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcBrokerUserField["UserID"] = "string" +#鐢ㄦ埛鍚嶇О +CSgitFtdcBrokerUserField["UserName"] = "string" +#鐢ㄦ埛绫诲瀷 +CSgitFtdcBrokerUserField["UserType"] = "char" +#鏄惁娲昏穬 +CSgitFtdcBrokerUserField["IsActive"] = "int" +#鏄惁浣跨敤浠ょ墝 +CSgitFtdcBrokerUserField["IsUsingOTP"] = "int" +structDict['CSgitFtdcBrokerUserField'] = CSgitFtdcBrokerUserField + + +#缁忕邯鍏徃鐢ㄦ埛鍙d护 +CSgitFtdcBrokerUserPasswordField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerUserPasswordField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcBrokerUserPasswordField["UserID"] = "string" +#瀵嗙爜 +CSgitFtdcBrokerUserPasswordField["Password"] = "string" +structDict['CSgitFtdcBrokerUserPasswordField'] = CSgitFtdcBrokerUserPasswordField + + +#缁忕邯鍏徃鐢ㄦ埛鍔熻兘鏉冮檺 +CSgitFtdcBrokerUserFunctionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerUserFunctionField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcBrokerUserFunctionField["UserID"] = "string" +#缁忕邯鍏徃鍔熻兘浠g爜 +CSgitFtdcBrokerUserFunctionField["BrokerFunctionCode"] = "char" +structDict['CSgitFtdcBrokerUserFunctionField'] = CSgitFtdcBrokerUserFunctionField + + +#浜ゆ槗鎵浜ゆ槗鍛樻姤鐩樻満 +CSgitFtdcTraderOfferField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcTraderOfferField["ExchangeID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcTraderOfferField["TraderID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcTraderOfferField["ParticipantID"] = "string" +#瀵嗙爜 +CSgitFtdcTraderOfferField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcTraderOfferField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcTraderOfferField["OrderLocalID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樿繛鎺ョ姸鎬 +CSgitFtdcTraderOfferField["TraderConnectStatus"] = "char" +#鍙戝嚭杩炴帴璇锋眰鐨勬棩鏈 +CSgitFtdcTraderOfferField["ConnectRequestDate"] = "string" +#鍙戝嚭杩炴帴璇锋眰鐨勬椂闂 +CSgitFtdcTraderOfferField["ConnectRequestTime"] = "string" +#涓婃鎶ュ憡鏃ユ湡 +CSgitFtdcTraderOfferField["LastReportDate"] = "string" +#涓婃鎶ュ憡鏃堕棿 +CSgitFtdcTraderOfferField["LastReportTime"] = "string" +#瀹屾垚杩炴帴鏃ユ湡 +CSgitFtdcTraderOfferField["ConnectDate"] = "string" +#瀹屾垚杩炴帴鏃堕棿 +CSgitFtdcTraderOfferField["ConnectTime"] = "string" +#鍚姩鏃ユ湡 +CSgitFtdcTraderOfferField["StartDate"] = "string" +#鍚姩鏃堕棿 +CSgitFtdcTraderOfferField["StartTime"] = "string" +#浜ゆ槗鏃 +CSgitFtdcTraderOfferField["TradingDay"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcTraderOfferField["BrokerID"] = "string" +#鏈腑浣嶆渶澶ф垚浜ょ紪鍙 +CSgitFtdcTraderOfferField["MaxTradeID"] = "string" +#鏈腑浣嶆渶澶ф姤鍗曞鎷 +CSgitFtdcTraderOfferField["MaxOrderMessageReference"] = "string" +structDict['CSgitFtdcTraderOfferField'] = CSgitFtdcTraderOfferField + + +#鎶曡祫鑰呯粨绠楃粨鏋 +CSgitFtdcSettlementInfoField = {} +#浜ゆ槗鏃 +CSgitFtdcSettlementInfoField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcSettlementInfoField["SettlementID"] = "int" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSettlementInfoField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSettlementInfoField["InvestorID"] = "string" +#搴忓彿 +CSgitFtdcSettlementInfoField["SequenceNo"] = "int" +#娑堟伅姝f枃 +CSgitFtdcSettlementInfoField["Content"] = "string" +structDict['CSgitFtdcSettlementInfoField'] = CSgitFtdcSettlementInfoField + + +#鍚堢害淇濊瘉閲戠巼璋冩暣 +CSgitFtdcInstrumentMarginRateAdjustField = {} +#鍚堢害浠g爜 +CSgitFtdcInstrumentMarginRateAdjustField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcInstrumentMarginRateAdjustField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInstrumentMarginRateAdjustField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInstrumentMarginRateAdjustField["InvestorID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcInstrumentMarginRateAdjustField["HedgeFlag"] = "char" +#澶氬ご淇濊瘉閲戠巼 +CSgitFtdcInstrumentMarginRateAdjustField["LongMarginRatioByMoney"] = "float" +#澶氬ご淇濊瘉閲戣垂 +CSgitFtdcInstrumentMarginRateAdjustField["LongMarginRatioByVolume"] = "float" +#绌哄ご淇濊瘉閲戠巼 +CSgitFtdcInstrumentMarginRateAdjustField["ShortMarginRatioByMoney"] = "float" +#绌哄ご淇濊瘉閲戣垂 +CSgitFtdcInstrumentMarginRateAdjustField["ShortMarginRatioByVolume"] = "float" +#鏄惁鐩稿浜ゆ槗鎵鏀跺彇 +CSgitFtdcInstrumentMarginRateAdjustField["IsRelative"] = "int" +structDict['CSgitFtdcInstrumentMarginRateAdjustField'] = CSgitFtdcInstrumentMarginRateAdjustField + + +#浜ゆ槗鎵淇濊瘉閲戠巼 +CSgitFtdcExchangeMarginRateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcExchangeMarginRateField["BrokerID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcExchangeMarginRateField["InstrumentID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcExchangeMarginRateField["HedgeFlag"] = "char" +#澶氬ご淇濊瘉閲戠巼 +CSgitFtdcExchangeMarginRateField["LongMarginRatioByMoney"] = "float" +#澶氬ご淇濊瘉閲戣垂 +CSgitFtdcExchangeMarginRateField["LongMarginRatioByVolume"] = "float" +#绌哄ご淇濊瘉閲戠巼 +CSgitFtdcExchangeMarginRateField["ShortMarginRatioByMoney"] = "float" +#绌哄ご淇濊瘉閲戣垂 +CSgitFtdcExchangeMarginRateField["ShortMarginRatioByVolume"] = "float" +structDict['CSgitFtdcExchangeMarginRateField'] = CSgitFtdcExchangeMarginRateField + + +#浜ゆ槗鎵淇濊瘉閲戠巼璋冩暣 +CSgitFtdcExchangeMarginRateAdjustField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcExchangeMarginRateAdjustField["BrokerID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcExchangeMarginRateAdjustField["InstrumentID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcExchangeMarginRateAdjustField["HedgeFlag"] = "char" +#璺熼殢浜ゆ槗鎵鎶曡祫鑰呭澶翠繚璇侀噾鐜 +CSgitFtdcExchangeMarginRateAdjustField["LongMarginRatioByMoney"] = "float" +#璺熼殢浜ゆ槗鎵鎶曡祫鑰呭澶翠繚璇侀噾璐 +CSgitFtdcExchangeMarginRateAdjustField["LongMarginRatioByVolume"] = "float" +#璺熼殢浜ゆ槗鎵鎶曡祫鑰呯┖澶翠繚璇侀噾鐜 +CSgitFtdcExchangeMarginRateAdjustField["ShortMarginRatioByMoney"] = "float" +#璺熼殢浜ゆ槗鎵鎶曡祫鑰呯┖澶翠繚璇侀噾璐 +CSgitFtdcExchangeMarginRateAdjustField["ShortMarginRatioByVolume"] = "float" +#浜ゆ槗鎵澶氬ご淇濊瘉閲戠巼 +CSgitFtdcExchangeMarginRateAdjustField["ExchLongMarginRatioByMoney"] = "float" +#浜ゆ槗鎵澶氬ご淇濊瘉閲戣垂 +CSgitFtdcExchangeMarginRateAdjustField["ExchLongMarginRatioByVolume"] = "float" +#浜ゆ槗鎵绌哄ご淇濊瘉閲戠巼 +CSgitFtdcExchangeMarginRateAdjustField["ExchShortMarginRatioByMoney"] = "float" +#浜ゆ槗鎵绌哄ご淇濊瘉閲戣垂 +CSgitFtdcExchangeMarginRateAdjustField["ExchShortMarginRatioByVolume"] = "float" +#涓嶈窡闅忎氦鏄撴墍鎶曡祫鑰呭澶翠繚璇侀噾鐜 +CSgitFtdcExchangeMarginRateAdjustField["NoLongMarginRatioByMoney"] = "float" +#涓嶈窡闅忎氦鏄撴墍鎶曡祫鑰呭澶翠繚璇侀噾璐 +CSgitFtdcExchangeMarginRateAdjustField["NoLongMarginRatioByVolume"] = "float" +#涓嶈窡闅忎氦鏄撴墍鎶曡祫鑰呯┖澶翠繚璇侀噾鐜 +CSgitFtdcExchangeMarginRateAdjustField["NoShortMarginRatioByMoney"] = "float" +#涓嶈窡闅忎氦鏄撴墍鎶曡祫鑰呯┖澶翠繚璇侀噾璐 +CSgitFtdcExchangeMarginRateAdjustField["NoShortMarginRatioByVolume"] = "float" +structDict['CSgitFtdcExchangeMarginRateAdjustField'] = CSgitFtdcExchangeMarginRateAdjustField + + +#缁撶畻寮曠敤 +CSgitFtdcSettlementRefField = {} +#浜ゆ槗鏃 +CSgitFtdcSettlementRefField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcSettlementRefField["SettlementID"] = "int" +structDict['CSgitFtdcSettlementRefField'] = CSgitFtdcSettlementRefField + + +#褰撳墠鏃堕棿 +CSgitFtdcCurrentTimeField = {} +#褰撳墠鏃ユ湡 +CSgitFtdcCurrentTimeField["CurrDate"] = "string" +#褰撳墠鏃堕棿 +CSgitFtdcCurrentTimeField["CurrTime"] = "string" +#褰撳墠鏃堕棿锛堟绉掞級 +CSgitFtdcCurrentTimeField["CurrMillisec"] = "int" +structDict['CSgitFtdcCurrentTimeField'] = CSgitFtdcCurrentTimeField + + +#閫氳闃舵 +CSgitFtdcCommPhaseField = {} +#浜ゆ槗鏃 +CSgitFtdcCommPhaseField["TradingDay"] = "string" +#閫氳鏃舵缂栧彿 +CSgitFtdcCommPhaseField["CommPhaseNo"] = "short" +structDict['CSgitFtdcCommPhaseField'] = CSgitFtdcCommPhaseField + + +#鐧诲綍淇℃伅 +CSgitFtdcLoginInfoField = {} +#鍓嶇疆缂栧彿 +CSgitFtdcLoginInfoField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcLoginInfoField["SessionID"] = "int" +#缁忕邯鍏徃浠g爜 +CSgitFtdcLoginInfoField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcLoginInfoField["UserID"] = "string" +#鐧诲綍鏃ユ湡 +CSgitFtdcLoginInfoField["LoginDate"] = "string" +#鐧诲綍鏃堕棿 +CSgitFtdcLoginInfoField["LoginTime"] = "string" +#IP鍦板潃 +CSgitFtdcLoginInfoField["IPAddress"] = "string" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcLoginInfoField["UserProductInfo"] = "string" +#鎺ュ彛绔骇鍝佷俊鎭 +CSgitFtdcLoginInfoField["InterfaceProductInfo"] = "string" +#鍗忚淇℃伅 +CSgitFtdcLoginInfoField["ProtocolInfo"] = "string" +#绯荤粺鍚嶇О +CSgitFtdcLoginInfoField["SystemName"] = "string" +#瀵嗙爜 +CSgitFtdcLoginInfoField["Password"] = "string" +#鏈澶ф姤鍗曞紩鐢 +CSgitFtdcLoginInfoField["MaxOrderRef"] = "string" +#涓婃湡鎵鏃堕棿 +CSgitFtdcLoginInfoField["SHFETime"] = "string" +#澶у晢鎵鏃堕棿 +CSgitFtdcLoginInfoField["DCETime"] = "string" +#閮戝晢鎵鏃堕棿 +CSgitFtdcLoginInfoField["CZCETime"] = "string" +#涓噾鎵鏃堕棿 +CSgitFtdcLoginInfoField["FFEXTime"] = "string" +#Mac鍦板潃 +CSgitFtdcLoginInfoField["MacAddress"] = "string" +#鍔ㄦ佸瘑鐮 +CSgitFtdcLoginInfoField["OneTimePassword"] = "string" +structDict['CSgitFtdcLoginInfoField'] = CSgitFtdcLoginInfoField + + +#鐧诲綍淇℃伅 +CSgitFtdcLogoutAllField = {} +#鍓嶇疆缂栧彿 +CSgitFtdcLogoutAllField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcLogoutAllField["SessionID"] = "int" +#绯荤粺鍚嶇О +CSgitFtdcLogoutAllField["SystemName"] = "string" +structDict['CSgitFtdcLogoutAllField'] = CSgitFtdcLogoutAllField + + +#鍓嶇疆鐘舵 +CSgitFtdcFrontStatusField = {} +#鍓嶇疆缂栧彿 +CSgitFtdcFrontStatusField["FrontID"] = "int" +#涓婃鎶ュ憡鏃ユ湡 +CSgitFtdcFrontStatusField["LastReportDate"] = "string" +#涓婃鎶ュ憡鏃堕棿 +CSgitFtdcFrontStatusField["LastReportTime"] = "string" +#鏄惁娲昏穬 +CSgitFtdcFrontStatusField["IsActive"] = "int" +structDict['CSgitFtdcFrontStatusField'] = CSgitFtdcFrontStatusField + + +#鐢ㄦ埛鍙d护鍙樻洿 +CSgitFtdcUserPasswordUpdateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcUserPasswordUpdateField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcUserPasswordUpdateField["UserID"] = "string" +#鍘熸潵鐨勫彛浠 +CSgitFtdcUserPasswordUpdateField["OldPassword"] = "string" +#鏂扮殑鍙d护 +CSgitFtdcUserPasswordUpdateField["NewPassword"] = "string" +structDict['CSgitFtdcUserPasswordUpdateField'] = CSgitFtdcUserPasswordUpdateField + + +#杈撳叆鎶ュ崟 +CSgitFtdcInputOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcInputOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInputOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcInputOrderField["InstrumentID"] = "string" +#鎶ュ崟寮曠敤 +CSgitFtdcInputOrderField["OrderRef"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcInputOrderField["UserID"] = "string" +#鎶ュ崟浠锋牸鏉′欢 +CSgitFtdcInputOrderField["OrderPriceType"] = "char" +#涔板崠鏂瑰悜 +CSgitFtdcInputOrderField["Direction"] = "char" +#缁勫悎寮骞虫爣蹇 +CSgitFtdcInputOrderField["CombOffsetFlag"] = "string" +#缁勫悎鎶曟満濂椾繚鏍囧織 +CSgitFtdcInputOrderField["CombHedgeFlag"] = "string" +#浠锋牸 +CSgitFtdcInputOrderField["LimitPrice"] = "float" +#鏁伴噺 +CSgitFtdcInputOrderField["VolumeTotalOriginal"] = "int" +#鏈夋晥鏈熺被鍨 +CSgitFtdcInputOrderField["TimeCondition"] = "char" +#GTD鏃ユ湡 +CSgitFtdcInputOrderField["GTDDate"] = "string" +#鎴愪氦閲忕被鍨 +CSgitFtdcInputOrderField["VolumeCondition"] = "char" +#鏈灏忔垚浜ら噺 +CSgitFtdcInputOrderField["MinVolume"] = "int" +#瑙﹀彂鏉′欢 +CSgitFtdcInputOrderField["ContingentCondition"] = "char" +#姝㈡崯浠 +CSgitFtdcInputOrderField["StopPrice"] = "float" +#寮哄钩鍘熷洜 +CSgitFtdcInputOrderField["ForceCloseReason"] = "char" +#鑷姩鎸傝捣鏍囧織 +CSgitFtdcInputOrderField["IsAutoSuspend"] = "int" +#涓氬姟鍗曞厓 +CSgitFtdcInputOrderField["BusinessUnit"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcInputOrderField["RequestID"] = "int" +#鐢ㄦ埛寮鸿瘎鏍囧織 +CSgitFtdcInputOrderField["UserForceClose"] = "int" +structDict['CSgitFtdcInputOrderField'] = CSgitFtdcInputOrderField + + +#鎶ュ崟 +CSgitFtdcOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcOrderField["InstrumentID"] = "string" +#鎶ュ崟寮曠敤 +CSgitFtdcOrderField["OrderRef"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcOrderField["UserID"] = "string" +#鎶ュ崟浠锋牸鏉′欢 +CSgitFtdcOrderField["OrderPriceType"] = "char" +#涔板崠鏂瑰悜 +CSgitFtdcOrderField["Direction"] = "char" +#缁勫悎寮骞虫爣蹇 +CSgitFtdcOrderField["CombOffsetFlag"] = "string" +#缁勫悎鎶曟満濂椾繚鏍囧織 +CSgitFtdcOrderField["CombHedgeFlag"] = "string" +#浠锋牸 +CSgitFtdcOrderField["LimitPrice"] = "float" +#鏁伴噺 +CSgitFtdcOrderField["VolumeTotalOriginal"] = "int" +#鏈夋晥鏈熺被鍨 +CSgitFtdcOrderField["TimeCondition"] = "char" +#GTD鏃ユ湡 +CSgitFtdcOrderField["GTDDate"] = "string" +#鎴愪氦閲忕被鍨 +CSgitFtdcOrderField["VolumeCondition"] = "char" +#鏈灏忔垚浜ら噺 +CSgitFtdcOrderField["MinVolume"] = "int" +#瑙﹀彂鏉′欢 +CSgitFtdcOrderField["ContingentCondition"] = "char" +#姝㈡崯浠 +CSgitFtdcOrderField["StopPrice"] = "float" +#寮哄钩鍘熷洜 +CSgitFtdcOrderField["ForceCloseReason"] = "char" +#鑷姩鎸傝捣鏍囧織 +CSgitFtdcOrderField["IsAutoSuspend"] = "int" +#涓氬姟鍗曞厓 +CSgitFtdcOrderField["BusinessUnit"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcOrderField["RequestID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcOrderField["OrderLocalID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcOrderField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcOrderField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcOrderField["ClientID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcOrderField["ExchangeInstID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcOrderField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcOrderField["InstallID"] = "int" +#鎶ュ崟鎻愪氦鐘舵 +CSgitFtdcOrderField["OrderSubmitStatus"] = "char" +#鎶ュ崟鎻愮ず搴忓彿 +CSgitFtdcOrderField["NotifySequence"] = "int" +#浜ゆ槗鏃 +CSgitFtdcOrderField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcOrderField["SettlementID"] = "int" +#鎶ュ崟缂栧彿 +CSgitFtdcOrderField["OrderSysID"] = "string" +#鎶ュ崟鏉ユ簮 +CSgitFtdcOrderField["OrderSource"] = "char" +#鎶ュ崟鐘舵 +CSgitFtdcOrderField["OrderStatus"] = "char" +#鎶ュ崟绫诲瀷 +CSgitFtdcOrderField["OrderType"] = "char" +#浠婃垚浜ゆ暟閲 +CSgitFtdcOrderField["VolumeTraded"] = "int" +#鍓╀綑鏁伴噺 +CSgitFtdcOrderField["VolumeTotal"] = "int" +#鎶ュ崟鏃ユ湡 +CSgitFtdcOrderField["InsertDate"] = "string" +#濮旀墭鏃堕棿 +CSgitFtdcOrderField["InsertTime"] = "string" +#婵娲绘椂闂 +CSgitFtdcOrderField["ActiveTime"] = "string" +#鎸傝捣鏃堕棿 +CSgitFtdcOrderField["SuspendTime"] = "string" +#鏈鍚庝慨鏀规椂闂 +CSgitFtdcOrderField["UpdateTime"] = "string" +#鎾ら攢鏃堕棿 +CSgitFtdcOrderField["CancelTime"] = "string" +#鏈鍚庝慨鏀逛氦鏄撴墍浜ゆ槗鍛樹唬鐮 +CSgitFtdcOrderField["ActiveTraderID"] = "string" +#缁撶畻浼氬憳缂栧彿 +CSgitFtdcOrderField["ClearingPartID"] = "string" +#搴忓彿 +CSgitFtdcOrderField["SequenceNo"] = "int" +#鍓嶇疆缂栧彿 +CSgitFtdcOrderField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcOrderField["SessionID"] = "int" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcOrderField["UserProductInfo"] = "string" +#鐘舵佷俊鎭 +CSgitFtdcOrderField["StatusMsg"] = "string" +#鐢ㄦ埛寮鸿瘎鏍囧織 +CSgitFtdcOrderField["UserForceClose"] = "int" +#鎿嶄綔鐢ㄦ埛浠g爜 +CSgitFtdcOrderField["ActiveUserID"] = "string" +#缁忕邯鍏徃鎶ュ崟缂栧彿 +CSgitFtdcOrderField["BrokerOrderSeq"] = "int" +#鐩稿叧鎶ュ崟 +CSgitFtdcOrderField["RelativeOrderSysID"] = "string" +structDict['CSgitFtdcOrderField'] = CSgitFtdcOrderField + + +#浜ゆ槗鎵鎶ュ崟 +CSgitFtdcExchangeOrderField = {} +#鎶ュ崟浠锋牸鏉′欢 +CSgitFtdcExchangeOrderField["OrderPriceType"] = "char" +#涔板崠鏂瑰悜 +CSgitFtdcExchangeOrderField["Direction"] = "char" +#缁勫悎寮骞虫爣蹇 +CSgitFtdcExchangeOrderField["CombOffsetFlag"] = "string" +#缁勫悎鎶曟満濂椾繚鏍囧織 +CSgitFtdcExchangeOrderField["CombHedgeFlag"] = "string" +#浠锋牸 +CSgitFtdcExchangeOrderField["LimitPrice"] = "float" +#鏁伴噺 +CSgitFtdcExchangeOrderField["VolumeTotalOriginal"] = "int" +#鏈夋晥鏈熺被鍨 +CSgitFtdcExchangeOrderField["TimeCondition"] = "char" +#GTD鏃ユ湡 +CSgitFtdcExchangeOrderField["GTDDate"] = "string" +#鎴愪氦閲忕被鍨 +CSgitFtdcExchangeOrderField["VolumeCondition"] = "char" +#鏈灏忔垚浜ら噺 +CSgitFtdcExchangeOrderField["MinVolume"] = "int" +#瑙﹀彂鏉′欢 +CSgitFtdcExchangeOrderField["ContingentCondition"] = "char" +#姝㈡崯浠 +CSgitFtdcExchangeOrderField["StopPrice"] = "float" +#寮哄钩鍘熷洜 +CSgitFtdcExchangeOrderField["ForceCloseReason"] = "char" +#鑷姩鎸傝捣鏍囧織 +CSgitFtdcExchangeOrderField["IsAutoSuspend"] = "int" +#涓氬姟鍗曞厓 +CSgitFtdcExchangeOrderField["BusinessUnit"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcExchangeOrderField["RequestID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderField["OrderLocalID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeOrderField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcExchangeOrderField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcExchangeOrderField["ClientID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcExchangeOrderField["ExchangeInstID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcExchangeOrderField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcExchangeOrderField["InstallID"] = "int" +#鎶ュ崟鎻愪氦鐘舵 +CSgitFtdcExchangeOrderField["OrderSubmitStatus"] = "char" +#鎶ュ崟鎻愮ず搴忓彿 +CSgitFtdcExchangeOrderField["NotifySequence"] = "int" +#浜ゆ槗鏃 +CSgitFtdcExchangeOrderField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcExchangeOrderField["SettlementID"] = "int" +#鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderField["OrderSysID"] = "string" +#鎶ュ崟鏉ユ簮 +CSgitFtdcExchangeOrderField["OrderSource"] = "char" +#鎶ュ崟鐘舵 +CSgitFtdcExchangeOrderField["OrderStatus"] = "char" +#鎶ュ崟绫诲瀷 +CSgitFtdcExchangeOrderField["OrderType"] = "char" +#浠婃垚浜ゆ暟閲 +CSgitFtdcExchangeOrderField["VolumeTraded"] = "int" +#鍓╀綑鏁伴噺 +CSgitFtdcExchangeOrderField["VolumeTotal"] = "int" +#鎶ュ崟鏃ユ湡 +CSgitFtdcExchangeOrderField["InsertDate"] = "string" +#濮旀墭鏃堕棿 +CSgitFtdcExchangeOrderField["InsertTime"] = "string" +#婵娲绘椂闂 +CSgitFtdcExchangeOrderField["ActiveTime"] = "string" +#鎸傝捣鏃堕棿 +CSgitFtdcExchangeOrderField["SuspendTime"] = "string" +#鏈鍚庝慨鏀规椂闂 +CSgitFtdcExchangeOrderField["UpdateTime"] = "string" +#鎾ら攢鏃堕棿 +CSgitFtdcExchangeOrderField["CancelTime"] = "string" +#鏈鍚庝慨鏀逛氦鏄撴墍浜ゆ槗鍛樹唬鐮 +CSgitFtdcExchangeOrderField["ActiveTraderID"] = "string" +#缁撶畻浼氬憳缂栧彿 +CSgitFtdcExchangeOrderField["ClearingPartID"] = "string" +#搴忓彿 +CSgitFtdcExchangeOrderField["SequenceNo"] = "int" +structDict['CSgitFtdcExchangeOrderField'] = CSgitFtdcExchangeOrderField + + +#浜ゆ槗鎵鎶ュ崟鎻掑叆澶辫触 +CSgitFtdcExchangeOrderInsertErrorField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeOrderInsertErrorField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcExchangeOrderInsertErrorField["ParticipantID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcExchangeOrderInsertErrorField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcExchangeOrderInsertErrorField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderInsertErrorField["OrderLocalID"] = "string" +#閿欒浠g爜 +CSgitFtdcExchangeOrderInsertErrorField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcExchangeOrderInsertErrorField["ErrorMsg"] = "string" +structDict['CSgitFtdcExchangeOrderInsertErrorField'] = CSgitFtdcExchangeOrderInsertErrorField + + +#杈撳叆鎶ュ崟鎿嶄綔 +CSgitFtdcInputOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcInputOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInputOrderActionField["InvestorID"] = "string" +#鎶ュ崟鎿嶄綔寮曠敤 +CSgitFtdcInputOrderActionField["OrderActionRef"] = "int" +#鎶ュ崟寮曠敤 +CSgitFtdcInputOrderActionField["OrderRef"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcInputOrderActionField["RequestID"] = "int" +#鍓嶇疆缂栧彿 +CSgitFtdcInputOrderActionField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcInputOrderActionField["SessionID"] = "int" +#浜ゆ槗鎵浠g爜 +CSgitFtdcInputOrderActionField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcInputOrderActionField["OrderSysID"] = "string" +#鎿嶄綔鏍囧織 +CSgitFtdcInputOrderActionField["ActionFlag"] = "char" +#浠锋牸 +CSgitFtdcInputOrderActionField["LimitPrice"] = "float" +#鏁伴噺鍙樺寲 +CSgitFtdcInputOrderActionField["VolumeChange"] = "int" +#鐢ㄦ埛浠g爜 +CSgitFtdcInputOrderActionField["UserID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcInputOrderActionField["InstrumentID"] = "string" +structDict['CSgitFtdcInputOrderActionField'] = CSgitFtdcInputOrderActionField + + +#鎶ュ崟鎿嶄綔 +CSgitFtdcOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcOrderActionField["InvestorID"] = "string" +#鎶ュ崟鎿嶄綔寮曠敤 +CSgitFtdcOrderActionField["OrderActionRef"] = "int" +#鎶ュ崟寮曠敤 +CSgitFtdcOrderActionField["OrderRef"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcOrderActionField["RequestID"] = "int" +#鍓嶇疆缂栧彿 +CSgitFtdcOrderActionField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcOrderActionField["SessionID"] = "int" +#浜ゆ槗鎵浠g爜 +CSgitFtdcOrderActionField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcOrderActionField["OrderSysID"] = "string" +#鎿嶄綔鏍囧織 +CSgitFtdcOrderActionField["ActionFlag"] = "char" +#浠锋牸 +CSgitFtdcOrderActionField["LimitPrice"] = "float" +#鏁伴噺鍙樺寲 +CSgitFtdcOrderActionField["VolumeChange"] = "int" +#鎿嶄綔鏃ユ湡 +CSgitFtdcOrderActionField["ActionDate"] = "string" +#鎿嶄綔鏃堕棿 +CSgitFtdcOrderActionField["ActionTime"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcOrderActionField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcOrderActionField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcOrderActionField["OrderLocalID"] = "string" +#鎿嶄綔鏈湴缂栧彿 +CSgitFtdcOrderActionField["ActionLocalID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcOrderActionField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcOrderActionField["ClientID"] = "string" +#涓氬姟鍗曞厓 +CSgitFtdcOrderActionField["BusinessUnit"] = "string" +#鎶ュ崟鎿嶄綔鐘舵 +CSgitFtdcOrderActionField["OrderActionStatus"] = "char" +#鐢ㄦ埛浠g爜 +CSgitFtdcOrderActionField["UserID"] = "string" +#鐘舵佷俊鎭 +CSgitFtdcOrderActionField["StatusMsg"] = "string" +#鍚堢害浠g爜 +CSgitFtdcOrderActionField["InstrumentID"] = "string" +structDict['CSgitFtdcOrderActionField'] = CSgitFtdcOrderActionField + + +#浜ゆ槗鎵鎶ュ崟鎿嶄綔 +CSgitFtdcExchangeOrderActionField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeOrderActionField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderActionField["OrderSysID"] = "string" +#鎿嶄綔鏍囧織 +CSgitFtdcExchangeOrderActionField["ActionFlag"] = "char" +#浠锋牸 +CSgitFtdcExchangeOrderActionField["LimitPrice"] = "float" +#鏁伴噺鍙樺寲 +CSgitFtdcExchangeOrderActionField["VolumeChange"] = "int" +#鎿嶄綔鏃ユ湡 +CSgitFtdcExchangeOrderActionField["ActionDate"] = "string" +#鎿嶄綔鏃堕棿 +CSgitFtdcExchangeOrderActionField["ActionTime"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcExchangeOrderActionField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcExchangeOrderActionField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderActionField["OrderLocalID"] = "string" +#鎿嶄綔鏈湴缂栧彿 +CSgitFtdcExchangeOrderActionField["ActionLocalID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcExchangeOrderActionField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcExchangeOrderActionField["ClientID"] = "string" +#涓氬姟鍗曞厓 +CSgitFtdcExchangeOrderActionField["BusinessUnit"] = "string" +#鎶ュ崟鎿嶄綔鐘舵 +CSgitFtdcExchangeOrderActionField["OrderActionStatus"] = "char" +#鐢ㄦ埛浠g爜 +CSgitFtdcExchangeOrderActionField["UserID"] = "string" +structDict['CSgitFtdcExchangeOrderActionField'] = CSgitFtdcExchangeOrderActionField + + +#浜ゆ槗鎵鎶ュ崟鎿嶄綔澶辫触 +CSgitFtdcExchangeOrderActionErrorField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeOrderActionErrorField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderActionErrorField["OrderSysID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcExchangeOrderActionErrorField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcExchangeOrderActionErrorField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcExchangeOrderActionErrorField["OrderLocalID"] = "string" +#鎿嶄綔鏈湴缂栧彿 +CSgitFtdcExchangeOrderActionErrorField["ActionLocalID"] = "string" +#閿欒浠g爜 +CSgitFtdcExchangeOrderActionErrorField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcExchangeOrderActionErrorField["ErrorMsg"] = "string" +structDict['CSgitFtdcExchangeOrderActionErrorField'] = CSgitFtdcExchangeOrderActionErrorField + + +#浜ゆ槗鎵鎴愪氦 +CSgitFtdcExchangeTradeField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeTradeField["ExchangeID"] = "string" +#鎴愪氦缂栧彿 +CSgitFtdcExchangeTradeField["TradeID"] = "string" +#涔板崠鏂瑰悜 +CSgitFtdcExchangeTradeField["Direction"] = "char" +#鎶ュ崟缂栧彿 +CSgitFtdcExchangeTradeField["OrderSysID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcExchangeTradeField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcExchangeTradeField["ClientID"] = "string" +#浜ゆ槗瑙掕壊 +CSgitFtdcExchangeTradeField["TradingRole"] = "char" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcExchangeTradeField["ExchangeInstID"] = "string" +#寮骞虫爣蹇 +CSgitFtdcExchangeTradeField["OffsetFlag"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcExchangeTradeField["HedgeFlag"] = "char" +#浠锋牸 +CSgitFtdcExchangeTradeField["Price"] = "float" +#鏁伴噺 +CSgitFtdcExchangeTradeField["Volume"] = "int" +#鎴愪氦鏃舵湡 +CSgitFtdcExchangeTradeField["TradeDate"] = "string" +#鎴愪氦鏃堕棿 +CSgitFtdcExchangeTradeField["TradeTime"] = "string" +#鎴愪氦绫诲瀷 +CSgitFtdcExchangeTradeField["TradeType"] = "char" +#鎴愪氦浠锋潵婧 +CSgitFtdcExchangeTradeField["PriceSource"] = "char" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcExchangeTradeField["TraderID"] = "string" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcExchangeTradeField["OrderLocalID"] = "string" +#缁撶畻浼氬憳缂栧彿 +CSgitFtdcExchangeTradeField["ClearingPartID"] = "string" +#涓氬姟鍗曞厓 +CSgitFtdcExchangeTradeField["BusinessUnit"] = "string" +#搴忓彿 +CSgitFtdcExchangeTradeField["SequenceNo"] = "int" +#鎴愪氦鏉ユ簮 +CSgitFtdcExchangeTradeField["TradeSource"] = "char" +structDict['CSgitFtdcExchangeTradeField'] = CSgitFtdcExchangeTradeField + + +#鎴愪氦 +CSgitFtdcTradeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradeField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcTradeField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcTradeField["InstrumentID"] = "string" +#鎶ュ崟寮曠敤 +CSgitFtdcTradeField["OrderRef"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcTradeField["UserID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcTradeField["ExchangeID"] = "string" +#鎴愪氦缂栧彿 +CSgitFtdcTradeField["TradeID"] = "string" +#涔板崠鏂瑰悜 +CSgitFtdcTradeField["Direction"] = "char" +#鎶ュ崟缂栧彿 +CSgitFtdcTradeField["OrderSysID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcTradeField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcTradeField["ClientID"] = "string" +#浜ゆ槗瑙掕壊 +CSgitFtdcTradeField["TradingRole"] = "char" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcTradeField["ExchangeInstID"] = "string" +#寮骞虫爣蹇 +CSgitFtdcTradeField["OffsetFlag"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcTradeField["HedgeFlag"] = "char" +#浠锋牸 +CSgitFtdcTradeField["Price"] = "float" +#鏁伴噺 +CSgitFtdcTradeField["Volume"] = "int" +#鎴愪氦鏃舵湡 +CSgitFtdcTradeField["TradeDate"] = "string" +#鎴愪氦鏃堕棿 +CSgitFtdcTradeField["TradeTime"] = "string" +#鎴愪氦绫诲瀷 +CSgitFtdcTradeField["TradeType"] = "char" +#鎴愪氦浠锋潵婧 +CSgitFtdcTradeField["PriceSource"] = "char" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcTradeField["TraderID"] = "string" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcTradeField["OrderLocalID"] = "string" +#缁撶畻浼氬憳缂栧彿 +CSgitFtdcTradeField["ClearingPartID"] = "string" +#涓氬姟鍗曞厓 +CSgitFtdcTradeField["BusinessUnit"] = "string" +#搴忓彿 +CSgitFtdcTradeField["SequenceNo"] = "int" +#浜ゆ槗鏃 +CSgitFtdcTradeField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcTradeField["SettlementID"] = "int" +#缁忕邯鍏徃鎶ュ崟缂栧彿 +CSgitFtdcTradeField["BrokerOrderSeq"] = "int" +#鎴愪氦鏉ユ簮 +CSgitFtdcTradeField["TradeSource"] = "char" +structDict['CSgitFtdcTradeField'] = CSgitFtdcTradeField + + +#鐢ㄦ埛浼氳瘽 +CSgitFtdcUserSessionField = {} +#鍓嶇疆缂栧彿 +CSgitFtdcUserSessionField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcUserSessionField["SessionID"] = "int" +#缁忕邯鍏徃浠g爜 +CSgitFtdcUserSessionField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcUserSessionField["UserID"] = "string" +#鐧诲綍鏃ユ湡 +CSgitFtdcUserSessionField["LoginDate"] = "string" +#鐧诲綍鏃堕棿 +CSgitFtdcUserSessionField["LoginTime"] = "string" +#IP鍦板潃 +CSgitFtdcUserSessionField["IPAddress"] = "string" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcUserSessionField["UserProductInfo"] = "string" +#鎺ュ彛绔骇鍝佷俊鎭 +CSgitFtdcUserSessionField["InterfaceProductInfo"] = "string" +#鍗忚淇℃伅 +CSgitFtdcUserSessionField["ProtocolInfo"] = "string" +#Mac鍦板潃 +CSgitFtdcUserSessionField["MacAddress"] = "string" +structDict['CSgitFtdcUserSessionField'] = CSgitFtdcUserSessionField + + +#鏌ヨ鏈澶ф姤鍗曟暟閲 +CSgitFtdcQueryMaxOrderVolumeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQueryMaxOrderVolumeField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQueryMaxOrderVolumeField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQueryMaxOrderVolumeField["InstrumentID"] = "string" +#涔板崠鏂瑰悜 +CSgitFtdcQueryMaxOrderVolumeField["Direction"] = "char" +#寮骞虫爣蹇 +CSgitFtdcQueryMaxOrderVolumeField["OffsetFlag"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcQueryMaxOrderVolumeField["HedgeFlag"] = "char" +#鏈澶у厑璁告姤鍗曟暟閲 +CSgitFtdcQueryMaxOrderVolumeField["MaxVolume"] = "int" +structDict['CSgitFtdcQueryMaxOrderVolumeField'] = CSgitFtdcQueryMaxOrderVolumeField + + +#鎶曡祫鑰呯粨绠楃粨鏋滅‘璁や俊鎭 +CSgitFtdcSettlementInfoConfirmField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcSettlementInfoConfirmField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSettlementInfoConfirmField["InvestorID"] = "string" +#纭鏃ユ湡 +CSgitFtdcSettlementInfoConfirmField["ConfirmDate"] = "string" +#纭鏃堕棿 +CSgitFtdcSettlementInfoConfirmField["ConfirmTime"] = "string" +structDict['CSgitFtdcSettlementInfoConfirmField'] = CSgitFtdcSettlementInfoConfirmField + + +#鍑哄叆閲戝悓姝 +CSgitFtdcSyncDepositField = {} +#鍑哄叆閲戞祦姘村彿 +CSgitFtdcSyncDepositField["DepositSeqNo"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncDepositField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncDepositField["InvestorID"] = "string" +#鍏ラ噾閲戦 +CSgitFtdcSyncDepositField["Deposit"] = "float" +#鏄惁寮哄埗杩涜 +CSgitFtdcSyncDepositField["IsForce"] = "int" +structDict['CSgitFtdcSyncDepositField'] = CSgitFtdcSyncDepositField + + +#缁忕邯鍏徃鍚屾 +CSgitFtdcBrokerSyncField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerSyncField["BrokerID"] = "string" +structDict['CSgitFtdcBrokerSyncField'] = CSgitFtdcBrokerSyncField + + +#姝e湪鍚屾涓殑鎶曡祫鑰 +CSgitFtdcSyncingInvestorField = {} +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncingInvestorField["InvestorID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingInvestorField["BrokerID"] = "string" +#鎶曡祫鑰呭垎缁勪唬鐮 +CSgitFtdcSyncingInvestorField["InvestorGroupID"] = "string" +#鎶曡祫鑰呭悕绉 +CSgitFtdcSyncingInvestorField["InvestorName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcSyncingInvestorField["IdentifiedCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcSyncingInvestorField["IdentifiedCardNo"] = "string" +#鏄惁娲昏穬 +CSgitFtdcSyncingInvestorField["IsActive"] = "int" +#鑱旂郴鐢佃瘽 +CSgitFtdcSyncingInvestorField["Telephone"] = "string" +#閫氳鍦板潃 +CSgitFtdcSyncingInvestorField["Address"] = "string" +#寮鎴锋棩鏈 +CSgitFtdcSyncingInvestorField["OpenDate"] = "string" +#鎵嬫満 +CSgitFtdcSyncingInvestorField["Mobile"] = "string" +#鎵嬬画璐圭巼妯℃澘浠g爜 +CSgitFtdcSyncingInvestorField["CommModelID"] = "string" +structDict['CSgitFtdcSyncingInvestorField'] = CSgitFtdcSyncingInvestorField + + +#姝e湪鍚屾涓殑浜ゆ槗浠g爜 +CSgitFtdcSyncingTradingCodeField = {} +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncingTradingCodeField["InvestorID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingTradingCodeField["BrokerID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcSyncingTradingCodeField["ExchangeID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcSyncingTradingCodeField["ClientID"] = "string" +#鏄惁娲昏穬 +CSgitFtdcSyncingTradingCodeField["IsActive"] = "int" +#浜ゆ槗缂栫爜绫诲瀷 +CSgitFtdcSyncingTradingCodeField["ClientIDType"] = "char" +structDict['CSgitFtdcSyncingTradingCodeField'] = CSgitFtdcSyncingTradingCodeField + + +#姝e湪鍚屾涓殑鎶曡祫鑰呭垎缁 +CSgitFtdcSyncingInvestorGroupField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingInvestorGroupField["BrokerID"] = "string" +#鎶曡祫鑰呭垎缁勪唬鐮 +CSgitFtdcSyncingInvestorGroupField["InvestorGroupID"] = "string" +#鎶曡祫鑰呭垎缁勫悕绉 +CSgitFtdcSyncingInvestorGroupField["InvestorGroupName"] = "string" +structDict['CSgitFtdcSyncingInvestorGroupField'] = CSgitFtdcSyncingInvestorGroupField + + +#姝e湪鍚屾涓殑浜ゆ槗璐﹀彿 +CSgitFtdcSyncingTradingAccountField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingTradingAccountField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcSyncingTradingAccountField["AccountID"] = "string" +#涓婃璐ㄦ娂閲戦 +CSgitFtdcSyncingTradingAccountField["PreMortgage"] = "float" +#涓婃淇$敤棰濆害 +CSgitFtdcSyncingTradingAccountField["PreCredit"] = "float" +#涓婃瀛樻棰 +CSgitFtdcSyncingTradingAccountField["PreDeposit"] = "float" +#涓婃缁撶畻鍑嗗閲 +CSgitFtdcSyncingTradingAccountField["PreBalance"] = "float" +#涓婃鍗犵敤鐨勪繚璇侀噾 +CSgitFtdcSyncingTradingAccountField["PreMargin"] = "float" +#鍒╂伅鍩烘暟 +CSgitFtdcSyncingTradingAccountField["InterestBase"] = "float" +#鍒╂伅鏀跺叆 +CSgitFtdcSyncingTradingAccountField["Interest"] = "float" +#鍏ラ噾閲戦 +CSgitFtdcSyncingTradingAccountField["Deposit"] = "float" +#鍑洪噾閲戦 +CSgitFtdcSyncingTradingAccountField["Withdraw"] = "float" +#鍐荤粨鐨勪繚璇侀噾 +CSgitFtdcSyncingTradingAccountField["FrozenMargin"] = "float" +#鍐荤粨鐨勮祫閲 +CSgitFtdcSyncingTradingAccountField["FrozenCash"] = "float" +#鍐荤粨鐨勬墜缁垂 +CSgitFtdcSyncingTradingAccountField["FrozenCommission"] = "float" +#褰撳墠淇濊瘉閲戞婚 +CSgitFtdcSyncingTradingAccountField["CurrMargin"] = "float" +#璧勯噾宸 +CSgitFtdcSyncingTradingAccountField["CashIn"] = "float" +#鎵嬬画璐 +CSgitFtdcSyncingTradingAccountField["Commission"] = "float" +#骞充粨鐩堜簭 +CSgitFtdcSyncingTradingAccountField["CloseProfit"] = "float" +#鎸佷粨鐩堜簭 +CSgitFtdcSyncingTradingAccountField["PositionProfit"] = "float" +#鏈熻揣缁撶畻鍑嗗閲 +CSgitFtdcSyncingTradingAccountField["Balance"] = "float" +#鍙敤璧勯噾 +CSgitFtdcSyncingTradingAccountField["Available"] = "float" +#鍙彇璧勯噾 +CSgitFtdcSyncingTradingAccountField["WithdrawQuota"] = "float" +#鍩烘湰鍑嗗閲 +CSgitFtdcSyncingTradingAccountField["Reserve"] = "float" +#浜ゆ槗鏃 +CSgitFtdcSyncingTradingAccountField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcSyncingTradingAccountField["SettlementID"] = "int" +#淇$敤棰濆害 +CSgitFtdcSyncingTradingAccountField["Credit"] = "float" +#璐ㄦ娂閲戦 +CSgitFtdcSyncingTradingAccountField["Mortgage"] = "float" +#浜ゆ槗鎵淇濊瘉閲 +CSgitFtdcSyncingTradingAccountField["ExchangeMargin"] = "float" +#鎶曡祫鑰呬氦鍓蹭繚璇侀噾 +CSgitFtdcSyncingTradingAccountField["DeliveryMargin"] = "float" +#浜ゆ槗鎵浜ゅ壊淇濊瘉閲 +CSgitFtdcSyncingTradingAccountField["ExchangeDeliveryMargin"] = "float" +structDict['CSgitFtdcSyncingTradingAccountField'] = CSgitFtdcSyncingTradingAccountField + + +#姝e湪鍚屾涓殑鎶曡祫鑰呮寔浠 +CSgitFtdcSyncingInvestorPositionField = {} +#鍚堢害浠g爜 +CSgitFtdcSyncingInvestorPositionField["InstrumentID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingInvestorPositionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncingInvestorPositionField["InvestorID"] = "string" +#鎸佷粨澶氱┖鏂瑰悜 +CSgitFtdcSyncingInvestorPositionField["PosiDirection"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcSyncingInvestorPositionField["HedgeFlag"] = "char" +#鎸佷粨鏃ユ湡 +CSgitFtdcSyncingInvestorPositionField["PositionDate"] = "char" +#涓婃棩鎸佷粨 +CSgitFtdcSyncingInvestorPositionField["YdPosition"] = "int" +#浠婃棩鎸佷粨 +CSgitFtdcSyncingInvestorPositionField["Position"] = "int" +#澶氬ご鍐荤粨 +CSgitFtdcSyncingInvestorPositionField["LongFrozen"] = "int" +#绌哄ご鍐荤粨 +CSgitFtdcSyncingInvestorPositionField["ShortFrozen"] = "int" +#寮浠撳喕缁撻噾棰 +CSgitFtdcSyncingInvestorPositionField["LongFrozenAmount"] = "float" +#寮浠撳喕缁撻噾棰 +CSgitFtdcSyncingInvestorPositionField["ShortFrozenAmount"] = "float" +#寮浠撻噺 +CSgitFtdcSyncingInvestorPositionField["OpenVolume"] = "int" +#骞充粨閲 +CSgitFtdcSyncingInvestorPositionField["CloseVolume"] = "int" +#寮浠撻噾棰 +CSgitFtdcSyncingInvestorPositionField["OpenAmount"] = "float" +#骞充粨閲戦 +CSgitFtdcSyncingInvestorPositionField["CloseAmount"] = "float" +#鎸佷粨鎴愭湰 +CSgitFtdcSyncingInvestorPositionField["PositionCost"] = "float" +#涓婃鍗犵敤鐨勪繚璇侀噾 +CSgitFtdcSyncingInvestorPositionField["PreMargin"] = "float" +#鍗犵敤鐨勪繚璇侀噾 +CSgitFtdcSyncingInvestorPositionField["UseMargin"] = "float" +#鍐荤粨鐨勪繚璇侀噾 +CSgitFtdcSyncingInvestorPositionField["FrozenMargin"] = "float" +#鍐荤粨鐨勮祫閲 +CSgitFtdcSyncingInvestorPositionField["FrozenCash"] = "float" +#鍐荤粨鐨勬墜缁垂 +CSgitFtdcSyncingInvestorPositionField["FrozenCommission"] = "float" +#璧勯噾宸 +CSgitFtdcSyncingInvestorPositionField["CashIn"] = "float" +#鎵嬬画璐 +CSgitFtdcSyncingInvestorPositionField["Commission"] = "float" +#骞充粨鐩堜簭 +CSgitFtdcSyncingInvestorPositionField["CloseProfit"] = "float" +#鎸佷粨鐩堜簭 +CSgitFtdcSyncingInvestorPositionField["PositionProfit"] = "float" +#涓婃缁撶畻浠 +CSgitFtdcSyncingInvestorPositionField["PreSettlementPrice"] = "float" +#鏈缁撶畻浠 +CSgitFtdcSyncingInvestorPositionField["SettlementPrice"] = "float" +#浜ゆ槗鏃 +CSgitFtdcSyncingInvestorPositionField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcSyncingInvestorPositionField["SettlementID"] = "int" +#寮浠撴垚鏈 +CSgitFtdcSyncingInvestorPositionField["OpenCost"] = "float" +#浜ゆ槗鎵淇濊瘉閲 +CSgitFtdcSyncingInvestorPositionField["ExchangeMargin"] = "float" +#缁勫悎鎴愪氦褰㈡垚鐨勬寔浠 +CSgitFtdcSyncingInvestorPositionField["CombPosition"] = "int" +#缁勫悎澶氬ご鍐荤粨 +CSgitFtdcSyncingInvestorPositionField["CombLongFrozen"] = "int" +#缁勫悎绌哄ご鍐荤粨 +CSgitFtdcSyncingInvestorPositionField["CombShortFrozen"] = "int" +#閫愭棩鐩競骞充粨鐩堜簭 +CSgitFtdcSyncingInvestorPositionField["CloseProfitByDate"] = "float" +#閫愮瑪瀵瑰啿骞充粨鐩堜簭 +CSgitFtdcSyncingInvestorPositionField["CloseProfitByTrade"] = "float" +#浠婃棩鎸佷粨 +CSgitFtdcSyncingInvestorPositionField["TodayPosition"] = "int" +#淇濊瘉閲戠巼 +CSgitFtdcSyncingInvestorPositionField["MarginRateByMoney"] = "float" +#淇濊瘉閲戠巼(鎸夋墜鏁) +CSgitFtdcSyncingInvestorPositionField["MarginRateByVolume"] = "float" +structDict['CSgitFtdcSyncingInvestorPositionField'] = CSgitFtdcSyncingInvestorPositionField + + +#姝e湪鍚屾涓殑鍚堢害淇濊瘉閲戠巼 +CSgitFtdcSyncingInstrumentMarginRateField = {} +#鍚堢害浠g爜 +CSgitFtdcSyncingInstrumentMarginRateField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcSyncingInstrumentMarginRateField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingInstrumentMarginRateField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncingInstrumentMarginRateField["InvestorID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcSyncingInstrumentMarginRateField["HedgeFlag"] = "char" +#澶氬ご淇濊瘉閲戠巼 +CSgitFtdcSyncingInstrumentMarginRateField["LongMarginRatioByMoney"] = "float" +#澶氬ご淇濊瘉閲戣垂 +CSgitFtdcSyncingInstrumentMarginRateField["LongMarginRatioByVolume"] = "float" +#绌哄ご淇濊瘉閲戠巼 +CSgitFtdcSyncingInstrumentMarginRateField["ShortMarginRatioByMoney"] = "float" +#绌哄ご淇濊瘉閲戣垂 +CSgitFtdcSyncingInstrumentMarginRateField["ShortMarginRatioByVolume"] = "float" +#鏄惁鐩稿浜ゆ槗鎵鏀跺彇 +CSgitFtdcSyncingInstrumentMarginRateField["IsRelative"] = "int" +structDict['CSgitFtdcSyncingInstrumentMarginRateField'] = CSgitFtdcSyncingInstrumentMarginRateField + + +#姝e湪鍚屾涓殑鍚堢害鎵嬬画璐圭巼 +CSgitFtdcSyncingInstrumentCommissionRateField = {} +#鍚堢害浠g爜 +CSgitFtdcSyncingInstrumentCommissionRateField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcSyncingInstrumentCommissionRateField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingInstrumentCommissionRateField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncingInstrumentCommissionRateField["InvestorID"] = "string" +#寮浠撴墜缁垂鐜 +CSgitFtdcSyncingInstrumentCommissionRateField["OpenRatioByMoney"] = "float" +#寮浠撴墜缁垂 +CSgitFtdcSyncingInstrumentCommissionRateField["OpenRatioByVolume"] = "float" +#骞充粨鎵嬬画璐圭巼 +CSgitFtdcSyncingInstrumentCommissionRateField["CloseRatioByMoney"] = "float" +#骞充粨鎵嬬画璐 +CSgitFtdcSyncingInstrumentCommissionRateField["CloseRatioByVolume"] = "float" +#骞充粖鎵嬬画璐圭巼 +CSgitFtdcSyncingInstrumentCommissionRateField["CloseTodayRatioByMoney"] = "float" +#骞充粖鎵嬬画璐 +CSgitFtdcSyncingInstrumentCommissionRateField["CloseTodayRatioByVolume"] = "float" +structDict['CSgitFtdcSyncingInstrumentCommissionRateField'] = CSgitFtdcSyncingInstrumentCommissionRateField + + +#姝e湪鍚屾涓殑鍚堢害浜ゆ槗鏉冮檺 +CSgitFtdcSyncingInstrumentTradingRightField = {} +#鍚堢害浠g爜 +CSgitFtdcSyncingInstrumentTradingRightField["InstrumentID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcSyncingInstrumentTradingRightField["InvestorRange"] = "char" +#缁忕邯鍏徃浠g爜 +CSgitFtdcSyncingInstrumentTradingRightField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcSyncingInstrumentTradingRightField["InvestorID"] = "string" +#浜ゆ槗鏉冮檺 +CSgitFtdcSyncingInstrumentTradingRightField["TradingRight"] = "char" +structDict['CSgitFtdcSyncingInstrumentTradingRightField'] = CSgitFtdcSyncingInstrumentTradingRightField + + +#鏌ヨ鎶ュ崟 +CSgitFtdcQryOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryOrderField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryOrderField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcQryOrderField["OrderSysID"] = "string" +#寮濮嬫椂闂 +CSgitFtdcQryOrderField["InsertTimeStart"] = "string" +#缁撴潫鏃堕棿 +CSgitFtdcQryOrderField["InsertTimeEnd"] = "string" +structDict['CSgitFtdcQryOrderField'] = CSgitFtdcQryOrderField + + +#鏌ヨ鎴愪氦 +CSgitFtdcQryTradeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryTradeField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryTradeField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryTradeField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryTradeField["ExchangeID"] = "string" +#鎴愪氦缂栧彿 +CSgitFtdcQryTradeField["TradeID"] = "string" +#寮濮嬫椂闂 +CSgitFtdcQryTradeField["TradeTimeStart"] = "string" +#缁撴潫鏃堕棿 +CSgitFtdcQryTradeField["TradeTimeEnd"] = "string" +structDict['CSgitFtdcQryTradeField'] = CSgitFtdcQryTradeField + + +#鏌ヨ鎶曡祫鑰呮寔浠 +CSgitFtdcQryInvestorPositionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInvestorPositionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInvestorPositionField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryInvestorPositionField["InstrumentID"] = "string" +structDict['CSgitFtdcQryInvestorPositionField'] = CSgitFtdcQryInvestorPositionField + + +#鏌ヨ璧勯噾璐︽埛 +CSgitFtdcQryTradingAccountField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryTradingAccountField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryTradingAccountField["InvestorID"] = "string" +structDict['CSgitFtdcQryTradingAccountField'] = CSgitFtdcQryTradingAccountField + + +#鏌ヨ鎶曡祫鑰 +CSgitFtdcQryInvestorField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInvestorField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInvestorField["InvestorID"] = "string" +structDict['CSgitFtdcQryInvestorField'] = CSgitFtdcQryInvestorField + + +#鏌ヨ浜ゆ槗缂栫爜 +CSgitFtdcQryTradingCodeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryTradingCodeField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryTradingCodeField["InvestorID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryTradingCodeField["ExchangeID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcQryTradingCodeField["ClientID"] = "string" +#浜ゆ槗缂栫爜绫诲瀷 +CSgitFtdcQryTradingCodeField["ClientIDType"] = "char" +structDict['CSgitFtdcQryTradingCodeField'] = CSgitFtdcQryTradingCodeField + + +#鏌ヨ浜ゆ槗缂栫爜 +CSgitFtdcQryInvestorGroupField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInvestorGroupField["BrokerID"] = "string" +structDict['CSgitFtdcQryInvestorGroupField'] = CSgitFtdcQryInvestorGroupField + + +#鏌ヨ浜ゆ槗缂栫爜 +CSgitFtdcQryInstrumentMarginRateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInstrumentMarginRateField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInstrumentMarginRateField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryInstrumentMarginRateField["InstrumentID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcQryInstrumentMarginRateField["HedgeFlag"] = "char" +structDict['CSgitFtdcQryInstrumentMarginRateField'] = CSgitFtdcQryInstrumentMarginRateField + + +#鏌ヨ浜ゆ槗缂栫爜 +CSgitFtdcQryInstrumentCommissionRateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInstrumentCommissionRateField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInstrumentCommissionRateField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryInstrumentCommissionRateField["InstrumentID"] = "string" +structDict['CSgitFtdcQryInstrumentCommissionRateField'] = CSgitFtdcQryInstrumentCommissionRateField + + +#鏌ヨ浜ゆ槗缂栫爜 +CSgitFtdcQryInstrumentTradingRightField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInstrumentTradingRightField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInstrumentTradingRightField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryInstrumentTradingRightField["InstrumentID"] = "string" +structDict['CSgitFtdcQryInstrumentTradingRightField'] = CSgitFtdcQryInstrumentTradingRightField + + +#鏌ヨ缁忕邯鍏徃 +CSgitFtdcQryBrokerField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryBrokerField["BrokerID"] = "string" +structDict['CSgitFtdcQryBrokerField'] = CSgitFtdcQryBrokerField + + +#鏌ヨ浜ゆ槗鍛 +CSgitFtdcQryTraderField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryTraderField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcQryTraderField["ParticipantID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcQryTraderField["TraderID"] = "string" +structDict['CSgitFtdcQryTraderField'] = CSgitFtdcQryTraderField + + +#鏌ヨ缁忕邯鍏徃浼氬憳浠g爜 +CSgitFtdcQryPartBrokerField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryPartBrokerField["ExchangeID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryPartBrokerField["BrokerID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcQryPartBrokerField["ParticipantID"] = "string" +structDict['CSgitFtdcQryPartBrokerField'] = CSgitFtdcQryPartBrokerField + + +#鏌ヨ绠$悊鐢ㄦ埛鍔熻兘鏉冮檺 +CSgitFtdcQrySuperUserFunctionField = {} +#鐢ㄦ埛浠g爜 +CSgitFtdcQrySuperUserFunctionField["UserID"] = "string" +structDict['CSgitFtdcQrySuperUserFunctionField'] = CSgitFtdcQrySuperUserFunctionField + + +#鏌ヨ鐢ㄦ埛浼氳瘽 +CSgitFtdcQryUserSessionField = {} +#鍓嶇疆缂栧彿 +CSgitFtdcQryUserSessionField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcQryUserSessionField["SessionID"] = "int" +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryUserSessionField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcQryUserSessionField["UserID"] = "string" +structDict['CSgitFtdcQryUserSessionField'] = CSgitFtdcQryUserSessionField + + +#鏌ヨ鍓嶇疆鐘舵 +CSgitFtdcQryFrontStatusField = {} +#鍓嶇疆缂栧彿 +CSgitFtdcQryFrontStatusField["FrontID"] = "int" +structDict['CSgitFtdcQryFrontStatusField'] = CSgitFtdcQryFrontStatusField + + +#鏌ヨ浜ゆ槗鎵鎶ュ崟 +CSgitFtdcQryExchangeOrderField = {} +#浼氬憳浠g爜 +CSgitFtdcQryExchangeOrderField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcQryExchangeOrderField["ClientID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcQryExchangeOrderField["ExchangeInstID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryExchangeOrderField["ExchangeID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcQryExchangeOrderField["TraderID"] = "string" +structDict['CSgitFtdcQryExchangeOrderField'] = CSgitFtdcQryExchangeOrderField + + +#鏌ヨ鎶ュ崟鎿嶄綔 +CSgitFtdcQryOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryOrderActionField["InvestorID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryOrderActionField["ExchangeID"] = "string" +structDict['CSgitFtdcQryOrderActionField'] = CSgitFtdcQryOrderActionField + + +#鏌ヨ浜ゆ槗鎵鎶ュ崟鎿嶄綔 +CSgitFtdcQryExchangeOrderActionField = {} +#浼氬憳浠g爜 +CSgitFtdcQryExchangeOrderActionField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcQryExchangeOrderActionField["ClientID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryExchangeOrderActionField["ExchangeID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcQryExchangeOrderActionField["TraderID"] = "string" +structDict['CSgitFtdcQryExchangeOrderActionField'] = CSgitFtdcQryExchangeOrderActionField + + +#鏌ヨ绠$悊鐢ㄦ埛 +CSgitFtdcQrySuperUserField = {} +#鐢ㄦ埛浠g爜 +CSgitFtdcQrySuperUserField["UserID"] = "string" +structDict['CSgitFtdcQrySuperUserField'] = CSgitFtdcQrySuperUserField + + +#鏌ヨ浜ゆ槗鎵 +CSgitFtdcQryExchangeField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryExchangeField["ExchangeID"] = "string" +structDict['CSgitFtdcQryExchangeField'] = CSgitFtdcQryExchangeField + + +#鏌ヨ浜у搧 +CSgitFtdcQryProductField = {} +#浜у搧浠g爜 +CSgitFtdcQryProductField["ProductID"] = "string" +structDict['CSgitFtdcQryProductField'] = CSgitFtdcQryProductField + + +#鏌ヨ鍚堢害 +CSgitFtdcQryInstrumentField = {} +#鍚堢害浠g爜 +CSgitFtdcQryInstrumentField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryInstrumentField["ExchangeID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcQryInstrumentField["ExchangeInstID"] = "string" +#浜у搧浠g爜 +CSgitFtdcQryInstrumentField["ProductID"] = "string" +structDict['CSgitFtdcQryInstrumentField'] = CSgitFtdcQryInstrumentField + + +#鏌ヨ琛屾儏 +CSgitFtdcQryDepthMarketDataField = {} +#鍚堢害浠g爜 +CSgitFtdcQryDepthMarketDataField["InstrumentID"] = "string" +structDict['CSgitFtdcQryDepthMarketDataField'] = CSgitFtdcQryDepthMarketDataField + + +#鏌ヨ缁忕邯鍏徃鐢ㄦ埛 +CSgitFtdcQryBrokerUserField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryBrokerUserField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcQryBrokerUserField["UserID"] = "string" +structDict['CSgitFtdcQryBrokerUserField'] = CSgitFtdcQryBrokerUserField + + +#鏌ヨ缁忕邯鍏徃鐢ㄦ埛鏉冮檺 +CSgitFtdcQryBrokerUserFunctionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryBrokerUserFunctionField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcQryBrokerUserFunctionField["UserID"] = "string" +structDict['CSgitFtdcQryBrokerUserFunctionField'] = CSgitFtdcQryBrokerUserFunctionField + + +#鏌ヨ浜ゆ槗鍛樻姤鐩樻満 +CSgitFtdcQryTraderOfferField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryTraderOfferField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcQryTraderOfferField["ParticipantID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcQryTraderOfferField["TraderID"] = "string" +structDict['CSgitFtdcQryTraderOfferField'] = CSgitFtdcQryTraderOfferField + + +#鏌ヨ鍑哄叆閲戞祦姘 +CSgitFtdcQrySyncDepositField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQrySyncDepositField["BrokerID"] = "string" +#鍑哄叆閲戞祦姘村彿 +CSgitFtdcQrySyncDepositField["DepositSeqNo"] = "string" +structDict['CSgitFtdcQrySyncDepositField'] = CSgitFtdcQrySyncDepositField + + +#鏌ヨ鎶曡祫鑰呯粨绠楃粨鏋 +CSgitFtdcQrySettlementInfoField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQrySettlementInfoField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQrySettlementInfoField["InvestorID"] = "string" +#浜ゆ槗鏃 +CSgitFtdcQrySettlementInfoField["TradingDay"] = "string" +structDict['CSgitFtdcQrySettlementInfoField'] = CSgitFtdcQrySettlementInfoField + + +#鏌ヨ鎶ュ崟 +CSgitFtdcQryHisOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryHisOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryHisOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryHisOrderField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryHisOrderField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcQryHisOrderField["OrderSysID"] = "string" +#寮濮嬫椂闂 +CSgitFtdcQryHisOrderField["InsertTimeStart"] = "string" +#缁撴潫鏃堕棿 +CSgitFtdcQryHisOrderField["InsertTimeEnd"] = "string" +#浜ゆ槗鏃 +CSgitFtdcQryHisOrderField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcQryHisOrderField["SettlementID"] = "int" +structDict['CSgitFtdcQryHisOrderField'] = CSgitFtdcQryHisOrderField + + +#甯傚満琛屾儏 +CSgitFtdcMarketDataField = {} +#浜ゆ槗鏃 +CSgitFtdcMarketDataField["TradingDay"] = "string" +#鍚堢害浠g爜 +CSgitFtdcMarketDataField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcMarketDataField["ExchangeID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcMarketDataField["ExchangeInstID"] = "string" +#鏈鏂颁环 +CSgitFtdcMarketDataField["LastPrice"] = "float" +#涓婃缁撶畻浠 +CSgitFtdcMarketDataField["PreSettlementPrice"] = "float" +#鏄ㄦ敹鐩 +CSgitFtdcMarketDataField["PreClosePrice"] = "float" +#鏄ㄦ寔浠撻噺 +CSgitFtdcMarketDataField["PreOpenInterest"] = "float" +#浠婂紑鐩 +CSgitFtdcMarketDataField["OpenPrice"] = "float" +#鏈楂樹环 +CSgitFtdcMarketDataField["HighestPrice"] = "float" +#鏈浣庝环 +CSgitFtdcMarketDataField["LowestPrice"] = "float" +#鏁伴噺 +CSgitFtdcMarketDataField["Volume"] = "int" +#鎴愪氦閲戦 +CSgitFtdcMarketDataField["Turnover"] = "float" +#鎸佷粨閲 +CSgitFtdcMarketDataField["OpenInterest"] = "float" +#浠婃敹鐩 +CSgitFtdcMarketDataField["ClosePrice"] = "float" +#鏈缁撶畻浠 +CSgitFtdcMarketDataField["SettlementPrice"] = "float" +#娑ㄥ仠鏉夸环 +CSgitFtdcMarketDataField["UpperLimitPrice"] = "float" +#璺屽仠鏉夸环 +CSgitFtdcMarketDataField["LowerLimitPrice"] = "float" +#鏄ㄨ櫄瀹炲害 +CSgitFtdcMarketDataField["PreDelta"] = "float" +#浠婅櫄瀹炲害 +CSgitFtdcMarketDataField["CurrDelta"] = "float" +#鏈鍚庝慨鏀规椂闂 +CSgitFtdcMarketDataField["UpdateTime"] = "string" +#鏈鍚庝慨鏀规绉 +CSgitFtdcMarketDataField["UpdateMillisec"] = "int" +structDict['CSgitFtdcMarketDataField'] = CSgitFtdcMarketDataField + + +#琛屾儏鍩虹灞炴 +CSgitFtdcMarketDataBaseField = {} +#浜ゆ槗鏃 +CSgitFtdcMarketDataBaseField["TradingDay"] = "string" +#涓婃缁撶畻浠 +CSgitFtdcMarketDataBaseField["PreSettlementPrice"] = "float" +#鏄ㄦ敹鐩 +CSgitFtdcMarketDataBaseField["PreClosePrice"] = "float" +#鏄ㄦ寔浠撻噺 +CSgitFtdcMarketDataBaseField["PreOpenInterest"] = "float" +#鏄ㄨ櫄瀹炲害 +CSgitFtdcMarketDataBaseField["PreDelta"] = "float" +structDict['CSgitFtdcMarketDataBaseField'] = CSgitFtdcMarketDataBaseField + + +#琛屾儏闈欐佸睘鎬 +CSgitFtdcMarketDataStaticField = {} +#浠婂紑鐩 +CSgitFtdcMarketDataStaticField["OpenPrice"] = "float" +#鏈楂樹环 +CSgitFtdcMarketDataStaticField["HighestPrice"] = "float" +#鏈浣庝环 +CSgitFtdcMarketDataStaticField["LowestPrice"] = "float" +#浠婃敹鐩 +CSgitFtdcMarketDataStaticField["ClosePrice"] = "float" +#娑ㄥ仠鏉夸环 +CSgitFtdcMarketDataStaticField["UpperLimitPrice"] = "float" +#璺屽仠鏉夸环 +CSgitFtdcMarketDataStaticField["LowerLimitPrice"] = "float" +#鏈缁撶畻浠 +CSgitFtdcMarketDataStaticField["SettlementPrice"] = "float" +#浠婅櫄瀹炲害 +CSgitFtdcMarketDataStaticField["CurrDelta"] = "float" +structDict['CSgitFtdcMarketDataStaticField'] = CSgitFtdcMarketDataStaticField + + +#琛屾儏鏈鏂版垚浜ゅ睘鎬 +CSgitFtdcMarketDataLastMatchField = {} +#鏈鏂颁环 +CSgitFtdcMarketDataLastMatchField["LastPrice"] = "float" +#鏁伴噺 +CSgitFtdcMarketDataLastMatchField["Volume"] = "int" +#鎴愪氦閲戦 +CSgitFtdcMarketDataLastMatchField["Turnover"] = "float" +#鎸佷粨閲 +CSgitFtdcMarketDataLastMatchField["OpenInterest"] = "float" +structDict['CSgitFtdcMarketDataLastMatchField'] = CSgitFtdcMarketDataLastMatchField + + +#琛屾儏鏈浼樹环灞炴 +CSgitFtdcMarketDataBestPriceField = {} +#鐢充拱浠蜂竴 +CSgitFtdcMarketDataBestPriceField["BidPrice1"] = "float" +#鐢充拱閲忎竴 +CSgitFtdcMarketDataBestPriceField["BidVolume1"] = "int" +#鐢冲崠浠蜂竴 +CSgitFtdcMarketDataBestPriceField["AskPrice1"] = "float" +#鐢冲崠閲忎竴 +CSgitFtdcMarketDataBestPriceField["AskVolume1"] = "int" +structDict['CSgitFtdcMarketDataBestPriceField'] = CSgitFtdcMarketDataBestPriceField + + +#琛屾儏鐢充拱浜屻佷笁灞炴 +CSgitFtdcMarketDataBid23Field = {} +#鐢充拱浠蜂簩 +CSgitFtdcMarketDataBid23Field["BidPrice2"] = "float" +#鐢充拱閲忎簩 +CSgitFtdcMarketDataBid23Field["BidVolume2"] = "int" +#鐢充拱浠蜂笁 +CSgitFtdcMarketDataBid23Field["BidPrice3"] = "float" +#鐢充拱閲忎笁 +CSgitFtdcMarketDataBid23Field["BidVolume3"] = "int" +structDict['CSgitFtdcMarketDataBid23Field'] = CSgitFtdcMarketDataBid23Field + + +#琛屾儏鐢冲崠浜屻佷笁灞炴 +CSgitFtdcMarketDataAsk23Field = {} +#鐢冲崠浠蜂簩 +CSgitFtdcMarketDataAsk23Field["AskPrice2"] = "float" +#鐢冲崠閲忎簩 +CSgitFtdcMarketDataAsk23Field["AskVolume2"] = "int" +#鐢冲崠浠蜂笁 +CSgitFtdcMarketDataAsk23Field["AskPrice3"] = "float" +#鐢冲崠閲忎笁 +CSgitFtdcMarketDataAsk23Field["AskVolume3"] = "int" +structDict['CSgitFtdcMarketDataAsk23Field'] = CSgitFtdcMarketDataAsk23Field + + +#琛屾儏鐢充拱鍥涖佷簲灞炴 +CSgitFtdcMarketDataBid45Field = {} +#鐢充拱浠峰洓 +CSgitFtdcMarketDataBid45Field["BidPrice4"] = "float" +#鐢充拱閲忓洓 +CSgitFtdcMarketDataBid45Field["BidVolume4"] = "int" +#鐢充拱浠蜂簲 +CSgitFtdcMarketDataBid45Field["BidPrice5"] = "float" +#鐢充拱閲忎簲 +CSgitFtdcMarketDataBid45Field["BidVolume5"] = "int" +structDict['CSgitFtdcMarketDataBid45Field'] = CSgitFtdcMarketDataBid45Field + + +#琛屾儏鐢冲崠鍥涖佷簲灞炴 +CSgitFtdcMarketDataAsk45Field = {} +#鐢冲崠浠峰洓 +CSgitFtdcMarketDataAsk45Field["AskPrice4"] = "float" +#鐢冲崠閲忓洓 +CSgitFtdcMarketDataAsk45Field["AskVolume4"] = "int" +#鐢冲崠浠蜂簲 +CSgitFtdcMarketDataAsk45Field["AskPrice5"] = "float" +#鐢冲崠閲忎簲 +CSgitFtdcMarketDataAsk45Field["AskVolume5"] = "int" +structDict['CSgitFtdcMarketDataAsk45Field'] = CSgitFtdcMarketDataAsk45Field + + +#琛屾儏鏇存柊鏃堕棿灞炴 +CSgitFtdcMarketDataUpdateTimeField = {} +#鍚堢害浠g爜 +CSgitFtdcMarketDataUpdateTimeField["InstrumentID"] = "string" +#鏈鍚庝慨鏀规椂闂 +CSgitFtdcMarketDataUpdateTimeField["UpdateTime"] = "string" +#鏈鍚庝慨鏀规绉 +CSgitFtdcMarketDataUpdateTimeField["UpdateMillisec"] = "int" +structDict['CSgitFtdcMarketDataUpdateTimeField'] = CSgitFtdcMarketDataUpdateTimeField + + +#琛屾儏浜ゆ槗鎵浠g爜灞炴 +CSgitFtdcMarketDataExchangeField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcMarketDataExchangeField["ExchangeID"] = "float" +structDict['CSgitFtdcMarketDataExchangeField'] = CSgitFtdcMarketDataExchangeField + + +#鎸囧畾鐨勫悎绾 +CSgitFtdcSpecificInstrumentField = {} +#鍚堢害浠g爜 +CSgitFtdcSpecificInstrumentField["InstrumentID"] = "string" +structDict['CSgitFtdcSpecificInstrumentField'] = CSgitFtdcSpecificInstrumentField + + +#鍚堢害鐘舵 +CSgitFtdcInstrumentStatusField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcInstrumentStatusField["ExchangeID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcInstrumentStatusField["ExchangeInstID"] = "string" +#缁撶畻缁勪唬鐮 +CSgitFtdcInstrumentStatusField["SettlementGroupID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcInstrumentStatusField["InstrumentID"] = "string" +#鍚堢害浜ゆ槗鐘舵 +CSgitFtdcInstrumentStatusField["InstrumentStatus"] = "char" +#浜ゆ槗闃舵缂栧彿 +CSgitFtdcInstrumentStatusField["TradingSegmentSN"] = "int" +#杩涘叆鏈姸鎬佹椂闂 +CSgitFtdcInstrumentStatusField["EnterTime"] = "string" +#杩涘叆鏈姸鎬佸師鍥 +CSgitFtdcInstrumentStatusField["EnterReason"] = "char" +structDict['CSgitFtdcInstrumentStatusField'] = CSgitFtdcInstrumentStatusField + + +#鏌ヨ鍚堢害鐘舵 +CSgitFtdcQryInstrumentStatusField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryInstrumentStatusField["ExchangeID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcQryInstrumentStatusField["ExchangeInstID"] = "string" +structDict['CSgitFtdcQryInstrumentStatusField'] = CSgitFtdcQryInstrumentStatusField + + +#鎶曡祫鑰呰处鎴 +CSgitFtdcInvestorAccountField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorAccountField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInvestorAccountField["InvestorID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcInvestorAccountField["AccountID"] = "string" +structDict['CSgitFtdcInvestorAccountField'] = CSgitFtdcInvestorAccountField + + +#娴姩鐩堜簭绠楁硶 +CSgitFtdcPositionProfitAlgorithmField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcPositionProfitAlgorithmField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcPositionProfitAlgorithmField["AccountID"] = "string" +#鐩堜簭绠楁硶 +CSgitFtdcPositionProfitAlgorithmField["Algorithm"] = "char" +#澶囨敞 +CSgitFtdcPositionProfitAlgorithmField["Memo"] = "string" +structDict['CSgitFtdcPositionProfitAlgorithmField'] = CSgitFtdcPositionProfitAlgorithmField + + +#浼氬憳璧勯噾鎶樻墸 +CSgitFtdcDiscountField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcDiscountField["BrokerID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcDiscountField["InvestorRange"] = "char" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcDiscountField["InvestorID"] = "string" +#璧勯噾鎶樻墸姣斾緥 +CSgitFtdcDiscountField["Discount"] = "float" +structDict['CSgitFtdcDiscountField'] = CSgitFtdcDiscountField + + +#鏌ヨ杞笎閾惰 +CSgitFtdcQryTransferBankField = {} +#閾惰浠g爜 +CSgitFtdcQryTransferBankField["BankID"] = "string" +#閾惰鍒嗕腑蹇冧唬鐮 +CSgitFtdcQryTransferBankField["BankBrchID"] = "string" +structDict['CSgitFtdcQryTransferBankField'] = CSgitFtdcQryTransferBankField + + +#杞笎閾惰 +CSgitFtdcTransferBankField = {} +#閾惰浠g爜 +CSgitFtdcTransferBankField["BankID"] = "string" +#閾惰鍒嗕腑蹇冧唬鐮 +CSgitFtdcTransferBankField["BankBrchID"] = "string" +#閾惰鍚嶇О +CSgitFtdcTransferBankField["BankName"] = "string" +#鏄惁娲昏穬 +CSgitFtdcTransferBankField["IsActive"] = "int" +structDict['CSgitFtdcTransferBankField'] = CSgitFtdcTransferBankField + + +#鏌ヨ鎶曡祫鑰呮寔浠撴槑缁 +CSgitFtdcQryInvestorPositionDetailField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInvestorPositionDetailField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInvestorPositionDetailField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryInvestorPositionDetailField["InstrumentID"] = "string" +structDict['CSgitFtdcQryInvestorPositionDetailField'] = CSgitFtdcQryInvestorPositionDetailField + + +#鎶曡祫鑰呮寔浠撴槑缁 +CSgitFtdcInvestorPositionDetailField = {} +#鍚堢害浠g爜 +CSgitFtdcInvestorPositionDetailField["InstrumentID"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorPositionDetailField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInvestorPositionDetailField["InvestorID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcInvestorPositionDetailField["HedgeFlag"] = "char" +#涔板崠 +CSgitFtdcInvestorPositionDetailField["Direction"] = "char" +#寮浠撴棩鏈 +CSgitFtdcInvestorPositionDetailField["OpenDate"] = "string" +#鎴愪氦缂栧彿 +CSgitFtdcInvestorPositionDetailField["TradeID"] = "string" +#鏁伴噺 +CSgitFtdcInvestorPositionDetailField["Volume"] = "int" +#寮浠撲环 +CSgitFtdcInvestorPositionDetailField["OpenPrice"] = "float" +#浜ゆ槗鏃 +CSgitFtdcInvestorPositionDetailField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcInvestorPositionDetailField["SettlementID"] = "int" +#鎴愪氦绫诲瀷 +CSgitFtdcInvestorPositionDetailField["TradeType"] = "char" +#缁勫悎鍚堢害浠g爜 +CSgitFtdcInvestorPositionDetailField["CombInstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcInvestorPositionDetailField["ExchangeID"] = "string" +#閫愭棩鐩競骞充粨鐩堜簭 +CSgitFtdcInvestorPositionDetailField["CloseProfitByDate"] = "float" +#閫愮瑪瀵瑰啿骞充粨鐩堜簭 +CSgitFtdcInvestorPositionDetailField["CloseProfitByTrade"] = "float" +#閫愭棩鐩競鎸佷粨鐩堜簭 +CSgitFtdcInvestorPositionDetailField["PositionProfitByDate"] = "float" +#閫愮瑪瀵瑰啿鎸佷粨鐩堜簭 +CSgitFtdcInvestorPositionDetailField["PositionProfitByTrade"] = "float" +#鎶曡祫鑰呬繚璇侀噾 +CSgitFtdcInvestorPositionDetailField["Margin"] = "float" +#浜ゆ槗鎵淇濊瘉閲 +CSgitFtdcInvestorPositionDetailField["ExchMargin"] = "float" +#淇濊瘉閲戠巼 +CSgitFtdcInvestorPositionDetailField["MarginRateByMoney"] = "float" +#淇濊瘉閲戠巼(鎸夋墜鏁) +CSgitFtdcInvestorPositionDetailField["MarginRateByVolume"] = "float" +#鏄ㄧ粨绠椾环 +CSgitFtdcInvestorPositionDetailField["LastSettlementPrice"] = "float" +#缁撶畻浠 +CSgitFtdcInvestorPositionDetailField["SettlementPrice"] = "float" +#骞充粨閲 +CSgitFtdcInvestorPositionDetailField["CloseVolume"] = "int" +#骞充粨閲戦 +CSgitFtdcInvestorPositionDetailField["CloseAmount"] = "float" +structDict['CSgitFtdcInvestorPositionDetailField'] = CSgitFtdcInvestorPositionDetailField + + +#璧勯噾璐︽埛鍙d护鍩 +CSgitFtdcTradingAccountPasswordField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingAccountPasswordField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcTradingAccountPasswordField["AccountID"] = "string" +#瀵嗙爜 +CSgitFtdcTradingAccountPasswordField["Password"] = "string" +structDict['CSgitFtdcTradingAccountPasswordField'] = CSgitFtdcTradingAccountPasswordField + + +#浜ゆ槗鎵琛屾儏鎶ョ洏鏈 +CSgitFtdcMDTraderOfferField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcMDTraderOfferField["ExchangeID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcMDTraderOfferField["TraderID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcMDTraderOfferField["ParticipantID"] = "string" +#瀵嗙爜 +CSgitFtdcMDTraderOfferField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcMDTraderOfferField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcMDTraderOfferField["OrderLocalID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樿繛鎺ョ姸鎬 +CSgitFtdcMDTraderOfferField["TraderConnectStatus"] = "char" +#鍙戝嚭杩炴帴璇锋眰鐨勬棩鏈 +CSgitFtdcMDTraderOfferField["ConnectRequestDate"] = "string" +#鍙戝嚭杩炴帴璇锋眰鐨勬椂闂 +CSgitFtdcMDTraderOfferField["ConnectRequestTime"] = "string" +#涓婃鎶ュ憡鏃ユ湡 +CSgitFtdcMDTraderOfferField["LastReportDate"] = "string" +#涓婃鎶ュ憡鏃堕棿 +CSgitFtdcMDTraderOfferField["LastReportTime"] = "string" +#瀹屾垚杩炴帴鏃ユ湡 +CSgitFtdcMDTraderOfferField["ConnectDate"] = "string" +#瀹屾垚杩炴帴鏃堕棿 +CSgitFtdcMDTraderOfferField["ConnectTime"] = "string" +#鍚姩鏃ユ湡 +CSgitFtdcMDTraderOfferField["StartDate"] = "string" +#鍚姩鏃堕棿 +CSgitFtdcMDTraderOfferField["StartTime"] = "string" +#浜ゆ槗鏃 +CSgitFtdcMDTraderOfferField["TradingDay"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcMDTraderOfferField["BrokerID"] = "string" +#鏈腑浣嶆渶澶ф垚浜ょ紪鍙 +CSgitFtdcMDTraderOfferField["MaxTradeID"] = "string" +#鏈腑浣嶆渶澶ф姤鍗曞鎷 +CSgitFtdcMDTraderOfferField["MaxOrderMessageReference"] = "string" +structDict['CSgitFtdcMDTraderOfferField'] = CSgitFtdcMDTraderOfferField + + +#鏌ヨ琛屾儏鎶ョ洏鏈 +CSgitFtdcQryMDTraderOfferField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryMDTraderOfferField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcQryMDTraderOfferField["ParticipantID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcQryMDTraderOfferField["TraderID"] = "string" +structDict['CSgitFtdcQryMDTraderOfferField'] = CSgitFtdcQryMDTraderOfferField + + +#鏌ヨ瀹㈡埛閫氱煡 +CSgitFtdcQryNoticeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryNoticeField["BrokerID"] = "string" +structDict['CSgitFtdcQryNoticeField'] = CSgitFtdcQryNoticeField + + +#瀹㈡埛閫氱煡 +CSgitFtdcNoticeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcNoticeField["BrokerID"] = "string" +#娑堟伅姝f枃 +CSgitFtdcNoticeField["Content"] = "string" +#缁忕邯鍏徃閫氱煡鍐呭搴忓垪鍙 +CSgitFtdcNoticeField["SequenceLabel"] = "string" +structDict['CSgitFtdcNoticeField'] = CSgitFtdcNoticeField + + +#鐢ㄦ埛鏉冮檺 +CSgitFtdcUserRightField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcUserRightField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcUserRightField["UserID"] = "string" +#瀹㈡埛鏉冮檺绫诲瀷 +CSgitFtdcUserRightField["UserRightType"] = "char" +#鏄惁绂佹 +CSgitFtdcUserRightField["IsForbidden"] = "int" +structDict['CSgitFtdcUserRightField'] = CSgitFtdcUserRightField + + +#鏌ヨ缁撶畻淇℃伅纭鍩 +CSgitFtdcQrySettlementInfoConfirmField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQrySettlementInfoConfirmField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQrySettlementInfoConfirmField["InvestorID"] = "string" +structDict['CSgitFtdcQrySettlementInfoConfirmField'] = CSgitFtdcQrySettlementInfoConfirmField + + +#瑁呰浇缁撶畻淇℃伅 +CSgitFtdcLoadSettlementInfoField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcLoadSettlementInfoField["BrokerID"] = "string" +structDict['CSgitFtdcLoadSettlementInfoField'] = CSgitFtdcLoadSettlementInfoField + + +#缁忕邯鍏徃鍙彁璧勯噾绠楁硶琛 +CSgitFtdcBrokerWithdrawAlgorithmField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerWithdrawAlgorithmField["BrokerID"] = "string" +#鍙彁璧勯噾绠楁硶 +CSgitFtdcBrokerWithdrawAlgorithmField["WithdrawAlgorithm"] = "char" +#璧勯噾浣跨敤鐜 +CSgitFtdcBrokerWithdrawAlgorithmField["UsingRatio"] = "float" +#鍙彁鏄惁鍖呭惈骞充粨鐩堝埄 +CSgitFtdcBrokerWithdrawAlgorithmField["IncludeCloseProfit"] = "char" +#鏈棩鏃犱粨涓旀棤鎴愪氦瀹㈡埛鏄惁鍙楀彲鎻愭瘮渚嬮檺鍒 +CSgitFtdcBrokerWithdrawAlgorithmField["AllWithoutTrade"] = "char" +#鍙敤鏄惁鍖呭惈骞充粨鐩堝埄 +CSgitFtdcBrokerWithdrawAlgorithmField["AvailIncludeCloseProfit"] = "char" +#鏄惁鍚敤鐢ㄦ埛浜嬩欢 +CSgitFtdcBrokerWithdrawAlgorithmField["IsBrokerUserEvent"] = "int" +structDict['CSgitFtdcBrokerWithdrawAlgorithmField'] = CSgitFtdcBrokerWithdrawAlgorithmField + + +#璧勯噾璐︽埛鍙d护鍙樻洿鍩 +CSgitFtdcTradingAccountPasswordUpdateV1Field = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingAccountPasswordUpdateV1Field["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcTradingAccountPasswordUpdateV1Field["InvestorID"] = "string" +#鍘熸潵鐨勫彛浠 +CSgitFtdcTradingAccountPasswordUpdateV1Field["OldPassword"] = "string" +#鏂扮殑鍙d护 +CSgitFtdcTradingAccountPasswordUpdateV1Field["NewPassword"] = "string" +structDict['CSgitFtdcTradingAccountPasswordUpdateV1Field'] = CSgitFtdcTradingAccountPasswordUpdateV1Field + + +#璧勯噾璐︽埛鍙d护鍙樻洿鍩 +CSgitFtdcTradingAccountPasswordUpdateField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingAccountPasswordUpdateField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcTradingAccountPasswordUpdateField["AccountID"] = "string" +#鍘熸潵鐨勫彛浠 +CSgitFtdcTradingAccountPasswordUpdateField["OldPassword"] = "string" +#鏂扮殑鍙d护 +CSgitFtdcTradingAccountPasswordUpdateField["NewPassword"] = "string" +structDict['CSgitFtdcTradingAccountPasswordUpdateField'] = CSgitFtdcTradingAccountPasswordUpdateField + + +#鏌ヨ缁勫悎鍚堢害鍒嗚吙 +CSgitFtdcQryCombinationLegField = {} +#缁勫悎鍚堢害浠g爜 +CSgitFtdcQryCombinationLegField["CombInstrumentID"] = "string" +#鍗曡吙缂栧彿 +CSgitFtdcQryCombinationLegField["LegID"] = "int" +#鍗曡吙鍚堢害浠g爜 +CSgitFtdcQryCombinationLegField["LegInstrumentID"] = "string" +structDict['CSgitFtdcQryCombinationLegField'] = CSgitFtdcQryCombinationLegField + + +#鏌ヨ缁勫悎鍚堢害鍒嗚吙 +CSgitFtdcQrySyncStatusField = {} +#浜ゆ槗鏃 +CSgitFtdcQrySyncStatusField["TradingDay"] = "string" +structDict['CSgitFtdcQrySyncStatusField'] = CSgitFtdcQrySyncStatusField + + +#缁勫悎浜ゆ槗鍚堢害鐨勫崟鑵 +CSgitFtdcCombinationLegField = {} +#缁勫悎鍚堢害浠g爜 +CSgitFtdcCombinationLegField["CombInstrumentID"] = "string" +#鍗曡吙缂栧彿 +CSgitFtdcCombinationLegField["LegID"] = "int" +#鍗曡吙鍚堢害浠g爜 +CSgitFtdcCombinationLegField["LegInstrumentID"] = "string" +#涔板崠鏂瑰悜 +CSgitFtdcCombinationLegField["Direction"] = "char" +#鍗曡吙涔樻暟 +CSgitFtdcCombinationLegField["LegMultiple"] = "int" +#娲剧敓灞傛暟 +CSgitFtdcCombinationLegField["ImplyLevel"] = "int" +structDict['CSgitFtdcCombinationLegField'] = CSgitFtdcCombinationLegField + + +#鏁版嵁鍚屾鐘舵 +CSgitFtdcSyncStatusField = {} +#浜ゆ槗鏃 +CSgitFtdcSyncStatusField["TradingDay"] = "string" +#鏁版嵁鍚屾鐘舵 +CSgitFtdcSyncStatusField["DataSyncStatus"] = "char" +structDict['CSgitFtdcSyncStatusField'] = CSgitFtdcSyncStatusField + + +#鏌ヨ鑱旂郴浜 +CSgitFtdcQryLinkManField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryLinkManField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryLinkManField["InvestorID"] = "string" +structDict['CSgitFtdcQryLinkManField'] = CSgitFtdcQryLinkManField + + +#鑱旂郴浜 +CSgitFtdcLinkManField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcLinkManField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcLinkManField["InvestorID"] = "string" +#鑱旂郴浜虹被鍨 +CSgitFtdcLinkManField["PersonType"] = "char" +#璇佷欢绫诲瀷 +CSgitFtdcLinkManField["IdentifiedCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcLinkManField["IdentifiedCardNo"] = "string" +#鍚嶇О +CSgitFtdcLinkManField["PersonName"] = "string" +#鑱旂郴鐢佃瘽 +CSgitFtdcLinkManField["Telephone"] = "string" +#閫氳鍦板潃 +CSgitFtdcLinkManField["Address"] = "string" +#閭斂缂栫爜 +CSgitFtdcLinkManField["ZipCode"] = "string" +#浼樺厛绾 +CSgitFtdcLinkManField["Priority"] = "int" +structDict['CSgitFtdcLinkManField'] = CSgitFtdcLinkManField + + +#鏌ヨ缁忕邯鍏徃鐢ㄦ埛浜嬩欢 +CSgitFtdcQryBrokerUserEventField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryBrokerUserEventField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcQryBrokerUserEventField["UserID"] = "string" +#鐢ㄦ埛浜嬩欢绫诲瀷 +CSgitFtdcQryBrokerUserEventField["UserEventType"] = "char" +structDict['CSgitFtdcQryBrokerUserEventField'] = CSgitFtdcQryBrokerUserEventField + + +#鏌ヨ缁忕邯鍏徃鐢ㄦ埛浜嬩欢 +CSgitFtdcBrokerUserEventField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerUserEventField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcBrokerUserEventField["UserID"] = "string" +#鐢ㄦ埛浜嬩欢绫诲瀷 +CSgitFtdcBrokerUserEventField["UserEventType"] = "char" +#鐢ㄦ埛浜嬩欢搴忓彿 +CSgitFtdcBrokerUserEventField["EventSequenceNo"] = "int" +#浜嬩欢鍙戠敓鏃ユ湡 +CSgitFtdcBrokerUserEventField["EventDate"] = "string" +#浜嬩欢鍙戠敓鏃堕棿 +CSgitFtdcBrokerUserEventField["EventTime"] = "string" +#鐢ㄦ埛浜嬩欢淇℃伅 +CSgitFtdcBrokerUserEventField["UserEventInfo"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcBrokerUserEventField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcBrokerUserEventField["InstrumentID"] = "string" +structDict['CSgitFtdcBrokerUserEventField'] = CSgitFtdcBrokerUserEventField + + +#鏌ヨ绛剧害閾惰璇锋眰 +CSgitFtdcQryContractBankField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryContractBankField["BrokerID"] = "string" +#閾惰浠g爜 +CSgitFtdcQryContractBankField["BankID"] = "string" +#閾惰鍒嗕腑蹇冧唬鐮 +CSgitFtdcQryContractBankField["BankBrchID"] = "string" +structDict['CSgitFtdcQryContractBankField'] = CSgitFtdcQryContractBankField + + +#鏌ヨ绛剧害閾惰鍝嶅簲 +CSgitFtdcContractBankField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcContractBankField["BrokerID"] = "string" +#閾惰浠g爜 +CSgitFtdcContractBankField["BankID"] = "string" +#閾惰鍒嗕腑蹇冧唬鐮 +CSgitFtdcContractBankField["BankBrchID"] = "string" +#閾惰鍚嶇О +CSgitFtdcContractBankField["BankName"] = "string" +structDict['CSgitFtdcContractBankField'] = CSgitFtdcContractBankField + + +#鎶曡祫鑰呯粍鍚堟寔浠撴槑缁 +CSgitFtdcInvestorPositionCombineDetailField = {} +#浜ゆ槗鏃 +CSgitFtdcInvestorPositionCombineDetailField["TradingDay"] = "string" +#寮浠撴棩鏈 +CSgitFtdcInvestorPositionCombineDetailField["OpenDate"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcInvestorPositionCombineDetailField["ExchangeID"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcInvestorPositionCombineDetailField["SettlementID"] = "int" +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorPositionCombineDetailField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInvestorPositionCombineDetailField["InvestorID"] = "string" +#缁勫悎缂栧彿 +CSgitFtdcInvestorPositionCombineDetailField["ComTradeID"] = "string" +#鎾悎缂栧彿 +CSgitFtdcInvestorPositionCombineDetailField["TradeID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcInvestorPositionCombineDetailField["InstrumentID"] = "string" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcInvestorPositionCombineDetailField["HedgeFlag"] = "char" +#涔板崠 +CSgitFtdcInvestorPositionCombineDetailField["Direction"] = "char" +#鎸佷粨閲 +CSgitFtdcInvestorPositionCombineDetailField["TotalAmt"] = "int" +#鎶曡祫鑰呬繚璇侀噾 +CSgitFtdcInvestorPositionCombineDetailField["Margin"] = "float" +#浜ゆ槗鎵淇濊瘉閲 +CSgitFtdcInvestorPositionCombineDetailField["ExchMargin"] = "float" +#淇濊瘉閲戠巼 +CSgitFtdcInvestorPositionCombineDetailField["MarginRateByMoney"] = "float" +#淇濊瘉閲戠巼(鎸夋墜鏁) +CSgitFtdcInvestorPositionCombineDetailField["MarginRateByVolume"] = "float" +#鍗曡吙缂栧彿 +CSgitFtdcInvestorPositionCombineDetailField["LegID"] = "int" +#鍗曡吙涔樻暟 +CSgitFtdcInvestorPositionCombineDetailField["LegMultiple"] = "int" +#缁勫悎鎸佷粨鍚堢害缂栫爜 +CSgitFtdcInvestorPositionCombineDetailField["CombInstrumentID"] = "string" +structDict['CSgitFtdcInvestorPositionCombineDetailField'] = CSgitFtdcInvestorPositionCombineDetailField + + +#棰勫煁鍗 +CSgitFtdcParkedOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcParkedOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcParkedOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcParkedOrderField["InstrumentID"] = "string" +#鎶ュ崟寮曠敤 +CSgitFtdcParkedOrderField["OrderRef"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcParkedOrderField["UserID"] = "string" +#鎶ュ崟浠锋牸鏉′欢 +CSgitFtdcParkedOrderField["OrderPriceType"] = "char" +#涔板崠鏂瑰悜 +CSgitFtdcParkedOrderField["Direction"] = "char" +#缁勫悎寮骞虫爣蹇 +CSgitFtdcParkedOrderField["CombOffsetFlag"] = "string" +#缁勫悎鎶曟満濂椾繚鏍囧織 +CSgitFtdcParkedOrderField["CombHedgeFlag"] = "string" +#浠锋牸 +CSgitFtdcParkedOrderField["LimitPrice"] = "float" +#鏁伴噺 +CSgitFtdcParkedOrderField["VolumeTotalOriginal"] = "int" +#鏈夋晥鏈熺被鍨 +CSgitFtdcParkedOrderField["TimeCondition"] = "char" +#GTD鏃ユ湡 +CSgitFtdcParkedOrderField["GTDDate"] = "string" +#鎴愪氦閲忕被鍨 +CSgitFtdcParkedOrderField["VolumeCondition"] = "char" +#鏈灏忔垚浜ら噺 +CSgitFtdcParkedOrderField["MinVolume"] = "int" +#瑙﹀彂鏉′欢 +CSgitFtdcParkedOrderField["ContingentCondition"] = "char" +#姝㈡崯浠 +CSgitFtdcParkedOrderField["StopPrice"] = "float" +#寮哄钩鍘熷洜 +CSgitFtdcParkedOrderField["ForceCloseReason"] = "char" +#鑷姩鎸傝捣鏍囧織 +CSgitFtdcParkedOrderField["IsAutoSuspend"] = "int" +#涓氬姟鍗曞厓 +CSgitFtdcParkedOrderField["BusinessUnit"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcParkedOrderField["RequestID"] = "int" +#鐢ㄦ埛寮鸿瘎鏍囧織 +CSgitFtdcParkedOrderField["UserForceClose"] = "int" +#浜ゆ槗鎵浠g爜 +CSgitFtdcParkedOrderField["ExchangeID"] = "string" +#棰勫煁鎶ュ崟缂栧彿 +CSgitFtdcParkedOrderField["ParkedOrderID"] = "string" +#鐢ㄦ埛绫诲瀷 +CSgitFtdcParkedOrderField["UserType"] = "char" +#棰勫煁鍗曠姸鎬 +CSgitFtdcParkedOrderField["Status"] = "char" +#閿欒浠g爜 +CSgitFtdcParkedOrderField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcParkedOrderField["ErrorMsg"] = "string" +structDict['CSgitFtdcParkedOrderField'] = CSgitFtdcParkedOrderField + + +#杈撳叆棰勫煁鍗曟搷浣 +CSgitFtdcParkedOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcParkedOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcParkedOrderActionField["InvestorID"] = "string" +#鎶ュ崟鎿嶄綔寮曠敤 +CSgitFtdcParkedOrderActionField["OrderActionRef"] = "int" +#鎶ュ崟寮曠敤 +CSgitFtdcParkedOrderActionField["OrderRef"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcParkedOrderActionField["RequestID"] = "int" +#鍓嶇疆缂栧彿 +CSgitFtdcParkedOrderActionField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcParkedOrderActionField["SessionID"] = "int" +#浜ゆ槗鎵浠g爜 +CSgitFtdcParkedOrderActionField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcParkedOrderActionField["OrderSysID"] = "string" +#鎿嶄綔鏍囧織 +CSgitFtdcParkedOrderActionField["ActionFlag"] = "char" +#浠锋牸 +CSgitFtdcParkedOrderActionField["LimitPrice"] = "float" +#鏁伴噺鍙樺寲 +CSgitFtdcParkedOrderActionField["VolumeChange"] = "int" +#鐢ㄦ埛浠g爜 +CSgitFtdcParkedOrderActionField["UserID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcParkedOrderActionField["InstrumentID"] = "string" +#棰勫煁鎾ゅ崟鍗曠紪鍙 +CSgitFtdcParkedOrderActionField["ParkedOrderActionID"] = "string" +#鐢ㄦ埛绫诲瀷 +CSgitFtdcParkedOrderActionField["UserType"] = "char" +#棰勫煁鎾ゅ崟鐘舵 +CSgitFtdcParkedOrderActionField["Status"] = "char" +#閿欒浠g爜 +CSgitFtdcParkedOrderActionField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcParkedOrderActionField["ErrorMsg"] = "string" +structDict['CSgitFtdcParkedOrderActionField'] = CSgitFtdcParkedOrderActionField + + +#鏌ヨ棰勫煁鍗 +CSgitFtdcQryParkedOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryParkedOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryParkedOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryParkedOrderField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryParkedOrderField["ExchangeID"] = "string" +structDict['CSgitFtdcQryParkedOrderField'] = CSgitFtdcQryParkedOrderField + + +#鏌ヨ棰勫煁鎾ゅ崟 +CSgitFtdcQryParkedOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryParkedOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryParkedOrderActionField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryParkedOrderActionField["InstrumentID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryParkedOrderActionField["ExchangeID"] = "string" +structDict['CSgitFtdcQryParkedOrderActionField'] = CSgitFtdcQryParkedOrderActionField + + +#鍒犻櫎棰勫煁鍗 +CSgitFtdcRemoveParkedOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcRemoveParkedOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcRemoveParkedOrderField["InvestorID"] = "string" +#棰勫煁鎶ュ崟缂栧彿 +CSgitFtdcRemoveParkedOrderField["ParkedOrderID"] = "string" +structDict['CSgitFtdcRemoveParkedOrderField'] = CSgitFtdcRemoveParkedOrderField + + +#鍒犻櫎棰勫煁鎾ゅ崟 +CSgitFtdcRemoveParkedOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcRemoveParkedOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcRemoveParkedOrderActionField["InvestorID"] = "string" +#棰勫煁鎾ゅ崟缂栧彿 +CSgitFtdcRemoveParkedOrderActionField["ParkedOrderActionID"] = "string" +structDict['CSgitFtdcRemoveParkedOrderActionField'] = CSgitFtdcRemoveParkedOrderActionField + + +#缁忕邯鍏徃鍙彁璧勯噾绠楁硶琛 +CSgitFtdcInvestorWithdrawAlgorithmField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcInvestorWithdrawAlgorithmField["BrokerID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcInvestorWithdrawAlgorithmField["InvestorRange"] = "char" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcInvestorWithdrawAlgorithmField["InvestorID"] = "string" +#鍙彁璧勯噾姣斾緥 +CSgitFtdcInvestorWithdrawAlgorithmField["UsingRatio"] = "float" +structDict['CSgitFtdcInvestorWithdrawAlgorithmField'] = CSgitFtdcInvestorWithdrawAlgorithmField + + +#鏌ヨ缁勫悎鎸佷粨鏄庣粏 +CSgitFtdcQryInvestorPositionCombineDetailField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryInvestorPositionCombineDetailField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryInvestorPositionCombineDetailField["InvestorID"] = "string" +#缁勫悎鎸佷粨鍚堢害缂栫爜 +CSgitFtdcQryInvestorPositionCombineDetailField["CombInstrumentID"] = "string" +structDict['CSgitFtdcQryInvestorPositionCombineDetailField'] = CSgitFtdcQryInvestorPositionCombineDetailField + + +#鎴愪氦鍧囦环 +CSgitFtdcMarketDataAveragePriceField = {} +#褰撴棩鍧囦环 +CSgitFtdcMarketDataAveragePriceField["AveragePrice"] = "float" +structDict['CSgitFtdcMarketDataAveragePriceField'] = CSgitFtdcMarketDataAveragePriceField + + +#鏍¢獙鎶曡祫鑰呭瘑鐮 +CSgitFtdcVerifyInvestorPasswordField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcVerifyInvestorPasswordField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcVerifyInvestorPasswordField["InvestorID"] = "string" +#瀵嗙爜 +CSgitFtdcVerifyInvestorPasswordField["Password"] = "string" +structDict['CSgitFtdcVerifyInvestorPasswordField'] = CSgitFtdcVerifyInvestorPasswordField + + +#鐢ㄦ埛IP +CSgitFtdcUserIPField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcUserIPField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcUserIPField["UserID"] = "string" +#IP鍦板潃 +CSgitFtdcUserIPField["IPAddress"] = "string" +#IP鍦板潃鎺╃爜 +CSgitFtdcUserIPField["IPMask"] = "string" +#Mac鍦板潃 +CSgitFtdcUserIPField["MacAddress"] = "string" +structDict['CSgitFtdcUserIPField'] = CSgitFtdcUserIPField + + +#鐢ㄦ埛浜嬩欢閫氱煡淇℃伅 +CSgitFtdcTradingNoticeInfoField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingNoticeInfoField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcTradingNoticeInfoField["InvestorID"] = "string" +#鍙戦佹椂闂 +CSgitFtdcTradingNoticeInfoField["SendTime"] = "string" +#娑堟伅姝f枃 +CSgitFtdcTradingNoticeInfoField["FieldContent"] = "string" +#搴忓垪绯诲垪鍙 +CSgitFtdcTradingNoticeInfoField["SequenceSeries"] = "short" +#搴忓垪鍙 +CSgitFtdcTradingNoticeInfoField["SequenceNo"] = "int" +structDict['CSgitFtdcTradingNoticeInfoField'] = CSgitFtdcTradingNoticeInfoField + + +#鐢ㄦ埛浜嬩欢閫氱煡 +CSgitFtdcTradingNoticeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcTradingNoticeField["BrokerID"] = "string" +#鎶曡祫鑰呰寖鍥 +CSgitFtdcTradingNoticeField["InvestorRange"] = "char" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcTradingNoticeField["InvestorID"] = "string" +#搴忓垪绯诲垪鍙 +CSgitFtdcTradingNoticeField["SequenceSeries"] = "short" +#鐢ㄦ埛浠g爜 +CSgitFtdcTradingNoticeField["UserID"] = "string" +#鍙戦佹椂闂 +CSgitFtdcTradingNoticeField["SendTime"] = "string" +#搴忓垪鍙 +CSgitFtdcTradingNoticeField["SequenceNo"] = "int" +#娑堟伅姝f枃 +CSgitFtdcTradingNoticeField["FieldContent"] = "string" +structDict['CSgitFtdcTradingNoticeField'] = CSgitFtdcTradingNoticeField + + +#鏌ヨ浜ゆ槗浜嬩欢閫氱煡 +CSgitFtdcQryTradingNoticeField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryTradingNoticeField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryTradingNoticeField["InvestorID"] = "string" +structDict['CSgitFtdcQryTradingNoticeField'] = CSgitFtdcQryTradingNoticeField + + +#鏌ヨ閿欒鎶ュ崟 +CSgitFtdcQryErrOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryErrOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryErrOrderField["InvestorID"] = "string" +structDict['CSgitFtdcQryErrOrderField'] = CSgitFtdcQryErrOrderField + + +#閿欒鎶ュ崟 +CSgitFtdcErrOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcErrOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcErrOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcErrOrderField["InstrumentID"] = "string" +#鎶ュ崟寮曠敤 +CSgitFtdcErrOrderField["OrderRef"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcErrOrderField["UserID"] = "string" +#鎶ュ崟浠锋牸鏉′欢 +CSgitFtdcErrOrderField["OrderPriceType"] = "char" +#涔板崠鏂瑰悜 +CSgitFtdcErrOrderField["Direction"] = "char" +#缁勫悎寮骞虫爣蹇 +CSgitFtdcErrOrderField["CombOffsetFlag"] = "string" +#缁勫悎鎶曟満濂椾繚鏍囧織 +CSgitFtdcErrOrderField["CombHedgeFlag"] = "string" +#浠锋牸 +CSgitFtdcErrOrderField["LimitPrice"] = "float" +#鏁伴噺 +CSgitFtdcErrOrderField["VolumeTotalOriginal"] = "int" +#鏈夋晥鏈熺被鍨 +CSgitFtdcErrOrderField["TimeCondition"] = "char" +#GTD鏃ユ湡 +CSgitFtdcErrOrderField["GTDDate"] = "string" +#鎴愪氦閲忕被鍨 +CSgitFtdcErrOrderField["VolumeCondition"] = "char" +#鏈灏忔垚浜ら噺 +CSgitFtdcErrOrderField["MinVolume"] = "int" +#瑙﹀彂鏉′欢 +CSgitFtdcErrOrderField["ContingentCondition"] = "char" +#姝㈡崯浠 +CSgitFtdcErrOrderField["StopPrice"] = "float" +#寮哄钩鍘熷洜 +CSgitFtdcErrOrderField["ForceCloseReason"] = "char" +#鑷姩鎸傝捣鏍囧織 +CSgitFtdcErrOrderField["IsAutoSuspend"] = "int" +#涓氬姟鍗曞厓 +CSgitFtdcErrOrderField["BusinessUnit"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcErrOrderField["RequestID"] = "int" +#鐢ㄦ埛寮鸿瘎鏍囧織 +CSgitFtdcErrOrderField["UserForceClose"] = "int" +#閿欒浠g爜 +CSgitFtdcErrOrderField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcErrOrderField["ErrorMsg"] = "string" +structDict['CSgitFtdcErrOrderField'] = CSgitFtdcErrOrderField + + +#鏌ヨ閿欒鎶ュ崟鎿嶄綔 +CSgitFtdcErrorConditionalOrderField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcErrorConditionalOrderField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcErrorConditionalOrderField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcErrorConditionalOrderField["InstrumentID"] = "string" +#鎶ュ崟寮曠敤 +CSgitFtdcErrorConditionalOrderField["OrderRef"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcErrorConditionalOrderField["UserID"] = "string" +#鎶ュ崟浠锋牸鏉′欢 +CSgitFtdcErrorConditionalOrderField["OrderPriceType"] = "char" +#涔板崠鏂瑰悜 +CSgitFtdcErrorConditionalOrderField["Direction"] = "char" +#缁勫悎寮骞虫爣蹇 +CSgitFtdcErrorConditionalOrderField["CombOffsetFlag"] = "string" +#缁勫悎鎶曟満濂椾繚鏍囧織 +CSgitFtdcErrorConditionalOrderField["CombHedgeFlag"] = "string" +#浠锋牸 +CSgitFtdcErrorConditionalOrderField["LimitPrice"] = "float" +#鏁伴噺 +CSgitFtdcErrorConditionalOrderField["VolumeTotalOriginal"] = "int" +#鏈夋晥鏈熺被鍨 +CSgitFtdcErrorConditionalOrderField["TimeCondition"] = "char" +#GTD鏃ユ湡 +CSgitFtdcErrorConditionalOrderField["GTDDate"] = "string" +#鎴愪氦閲忕被鍨 +CSgitFtdcErrorConditionalOrderField["VolumeCondition"] = "char" +#鏈灏忔垚浜ら噺 +CSgitFtdcErrorConditionalOrderField["MinVolume"] = "int" +#瑙﹀彂鏉′欢 +CSgitFtdcErrorConditionalOrderField["ContingentCondition"] = "char" +#姝㈡崯浠 +CSgitFtdcErrorConditionalOrderField["StopPrice"] = "float" +#寮哄钩鍘熷洜 +CSgitFtdcErrorConditionalOrderField["ForceCloseReason"] = "char" +#鑷姩鎸傝捣鏍囧織 +CSgitFtdcErrorConditionalOrderField["IsAutoSuspend"] = "int" +#涓氬姟鍗曞厓 +CSgitFtdcErrorConditionalOrderField["BusinessUnit"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcErrorConditionalOrderField["RequestID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcErrorConditionalOrderField["OrderLocalID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcErrorConditionalOrderField["ExchangeID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcErrorConditionalOrderField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcErrorConditionalOrderField["ClientID"] = "string" +#鍚堢害鍦ㄤ氦鏄撴墍鐨勪唬鐮 +CSgitFtdcErrorConditionalOrderField["ExchangeInstID"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcErrorConditionalOrderField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcErrorConditionalOrderField["InstallID"] = "int" +#鎶ュ崟鎻愪氦鐘舵 +CSgitFtdcErrorConditionalOrderField["OrderSubmitStatus"] = "char" +#鎶ュ崟鎻愮ず搴忓彿 +CSgitFtdcErrorConditionalOrderField["NotifySequence"] = "int" +#浜ゆ槗鏃 +CSgitFtdcErrorConditionalOrderField["TradingDay"] = "string" +#缁撶畻缂栧彿 +CSgitFtdcErrorConditionalOrderField["SettlementID"] = "int" +#鎶ュ崟缂栧彿 +CSgitFtdcErrorConditionalOrderField["OrderSysID"] = "string" +#鎶ュ崟鏉ユ簮 +CSgitFtdcErrorConditionalOrderField["OrderSource"] = "char" +#鎶ュ崟鐘舵 +CSgitFtdcErrorConditionalOrderField["OrderStatus"] = "char" +#鎶ュ崟绫诲瀷 +CSgitFtdcErrorConditionalOrderField["OrderType"] = "char" +#浠婃垚浜ゆ暟閲 +CSgitFtdcErrorConditionalOrderField["VolumeTraded"] = "int" +#鍓╀綑鏁伴噺 +CSgitFtdcErrorConditionalOrderField["VolumeTotal"] = "int" +#鎶ュ崟鏃ユ湡 +CSgitFtdcErrorConditionalOrderField["InsertDate"] = "string" +#濮旀墭鏃堕棿 +CSgitFtdcErrorConditionalOrderField["InsertTime"] = "string" +#婵娲绘椂闂 +CSgitFtdcErrorConditionalOrderField["ActiveTime"] = "string" +#鎸傝捣鏃堕棿 +CSgitFtdcErrorConditionalOrderField["SuspendTime"] = "string" +#鏈鍚庝慨鏀规椂闂 +CSgitFtdcErrorConditionalOrderField["UpdateTime"] = "string" +#鎾ら攢鏃堕棿 +CSgitFtdcErrorConditionalOrderField["CancelTime"] = "string" +#鏈鍚庝慨鏀逛氦鏄撴墍浜ゆ槗鍛樹唬鐮 +CSgitFtdcErrorConditionalOrderField["ActiveTraderID"] = "string" +#缁撶畻浼氬憳缂栧彿 +CSgitFtdcErrorConditionalOrderField["ClearingPartID"] = "string" +#搴忓彿 +CSgitFtdcErrorConditionalOrderField["SequenceNo"] = "int" +#鍓嶇疆缂栧彿 +CSgitFtdcErrorConditionalOrderField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcErrorConditionalOrderField["SessionID"] = "int" +#鐢ㄦ埛绔骇鍝佷俊鎭 +CSgitFtdcErrorConditionalOrderField["UserProductInfo"] = "string" +#鐘舵佷俊鎭 +CSgitFtdcErrorConditionalOrderField["StatusMsg"] = "string" +#鐢ㄦ埛寮鸿瘎鏍囧織 +CSgitFtdcErrorConditionalOrderField["UserForceClose"] = "int" +#鎿嶄綔鐢ㄦ埛浠g爜 +CSgitFtdcErrorConditionalOrderField["ActiveUserID"] = "string" +#缁忕邯鍏徃鎶ュ崟缂栧彿 +CSgitFtdcErrorConditionalOrderField["BrokerOrderSeq"] = "int" +#鐩稿叧鎶ュ崟 +CSgitFtdcErrorConditionalOrderField["RelativeOrderSysID"] = "string" +#閿欒浠g爜 +CSgitFtdcErrorConditionalOrderField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcErrorConditionalOrderField["ErrorMsg"] = "string" +structDict['CSgitFtdcErrorConditionalOrderField'] = CSgitFtdcErrorConditionalOrderField + + +#鏌ヨ閿欒鎶ュ崟鎿嶄綔 +CSgitFtdcQryErrOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryErrOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryErrOrderActionField["InvestorID"] = "string" +structDict['CSgitFtdcQryErrOrderActionField'] = CSgitFtdcQryErrOrderActionField + + +#閿欒鎶ュ崟鎿嶄綔 +CSgitFtdcErrOrderActionField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcErrOrderActionField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcErrOrderActionField["InvestorID"] = "string" +#鎶ュ崟鎿嶄綔寮曠敤 +CSgitFtdcErrOrderActionField["OrderActionRef"] = "int" +#鎶ュ崟寮曠敤 +CSgitFtdcErrOrderActionField["OrderRef"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcErrOrderActionField["RequestID"] = "int" +#鍓嶇疆缂栧彿 +CSgitFtdcErrOrderActionField["FrontID"] = "int" +#浼氳瘽缂栧彿 +CSgitFtdcErrOrderActionField["SessionID"] = "int" +#浜ゆ槗鎵浠g爜 +CSgitFtdcErrOrderActionField["ExchangeID"] = "string" +#鎶ュ崟缂栧彿 +CSgitFtdcErrOrderActionField["OrderSysID"] = "string" +#鎿嶄綔鏍囧織 +CSgitFtdcErrOrderActionField["ActionFlag"] = "char" +#浠锋牸 +CSgitFtdcErrOrderActionField["LimitPrice"] = "float" +#鏁伴噺鍙樺寲 +CSgitFtdcErrOrderActionField["VolumeChange"] = "int" +#鎿嶄綔鏃ユ湡 +CSgitFtdcErrOrderActionField["ActionDate"] = "string" +#鎿嶄綔鏃堕棿 +CSgitFtdcErrOrderActionField["ActionTime"] = "string" +#浜ゆ槗鎵浜ゆ槗鍛樹唬鐮 +CSgitFtdcErrOrderActionField["TraderID"] = "string" +#瀹夎缂栧彿 +CSgitFtdcErrOrderActionField["InstallID"] = "int" +#鏈湴鎶ュ崟缂栧彿 +CSgitFtdcErrOrderActionField["OrderLocalID"] = "string" +#鎿嶄綔鏈湴缂栧彿 +CSgitFtdcErrOrderActionField["ActionLocalID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcErrOrderActionField["ParticipantID"] = "string" +#瀹㈡埛浠g爜 +CSgitFtdcErrOrderActionField["ClientID"] = "string" +#涓氬姟鍗曞厓 +CSgitFtdcErrOrderActionField["BusinessUnit"] = "string" +#鎶ュ崟鎿嶄綔鐘舵 +CSgitFtdcErrOrderActionField["OrderActionStatus"] = "char" +#鐢ㄦ埛浠g爜 +CSgitFtdcErrOrderActionField["UserID"] = "string" +#鐘舵佷俊鎭 +CSgitFtdcErrOrderActionField["StatusMsg"] = "string" +#鍚堢害浠g爜 +CSgitFtdcErrOrderActionField["InstrumentID"] = "string" +#閿欒浠g爜 +CSgitFtdcErrOrderActionField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcErrOrderActionField["ErrorMsg"] = "string" +structDict['CSgitFtdcErrOrderActionField'] = CSgitFtdcErrOrderActionField + + +#鏌ヨ浜ゆ槗鎵鐘舵 +CSgitFtdcQryExchangeSequenceField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryExchangeSequenceField["ExchangeID"] = "string" +structDict['CSgitFtdcQryExchangeSequenceField'] = CSgitFtdcQryExchangeSequenceField + + +#浜ゆ槗鎵鐘舵 +CSgitFtdcExchangeSequenceField = {} +#浜ゆ槗鎵浠g爜 +CSgitFtdcExchangeSequenceField["ExchangeID"] = "string" +#搴忓彿 +CSgitFtdcExchangeSequenceField["SequenceNo"] = "int" +#鍚堢害浜ゆ槗鐘舵 +CSgitFtdcExchangeSequenceField["MarketStatus"] = "char" +structDict['CSgitFtdcExchangeSequenceField'] = CSgitFtdcExchangeSequenceField + + +#鏍规嵁浠锋牸鏌ヨ鏈澶ф姤鍗曟暟閲 +CSgitFtdcQueryMaxOrderVolumeWithPriceField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["InvestorID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["InstrumentID"] = "string" +#涔板崠鏂瑰悜 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["Direction"] = "char" +#寮骞虫爣蹇 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["OffsetFlag"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["HedgeFlag"] = "char" +#鏈澶у厑璁告姤鍗曟暟閲 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["MaxVolume"] = "int" +#鎶ュ崟浠锋牸 +CSgitFtdcQueryMaxOrderVolumeWithPriceField["Price"] = "float" +structDict['CSgitFtdcQueryMaxOrderVolumeWithPriceField'] = CSgitFtdcQueryMaxOrderVolumeWithPriceField + + +#鏌ヨ缁忕邯鍏徃浜ゆ槗鍙傛暟 +CSgitFtdcQryBrokerTradingParamsField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryBrokerTradingParamsField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryBrokerTradingParamsField["InvestorID"] = "string" +structDict['CSgitFtdcQryBrokerTradingParamsField'] = CSgitFtdcQryBrokerTradingParamsField + + +#缁忕邯鍏徃浜ゆ槗鍙傛暟 +CSgitFtdcBrokerTradingParamsField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerTradingParamsField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcBrokerTradingParamsField["InvestorID"] = "string" +#淇濊瘉閲戜环鏍肩被鍨 +CSgitFtdcBrokerTradingParamsField["MarginPriceType"] = "char" +#鐩堜簭绠楁硶 +CSgitFtdcBrokerTradingParamsField["Algorithm"] = "char" +#鍙敤鏄惁鍖呭惈骞充粨鐩堝埄 +CSgitFtdcBrokerTradingParamsField["AvailIncludeCloseProfit"] = "char" +structDict['CSgitFtdcBrokerTradingParamsField'] = CSgitFtdcBrokerTradingParamsField + + +#鏌ヨ缁忕邯鍏徃浜ゆ槗绠楁硶 +CSgitFtdcQryBrokerTradingAlgosField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryBrokerTradingAlgosField["BrokerID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryBrokerTradingAlgosField["ExchangeID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryBrokerTradingAlgosField["InstrumentID"] = "string" +structDict['CSgitFtdcQryBrokerTradingAlgosField'] = CSgitFtdcQryBrokerTradingAlgosField + + +#缁忕邯鍏徃浜ゆ槗绠楁硶 +CSgitFtdcBrokerTradingAlgosField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerTradingAlgosField["BrokerID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcBrokerTradingAlgosField["ExchangeID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcBrokerTradingAlgosField["InstrumentID"] = "string" +#鎸佷粨澶勭悊绠楁硶缂栧彿 +CSgitFtdcBrokerTradingAlgosField["HandlePositionAlgoID"] = "char" +#瀵绘壘淇濊瘉閲戠巼绠楁硶缂栧彿 +CSgitFtdcBrokerTradingAlgosField["FindMarginRateAlgoID"] = "char" +#璧勯噾澶勭悊绠楁硶缂栧彿 +CSgitFtdcBrokerTradingAlgosField["HandleTradingAccountAlgoID"] = "char" +structDict['CSgitFtdcBrokerTradingAlgosField'] = CSgitFtdcBrokerTradingAlgosField + + +#鏌ヨ缁忕邯鍏徃璧勯噾 +CSgitFtdcQueryBrokerDepositField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQueryBrokerDepositField["BrokerID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQueryBrokerDepositField["ExchangeID"] = "string" +structDict['CSgitFtdcQueryBrokerDepositField'] = CSgitFtdcQueryBrokerDepositField + + +#缁忕邯鍏徃璧勯噾 +CSgitFtdcBrokerDepositField = {} +#浜ゆ槗鏃ユ湡 +CSgitFtdcBrokerDepositField["TradingDay"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerDepositField["BrokerID"] = "string" +#浼氬憳浠g爜 +CSgitFtdcBrokerDepositField["ParticipantID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcBrokerDepositField["ExchangeID"] = "string" +#涓婃缁撶畻鍑嗗閲 +CSgitFtdcBrokerDepositField["PreBalance"] = "float" +#褰撳墠淇濊瘉閲戞婚 +CSgitFtdcBrokerDepositField["CurrMargin"] = "float" +#骞充粨鐩堜簭 +CSgitFtdcBrokerDepositField["CloseProfit"] = "float" +#鏈熻揣缁撶畻鍑嗗閲 +CSgitFtdcBrokerDepositField["Balance"] = "float" +#鍏ラ噾閲戦 +CSgitFtdcBrokerDepositField["Deposit"] = "float" +#鍑洪噾閲戦 +CSgitFtdcBrokerDepositField["Withdraw"] = "float" +#鍙彁璧勯噾 +CSgitFtdcBrokerDepositField["Available"] = "float" +#鍩烘湰鍑嗗閲 +CSgitFtdcBrokerDepositField["Reserve"] = "float" +#鍐荤粨鐨勪繚璇侀噾 +CSgitFtdcBrokerDepositField["FrozenMargin"] = "float" +structDict['CSgitFtdcBrokerDepositField'] = CSgitFtdcBrokerDepositField + + +#鏌ヨ淇濊瘉閲戠洃绠$郴缁熺粡绾叕鍙稿瘑閽 +CSgitFtdcQryCFMMCBrokerKeyField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryCFMMCBrokerKeyField["BrokerID"] = "string" +structDict['CSgitFtdcQryCFMMCBrokerKeyField'] = CSgitFtdcQryCFMMCBrokerKeyField + + +#淇濊瘉閲戠洃绠$郴缁熺粡绾叕鍙稿瘑閽 +CSgitFtdcCFMMCBrokerKeyField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcCFMMCBrokerKeyField["BrokerID"] = "string" +#缁忕邯鍏徃缁熶竴缂栫爜 +CSgitFtdcCFMMCBrokerKeyField["ParticipantID"] = "string" +#瀵嗛挜鐢熸垚鏃ユ湡 +CSgitFtdcCFMMCBrokerKeyField["CreateDate"] = "string" +#瀵嗛挜鐢熸垚鏃堕棿 +CSgitFtdcCFMMCBrokerKeyField["CreateTime"] = "string" +#瀵嗛挜缂栧彿 +CSgitFtdcCFMMCBrokerKeyField["KeyID"] = "int" +#鍔ㄦ佸瘑閽 +CSgitFtdcCFMMCBrokerKeyField["CurrentKey"] = "string" +#鍔ㄦ佸瘑閽ョ被鍨 +CSgitFtdcCFMMCBrokerKeyField["KeyKind"] = "char" +structDict['CSgitFtdcCFMMCBrokerKeyField'] = CSgitFtdcCFMMCBrokerKeyField + + +#淇濊瘉閲戠洃绠$郴缁熺粡绾叕鍙歌祫閲戣处鎴峰瘑閽 +CSgitFtdcCFMMCTradingAccountKeyField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcCFMMCTradingAccountKeyField["BrokerID"] = "string" +#缁忕邯鍏徃缁熶竴缂栫爜 +CSgitFtdcCFMMCTradingAccountKeyField["ParticipantID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcCFMMCTradingAccountKeyField["AccountID"] = "string" +#瀵嗛挜缂栧彿 +CSgitFtdcCFMMCTradingAccountKeyField["KeyID"] = "int" +#鍔ㄦ佸瘑閽 +CSgitFtdcCFMMCTradingAccountKeyField["CurrentKey"] = "string" +structDict['CSgitFtdcCFMMCTradingAccountKeyField'] = CSgitFtdcCFMMCTradingAccountKeyField + + +#璇锋眰鏌ヨ淇濊瘉閲戠洃绠$郴缁熺粡绾叕鍙歌祫閲戣处鎴峰瘑閽 +CSgitFtdcQryCFMMCTradingAccountKeyField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryCFMMCTradingAccountKeyField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryCFMMCTradingAccountKeyField["InvestorID"] = "string" +structDict['CSgitFtdcQryCFMMCTradingAccountKeyField'] = CSgitFtdcQryCFMMCTradingAccountKeyField + + +#鐢ㄦ埛鍔ㄦ佷护鐗屽弬鏁 +CSgitFtdcBrokerUserOTPParamField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcBrokerUserOTPParamField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcBrokerUserOTPParamField["UserID"] = "string" +#鍔ㄦ佷护鐗屾彁渚涘晢 +CSgitFtdcBrokerUserOTPParamField["OTPVendorsID"] = "string" +#鍔ㄦ佷护鐗屽簭鍒楀彿 +CSgitFtdcBrokerUserOTPParamField["SerialNumber"] = "string" +#浠ょ墝瀵嗛挜 +CSgitFtdcBrokerUserOTPParamField["AuthKey"] = "string" +#婕傜Щ鍊 +CSgitFtdcBrokerUserOTPParamField["LastDrift"] = "int" +#鎴愬姛鍊 +CSgitFtdcBrokerUserOTPParamField["LastSuccess"] = "int" +#鍔ㄦ佷护鐗岀被鍨 +CSgitFtdcBrokerUserOTPParamField["OTPType"] = "char" +structDict['CSgitFtdcBrokerUserOTPParamField'] = CSgitFtdcBrokerUserOTPParamField + + +#鎵嬪伐鍚屾鐢ㄦ埛鍔ㄦ佷护鐗 +CSgitFtdcManualSyncBrokerUserOTPField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcManualSyncBrokerUserOTPField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcManualSyncBrokerUserOTPField["UserID"] = "string" +#鍔ㄦ佷护鐗岀被鍨 +CSgitFtdcManualSyncBrokerUserOTPField["OTPType"] = "char" +#绗竴涓姩鎬佸瘑鐮 +CSgitFtdcManualSyncBrokerUserOTPField["FirstOTP"] = "string" +#绗簩涓姩鎬佸瘑鐮 +CSgitFtdcManualSyncBrokerUserOTPField["SecondOTP"] = "string" +structDict['CSgitFtdcManualSyncBrokerUserOTPField'] = CSgitFtdcManualSyncBrokerUserOTPField + + +#鎶曡祫鑰呮墜缁垂鐜囨ā鏉 +CSgitFtdcCommRateModelField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcCommRateModelField["BrokerID"] = "string" +#鎵嬬画璐圭巼妯℃澘浠g爜 +CSgitFtdcCommRateModelField["CommModelID"] = "string" +#妯℃澘鍚嶇О +CSgitFtdcCommRateModelField["CommModelName"] = "string" +structDict['CSgitFtdcCommRateModelField'] = CSgitFtdcCommRateModelField + + +#璇锋眰鏌ヨ鎶曡祫鑰呮墜缁垂鐜囨ā鏉 +CSgitFtdcQryCommRateModelField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryCommRateModelField["BrokerID"] = "string" +#鎵嬬画璐圭巼妯℃澘浠g爜 +CSgitFtdcQryCommRateModelField["CommModelID"] = "string" +structDict['CSgitFtdcQryCommRateModelField'] = CSgitFtdcQryCommRateModelField + + +#浠撳崟鎶樻姷淇℃伅 +CSgitFtdcEWarrantOffsetField = {} +#浜ゆ槗鏃ユ湡 +CSgitFtdcEWarrantOffsetField["TradingDay"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcEWarrantOffsetField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcEWarrantOffsetField["InvestorID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcEWarrantOffsetField["ExchangeID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcEWarrantOffsetField["InstrumentID"] = "string" +#涔板崠鏂瑰悜 +CSgitFtdcEWarrantOffsetField["Direction"] = "char" +#鎶曟満濂椾繚鏍囧織 +CSgitFtdcEWarrantOffsetField["HedgeFlag"] = "char" +#鏁伴噺 +CSgitFtdcEWarrantOffsetField["Volume"] = "int" +structDict['CSgitFtdcEWarrantOffsetField'] = CSgitFtdcEWarrantOffsetField + + +#鏌ヨ浠撳崟鎶樻姷淇℃伅 +CSgitFtdcQryEWarrantOffsetField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryEWarrantOffsetField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcQryEWarrantOffsetField["InvestorID"] = "string" +#浜ゆ槗鎵浠g爜 +CSgitFtdcQryEWarrantOffsetField["ExchangeID"] = "string" +#鍚堢害浠g爜 +CSgitFtdcQryEWarrantOffsetField["InstrumentID"] = "string" +structDict['CSgitFtdcQryEWarrantOffsetField'] = CSgitFtdcQryEWarrantOffsetField + + +#杞笎寮鎴疯姹 +CSgitFtdcReqOpenAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqOpenAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqOpenAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqOpenAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqOpenAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqOpenAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqOpenAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqOpenAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqOpenAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqOpenAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqOpenAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqOpenAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqOpenAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcReqOpenAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqOpenAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqOpenAccountField["IdentifiedCardNo"] = "string" +#鎬у埆 +CSgitFtdcReqOpenAccountField["Gender"] = "char" +#鍥藉浠g爜 +CSgitFtdcReqOpenAccountField["CountryCode"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqOpenAccountField["CustType"] = "char" +#鍦板潃 +CSgitFtdcReqOpenAccountField["Address"] = "string" +#閭紪 +CSgitFtdcReqOpenAccountField["ZipCode"] = "string" +#鐢佃瘽鍙风爜 +CSgitFtdcReqOpenAccountField["Telephone"] = "string" +#鎵嬫満 +CSgitFtdcReqOpenAccountField["MobilePhone"] = "string" +#浼犵湡 +CSgitFtdcReqOpenAccountField["Fax"] = "string" +#鐢靛瓙閭欢 +CSgitFtdcReqOpenAccountField["EMail"] = "string" +#璧勯噾璐︽埛鐘舵 +CSgitFtdcReqOpenAccountField["MoneyAccountStatus"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqOpenAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqOpenAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqOpenAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqOpenAccountField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcReqOpenAccountField["InstallID"] = "int" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcReqOpenAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcReqOpenAccountField["CurrencyID"] = "string" +#姹囬挒鏍囧織 +CSgitFtdcReqOpenAccountField["CashExchangeCode"] = "char" +#鎽樿 +CSgitFtdcReqOpenAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcReqOpenAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcReqOpenAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcReqOpenAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqOpenAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcReqOpenAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcReqOpenAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcReqOpenAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqOpenAccountField["OperNo"] = "string" +#浜ゆ槗ID +CSgitFtdcReqOpenAccountField["TID"] = "int" +structDict['CSgitFtdcReqOpenAccountField'] = CSgitFtdcReqOpenAccountField + + +#杞笎閿鎴疯姹 +CSgitFtdcReqCancelAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqCancelAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqCancelAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqCancelAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqCancelAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqCancelAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqCancelAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqCancelAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqCancelAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqCancelAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqCancelAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqCancelAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqCancelAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcReqCancelAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqCancelAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqCancelAccountField["IdentifiedCardNo"] = "string" +#鎬у埆 +CSgitFtdcReqCancelAccountField["Gender"] = "char" +#鍥藉浠g爜 +CSgitFtdcReqCancelAccountField["CountryCode"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqCancelAccountField["CustType"] = "char" +#鍦板潃 +CSgitFtdcReqCancelAccountField["Address"] = "string" +#閭紪 +CSgitFtdcReqCancelAccountField["ZipCode"] = "string" +#鐢佃瘽鍙风爜 +CSgitFtdcReqCancelAccountField["Telephone"] = "string" +#鎵嬫満 +CSgitFtdcReqCancelAccountField["MobilePhone"] = "string" +#浼犵湡 +CSgitFtdcReqCancelAccountField["Fax"] = "string" +#鐢靛瓙閭欢 +CSgitFtdcReqCancelAccountField["EMail"] = "string" +#璧勯噾璐︽埛鐘舵 +CSgitFtdcReqCancelAccountField["MoneyAccountStatus"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqCancelAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqCancelAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqCancelAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqCancelAccountField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcReqCancelAccountField["InstallID"] = "int" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcReqCancelAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcReqCancelAccountField["CurrencyID"] = "string" +#姹囬挒鏍囧織 +CSgitFtdcReqCancelAccountField["CashExchangeCode"] = "char" +#鎽樿 +CSgitFtdcReqCancelAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcReqCancelAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcReqCancelAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcReqCancelAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqCancelAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcReqCancelAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcReqCancelAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcReqCancelAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqCancelAccountField["OperNo"] = "string" +#浜ゆ槗ID +CSgitFtdcReqCancelAccountField["TID"] = "int" +structDict['CSgitFtdcReqCancelAccountField'] = CSgitFtdcReqCancelAccountField + + +#鍙樻洿閾惰璐︽埛璇锋眰 +CSgitFtdcReqChangeAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqChangeAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqChangeAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqChangeAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqChangeAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqChangeAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqChangeAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqChangeAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqChangeAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqChangeAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqChangeAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqChangeAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqChangeAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcReqChangeAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqChangeAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqChangeAccountField["IdentifiedCardNo"] = "string" +#鎬у埆 +CSgitFtdcReqChangeAccountField["Gender"] = "char" +#鍥藉浠g爜 +CSgitFtdcReqChangeAccountField["CountryCode"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqChangeAccountField["CustType"] = "char" +#鍦板潃 +CSgitFtdcReqChangeAccountField["Address"] = "string" +#閭紪 +CSgitFtdcReqChangeAccountField["ZipCode"] = "string" +#鐢佃瘽鍙风爜 +CSgitFtdcReqChangeAccountField["Telephone"] = "string" +#鎵嬫満 +CSgitFtdcReqChangeAccountField["MobilePhone"] = "string" +#浼犵湡 +CSgitFtdcReqChangeAccountField["Fax"] = "string" +#鐢靛瓙閭欢 +CSgitFtdcReqChangeAccountField["EMail"] = "string" +#璧勯噾璐︽埛鐘舵 +CSgitFtdcReqChangeAccountField["MoneyAccountStatus"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqChangeAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqChangeAccountField["BankPassWord"] = "string" +#鏂伴摱琛屽笎鍙 +CSgitFtdcReqChangeAccountField["NewBankAccount"] = "string" +#鏂伴摱琛屽瘑鐮 +CSgitFtdcReqChangeAccountField["NewBankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqChangeAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqChangeAccountField["Password"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcReqChangeAccountField["BankAccType"] = "char" +#瀹夎缂栧彿 +CSgitFtdcReqChangeAccountField["InstallID"] = "int" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcReqChangeAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcReqChangeAccountField["CurrencyID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqChangeAccountField["BrokerIDByBank"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcReqChangeAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcReqChangeAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗ID +CSgitFtdcReqChangeAccountField["TID"] = "int" +#鎽樿 +CSgitFtdcReqChangeAccountField["Digest"] = "string" +structDict['CSgitFtdcReqChangeAccountField'] = CSgitFtdcReqChangeAccountField + + +#杞处璇锋眰 +CSgitFtdcReqTransferField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqTransferField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqTransferField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqTransferField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqTransferField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqTransferField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqTransferField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqTransferField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqTransferField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqTransferField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqTransferField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqTransferField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqTransferField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcReqTransferField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqTransferField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqTransferField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqTransferField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqTransferField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqTransferField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqTransferField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqTransferField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcReqTransferField["InstallID"] = "int" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcReqTransferField["FutureSerial"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcReqTransferField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcReqTransferField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcReqTransferField["CurrencyID"] = "string" +#杞笎閲戦 +CSgitFtdcReqTransferField["TradeAmount"] = "float" +#鏈熻揣鍙彇閲戦 +CSgitFtdcReqTransferField["FutureFetchAmount"] = "float" +#璐圭敤鏀粯鏍囧織 +CSgitFtdcReqTransferField["FeePayFlag"] = "char" +#搴旀敹瀹㈡埛璐圭敤 +CSgitFtdcReqTransferField["CustFee"] = "float" +#搴旀敹鏈熻揣鍏徃璐圭敤 +CSgitFtdcReqTransferField["BrokerFee"] = "float" +#鍙戦佹柟缁欐帴鏀舵柟鐨勬秷鎭 +CSgitFtdcReqTransferField["Message"] = "string" +#鎽樿 +CSgitFtdcReqTransferField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcReqTransferField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcReqTransferField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcReqTransferField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqTransferField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcReqTransferField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcReqTransferField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcReqTransferField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqTransferField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcReqTransferField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcReqTransferField["TID"] = "int" +#杞处浜ゆ槗鐘舵 +CSgitFtdcReqTransferField["TransferStatus"] = "char" +structDict['CSgitFtdcReqTransferField'] = CSgitFtdcReqTransferField + + +#閾惰鍙戣捣閾惰璧勯噾杞湡璐у搷搴 +CSgitFtdcRspTransferField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspTransferField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspTransferField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspTransferField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspTransferField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspTransferField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspTransferField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspTransferField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspTransferField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspTransferField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspTransferField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspTransferField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspTransferField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcRspTransferField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcRspTransferField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcRspTransferField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcRspTransferField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcRspTransferField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcRspTransferField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcRspTransferField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcRspTransferField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcRspTransferField["InstallID"] = "int" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcRspTransferField["FutureSerial"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcRspTransferField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcRspTransferField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcRspTransferField["CurrencyID"] = "string" +#杞笎閲戦 +CSgitFtdcRspTransferField["TradeAmount"] = "float" +#鏈熻揣鍙彇閲戦 +CSgitFtdcRspTransferField["FutureFetchAmount"] = "float" +#璐圭敤鏀粯鏍囧織 +CSgitFtdcRspTransferField["FeePayFlag"] = "char" +#搴旀敹瀹㈡埛璐圭敤 +CSgitFtdcRspTransferField["CustFee"] = "float" +#搴旀敹鏈熻揣鍏徃璐圭敤 +CSgitFtdcRspTransferField["BrokerFee"] = "float" +#鍙戦佹柟缁欐帴鏀舵柟鐨勬秷鎭 +CSgitFtdcRspTransferField["Message"] = "string" +#鎽樿 +CSgitFtdcRspTransferField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcRspTransferField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcRspTransferField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcRspTransferField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcRspTransferField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcRspTransferField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcRspTransferField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcRspTransferField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcRspTransferField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcRspTransferField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcRspTransferField["TID"] = "int" +#杞处浜ゆ槗鐘舵 +CSgitFtdcRspTransferField["TransferStatus"] = "char" +#閿欒浠g爜 +CSgitFtdcRspTransferField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspTransferField["ErrorMsg"] = "string" +structDict['CSgitFtdcRspTransferField'] = CSgitFtdcRspTransferField + + +#鍐叉璇锋眰 +CSgitFtdcReqRepealField = {} +#鍐叉鏃堕棿闂撮殧 +CSgitFtdcReqRepealField["RepealTimeInterval"] = "int" +#宸茬粡鍐叉娆℃暟 +CSgitFtdcReqRepealField["RepealedTimes"] = "int" +#閾惰鍐叉鏍囧織 +CSgitFtdcReqRepealField["BankRepealFlag"] = "char" +#鏈熷晢鍐叉鏍囧織 +CSgitFtdcReqRepealField["BrokerRepealFlag"] = "char" +#琚啿姝e钩鍙版祦姘村彿 +CSgitFtdcReqRepealField["PlateRepealSerial"] = "int" +#琚啿姝i摱琛屾祦姘村彿 +CSgitFtdcReqRepealField["BankRepealSerial"] = "string" +#琚啿姝f湡璐ф祦姘村彿 +CSgitFtdcReqRepealField["FutureRepealSerial"] = "int" +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqRepealField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqRepealField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqRepealField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqRepealField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqRepealField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqRepealField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqRepealField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqRepealField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqRepealField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqRepealField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqRepealField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqRepealField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcReqRepealField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqRepealField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqRepealField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqRepealField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqRepealField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqRepealField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqRepealField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqRepealField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcReqRepealField["InstallID"] = "int" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcReqRepealField["FutureSerial"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcReqRepealField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcReqRepealField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcReqRepealField["CurrencyID"] = "string" +#杞笎閲戦 +CSgitFtdcReqRepealField["TradeAmount"] = "float" +#鏈熻揣鍙彇閲戦 +CSgitFtdcReqRepealField["FutureFetchAmount"] = "float" +#璐圭敤鏀粯鏍囧織 +CSgitFtdcReqRepealField["FeePayFlag"] = "char" +#搴旀敹瀹㈡埛璐圭敤 +CSgitFtdcReqRepealField["CustFee"] = "float" +#搴旀敹鏈熻揣鍏徃璐圭敤 +CSgitFtdcReqRepealField["BrokerFee"] = "float" +#鍙戦佹柟缁欐帴鏀舵柟鐨勬秷鎭 +CSgitFtdcReqRepealField["Message"] = "string" +#鎽樿 +CSgitFtdcReqRepealField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcReqRepealField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcReqRepealField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcReqRepealField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqRepealField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcReqRepealField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcReqRepealField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcReqRepealField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqRepealField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcReqRepealField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcReqRepealField["TID"] = "int" +#杞处浜ゆ槗鐘舵 +CSgitFtdcReqRepealField["TransferStatus"] = "char" +structDict['CSgitFtdcReqRepealField'] = CSgitFtdcReqRepealField + + +#鍐叉鍝嶅簲 +CSgitFtdcRspRepealField = {} +#鍐叉鏃堕棿闂撮殧 +CSgitFtdcRspRepealField["RepealTimeInterval"] = "int" +#宸茬粡鍐叉娆℃暟 +CSgitFtdcRspRepealField["RepealedTimes"] = "int" +#閾惰鍐叉鏍囧織 +CSgitFtdcRspRepealField["BankRepealFlag"] = "char" +#鏈熷晢鍐叉鏍囧織 +CSgitFtdcRspRepealField["BrokerRepealFlag"] = "char" +#琚啿姝e钩鍙版祦姘村彿 +CSgitFtdcRspRepealField["PlateRepealSerial"] = "int" +#琚啿姝i摱琛屾祦姘村彿 +CSgitFtdcRspRepealField["BankRepealSerial"] = "string" +#琚啿姝f湡璐ф祦姘村彿 +CSgitFtdcRspRepealField["FutureRepealSerial"] = "int" +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspRepealField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspRepealField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspRepealField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspRepealField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspRepealField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspRepealField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspRepealField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspRepealField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspRepealField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspRepealField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspRepealField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspRepealField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcRspRepealField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcRspRepealField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcRspRepealField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcRspRepealField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcRspRepealField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcRspRepealField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcRspRepealField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcRspRepealField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcRspRepealField["InstallID"] = "int" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcRspRepealField["FutureSerial"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcRspRepealField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcRspRepealField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcRspRepealField["CurrencyID"] = "string" +#杞笎閲戦 +CSgitFtdcRspRepealField["TradeAmount"] = "float" +#鏈熻揣鍙彇閲戦 +CSgitFtdcRspRepealField["FutureFetchAmount"] = "float" +#璐圭敤鏀粯鏍囧織 +CSgitFtdcRspRepealField["FeePayFlag"] = "char" +#搴旀敹瀹㈡埛璐圭敤 +CSgitFtdcRspRepealField["CustFee"] = "float" +#搴旀敹鏈熻揣鍏徃璐圭敤 +CSgitFtdcRspRepealField["BrokerFee"] = "float" +#鍙戦佹柟缁欐帴鏀舵柟鐨勬秷鎭 +CSgitFtdcRspRepealField["Message"] = "string" +#鎽樿 +CSgitFtdcRspRepealField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcRspRepealField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcRspRepealField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcRspRepealField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcRspRepealField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcRspRepealField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcRspRepealField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcRspRepealField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcRspRepealField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcRspRepealField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcRspRepealField["TID"] = "int" +#杞处浜ゆ槗鐘舵 +CSgitFtdcRspRepealField["TransferStatus"] = "char" +#閿欒浠g爜 +CSgitFtdcRspRepealField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspRepealField["ErrorMsg"] = "string" +structDict['CSgitFtdcRspRepealField'] = CSgitFtdcRspRepealField + + +#鏌ヨ璐︽埛淇℃伅璇锋眰 +CSgitFtdcReqQueryAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqQueryAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqQueryAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqQueryAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqQueryAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqQueryAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqQueryAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqQueryAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqQueryAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqQueryAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqQueryAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqQueryAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqQueryAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcReqQueryAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqQueryAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqQueryAccountField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqQueryAccountField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqQueryAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqQueryAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqQueryAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqQueryAccountField["Password"] = "string" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcReqQueryAccountField["FutureSerial"] = "int" +#瀹夎缂栧彿 +CSgitFtdcReqQueryAccountField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcReqQueryAccountField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcReqQueryAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcReqQueryAccountField["CurrencyID"] = "string" +#鎽樿 +CSgitFtdcReqQueryAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcReqQueryAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcReqQueryAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcReqQueryAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqQueryAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcReqQueryAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcReqQueryAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcReqQueryAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqQueryAccountField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcReqQueryAccountField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcReqQueryAccountField["TID"] = "int" +structDict['CSgitFtdcReqQueryAccountField'] = CSgitFtdcReqQueryAccountField + + +#鏌ヨ璐︽埛淇℃伅鍝嶅簲 +CSgitFtdcRspQueryAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspQueryAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspQueryAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspQueryAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspQueryAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspQueryAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspQueryAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspQueryAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspQueryAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspQueryAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspQueryAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspQueryAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspQueryAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcRspQueryAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcRspQueryAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcRspQueryAccountField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcRspQueryAccountField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcRspQueryAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcRspQueryAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcRspQueryAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcRspQueryAccountField["Password"] = "string" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcRspQueryAccountField["FutureSerial"] = "int" +#瀹夎缂栧彿 +CSgitFtdcRspQueryAccountField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcRspQueryAccountField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcRspQueryAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcRspQueryAccountField["CurrencyID"] = "string" +#鎽樿 +CSgitFtdcRspQueryAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcRspQueryAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcRspQueryAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcRspQueryAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcRspQueryAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcRspQueryAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcRspQueryAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcRspQueryAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcRspQueryAccountField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcRspQueryAccountField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcRspQueryAccountField["TID"] = "int" +#閾惰鍙敤閲戦 +CSgitFtdcRspQueryAccountField["BankUseAmount"] = "float" +#閾惰鍙彇閲戦 +CSgitFtdcRspQueryAccountField["BankFetchAmount"] = "float" +structDict['CSgitFtdcRspQueryAccountField'] = CSgitFtdcRspQueryAccountField + + +#鏈熷晢绛惧埌绛鹃 +CSgitFtdcFutureSignIOField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcFutureSignIOField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcFutureSignIOField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcFutureSignIOField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcFutureSignIOField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcFutureSignIOField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcFutureSignIOField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcFutureSignIOField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcFutureSignIOField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcFutureSignIOField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcFutureSignIOField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcFutureSignIOField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcFutureSignIOField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcFutureSignIOField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcFutureSignIOField["UserID"] = "string" +#鎽樿 +CSgitFtdcFutureSignIOField["Digest"] = "string" +#甯佺浠g爜 +CSgitFtdcFutureSignIOField["CurrencyID"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcFutureSignIOField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcFutureSignIOField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcFutureSignIOField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcFutureSignIOField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcFutureSignIOField["TID"] = "int" +structDict['CSgitFtdcFutureSignIOField'] = CSgitFtdcFutureSignIOField + + +#鏈熷晢绛惧埌鍝嶅簲 +CSgitFtdcRspFutureSignInField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspFutureSignInField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspFutureSignInField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspFutureSignInField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspFutureSignInField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspFutureSignInField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspFutureSignInField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspFutureSignInField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspFutureSignInField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspFutureSignInField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspFutureSignInField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspFutureSignInField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspFutureSignInField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcRspFutureSignInField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcRspFutureSignInField["UserID"] = "string" +#鎽樿 +CSgitFtdcRspFutureSignInField["Digest"] = "string" +#甯佺浠g爜 +CSgitFtdcRspFutureSignInField["CurrencyID"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcRspFutureSignInField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcRspFutureSignInField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcRspFutureSignInField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcRspFutureSignInField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcRspFutureSignInField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcRspFutureSignInField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspFutureSignInField["ErrorMsg"] = "string" +#PIN瀵嗛挜 +CSgitFtdcRspFutureSignInField["PinKey"] = "string" +#MAC瀵嗛挜 +CSgitFtdcRspFutureSignInField["MacKey"] = "string" +structDict['CSgitFtdcRspFutureSignInField'] = CSgitFtdcRspFutureSignInField + + +#鏈熷晢绛鹃璇锋眰 +CSgitFtdcReqFutureSignOutField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqFutureSignOutField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqFutureSignOutField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqFutureSignOutField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqFutureSignOutField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqFutureSignOutField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqFutureSignOutField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqFutureSignOutField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqFutureSignOutField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqFutureSignOutField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqFutureSignOutField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqFutureSignOutField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqFutureSignOutField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcReqFutureSignOutField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcReqFutureSignOutField["UserID"] = "string" +#鎽樿 +CSgitFtdcReqFutureSignOutField["Digest"] = "string" +#甯佺浠g爜 +CSgitFtdcReqFutureSignOutField["CurrencyID"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcReqFutureSignOutField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqFutureSignOutField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqFutureSignOutField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcReqFutureSignOutField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcReqFutureSignOutField["TID"] = "int" +structDict['CSgitFtdcReqFutureSignOutField'] = CSgitFtdcReqFutureSignOutField + + +#鏈熷晢绛鹃鍝嶅簲 +CSgitFtdcRspFutureSignOutField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspFutureSignOutField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspFutureSignOutField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspFutureSignOutField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspFutureSignOutField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspFutureSignOutField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspFutureSignOutField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspFutureSignOutField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspFutureSignOutField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspFutureSignOutField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspFutureSignOutField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspFutureSignOutField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspFutureSignOutField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcRspFutureSignOutField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcRspFutureSignOutField["UserID"] = "string" +#鎽樿 +CSgitFtdcRspFutureSignOutField["Digest"] = "string" +#甯佺浠g爜 +CSgitFtdcRspFutureSignOutField["CurrencyID"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcRspFutureSignOutField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcRspFutureSignOutField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcRspFutureSignOutField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcRspFutureSignOutField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcRspFutureSignOutField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcRspFutureSignOutField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspFutureSignOutField["ErrorMsg"] = "string" +structDict['CSgitFtdcRspFutureSignOutField'] = CSgitFtdcRspFutureSignOutField + + +#鏌ヨ鎸囧畾娴佹按鍙风殑浜ゆ槗缁撴灉璇锋眰 +CSgitFtdcReqQueryTradeResultBySerialField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqQueryTradeResultBySerialField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqQueryTradeResultBySerialField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqQueryTradeResultBySerialField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqQueryTradeResultBySerialField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqQueryTradeResultBySerialField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqQueryTradeResultBySerialField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqQueryTradeResultBySerialField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqQueryTradeResultBySerialField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqQueryTradeResultBySerialField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqQueryTradeResultBySerialField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqQueryTradeResultBySerialField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqQueryTradeResultBySerialField["SessionID"] = "int" +#娴佹按鍙 +CSgitFtdcReqQueryTradeResultBySerialField["Reference"] = "int" +#鏈祦姘村彿鍙戝竷鑰呯殑鏈烘瀯绫诲瀷 +CSgitFtdcReqQueryTradeResultBySerialField["RefrenceIssureType"] = "char" +#鏈祦姘村彿鍙戝竷鑰呮満鏋勭紪鐮 +CSgitFtdcReqQueryTradeResultBySerialField["RefrenceIssure"] = "string" +#瀹㈡埛濮撳悕 +CSgitFtdcReqQueryTradeResultBySerialField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcReqQueryTradeResultBySerialField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcReqQueryTradeResultBySerialField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcReqQueryTradeResultBySerialField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcReqQueryTradeResultBySerialField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcReqQueryTradeResultBySerialField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcReqQueryTradeResultBySerialField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcReqQueryTradeResultBySerialField["Password"] = "string" +#甯佺浠g爜 +CSgitFtdcReqQueryTradeResultBySerialField["CurrencyID"] = "string" +#杞笎閲戦 +CSgitFtdcReqQueryTradeResultBySerialField["TradeAmount"] = "float" +#鎽樿 +CSgitFtdcReqQueryTradeResultBySerialField["Digest"] = "string" +structDict['CSgitFtdcReqQueryTradeResultBySerialField'] = CSgitFtdcReqQueryTradeResultBySerialField + + +#鏌ヨ鎸囧畾娴佹按鍙风殑浜ゆ槗缁撴灉鍝嶅簲 +CSgitFtdcRspQueryTradeResultBySerialField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspQueryTradeResultBySerialField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspQueryTradeResultBySerialField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspQueryTradeResultBySerialField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspQueryTradeResultBySerialField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspQueryTradeResultBySerialField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspQueryTradeResultBySerialField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspQueryTradeResultBySerialField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspQueryTradeResultBySerialField["SessionID"] = "int" +#閿欒浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspQueryTradeResultBySerialField["ErrorMsg"] = "string" +#娴佹按鍙 +CSgitFtdcRspQueryTradeResultBySerialField["Reference"] = "int" +#鏈祦姘村彿鍙戝竷鑰呯殑鏈烘瀯绫诲瀷 +CSgitFtdcRspQueryTradeResultBySerialField["RefrenceIssureType"] = "char" +#鏈祦姘村彿鍙戝竷鑰呮満鏋勭紪鐮 +CSgitFtdcRspQueryTradeResultBySerialField["RefrenceIssure"] = "string" +#鍘熷杩斿洖浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["OriginReturnCode"] = "string" +#鍘熷杩斿洖鐮佹弿杩 +CSgitFtdcRspQueryTradeResultBySerialField["OriginDescrInfoForReturnCode"] = "string" +#閾惰甯愬彿 +CSgitFtdcRspQueryTradeResultBySerialField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcRspQueryTradeResultBySerialField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcRspQueryTradeResultBySerialField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcRspQueryTradeResultBySerialField["Password"] = "string" +#甯佺浠g爜 +CSgitFtdcRspQueryTradeResultBySerialField["CurrencyID"] = "string" +#杞笎閲戦 +CSgitFtdcRspQueryTradeResultBySerialField["TradeAmount"] = "float" +#鎽樿 +CSgitFtdcRspQueryTradeResultBySerialField["Digest"] = "string" +structDict['CSgitFtdcRspQueryTradeResultBySerialField'] = CSgitFtdcRspQueryTradeResultBySerialField + + +#鏃ョ粓鏂囦欢灏辩华璇锋眰 +CSgitFtdcReqDayEndFileReadyField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqDayEndFileReadyField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqDayEndFileReadyField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqDayEndFileReadyField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqDayEndFileReadyField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqDayEndFileReadyField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqDayEndFileReadyField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqDayEndFileReadyField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqDayEndFileReadyField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqDayEndFileReadyField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqDayEndFileReadyField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqDayEndFileReadyField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqDayEndFileReadyField["SessionID"] = "int" +#鏂囦欢涓氬姟鍔熻兘 +CSgitFtdcReqDayEndFileReadyField["FileBusinessCode"] = "char" +#鎽樿 +CSgitFtdcReqDayEndFileReadyField["Digest"] = "string" +structDict['CSgitFtdcReqDayEndFileReadyField'] = CSgitFtdcReqDayEndFileReadyField + + +#杩斿洖缁撴灉 +CSgitFtdcReturnResultField = {} +#杩斿洖浠g爜 +CSgitFtdcReturnResultField["ReturnCode"] = "string" +#杩斿洖鐮佹弿杩 +CSgitFtdcReturnResultField["DescrInfoForReturnCode"] = "string" +structDict['CSgitFtdcReturnResultField'] = CSgitFtdcReturnResultField + + +#楠岃瘉鏈熻揣璧勯噾瀵嗙爜 +CSgitFtdcVerifyFuturePasswordField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcVerifyFuturePasswordField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcVerifyFuturePasswordField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcVerifyFuturePasswordField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcVerifyFuturePasswordField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcVerifyFuturePasswordField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcVerifyFuturePasswordField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcVerifyFuturePasswordField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcVerifyFuturePasswordField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcVerifyFuturePasswordField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcVerifyFuturePasswordField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcVerifyFuturePasswordField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcVerifyFuturePasswordField["SessionID"] = "int" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcVerifyFuturePasswordField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcVerifyFuturePasswordField["Password"] = "string" +#閾惰甯愬彿 +CSgitFtdcVerifyFuturePasswordField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcVerifyFuturePasswordField["BankPassWord"] = "string" +#瀹夎缂栧彿 +CSgitFtdcVerifyFuturePasswordField["InstallID"] = "int" +#浜ゆ槗ID +CSgitFtdcVerifyFuturePasswordField["TID"] = "int" +structDict['CSgitFtdcVerifyFuturePasswordField'] = CSgitFtdcVerifyFuturePasswordField + + +#楠岃瘉瀹㈡埛淇℃伅 +CSgitFtdcVerifyCustInfoField = {} +#瀹㈡埛濮撳悕 +CSgitFtdcVerifyCustInfoField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcVerifyCustInfoField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcVerifyCustInfoField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcVerifyCustInfoField["CustType"] = "char" +structDict['CSgitFtdcVerifyCustInfoField'] = CSgitFtdcVerifyCustInfoField + + +#楠岃瘉鏈熻揣璧勯噾瀵嗙爜鍜屽鎴蜂俊鎭 +CSgitFtdcVerifyFuturePasswordAndCustInfoField = {} +#瀹㈡埛濮撳悕 +CSgitFtdcVerifyFuturePasswordAndCustInfoField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcVerifyFuturePasswordAndCustInfoField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcVerifyFuturePasswordAndCustInfoField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcVerifyFuturePasswordAndCustInfoField["CustType"] = "char" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcVerifyFuturePasswordAndCustInfoField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcVerifyFuturePasswordAndCustInfoField["Password"] = "string" +structDict['CSgitFtdcVerifyFuturePasswordAndCustInfoField'] = CSgitFtdcVerifyFuturePasswordAndCustInfoField + + +#楠岃瘉鏈熻揣璧勯噾瀵嗙爜鍜屽鎴蜂俊鎭 +CSgitFtdcDepositResultInformField = {} +#鍑哄叆閲戞祦姘村彿锛岃娴佹按鍙蜂负閾舵湡鎶ョ洏杩斿洖鐨勬祦姘村彿 +CSgitFtdcDepositResultInformField["DepositSeqNo"] = "string" +#缁忕邯鍏徃浠g爜 +CSgitFtdcDepositResultInformField["BrokerID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcDepositResultInformField["InvestorID"] = "string" +#鍏ラ噾閲戦 +CSgitFtdcDepositResultInformField["Deposit"] = "float" +#璇锋眰缂栧彿 +CSgitFtdcDepositResultInformField["RequestID"] = "int" +#杩斿洖浠g爜 +CSgitFtdcDepositResultInformField["ReturnCode"] = "string" +#杩斿洖鐮佹弿杩 +CSgitFtdcDepositResultInformField["DescrInfoForReturnCode"] = "string" +structDict['CSgitFtdcDepositResultInformField'] = CSgitFtdcDepositResultInformField + + +#浜ゆ槗鏍稿績鍚戦摱鏈熸姤鐩樺彂鍑哄瘑閽ュ悓姝ヨ姹 +CSgitFtdcReqSyncKeyField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcReqSyncKeyField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcReqSyncKeyField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqSyncKeyField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcReqSyncKeyField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcReqSyncKeyField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcReqSyncKeyField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcReqSyncKeyField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcReqSyncKeyField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcReqSyncKeyField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcReqSyncKeyField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcReqSyncKeyField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcReqSyncKeyField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcReqSyncKeyField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcReqSyncKeyField["UserID"] = "string" +#浜ゆ槗鏍稿績缁欓摱鏈熸姤鐩樼殑娑堟伅 +CSgitFtdcReqSyncKeyField["Message"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcReqSyncKeyField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcReqSyncKeyField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcReqSyncKeyField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcReqSyncKeyField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcReqSyncKeyField["TID"] = "int" +structDict['CSgitFtdcReqSyncKeyField'] = CSgitFtdcReqSyncKeyField + + +#浜ゆ槗鏍稿績鍚戦摱鏈熸姤鐩樺彂鍑哄瘑閽ュ悓姝ュ搷搴 +CSgitFtdcRspSyncKeyField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcRspSyncKeyField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcRspSyncKeyField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspSyncKeyField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcRspSyncKeyField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcRspSyncKeyField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcRspSyncKeyField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcRspSyncKeyField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcRspSyncKeyField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcRspSyncKeyField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcRspSyncKeyField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcRspSyncKeyField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcRspSyncKeyField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcRspSyncKeyField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcRspSyncKeyField["UserID"] = "string" +#浜ゆ槗鏍稿績缁欓摱鏈熸姤鐩樼殑娑堟伅 +CSgitFtdcRspSyncKeyField["Message"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcRspSyncKeyField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcRspSyncKeyField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcRspSyncKeyField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcRspSyncKeyField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcRspSyncKeyField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcRspSyncKeyField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcRspSyncKeyField["ErrorMsg"] = "string" +structDict['CSgitFtdcRspSyncKeyField'] = CSgitFtdcRspSyncKeyField + + +#鏌ヨ璐︽埛淇℃伅閫氱煡 +CSgitFtdcNotifyQueryAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcNotifyQueryAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcNotifyQueryAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifyQueryAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcNotifyQueryAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifyQueryAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcNotifyQueryAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcNotifyQueryAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcNotifyQueryAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcNotifyQueryAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcNotifyQueryAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcNotifyQueryAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcNotifyQueryAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcNotifyQueryAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcNotifyQueryAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcNotifyQueryAccountField["IdentifiedCardNo"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcNotifyQueryAccountField["CustType"] = "char" +#閾惰甯愬彿 +CSgitFtdcNotifyQueryAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcNotifyQueryAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcNotifyQueryAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcNotifyQueryAccountField["Password"] = "string" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcNotifyQueryAccountField["FutureSerial"] = "int" +#瀹夎缂栧彿 +CSgitFtdcNotifyQueryAccountField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcNotifyQueryAccountField["UserID"] = "string" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcNotifyQueryAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcNotifyQueryAccountField["CurrencyID"] = "string" +#鎽樿 +CSgitFtdcNotifyQueryAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcNotifyQueryAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcNotifyQueryAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcNotifyQueryAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcNotifyQueryAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcNotifyQueryAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcNotifyQueryAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcNotifyQueryAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcNotifyQueryAccountField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcNotifyQueryAccountField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcNotifyQueryAccountField["TID"] = "int" +#閾惰鍙敤閲戦 +CSgitFtdcNotifyQueryAccountField["BankUseAmount"] = "float" +#閾惰鍙彇閲戦 +CSgitFtdcNotifyQueryAccountField["BankFetchAmount"] = "float" +#閿欒浠g爜 +CSgitFtdcNotifyQueryAccountField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcNotifyQueryAccountField["ErrorMsg"] = "string" +structDict['CSgitFtdcNotifyQueryAccountField'] = CSgitFtdcNotifyQueryAccountField + + +#閾舵湡杞处浜ゆ槗娴佹按琛 +CSgitFtdcTransferSerialField = {} +#骞冲彴娴佹按鍙 +CSgitFtdcTransferSerialField["PlateSerial"] = "int" +#浜ゆ槗鍙戣捣鏂规棩鏈 +CSgitFtdcTransferSerialField["TradeDate"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcTransferSerialField["TradingDay"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcTransferSerialField["TradeTime"] = "string" +#浜ゆ槗浠g爜 +CSgitFtdcTransferSerialField["TradeCode"] = "string" +#浼氳瘽缂栧彿 +CSgitFtdcTransferSerialField["SessionID"] = "int" +#閾惰缂栫爜 +CSgitFtdcTransferSerialField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯缂栫爜 +CSgitFtdcTransferSerialField["BankBranchID"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcTransferSerialField["BankAccType"] = "char" +#閾惰甯愬彿 +CSgitFtdcTransferSerialField["BankAccount"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcTransferSerialField["BankSerial"] = "string" +#鏈熻揣鍏徃缂栫爜 +CSgitFtdcTransferSerialField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcTransferSerialField["BrokerBranchID"] = "string" +#鏈熻揣鍏徃甯愬彿绫诲瀷 +CSgitFtdcTransferSerialField["FutureAccType"] = "char" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcTransferSerialField["AccountID"] = "string" +#鎶曡祫鑰呬唬鐮 +CSgitFtdcTransferSerialField["InvestorID"] = "string" +#鏈熻揣鍏徃娴佹按鍙 +CSgitFtdcTransferSerialField["FutureSerial"] = "int" +#璇佷欢绫诲瀷 +CSgitFtdcTransferSerialField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcTransferSerialField["IdentifiedCardNo"] = "string" +#甯佺浠g爜 +CSgitFtdcTransferSerialField["CurrencyID"] = "string" +#浜ゆ槗閲戦 +CSgitFtdcTransferSerialField["TradeAmount"] = "float" +#搴旀敹瀹㈡埛璐圭敤 +CSgitFtdcTransferSerialField["CustFee"] = "float" +#搴旀敹鏈熻揣鍏徃璐圭敤 +CSgitFtdcTransferSerialField["BrokerFee"] = "float" +#鏈夋晥鏍囧織 +CSgitFtdcTransferSerialField["AvailabilityFlag"] = "char" +#鎿嶄綔鍛 +CSgitFtdcTransferSerialField["OperatorCode"] = "string" +#鏂伴摱琛屽笎鍙 +CSgitFtdcTransferSerialField["BankNewAccount"] = "string" +#閿欒浠g爜 +CSgitFtdcTransferSerialField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcTransferSerialField["ErrorMsg"] = "string" +structDict['CSgitFtdcTransferSerialField'] = CSgitFtdcTransferSerialField + + +#璇锋眰鏌ヨ杞笎娴佹按 +CSgitFtdcQryTransferSerialField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryTransferSerialField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcQryTransferSerialField["AccountID"] = "string" +#閾惰缂栫爜 +CSgitFtdcQryTransferSerialField["BankID"] = "string" +structDict['CSgitFtdcQryTransferSerialField'] = CSgitFtdcQryTransferSerialField + + +#鏈熷晢绛惧埌閫氱煡 +CSgitFtdcNotifyFutureSignInField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcNotifyFutureSignInField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcNotifyFutureSignInField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifyFutureSignInField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcNotifyFutureSignInField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifyFutureSignInField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcNotifyFutureSignInField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcNotifyFutureSignInField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcNotifyFutureSignInField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcNotifyFutureSignInField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcNotifyFutureSignInField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcNotifyFutureSignInField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcNotifyFutureSignInField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcNotifyFutureSignInField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcNotifyFutureSignInField["UserID"] = "string" +#鎽樿 +CSgitFtdcNotifyFutureSignInField["Digest"] = "string" +#甯佺浠g爜 +CSgitFtdcNotifyFutureSignInField["CurrencyID"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcNotifyFutureSignInField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcNotifyFutureSignInField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcNotifyFutureSignInField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcNotifyFutureSignInField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcNotifyFutureSignInField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcNotifyFutureSignInField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcNotifyFutureSignInField["ErrorMsg"] = "string" +#PIN瀵嗛挜 +CSgitFtdcNotifyFutureSignInField["PinKey"] = "string" +#MAC瀵嗛挜 +CSgitFtdcNotifyFutureSignInField["MacKey"] = "string" +structDict['CSgitFtdcNotifyFutureSignInField'] = CSgitFtdcNotifyFutureSignInField + + +#鏈熷晢绛鹃閫氱煡 +CSgitFtdcNotifyFutureSignOutField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcNotifyFutureSignOutField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcNotifyFutureSignOutField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifyFutureSignOutField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcNotifyFutureSignOutField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifyFutureSignOutField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcNotifyFutureSignOutField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcNotifyFutureSignOutField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcNotifyFutureSignOutField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcNotifyFutureSignOutField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcNotifyFutureSignOutField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcNotifyFutureSignOutField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcNotifyFutureSignOutField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcNotifyFutureSignOutField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcNotifyFutureSignOutField["UserID"] = "string" +#鎽樿 +CSgitFtdcNotifyFutureSignOutField["Digest"] = "string" +#甯佺浠g爜 +CSgitFtdcNotifyFutureSignOutField["CurrencyID"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcNotifyFutureSignOutField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcNotifyFutureSignOutField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcNotifyFutureSignOutField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcNotifyFutureSignOutField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcNotifyFutureSignOutField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcNotifyFutureSignOutField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcNotifyFutureSignOutField["ErrorMsg"] = "string" +structDict['CSgitFtdcNotifyFutureSignOutField'] = CSgitFtdcNotifyFutureSignOutField + + +#浜ゆ槗鏍稿績鍚戦摱鏈熸姤鐩樺彂鍑哄瘑閽ュ悓姝ュ鐞嗙粨鏋滅殑閫氱煡 +CSgitFtdcNotifySyncKeyField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcNotifySyncKeyField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcNotifySyncKeyField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifySyncKeyField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcNotifySyncKeyField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcNotifySyncKeyField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcNotifySyncKeyField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcNotifySyncKeyField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcNotifySyncKeyField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcNotifySyncKeyField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcNotifySyncKeyField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcNotifySyncKeyField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcNotifySyncKeyField["SessionID"] = "int" +#瀹夎缂栧彿 +CSgitFtdcNotifySyncKeyField["InstallID"] = "int" +#鐢ㄦ埛鏍囪瘑 +CSgitFtdcNotifySyncKeyField["UserID"] = "string" +#浜ゆ槗鏍稿績缁欓摱鏈熸姤鐩樼殑娑堟伅 +CSgitFtdcNotifySyncKeyField["Message"] = "string" +#娓犻亾鏍囧織 +CSgitFtdcNotifySyncKeyField["DeviceID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcNotifySyncKeyField["BrokerIDByBank"] = "string" +#浜ゆ槗鏌滃憳 +CSgitFtdcNotifySyncKeyField["OperNo"] = "string" +#璇锋眰缂栧彿 +CSgitFtdcNotifySyncKeyField["RequestID"] = "int" +#浜ゆ槗ID +CSgitFtdcNotifySyncKeyField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcNotifySyncKeyField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcNotifySyncKeyField["ErrorMsg"] = "string" +structDict['CSgitFtdcNotifySyncKeyField'] = CSgitFtdcNotifySyncKeyField + + +#璇锋眰鏌ヨ閾舵湡绛剧害鍏崇郴 +CSgitFtdcQryAccountregisterField = {} +#缁忕邯鍏徃浠g爜 +CSgitFtdcQryAccountregisterField["BrokerID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcQryAccountregisterField["AccountID"] = "string" +#閾惰缂栫爜 +CSgitFtdcQryAccountregisterField["BankID"] = "string" +structDict['CSgitFtdcQryAccountregisterField'] = CSgitFtdcQryAccountregisterField + + +#瀹㈡埛寮閿鎴蜂俊鎭〃 +CSgitFtdcAccountregisterField = {} +#浜ゆ槗鏃ユ湡 +CSgitFtdcAccountregisterField["TradeDay"] = "string" +#閾惰缂栫爜 +CSgitFtdcAccountregisterField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯缂栫爜 +CSgitFtdcAccountregisterField["BankBranchID"] = "string" +#閾惰甯愬彿 +CSgitFtdcAccountregisterField["BankAccount"] = "string" +#鏈熻揣鍏徃缂栫爜 +CSgitFtdcAccountregisterField["BrokerID"] = "string" +#鏈熻揣鍏徃鍒嗘敮鏈烘瀯缂栫爜 +CSgitFtdcAccountregisterField["BrokerBranchID"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcAccountregisterField["AccountID"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcAccountregisterField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcAccountregisterField["IdentifiedCardNo"] = "string" +#瀹㈡埛濮撳悕 +CSgitFtdcAccountregisterField["CustomerName"] = "string" +#甯佺浠g爜 +CSgitFtdcAccountregisterField["CurrencyID"] = "string" +#寮閿鎴风被鍒 +CSgitFtdcAccountregisterField["OpenOrDestroy"] = "char" +#绛剧害鏃ユ湡 +CSgitFtdcAccountregisterField["RegDate"] = "string" +#瑙g害鏃ユ湡 +CSgitFtdcAccountregisterField["OutDate"] = "string" +#浜ゆ槗ID +CSgitFtdcAccountregisterField["TID"] = "int" +#瀹㈡埛绫诲瀷 +CSgitFtdcAccountregisterField["CustType"] = "char" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcAccountregisterField["BankAccType"] = "char" +structDict['CSgitFtdcAccountregisterField'] = CSgitFtdcAccountregisterField + + +#閾舵湡寮鎴蜂俊鎭 +CSgitFtdcOpenAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcOpenAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcOpenAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcOpenAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcOpenAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcOpenAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcOpenAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcOpenAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcOpenAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcOpenAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcOpenAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcOpenAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcOpenAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcOpenAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcOpenAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcOpenAccountField["IdentifiedCardNo"] = "string" +#鎬у埆 +CSgitFtdcOpenAccountField["Gender"] = "char" +#鍥藉浠g爜 +CSgitFtdcOpenAccountField["CountryCode"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcOpenAccountField["CustType"] = "char" +#鍦板潃 +CSgitFtdcOpenAccountField["Address"] = "string" +#閭紪 +CSgitFtdcOpenAccountField["ZipCode"] = "string" +#鐢佃瘽鍙风爜 +CSgitFtdcOpenAccountField["Telephone"] = "string" +#鎵嬫満 +CSgitFtdcOpenAccountField["MobilePhone"] = "string" +#浼犵湡 +CSgitFtdcOpenAccountField["Fax"] = "string" +#鐢靛瓙閭欢 +CSgitFtdcOpenAccountField["EMail"] = "string" +#璧勯噾璐︽埛鐘舵 +CSgitFtdcOpenAccountField["MoneyAccountStatus"] = "char" +#閾惰甯愬彿 +CSgitFtdcOpenAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcOpenAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcOpenAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcOpenAccountField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcOpenAccountField["InstallID"] = "int" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcOpenAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcOpenAccountField["CurrencyID"] = "string" +#姹囬挒鏍囧織 +CSgitFtdcOpenAccountField["CashExchangeCode"] = "char" +#鎽樿 +CSgitFtdcOpenAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcOpenAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcOpenAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcOpenAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcOpenAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcOpenAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcOpenAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcOpenAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcOpenAccountField["OperNo"] = "string" +#浜ゆ槗ID +CSgitFtdcOpenAccountField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcOpenAccountField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcOpenAccountField["ErrorMsg"] = "string" +structDict['CSgitFtdcOpenAccountField'] = CSgitFtdcOpenAccountField + + +#閾舵湡閿鎴蜂俊鎭 +CSgitFtdcCancelAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcCancelAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcCancelAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcCancelAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcCancelAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcCancelAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcCancelAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcCancelAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcCancelAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcCancelAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcCancelAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcCancelAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcCancelAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcCancelAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcCancelAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcCancelAccountField["IdentifiedCardNo"] = "string" +#鎬у埆 +CSgitFtdcCancelAccountField["Gender"] = "char" +#鍥藉浠g爜 +CSgitFtdcCancelAccountField["CountryCode"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcCancelAccountField["CustType"] = "char" +#鍦板潃 +CSgitFtdcCancelAccountField["Address"] = "string" +#閭紪 +CSgitFtdcCancelAccountField["ZipCode"] = "string" +#鐢佃瘽鍙风爜 +CSgitFtdcCancelAccountField["Telephone"] = "string" +#鎵嬫満 +CSgitFtdcCancelAccountField["MobilePhone"] = "string" +#浼犵湡 +CSgitFtdcCancelAccountField["Fax"] = "string" +#鐢靛瓙閭欢 +CSgitFtdcCancelAccountField["EMail"] = "string" +#璧勯噾璐︽埛鐘舵 +CSgitFtdcCancelAccountField["MoneyAccountStatus"] = "char" +#閾惰甯愬彿 +CSgitFtdcCancelAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcCancelAccountField["BankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcCancelAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcCancelAccountField["Password"] = "string" +#瀹夎缂栧彿 +CSgitFtdcCancelAccountField["InstallID"] = "int" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcCancelAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcCancelAccountField["CurrencyID"] = "string" +#姹囬挒鏍囧織 +CSgitFtdcCancelAccountField["CashExchangeCode"] = "char" +#鎽樿 +CSgitFtdcCancelAccountField["Digest"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcCancelAccountField["BankAccType"] = "char" +#娓犻亾鏍囧織 +CSgitFtdcCancelAccountField["DeviceID"] = "string" +#鏈熻揣鍗曚綅甯愬彿绫诲瀷 +CSgitFtdcCancelAccountField["BankSecuAccType"] = "char" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcCancelAccountField["BrokerIDByBank"] = "string" +#鏈熻揣鍗曚綅甯愬彿 +CSgitFtdcCancelAccountField["BankSecuAcc"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcCancelAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcCancelAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗鏌滃憳 +CSgitFtdcCancelAccountField["OperNo"] = "string" +#浜ゆ槗ID +CSgitFtdcCancelAccountField["TID"] = "int" +#閿欒浠g爜 +CSgitFtdcCancelAccountField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcCancelAccountField["ErrorMsg"] = "string" +structDict['CSgitFtdcCancelAccountField'] = CSgitFtdcCancelAccountField + + +#閾舵湡鍙樻洿閾惰璐﹀彿淇℃伅 +CSgitFtdcChangeAccountField = {} +#涓氬姟鍔熻兘鐮 +CSgitFtdcChangeAccountField["TradeCode"] = "string" +#閾惰浠g爜 +CSgitFtdcChangeAccountField["BankID"] = "string" +#閾惰鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcChangeAccountField["BankBranchID"] = "string" +#鏈熷晢浠g爜 +CSgitFtdcChangeAccountField["BrokerID"] = "string" +#鏈熷晢鍒嗘敮鏈烘瀯浠g爜 +CSgitFtdcChangeAccountField["BrokerBranchID"] = "string" +#浜ゆ槗鏃ユ湡 +CSgitFtdcChangeAccountField["TradeDate"] = "string" +#浜ゆ槗鏃堕棿 +CSgitFtdcChangeAccountField["TradeTime"] = "string" +#閾惰娴佹按鍙 +CSgitFtdcChangeAccountField["BankSerial"] = "string" +#浜ゆ槗绯荤粺鏃ユ湡 +CSgitFtdcChangeAccountField["TradingDay"] = "string" +#閾舵湡骞冲彴娑堟伅娴佹按鍙 +CSgitFtdcChangeAccountField["PlateSerial"] = "int" +#鏈鍚庡垎鐗囨爣蹇 +CSgitFtdcChangeAccountField["LastFragment"] = "char" +#浼氳瘽鍙 +CSgitFtdcChangeAccountField["SessionID"] = "int" +#瀹㈡埛濮撳悕 +CSgitFtdcChangeAccountField["CustomerName"] = "string" +#璇佷欢绫诲瀷 +CSgitFtdcChangeAccountField["IdCardType"] = "char" +#璇佷欢鍙风爜 +CSgitFtdcChangeAccountField["IdentifiedCardNo"] = "string" +#鎬у埆 +CSgitFtdcChangeAccountField["Gender"] = "char" +#鍥藉浠g爜 +CSgitFtdcChangeAccountField["CountryCode"] = "string" +#瀹㈡埛绫诲瀷 +CSgitFtdcChangeAccountField["CustType"] = "char" +#鍦板潃 +CSgitFtdcChangeAccountField["Address"] = "string" +#閭紪 +CSgitFtdcChangeAccountField["ZipCode"] = "string" +#鐢佃瘽鍙风爜 +CSgitFtdcChangeAccountField["Telephone"] = "string" +#鎵嬫満 +CSgitFtdcChangeAccountField["MobilePhone"] = "string" +#浼犵湡 +CSgitFtdcChangeAccountField["Fax"] = "string" +#鐢靛瓙閭欢 +CSgitFtdcChangeAccountField["EMail"] = "string" +#璧勯噾璐︽埛鐘舵 +CSgitFtdcChangeAccountField["MoneyAccountStatus"] = "char" +#閾惰甯愬彿 +CSgitFtdcChangeAccountField["BankAccount"] = "string" +#閾惰瀵嗙爜 +CSgitFtdcChangeAccountField["BankPassWord"] = "string" +#鏂伴摱琛屽笎鍙 +CSgitFtdcChangeAccountField["NewBankAccount"] = "string" +#鏂伴摱琛屽瘑鐮 +CSgitFtdcChangeAccountField["NewBankPassWord"] = "string" +#鎶曡祫鑰呭笎鍙 +CSgitFtdcChangeAccountField["AccountID"] = "string" +#鏈熻揣瀵嗙爜 +CSgitFtdcChangeAccountField["Password"] = "string" +#閾惰甯愬彿绫诲瀷 +CSgitFtdcChangeAccountField["BankAccType"] = "char" +#瀹夎缂栧彿 +CSgitFtdcChangeAccountField["InstallID"] = "int" +#楠岃瘉瀹㈡埛璇佷欢鍙风爜鏍囧織 +CSgitFtdcChangeAccountField["VerifyCertNoFlag"] = "char" +#甯佺浠g爜 +CSgitFtdcChangeAccountField["CurrencyID"] = "string" +#鏈熻揣鍏徃閾惰缂栫爜 +CSgitFtdcChangeAccountField["BrokerIDByBank"] = "string" +#閾惰瀵嗙爜鏍囧織 +CSgitFtdcChangeAccountField["BankPwdFlag"] = "char" +#鏈熻揣璧勯噾瀵嗙爜鏍稿鏍囧織 +CSgitFtdcChangeAccountField["SecuPwdFlag"] = "char" +#浜ゆ槗ID +CSgitFtdcChangeAccountField["TID"] = "int" +#鎽樿 +CSgitFtdcChangeAccountField["Digest"] = "string" +#閿欒浠g爜 +CSgitFtdcChangeAccountField["ErrorID"] = "int" +#閿欒淇℃伅 +CSgitFtdcChangeAccountField["ErrorMsg"] = "string" +structDict['CSgitFtdcChangeAccountField'] = CSgitFtdcChangeAccountField + + +#鐏惧涓績浜ゆ槗鏉冮檺 +CSgitFtdcUserRightsAssignField = {} +#搴旂敤鍗曞厓浠g爜 +CSgitFtdcUserRightsAssignField["BrokerID"] = "string" +#鐢ㄦ埛浠g爜 +CSgitFtdcUserRightsAssignField["UserID"] = "string" +#浜ゆ槗涓績浠g爜 +CSgitFtdcUserRightsAssignField["DRIdentityID"] = "int" +structDict['CSgitFtdcUserRightsAssignField'] = CSgitFtdcUserRightsAssignField + + +#缁忔祹鍏徃鏄惁鏈夊湪鏈爣绀虹殑浜ゆ槗鏉冮檺 +CSgitFtdcBrokerUserRightAssignField = {} +#搴旂敤鍗曞厓浠g爜 +CSgitFtdcBrokerUserRightAssignField["BrokerID"] = "string" +#浜ゆ槗涓績浠g爜 +CSgitFtdcBrokerUserRightAssignField["DRIdentityID"] = "int" +#鑳藉惁浜ゆ槗 +CSgitFtdcBrokerUserRightAssignField["Tradeable"] = "int" +structDict['CSgitFtdcBrokerUserRightAssignField'] = CSgitFtdcBrokerUserRightAssignField + + +#鐏惧浜ゆ槗杞崲鎶ユ枃 +CSgitFtdcDRTransferField = {} +#鍘熶氦鏄撲腑蹇冧唬鐮 +CSgitFtdcDRTransferField["OrigDRIdentityID"] = "int" +#鐩爣浜ゆ槗涓績浠g爜 +CSgitFtdcDRTransferField["DestDRIdentityID"] = "int" +#鍘熷簲鐢ㄥ崟鍏冧唬鐮 +CSgitFtdcDRTransferField["OrigBrokerID"] = "string" +#鐩爣鏄撶敤鍗曞厓浠g爜 +CSgitFtdcDRTransferField["DestBrokerID"] = "string" +structDict['CSgitFtdcDRTransferField'] = CSgitFtdcDRTransferField + + + +CSgitMBLQuotReq = {} +CSgitMBLQuotReq["StartContractID"] = "string" +CSgitMBLQuotReq["EndContractID"] = "string" +CSgitMBLQuotReq["BsFlag"] = "char" +structDict['CSgitMBLQuotReq'] = CSgitMBLQuotReq + + + +CSgitMBLQuotData = {} +CSgitMBLQuotData["ContractID"] = "string" +CSgitMBLQuotData["BsFlag"] = "char" +CSgitMBLQuotData["Price"] = "float" +CSgitMBLQuotData["Qty"] = "int" +structDict['CSgitMBLQuotData'] = CSgitMBLQuotData + + + +CSgitSubQuotField = {} +CSgitSubQuotField["ContractID"] = "string" +structDict['CSgitSubQuotField'] = CSgitSubQuotField + + + diff --git a/vn.sgit/pyscript/sgit_td_define.cpp b/vn.sgit/pyscript/sgit_td_define.cpp new file mode 100644 index 00000000..a4017fd8 --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_define.cpp @@ -0,0 +1,16 @@ +#define ONFRONTCONNECTED 1 +#define ONFRONTDISCONNECTED 2 +#define ONRSPUSERLOGIN 3 +#define ONRSPUSERLOGOUT 4 +#define ONRSPUSERPASSWORDUPDATE 5 +#define ONRSPORDERINSERT 6 +#define ONRSPORDERACTION 7 +#define ONRSPQRYORDER 8 +#define ONRSPQRYTRADINGACCOUNT 9 +#define ONRSPQRYINVESTOR 10 +#define ONRSPQRYINSTRUMENT 11 +#define ONRTNORDER 12 +#define ONRTNTRADE 13 +#define ONRTNINSTRUMENTSTATUS 14 +#define ONRSPQRYINVESTORPOSITIONDETAIL 15 +#define ONRSPQRYINVESTORPOSITION 16 diff --git a/vn.sgit/pyscript/sgit_td_function.cpp b/vn.sgit/pyscript/sgit_td_function.cpp new file mode 100644 index 00000000..8362ba96 --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_function.cpp @@ -0,0 +1,161 @@ +int TdApi::reqUserLogin(dict req, int nRequestID) +{ + CSgitFtdcReqUserLoginField myreq = CSgitFtdcReqUserLoginField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "MacAddress", myreq.MacAddress); + getString(req, "UserProductInfo", myreq.UserProductInfo); + getString(req, "UserID", myreq.UserID); + getString(req, "TradingDay", myreq.TradingDay); + getString(req, "InterfaceProductInfo", myreq.InterfaceProductInfo); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "ClientIPAddress", myreq.ClientIPAddress); + getString(req, "OneTimePassword", myreq.OneTimePassword); + getString(req, "ProtocolInfo", myreq.ProtocolInfo); + getString(req, "Password", myreq.Password); + int i = this->api->ReqUserLogin(&myreq, nRequestID); + return i; +}; + +int TdApi::reqUserLogout(dict req, int nRequestID) +{ + CSgitFtdcUserLogoutField myreq = CSgitFtdcUserLogoutField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "UserID", myreq.UserID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqUserLogout(&myreq, nRequestID); + return i; +}; + +int TdApi::reqUserPasswordUpdate(dict req, int nRequestID) +{ + CSgitFtdcUserPasswordUpdateField myreq = CSgitFtdcUserPasswordUpdateField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "UserID", myreq.UserID); + getString(req, "NewPassword", myreq.NewPassword); + getString(req, "OldPassword", myreq.OldPassword); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqUserPasswordUpdate(&myreq, nRequestID); + return i; +}; + +int TdApi::reqOrderInsert(dict req, int nRequestID) +{ + CSgitFtdcInputOrderField myreq = CSgitFtdcInputOrderField(); + memset(&myreq, 0, sizeof(myreq)); + getChar(req, "ContingentCondition", &myreq.ContingentCondition); + getString(req, "CombOffsetFlag", myreq.CombOffsetFlag); + getString(req, "UserID", myreq.UserID); + getDouble(req, "LimitPrice", &myreq.LimitPrice); + getInt(req, "UserForceClose", &myreq.UserForceClose); + getChar(req, "Direction", &myreq.Direction); + getInt(req, "VolumeTotalOriginal", &myreq.VolumeTotalOriginal); + getChar(req, "OrderPriceType", &myreq.OrderPriceType); + getChar(req, "TimeCondition", &myreq.TimeCondition); + getInt(req, "IsAutoSuspend", &myreq.IsAutoSuspend); + getDouble(req, "StopPrice", &myreq.StopPrice); + getString(req, "InstrumentID", myreq.InstrumentID); + getInt(req, "MinVolume", &myreq.MinVolume); + getChar(req, "ForceCloseReason", &myreq.ForceCloseReason); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "CombHedgeFlag", myreq.CombHedgeFlag); + getString(req, "GTDDate", myreq.GTDDate); + getString(req, "BusinessUnit", myreq.BusinessUnit); + getString(req, "OrderRef", myreq.OrderRef); + getString(req, "InvestorID", myreq.InvestorID); + getChar(req, "VolumeCondition", &myreq.VolumeCondition); + getInt(req, "RequestID", &myreq.RequestID); + int i = this->api->ReqOrderInsert(&myreq, nRequestID); + return i; +}; + +int TdApi::reqOrderAction(dict req, int nRequestID) +{ + CSgitFtdcInputOrderActionField myreq = CSgitFtdcInputOrderActionField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "ExchangeID", myreq.ExchangeID); + getChar(req, "ActionFlag", &myreq.ActionFlag); + getInt(req, "OrderActionRef", &myreq.OrderActionRef); + getString(req, "UserID", myreq.UserID); + getDouble(req, "LimitPrice", &myreq.LimitPrice); + getString(req, "OrderRef", myreq.OrderRef); + getString(req, "InvestorID", myreq.InvestorID); + getInt(req, "SessionID", &myreq.SessionID); + getInt(req, "VolumeChange", &myreq.VolumeChange); + getString(req, "BrokerID", myreq.BrokerID); + getInt(req, "RequestID", &myreq.RequestID); + getString(req, "OrderSysID", myreq.OrderSysID); + getInt(req, "FrontID", &myreq.FrontID); + int i = this->api->ReqOrderAction(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryOrder(dict req, int nRequestID) +{ + CSgitFtdcQryOrderField myreq = CSgitFtdcQryOrderField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "ExchangeID", myreq.ExchangeID); + getString(req, "InsertTimeStart", myreq.InsertTimeStart); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "OrderSysID", myreq.OrderSysID); + getString(req, "InsertTimeEnd", myreq.InsertTimeEnd); + int i = this->api->ReqQryOrder(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryTradingAccount(dict req, int nRequestID) +{ + CSgitFtdcQryTradingAccountField myreq = CSgitFtdcQryTradingAccountField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryTradingAccount(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestor(dict req, int nRequestID) +{ + CSgitFtdcQryInvestorField myreq = CSgitFtdcQryInvestorField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestor(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInstrument(dict req, int nRequestID) +{ + CSgitFtdcQryInstrumentField myreq = CSgitFtdcQryInstrumentField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "ExchangeID", myreq.ExchangeID); + getString(req, "ExchangeInstID", myreq.ExchangeInstID); + getString(req, "ProductID", myreq.ProductID); + int i = this->api->ReqQryInstrument(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorPositionDetail(dict req, int nRequestID) +{ + CSgitFtdcQryInvestorPositionDetailField myreq = CSgitFtdcQryInvestorPositionDetailField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestorPositionDetail(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorPosition(dict req, int nRequestID) +{ + CSgitFtdcQryInvestorPositionField myreq = CSgitFtdcQryInvestorPositionField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestorPosition(&myreq, nRequestID); + return i; +}; + diff --git a/vn.sgit/pyscript/sgit_td_header_function.h b/vn.sgit/pyscript/sgit_td_header_function.h new file mode 100644 index 00000000..a80f9d4b --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_header_function.h @@ -0,0 +1,24 @@ +int reqUserLogin(dict req, int nRequestID); + +int reqUserLogout(dict req, int nRequestID); + +int reqUserPasswordUpdate(dict req, int nRequestID); + +int reqOrderInsert(dict req, int nRequestID); + +int reqOrderAction(dict req, int nRequestID); + +int reqQryOrder(dict req, int nRequestID); + +int reqQryTradingAccount(dict req, int nRequestID); + +int reqQryInvestor(dict req, int nRequestID); + +int reqQryInstrument(dict req, int nRequestID); + +int reqQryInvestorPositionDetail(dict req, int nRequestID); + +int reqQryInvestorPosition(dict req, int nRequestID); + +int reqMBLQuot(dict req, int nRequestID); + diff --git a/vn.sgit/pyscript/sgit_td_header_on.h b/vn.sgit/pyscript/sgit_td_header_on.h new file mode 100644 index 00000000..a6fb3ef6 --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_header_on.h @@ -0,0 +1,30 @@ + + +virtual void onRspUserLogin(dict data, dict error, int id, bool last) {}; + +virtual void onRspUserLogout(dict data, dict error, int id, bool last) {}; + +virtual void onRspUserPasswordUpdate(dict data, dict error, int id, bool last) {}; + +virtual void onRspOrderInsert(dict data, dict error, int id, bool last) {}; + +virtual void onRspOrderAction(dict data, dict error, int id, bool last) {}; + +virtual void onRspQryOrder(dict data, dict error, int id, bool last) {}; + +virtual void onRspQryTradingAccount(dict data, dict error, int id, bool last) {}; + +virtual void onRspQryInvestor(dict data, dict error, int id, bool last) {}; + +virtual void onRspQryInstrument(dict data, dict error, int id, bool last) {}; + +virtual void onRtnOrder(dict data) {}; + +virtual void onRtnTrade(dict data) {}; + +virtual void onRtnInstrumentStatus(dict data) {}; + +virtual void onRspQryInvestorPositionDetail(dict data, dict error, int id, bool last) {}; + +virtual void onRspQryInvestorPosition(dict data, dict error, int id, bool last) {}; + diff --git a/vn.sgit/pyscript/sgit_td_header_process.h b/vn.sgit/pyscript/sgit_td_header_process.h new file mode 100644 index 00000000..15f6ffbd --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_header_process.h @@ -0,0 +1,32 @@ +void processFrontConnected(Task task); + +void processFrontDisconnected(Task task); + +void processRspUserLogin(Task task); + +void processRspUserLogout(Task task); + +void processRspUserPasswordUpdate(Task task); + +void processRspOrderInsert(Task task); + +void processRspOrderAction(Task task); + +void processRspQryOrder(Task task); + +void processRspQryTradingAccount(Task task); + +void processRspQryInvestor(Task task); + +void processRspQryInstrument(Task task); + +void processRtnOrder(Task task); + +void processRtnTrade(Task task); + +void processRtnInstrumentStatus(Task task); + +void processRspQryInvestorPositionDetail(Task task); + +void processRspQryInvestorPosition(Task task); + diff --git a/vn.sgit/pyscript/sgit_td_process.cpp b/vn.sgit/pyscript/sgit_td_process.cpp new file mode 100644 index 00000000..229b4bcd --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_process.cpp @@ -0,0 +1,528 @@ +void TdApi::processFrontConnected(Task task) +{ + PyLock lock; + this->onFrontConnected(); +}; + +void TdApi::processFrontDisconnected(Task task) +{ + PyLock lock; + this->onFrontDisconnected(); +}; + +void TdApi::processRspUserLogin(Task task) +{ + PyLock lock; + CSgitFtdcRspUserLoginField task_data = any_cast(task.task_data); + dict data; + data["CZCETime"] = task_data.CZCETime; + data["SHFETime"] = task_data.SHFETime; + data["MaxOrderRef"] = task_data.MaxOrderRef; + data["UserID"] = task_data.UserID; + data["TradingDay"] = task_data.TradingDay; + data["SessionID"] = task_data.SessionID; + data["SystemName"] = task_data.SystemName; + data["FrontID"] = task_data.FrontID; + data["FFEXTime"] = task_data.FFEXTime; + data["BrokerID"] = task_data.BrokerID; + data["DCETime"] = task_data.DCETime; + data["LoginTime"] = task_data.LoginTime; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogin(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspUserLogout(Task task) +{ + PyLock lock; + CSgitFtdcUserLogoutField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["BrokerID"] = task_data.BrokerID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogout(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspUserPasswordUpdate(Task task) +{ + PyLock lock; + CSgitFtdcUserPasswordUpdateField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["NewPassword"] = task_data.NewPassword; + data["OldPassword"] = task_data.OldPassword; + data["BrokerID"] = task_data.BrokerID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserPasswordUpdate(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspOrderInsert(Task task) +{ + PyLock lock; + CSgitFtdcInputOrderField task_data = any_cast(task.task_data); + dict data; + data["ContingentCondition"] = task_data.ContingentCondition; + data["CombOffsetFlag"] = task_data.CombOffsetFlag; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["UserForceClose"] = task_data.UserForceClose; + data["Direction"] = task_data.Direction; + data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; + data["OrderPriceType"] = task_data.OrderPriceType; + data["TimeCondition"] = task_data.TimeCondition; + data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["StopPrice"] = task_data.StopPrice; + data["InstrumentID"] = task_data.InstrumentID; + data["MinVolume"] = task_data.MinVolume; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["BrokerID"] = task_data.BrokerID; + data["CombHedgeFlag"] = task_data.CombHedgeFlag; + data["GTDDate"] = task_data.GTDDate; + data["BusinessUnit"] = task_data.BusinessUnit; + data["OrderRef"] = task_data.OrderRef; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RequestID"] = task_data.RequestID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspOrderInsert(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspOrderAction(Task task) +{ + PyLock lock; + CSgitFtdcInputOrderActionField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["ActionFlag"] = task_data.ActionFlag; + data["OrderActionRef"] = task_data.OrderActionRef; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["OrderRef"] = task_data.OrderRef; + data["InvestorID"] = task_data.InvestorID; + data["SessionID"] = task_data.SessionID; + data["VolumeChange"] = task_data.VolumeChange; + data["BrokerID"] = task_data.BrokerID; + data["RequestID"] = task_data.RequestID; + data["OrderSysID"] = task_data.OrderSysID; + data["FrontID"] = task_data.FrontID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspOrderAction(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryOrder(Task task) +{ + PyLock lock; + CSgitFtdcOrderField task_data = any_cast(task.task_data); + dict data; + data["ContingentCondition"] = task_data.ContingentCondition; + data["NotifySequence"] = task_data.NotifySequence; + data["ActiveUserID"] = task_data.ActiveUserID; + data["VolumeTraded"] = task_data.VolumeTraded; + data["UserProductInfo"] = task_data.UserProductInfo; + data["CombOffsetFlag"] = task_data.CombOffsetFlag; + data["TraderID"] = task_data.TraderID; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["UserForceClose"] = task_data.UserForceClose; + data["RelativeOrderSysID"] = task_data.RelativeOrderSysID; + data["Direction"] = task_data.Direction; + data["InstallID"] = task_data.InstallID; + data["ParticipantID"] = task_data.ParticipantID; + data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["ClientID"] = task_data.ClientID; + data["VolumeTotal"] = task_data.VolumeTotal; + data["OrderPriceType"] = task_data.OrderPriceType; + data["SessionID"] = task_data.SessionID; + data["TimeCondition"] = task_data.TimeCondition; + data["OrderStatus"] = task_data.OrderStatus; + data["OrderSysID"] = task_data.OrderSysID; + data["OrderSubmitStatus"] = task_data.OrderSubmitStatus; + data["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["StatusMsg"] = task_data.StatusMsg; + data["SettlementID"] = task_data.SettlementID; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["OrderType"] = task_data.OrderType; + data["UpdateTime"] = task_data.UpdateTime; + data["TradingDay"] = task_data.TradingDay; + data["ActiveTime"] = task_data.ActiveTime; + data["BrokerID"] = task_data.BrokerID; + data["InsertTime"] = task_data.InsertTime; + data["FrontID"] = task_data.FrontID; + data["SuspendTime"] = task_data.SuspendTime; + data["ClearingPartID"] = task_data.ClearingPartID; + data["CombHedgeFlag"] = task_data.CombHedgeFlag; + data["CancelTime"] = task_data.CancelTime; + data["GTDDate"] = task_data.GTDDate; + data["OrderLocalID"] = task_data.OrderLocalID; + data["BusinessUnit"] = task_data.BusinessUnit; + data["InsertDate"] = task_data.InsertDate; + data["SequenceNo"] = task_data.SequenceNo; + data["OrderRef"] = task_data.OrderRef; + data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RequestID"] = task_data.RequestID; + data["OrderSource"] = task_data.OrderSource; + data["ActiveTraderID"] = task_data.ActiveTraderID; + + CSgitFtdcRspInfoField 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::processRspQryTradingAccount(Task task) +{ + PyLock lock; + CSgitFtdcTradingAccountField task_data = any_cast(task.task_data); + dict data; + data["Mortgage"] = task_data.Mortgage; + data["ExchangeDeliveryMargin"] = task_data.ExchangeDeliveryMargin; + data["FrozenMargin"] = task_data.FrozenMargin; + data["WithdrawQuota"] = task_data.WithdrawQuota; + data["PositionProfit"] = task_data.PositionProfit; + data["Commission"] = task_data.Commission; + data["Interest"] = task_data.Interest; + data["CashIn"] = task_data.CashIn; + data["AccountID"] = task_data.AccountID; + data["Available"] = task_data.Available; + data["PreCredit"] = task_data.PreCredit; + data["PreMortgage"] = task_data.PreMortgage; + data["InterestBase"] = task_data.InterestBase; + data["ExchangeMargin"] = task_data.ExchangeMargin; + data["PreMargin"] = task_data.PreMargin; + data["SettlementID"] = task_data.SettlementID; + data["DeliveryMargin"] = task_data.DeliveryMargin; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["FrozenCash"] = task_data.FrozenCash; + data["Withdraw"] = task_data.Withdraw; + data["Balance"] = task_data.Balance; + data["Reserve"] = task_data.Reserve; + data["PreDeposit"] = task_data.PreDeposit; + data["Credit"] = task_data.Credit; + data["PreBalance"] = task_data.PreBalance; + data["CurrMargin"] = task_data.CurrMargin; + data["FrozenCommission"] = task_data.FrozenCommission; + data["CloseProfit"] = task_data.CloseProfit; + data["Deposit"] = task_data.Deposit; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryTradingAccount(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestor(Task task) +{ + PyLock lock; + CSgitFtdcInvestorField task_data = any_cast(task.task_data); + dict data; + data["CommModelID"] = task_data.CommModelID; + data["InvestorName"] = task_data.InvestorName; + data["Mobile"] = task_data.Mobile; + data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; + data["Telephone"] = task_data.Telephone; + data["InvestorID"] = task_data.InvestorID; + data["BrokerID"] = task_data.BrokerID; + data["Address"] = task_data.Address; + data["InvestorGroupID"] = task_data.InvestorGroupID; + data["OpenDate"] = task_data.OpenDate; + data["IsActive"] = task_data.IsActive; + data["IdentifiedCardType"] = task_data.IdentifiedCardType; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestor(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInstrument(Task task) +{ + PyLock lock; + CSgitFtdcInstrumentField task_data = any_cast(task.task_data); + dict data; + data["IsTrading"] = task_data.IsTrading; + data["ExpireDate"] = task_data.ExpireDate; + data["PositionDateType"] = task_data.PositionDateType; + data["LongMarginRatio"] = task_data.LongMarginRatio; + data["PositionType"] = task_data.PositionType; + data["ProductClass"] = task_data.ProductClass; + data["InstrumentName"] = task_data.InstrumentName; + data["ShortMarginRatio"] = task_data.ShortMarginRatio; + data["VolumeMultiple"] = task_data.VolumeMultiple; + data["DeliveryYear"] = task_data.DeliveryYear; + data["CreateDate"] = task_data.CreateDate; + data["InstrumentID"] = task_data.InstrumentID; + data["MaxLimitOrderVolume"] = task_data.MaxLimitOrderVolume; + data["ExchangeID"] = task_data.ExchangeID; + data["MinLimitOrderVolume"] = task_data.MinLimitOrderVolume; + data["MaxMarketOrderVolume"] = task_data.MaxMarketOrderVolume; + data["StartDelivDate"] = task_data.StartDelivDate; + data["DeliveryMonth"] = task_data.DeliveryMonth; + data["PriceTick"] = task_data.PriceTick; + data["InstLifePhase"] = task_data.InstLifePhase; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["MinMarketOrderVolume"] = task_data.MinMarketOrderVolume; + data["EndDelivDate"] = task_data.EndDelivDate; + data["OpenDate"] = task_data.OpenDate; + data["ProductID"] = task_data.ProductID; + + CSgitFtdcRspInfoField 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::processRtnOrder(Task task) +{ + PyLock lock; + CSgitFtdcOrderField task_data = any_cast(task.task_data); + dict data; + data["ContingentCondition"] = task_data.ContingentCondition; + data["NotifySequence"] = task_data.NotifySequence; + data["ActiveUserID"] = task_data.ActiveUserID; + data["VolumeTraded"] = task_data.VolumeTraded; + data["UserProductInfo"] = task_data.UserProductInfo; + data["CombOffsetFlag"] = task_data.CombOffsetFlag; + data["TraderID"] = task_data.TraderID; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["UserForceClose"] = task_data.UserForceClose; + data["RelativeOrderSysID"] = task_data.RelativeOrderSysID; + data["Direction"] = task_data.Direction; + data["InstallID"] = task_data.InstallID; + data["ParticipantID"] = task_data.ParticipantID; + data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["ClientID"] = task_data.ClientID; + data["VolumeTotal"] = task_data.VolumeTotal; + data["OrderPriceType"] = task_data.OrderPriceType; + data["SessionID"] = task_data.SessionID; + data["TimeCondition"] = task_data.TimeCondition; + data["OrderStatus"] = task_data.OrderStatus; + data["OrderSysID"] = task_data.OrderSysID; + data["OrderSubmitStatus"] = task_data.OrderSubmitStatus; + data["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["StatusMsg"] = task_data.StatusMsg; + data["SettlementID"] = task_data.SettlementID; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["OrderType"] = task_data.OrderType; + data["UpdateTime"] = task_data.UpdateTime; + data["TradingDay"] = task_data.TradingDay; + data["ActiveTime"] = task_data.ActiveTime; + data["BrokerID"] = task_data.BrokerID; + data["InsertTime"] = task_data.InsertTime; + data["FrontID"] = task_data.FrontID; + data["SuspendTime"] = task_data.SuspendTime; + data["ClearingPartID"] = task_data.ClearingPartID; + data["CombHedgeFlag"] = task_data.CombHedgeFlag; + data["CancelTime"] = task_data.CancelTime; + data["GTDDate"] = task_data.GTDDate; + data["OrderLocalID"] = task_data.OrderLocalID; + data["BusinessUnit"] = task_data.BusinessUnit; + data["InsertDate"] = task_data.InsertDate; + data["SequenceNo"] = task_data.SequenceNo; + data["OrderRef"] = task_data.OrderRef; + data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RequestID"] = task_data.RequestID; + data["OrderSource"] = task_data.OrderSource; + data["ActiveTraderID"] = task_data.ActiveTraderID; + + this->onRtnOrder(data); +}; + +void TdApi::processRtnTrade(Task task) +{ + PyLock lock; + CSgitFtdcTradeField task_data = any_cast(task.task_data); + dict data; + data["TradeType"] = task_data.TradeType; + data["TraderID"] = task_data.TraderID; + data["HedgeFlag"] = task_data.HedgeFlag; + data["TradeTime"] = task_data.TradeTime; + data["Direction"] = task_data.Direction; + data["ParticipantID"] = task_data.ParticipantID; + data["Price"] = task_data.Price; + data["ClientID"] = task_data.ClientID; + data["Volume"] = task_data.Volume; + data["OrderSysID"] = task_data.OrderSysID; + data["ClearingPartID"] = task_data.ClearingPartID; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["SettlementID"] = task_data.SettlementID; + data["UserID"] = task_data.UserID; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["OffsetFlag"] = task_data.OffsetFlag; + data["OrderLocalID"] = task_data.OrderLocalID; + data["TradeID"] = task_data.TradeID; + data["TradeDate"] = task_data.TradeDate; + data["BusinessUnit"] = task_data.BusinessUnit; + data["SequenceNo"] = task_data.SequenceNo; + data["OrderRef"] = task_data.OrderRef; + data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; + data["InvestorID"] = task_data.InvestorID; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["TradeSource"] = task_data.TradeSource; + data["PriceSource"] = task_data.PriceSource; + data["TradingRole"] = task_data.TradingRole; + + this->onRtnTrade(data); +}; + +void TdApi::processRtnInstrumentStatus(Task task) +{ + PyLock lock; + CSgitFtdcInstrumentStatusField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["EnterTime"] = task_data.EnterTime; + data["SettlementGroupID"] = task_data.SettlementGroupID; + data["TradingSegmentSN"] = task_data.TradingSegmentSN; + data["EnterReason"] = task_data.EnterReason; + data["InstrumentStatus"] = task_data.InstrumentStatus; + data["ExchangeInstID"] = task_data.ExchangeInstID; + + this->onRtnInstrumentStatus(data); +}; + +void TdApi::processRspQryInvestorPositionDetail(Task task) +{ + PyLock lock; + CSgitFtdcInvestorPositionDetailField task_data = any_cast(task.task_data); + dict data; + data["PositionProfitByDate"] = task_data.PositionProfitByDate; + data["ExchMargin"] = task_data.ExchMargin; + data["TradeType"] = task_data.TradeType; + data["MarginRateByMoney"] = task_data.MarginRateByMoney; + data["HedgeFlag"] = task_data.HedgeFlag; + data["MarginRateByVolume"] = task_data.MarginRateByVolume; + data["Direction"] = task_data.Direction; + data["CloseAmount"] = task_data.CloseAmount; + data["OpenPrice"] = task_data.OpenPrice; + data["Volume"] = task_data.Volume; + data["LastSettlementPrice"] = task_data.LastSettlementPrice; + data["CloseVolume"] = task_data.CloseVolume; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["CloseProfitByTrade"] = task_data.CloseProfitByTrade; + data["SettlementID"] = task_data.SettlementID; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["Margin"] = task_data.Margin; + data["TradeID"] = task_data.TradeID; + data["PositionProfitByTrade"] = task_data.PositionProfitByTrade; + data["CloseProfitByDate"] = task_data.CloseProfitByDate; + data["SettlementPrice"] = task_data.SettlementPrice; + data["InvestorID"] = task_data.InvestorID; + data["CombInstrumentID"] = task_data.CombInstrumentID; + data["OpenDate"] = task_data.OpenDate; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestorPositionDetail(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestorPosition(Task task) +{ + PyLock lock; + CSgitFtdcInvestorPositionField task_data = any_cast(task.task_data); + dict data; + data["ShortFrozenAmount"] = task_data.ShortFrozenAmount; + data["FrozenMargin"] = task_data.FrozenMargin; + data["HedgeFlag"] = task_data.HedgeFlag; + data["PositionProfit"] = task_data.PositionProfit; + data["Commission"] = task_data.Commission; + data["MarginRateByVolume"] = task_data.MarginRateByVolume; + data["CombPosition"] = task_data.CombPosition; + data["CashIn"] = task_data.CashIn; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["CombLongFrozen"] = task_data.CombLongFrozen; + data["CloseAmount"] = task_data.CloseAmount; + data["PosiDirection"] = task_data.PosiDirection; + data["YdPosition"] = task_data.YdPosition; + data["MarginRateByMoney"] = task_data.MarginRateByMoney; + data["OpenVolume"] = task_data.OpenVolume; + data["CloseVolume"] = task_data.CloseVolume; + data["ExchangeMargin"] = task_data.ExchangeMargin; + data["InstrumentID"] = task_data.InstrumentID; + data["PositionDate"] = task_data.PositionDate; + data["CloseProfitByTrade"] = task_data.CloseProfitByTrade; + data["PreMargin"] = task_data.PreMargin; + data["SettlementID"] = task_data.SettlementID; + data["ShortFrozen"] = task_data.ShortFrozen; + data["LongFrozen"] = task_data.LongFrozen; + data["TodayPosition"] = task_data.TodayPosition; + data["TradingDay"] = task_data.TradingDay; + data["PositionCost"] = task_data.PositionCost; + data["BrokerID"] = task_data.BrokerID; + data["FrozenCash"] = task_data.FrozenCash; + data["OpenAmount"] = task_data.OpenAmount; + data["OpenCost"] = task_data.OpenCost; + data["Position"] = task_data.Position; + data["FrozenCommission"] = task_data.FrozenCommission; + data["CombShortFrozen"] = task_data.CombShortFrozen; + data["CloseProfitByDate"] = task_data.CloseProfitByDate; + data["SettlementPrice"] = task_data.SettlementPrice; + data["LongFrozenAmount"] = task_data.LongFrozenAmount; + data["InvestorID"] = task_data.InvestorID; + data["CloseProfit"] = task_data.CloseProfit; + data["UseMargin"] = task_data.UseMargin; + + CSgitFtdcRspInfoField 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); +}; + diff --git a/vn.sgit/pyscript/sgit_td_switch.cpp b/vn.sgit/pyscript/sgit_td_switch.cpp new file mode 100644 index 00000000..24c93ccc --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_switch.cpp @@ -0,0 +1,96 @@ +case ONFRONTCONNECTED: +{ + this->processFrontConnected(task); + break; +} + +case ONFRONTDISCONNECTED: +{ + this->processFrontDisconnected(task); + break; +} + +case ONRSPUSERLOGIN: +{ + this->processRspUserLogin(task); + break; +} + +case ONRSPUSERLOGOUT: +{ + this->processRspUserLogout(task); + break; +} + +case ONRSPUSERPASSWORDUPDATE: +{ + this->processRspUserPasswordUpdate(task); + break; +} + +case ONRSPORDERINSERT: +{ + this->processRspOrderInsert(task); + break; +} + +case ONRSPORDERACTION: +{ + this->processRspOrderAction(task); + break; +} + +case ONRSPQRYORDER: +{ + this->processRspQryOrder(task); + break; +} + +case ONRSPQRYTRADINGACCOUNT: +{ + this->processRspQryTradingAccount(task); + break; +} + +case ONRSPQRYINVESTOR: +{ + this->processRspQryInvestor(task); + break; +} + +case ONRSPQRYINSTRUMENT: +{ + this->processRspQryInstrument(task); + break; +} + +case ONRTNORDER: +{ + this->processRtnOrder(task); + break; +} + +case ONRTNTRADE: +{ + this->processRtnTrade(task); + break; +} + +case ONRTNINSTRUMENTSTATUS: +{ + this->processRtnInstrumentStatus(task); + break; +} + +case ONRSPQRYINVESTORPOSITIONDETAIL: +{ + this->processRspQryInvestorPositionDetail(task); + break; +} + +case ONRSPQRYINVESTORPOSITION: +{ + this->processRspQryInvestorPosition(task); + break; +} + diff --git a/vn.sgit/pyscript/sgit_td_task.cpp b/vn.sgit/pyscript/sgit_td_task.cpp new file mode 100644 index 00000000..610ef4a3 --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_task.cpp @@ -0,0 +1,420 @@ +void TdApi::OnFrontConnected() +{ + Task task = Task(); + task.task_name = ONFRONTCONNECTED; + this->task_queue.push(task); +}; + +void TdApi::OnFrontDisconnected(char *pErrMsg) +{ + Task task = Task(); + task.task_name = ONFRONTDISCONNECTED; + + if (pErrMsg) + { + task.task_data = *pErrMsg; + } + else + { + char empty_data = char(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGIN; + + if (pRspUserLogin) + { + task.task_data = *pRspUserLogin; + } + else + { + CSgitFtdcRspUserLoginField empty_data = CSgitFtdcRspUserLoginField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGOUT; + + if (pUserLogout) + { + task.task_data = *pUserLogout; + } + else + { + CSgitFtdcUserLogoutField empty_data = CSgitFtdcUserLogoutField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERPASSWORDUPDATE; + + if (pUserPasswordUpdate) + { + task.task_data = *pUserPasswordUpdate; + } + else + { + CSgitFtdcUserPasswordUpdateField empty_data = CSgitFtdcUserPasswordUpdateField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspOrderInsert(CSgitFtdcInputOrderField *pInputOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPORDERINSERT; + + if (pInputOrder) + { + task.task_data = *pInputOrder; + } + else + { + CSgitFtdcInputOrderField empty_data = CSgitFtdcInputOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPORDERACTION; + + if (pInputOrderAction) + { + task.task_data = *pInputOrderAction; + } + else + { + CSgitFtdcInputOrderActionField empty_data = CSgitFtdcInputOrderActionField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspQryOrder(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYORDER; + + if (pOrder) + { + task.task_data = *pOrder; + } + else + { + CSgitFtdcOrderField empty_data = CSgitFtdcOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspQryTradingAccount(CSgitFtdcTradingAccountField *pTradingAccount, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYTRADINGACCOUNT; + + if (pTradingAccount) + { + task.task_data = *pTradingAccount; + } + else + { + CSgitFtdcTradingAccountField empty_data = CSgitFtdcTradingAccountField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspQryInvestor(CSgitFtdcInvestorField *pInvestor, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTOR; + + if (pInvestor) + { + task.task_data = *pInvestor; + } + else + { + CSgitFtdcInvestorField empty_data = CSgitFtdcInvestorField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcInstrumentField *pInstrument, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINSTRUMENT; + + if (pInstrument) + { + task.task_data = *pInstrument; + } + else + { + CSgitFtdcInstrumentField empty_data = CSgitFtdcInstrumentField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcOrderField *pOrder,CSgitFtdcRspInfoField *pRspInfo) +{ + Task task = Task(); + task.task_name = ONRTNORDER; + + if (pOrder,CSgitFtdcRspInfoField) + { + task.task_data = *pOrder,CSgitFtdcRspInfoField; + } + else + { + CSgitFtdcOrderField empty_data = CSgitFtdcOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnTrade(CSgitFtdcTradeField *pTrade) +{ + Task task = Task(); + task.task_name = ONRTNTRADE; + + if (pTrade) + { + task.task_data = *pTrade; + } + else + { + CSgitFtdcTradeField empty_data = CSgitFtdcTradeField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnInstrumentStatus(CSgitFtdcInstrumentStatusField *pInstrumentStatus) +{ + Task task = Task(); + task.task_name = ONRTNINSTRUMENTSTATUS; + + if (pInstrumentStatus) + { + task.task_data = *pInstrumentStatus; + } + else + { + CSgitFtdcInstrumentStatusField empty_data = CSgitFtdcInstrumentStatusField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRspQryInvestorPositionDetail(CSgitFtdcInvestorPositionDetailField *pInvestorPositionDetail, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORPOSITIONDETAIL; + + if (pInvestorPositionDetail) + { + task.task_data = *pInvestorPositionDetail; + } + else + { + CSgitFtdcInvestorPositionDetailField empty_data = CSgitFtdcInvestorPositionDetailField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcInvestorPositionField *pInvestorPosition, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORPOSITION; + + if (pInvestorPosition) + { + task.task_data = *pInvestorPosition; + } + else + { + CSgitFtdcInvestorPositionField empty_data = CSgitFtdcInvestorPositionField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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); +}; + diff --git a/vn.sgit/pyscript/sgit_td_wrap.cpp b/vn.sgit/pyscript/sgit_td_wrap.cpp new file mode 100644 index 00000000..681a52fb --- /dev/null +++ b/vn.sgit/pyscript/sgit_td_wrap.cpp @@ -0,0 +1,168 @@ +virtual void onRspUserLogin(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspUserLogin")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspUserLogout(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspUserLogout")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspUserPasswordUpdate(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspUserPasswordUpdate")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspOrderInsert(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspOrderInsert")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspOrderAction(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspOrderAction")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspQryOrder(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspQryOrder")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspQryTradingAccount(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspQryTradingAccount")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspQryInvestor(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspQryInvestor")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void 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 onRtnOrder(dict data) +{ + try + { + this->get_override("onRtnOrder")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRtnTrade(dict data) +{ + try + { + this->get_override("onRtnTrade")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRtnInstrumentStatus(dict data) +{ + try + { + this->get_override("onRtnInstrumentStatus")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void onRspQryInvestorPositionDetail(dict data, dict error, int id, bool last) +{ + try + { + this->get_override("onRspQryInvestorPositionDetail")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } +}; + +virtual void 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(); + } +}; + diff --git a/vn.sgit/sgitapi/SgitFtdcMdApi.h b/vn.sgit/sgitapi/SgitFtdcMdApi.h new file mode 100644 index 00000000..91a1ef36 --- /dev/null +++ b/vn.sgit/sgitapi/SgitFtdcMdApi.h @@ -0,0 +1,118 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#if !defined(Sgit_FTDCMDAPI_H) +#define Sgit_FTDCMDAPI_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "SgitFtdcUserApiStruct.h" + +#if defined(ISLIB) && defined(WIN32) +#ifdef LIB_MD_API_EXPORT +#define MD_API_EXPORT __declspec(dllexport) +#else +#define MD_API_EXPORT __declspec(dllimport) +#endif +#else +#define MD_API_EXPORT +#endif + +class CSgitFtdcMdSpi +{ +public: + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 + virtual void OnFrontConnected(){}; + + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 + ///@param pErrMsg 错误原因 + virtual void OnFrontDisconnected(char *pErrMsg){}; + + ///登录请求响应 + virtual void OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///登出请求响应 + virtual void OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///深度行情通知 + virtual void OnRtnDepthMarketData(CSgitFtdcDepthMarketDataField *pDepthMarketData) {}; +}; + +class MD_API_EXPORT CSgitFtdcMdApi +{ +public: + ///创建MdApi + ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录 + ///@return 创建出的UserApi + static CSgitFtdcMdApi *CreateFtdcMdApi(const char *pszFlowPath = ""); + + ///删除接口对象本身 + ///@remark 不再使用本接口对象时,调用该函数删除接口对象 + virtual void Release() = 0; + + ///初始化 + ///@remark 初始化运行环境,只有调用后,接口才开始工作 + ///isLogged 开发调试时使用true,可以打印出收到的消息包内容 + virtual void Init(bool isLogged) = 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; + + /**用多播时TCP配置也需要设置 + *调用该函数,默认采用tcp模式发送行情 + *设置多播的配置 MlCast://hostIP$multiaddress:port, + *如果只有一张网卡可以 MlCast://ANY$multiaddress:port + * @param szMlCastAddr 本机ip地址、多播组及端口 + */ + virtual void SetMultiCastAddr(char *szMlCastAddr) = 0; + + ///注册回调接口 + ///@param pSpi 派生自回调接口类的实例 + virtual void RegisterSpi(CSgitFtdcMdSpi *pSpi) = 0; + ///订阅市场流。 + ///@param nResumeType 公共流重传方式 + /// Sgit_TERT_RESTART:从本交易日开始重传 + /// Sgit_TERT_RESUME:从上次收到的续传 + /// Sgit_TERT_QUICK:只传送登录后公共流的内容 + ///@remark 该方法要在Init方法前调用。若不调用则不会收到公共流的数据。 + virtual void SubscribeMarketTopic(Sgit_TE_RESUME_TYPE nResumeType) = 0; + + /// + /// 发送行情订阅 + /// @param iRequestID 请求号 + /// @param pMBLQuotReq 行情订阅请求域 + /// @return 0表示成功 + /// @return 其它表示失败 + /// + virtual int SubQuot(CSgitSubQuotField *pSgitSubQuotField)=0; + ///发送就绪指令到前置,通知前置可以给自己发送私有流与公共流 + /// @return 0表示成功 + /// @return 其它参见错误码 + /// + virtual int Ready() = 0; + + ///用户登录请求 + virtual int ReqUserLogin(CSgitFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0; + + ///登出请求 + virtual int ReqUserLogout(CSgitFtdcUserLogoutField *pUserLogout, int nRequestID) = 0; +protected: + ~CSgitFtdcMdApi(){}; +}; + +#endif diff --git a/vn.sgit/sgitapi/SgitFtdcTraderApi.h b/vn.sgit/sgitapi/SgitFtdcTraderApi.h new file mode 100644 index 00000000..508eb78b --- /dev/null +++ b/vn.sgit/sgitapi/SgitFtdcTraderApi.h @@ -0,0 +1,179 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#if !defined(Sgit_FTDCTRADERAPI_H) +#define Sgit_FTDCTRADERAPI_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "SgitFtdcUserApiStruct.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 CSgitFtdcTraderSpi +{ +public: + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 + virtual void OnFrontConnected(){}; + + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 + ///@param pErrMsg 错误原因 + virtual void OnFrontDisconnected(char *pErrMsg){}; + + ///登录请求响应 + virtual void OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///登出请求响应 + virtual void OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///用户口令更新请求响应 + virtual void OnRspUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///报单录入请求响应 + virtual void OnRspOrderInsert(CSgitFtdcInputOrderField *pInputOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///报单操作请求响应 + virtual void OnRspOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询报单响应 + virtual void OnRspQryOrder(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询资金账户响应 + virtual void OnRspQryTradingAccount(CSgitFtdcTradingAccountField *pTradingAccount, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询投资者响应 + virtual void OnRspQryInvestor(CSgitFtdcInvestorField *pInvestor, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询合约响应 + virtual void OnRspQryInstrument(CSgitFtdcInstrumentField *pInstrument, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///报单通知 + virtual void OnRtnOrder(CSgitFtdcOrderField *pOrder,CSgitFtdcRspInfoField *pRspInfo) {}; + + ///成交通知 + virtual void OnRtnTrade(CSgitFtdcTradeField *pTrade) {}; + + ///合约交易状态通知 + virtual void OnRtnInstrumentStatus(CSgitFtdcInstrumentStatusField *pInstrumentStatus) {}; + + ///请求查询投资者持仓明细响应 + virtual void OnRspQryInvestorPositionDetail(CSgitFtdcInvestorPositionDetailField *pInvestorPositionDetail, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + ///请求查询投资者持仓响应 + virtual void OnRspQryInvestorPosition(CSgitFtdcInvestorPositionField *pInvestorPosition, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; + + /// 当收到合约价位查询应答时回调该函数 + virtual void onRspMBLQuot(CSgitMBLQuotData *pMBLQuotData,CSgitFtdcRspInfoField *pRspMsg,int nRequestID,bool bIsLast){}; + +}; + +class TRADER_API_EXPORT CSgitFtdcTraderApi +{ +public: + ///创建TraderApi + ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录 + ///@return 创建出的UserApi + static CSgitFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = ""); + + ///删除接口对象本身 + ///@remark 不再使用本接口对象时,调用该函数删除接口对象 + virtual void Release() = 0; + + ///初始化 + ///@remark 初始化运行环境,只有调用后,接口才开始工作 + ///isLogged 开发调试时使用true,可以打印出收到的消息包内容 + virtual void Init(bool isLogged) = 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 pSpi 派生自回调接口类的实例 + virtual void RegisterSpi(CSgitFtdcTraderSpi *pSpi) = 0; + + ///订阅私有流。 + ///@param nResumeType 私有流重传方式 + /// Sgit_TERT_RESTART:从本交易日开始重传 + /// Sgit_TERT_RESUME:从上次收到的续传 + /// Sgit_TERT_QUICK:只传送登录后私有流的内容 + ///@remark 该方法要在Init方法前调用。若不调用则不会收到私有流的数据。 + virtual void SubscribePrivateTopic(Sgit_TE_RESUME_TYPE nResumeType) = 0; + + ///订阅公共流。 + ///@param nResumeType 公共流重传方式 + /// Sgit_TERT_RESTART:从本交易日开始重传 + /// Sgit_TERT_RESUME:从上次收到的续传 + /// Sgit_TERT_QUICK:只传送登录后公共流的内容 + ///@remark 该方法要在Init方法前调用。若不调用则不会收到公共流的数据。 + virtual void SubscribePublicTopic(Sgit_TE_RESUME_TYPE nResumeType) = 0; + + ///发送就绪指令到前置,通知前置可以给自己发送私有流与公共流 + /// @return 0表示成功 + /// @return 其它参见错误码 + /// + virtual int Ready() = 0; + + ///用户登录请求 + virtual int ReqUserLogin(CSgitFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0; + + ///登出请求 + virtual int ReqUserLogout(CSgitFtdcUserLogoutField *pUserLogout, int nRequestID) = 0; + + ///用户口令更新请求 + virtual int ReqUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0; + + ///报单录入请求 + virtual int ReqOrderInsert(CSgitFtdcInputOrderField *pInputOrder, int nRequestID) = 0; + + ///报单操作请求 + virtual int ReqOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, int nRequestID) = 0; + + ///请求查询报单 + virtual int ReqQryOrder(CSgitFtdcQryOrderField *pQryOrder, int nRequestID) = 0; + + ///请求查询资金账户 + virtual int ReqQryTradingAccount(CSgitFtdcQryTradingAccountField *pQryTradingAccount, int nRequestID) = 0; + + ///请求查询投资者 + virtual int ReqQryInvestor(CSgitFtdcQryInvestorField *pQryInvestor, int nRequestID) = 0; + + ///请求查询合约 + virtual int ReqQryInstrument(CSgitFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0; + + ///请求查询投资者持仓明细 + virtual int ReqQryInvestorPositionDetail(CSgitFtdcQryInvestorPositionDetailField *pQryInvestorPositionDetail, int nRequestID) = 0; + + ///请求查询投资者持仓 + virtual int ReqQryInvestorPosition(CSgitFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0; + + /// 发送合约价位查询请求 + virtual int ReqMBLQuot(int iRequestID,CSgitMBLQuotReq *pMBLQuotReq) = 0; + +protected: + ~CSgitFtdcTraderApi(){}; +}; + +#endif diff --git a/vn.sgit/sgitapi/SgitFtdcUserApiDataType.h b/vn.sgit/sgitapi/SgitFtdcUserApiDataType.h new file mode 100644 index 00000000..8114762a --- /dev/null +++ b/vn.sgit/sgitapi/SgitFtdcUserApiDataType.h @@ -0,0 +1,4816 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#ifndef Sgit_FTDCDATATYPE_H +#define Sgit_FTDCDATATYPE_H + +enum Sgit_TE_RESUME_TYPE +{ + Sgit_TERT_RESTART = 0, + Sgit_TERT_RESUME, + Sgit_TERT_QUICK +}; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTraderIDType是一个交易所交易员代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTraderIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorIDType是一个投资者代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerIDType是一个经纪公司代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerAbbrType是一个经纪公司简称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerAbbrType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerNameType是一个经纪公司名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeInstIDType是一个合约在交易所的代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeInstIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderRefType是一个报单引用类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrderRefType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParticipantIDType是一个会员代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParticipantIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserIDType是一个用户代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserIDType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPasswordType是一个密码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPasswordType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientIDType是一个交易编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClientIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentIDType是一个合约代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentIDType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMarketIDType是一个市场代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMarketIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductNameType是一个产品名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProductNameType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeIDType是一个交易所代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeNameType是一个交易所名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeNameType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeAbbrType是一个交易所简称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeAbbrType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeFlagType是一个交易所标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcExchangeFlagType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMacAddressType是一个Mac地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMacAddressType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangePropertyType是一个交易所属性类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_EXP_Normal '0' +///根据成交生成报单 +#define Sgit_FTDC_EXP_GenOrderByTrade '1' + +typedef char TSgitFtdcExchangePropertyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDateType是一个日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDateType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimeType是一个时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTimeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLongTimeType是一个长时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLongTimeType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentNameType是一个合约名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentNameType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementGroupIDType是一个结算组代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettlementGroupIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderSysIDType是一个报单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrderSysIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeIDType是一个成交编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeIDType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommandTypeType是一个DB命令类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommandTypeType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIPAddressType是一个IP地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIPAddressType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductInfoType是一个产品信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProductInfoType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProtocolInfoType是一个协议信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProtocolInfoType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBusinessUnitType是一个业务单元类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBusinessUnitType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDepositSeqNoType是一个出入金流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDepositSeqNoType[15]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIdentifiedCardNoType是一个证件号码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIdentifiedCardNoType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIdCardTypeType是一个证件类型类型 +///////////////////////////////////////////////////////////////////////// +///组织机构代码 +#define Sgit_FTDC_ICT_EID '0' +///身份证 +#define Sgit_FTDC_ICT_IDCard '1' +///军官证 +#define Sgit_FTDC_ICT_OfficerIDCard '2' +///警官证 +#define Sgit_FTDC_ICT_PoliceIDCard '3' +///士兵证 +#define Sgit_FTDC_ICT_SoldierIDCard '4' +///户口簿 +#define Sgit_FTDC_ICT_HouseholdRegister '5' +///护照 +#define Sgit_FTDC_ICT_Passport '6' +///台胞证 +#define Sgit_FTDC_ICT_TaiwanCompatriotIDCard '7' +///回乡证 +#define Sgit_FTDC_ICT_HomeComingCard '8' +///营业执照号 +#define Sgit_FTDC_ICT_LicenseNo '9' +///税务登记号 +#define Sgit_FTDC_ICT_TaxNo 'A' +///其他证件 +#define Sgit_FTDC_ICT_OtherCard 'x' + +typedef char TSgitFtdcIdCardTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderLocalIDType是一个本地报单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrderLocalIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserNameType是一个用户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPartyNameType是一个参与人名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPartyNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcErrorMsgType是一个错误信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcErrorMsgType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFieldNameType是一个字段名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFieldNameType[2049]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFieldContentType是一个字段内容类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFieldContentType[2049]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemNameType是一个系统名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSystemNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcContentType是一个消息正文类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcContentType[501]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_IR_All '1' +///投资者组 +#define Sgit_FTDC_IR_Group '2' +///单一投资者 +#define Sgit_FTDC_IR_Single '3' + +typedef char TSgitFtdcInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDepartmentRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_DR_All '1' +///组织架构 +#define Sgit_FTDC_DR_Group '2' +///单一投资者 +#define Sgit_FTDC_DR_Single '3' + +typedef char TSgitFtdcDepartmentRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataSyncStatusType是一个数据同步状态类型 +///////////////////////////////////////////////////////////////////////// +///未同步 +#define Sgit_FTDC_DS_Asynchronous '1' +///同步中 +#define Sgit_FTDC_DS_Synchronizing '2' +///已同步 +#define Sgit_FTDC_DS_Synchronized '3' + +typedef char TSgitFtdcDataSyncStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerDataSyncStatusType是一个经纪公司数据同步状态类型 +///////////////////////////////////////////////////////////////////////// +///已同步 +#define Sgit_FTDC_BDS_Synchronized '1' +///同步中 +#define Sgit_FTDC_BDS_Synchronizing '2' + +typedef char TSgitFtdcBrokerDataSyncStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeConnectStatusType是一个交易所连接状态类型 +///////////////////////////////////////////////////////////////////////// +///没有任何连接 +#define Sgit_FTDC_ECS_NoConnection '1' +///已经发出合约查询请求 +#define Sgit_FTDC_ECS_QryInstrumentSent '2' +///已经获取信息 +#define Sgit_FTDC_ECS_GotInformation '9' + +typedef char TSgitFtdcExchangeConnectStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTraderConnectStatusType是一个交易所交易员连接状态类型 +///////////////////////////////////////////////////////////////////////// +///没有任何连接 +#define Sgit_FTDC_TCS_NotConnected '1' +///已经连接 +#define Sgit_FTDC_TCS_Connected '2' +///已经发出合约查询请求 +#define Sgit_FTDC_TCS_QryInstrumentSent '3' +///订阅私有流 +#define Sgit_FTDC_TCS_SubPrivateFlow '4' + +typedef char TSgitFtdcTraderConnectStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionCodeType是一个功能代码类型 +///////////////////////////////////////////////////////////////////////// +///数据异步化 +#define Sgit_FTDC_FC_DataAsync '1' +///强制用户登出 +#define Sgit_FTDC_FC_ForceUserLogout '2' +///变更管理用户口令 +#define Sgit_FTDC_FC_UserPasswordUpdate '3' +///变更经纪公司口令 +#define Sgit_FTDC_FC_BrokerPasswordUpdate '4' +///变更投资者口令 +#define Sgit_FTDC_FC_InvestorPasswordUpdate '5' +///报单插入 +#define Sgit_FTDC_FC_OrderInsert '6' +///报单操作 +#define Sgit_FTDC_FC_OrderAction '7' +///同步系统数据 +#define Sgit_FTDC_FC_SyncSystemData '8' +///同步经纪公司数据 +#define Sgit_FTDC_FC_SyncBrokerData '9' +///批量同步经纪公司数据 +#define Sgit_FTDC_FC_BachSyncBrokerData 'A' +///超级查询 +#define Sgit_FTDC_FC_SuperQuery 'B' +///报单插入 +#define Sgit_FTDC_FC_ParkedOrderInsert 'C' +///报单操作 +#define Sgit_FTDC_FC_ParkedOrderAction 'D' +///同步动态令牌 +#define Sgit_FTDC_FC_SyncOTP 'E' + +typedef char TSgitFtdcFunctionCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerFunctionCodeType是一个经纪公司功能代码类型 +///////////////////////////////////////////////////////////////////////// +///强制用户登出 +#define Sgit_FTDC_BFC_ForceUserLogout '1' +///变更用户口令 +#define Sgit_FTDC_BFC_UserPasswordUpdate '2' +///同步经纪公司数据 +#define Sgit_FTDC_BFC_SyncBrokerData '3' +///批量同步经纪公司数据 +#define Sgit_FTDC_BFC_BachSyncBrokerData '4' +///报单插入 +#define Sgit_FTDC_BFC_OrderInsert '5' +///报单操作 +#define Sgit_FTDC_BFC_OrderAction '6' +///全部查询 +#define Sgit_FTDC_BFC_AllQuery '7' +///系统功能:登入/登出/修改密码等 +#define Sgit_FTDC_BFC_log 'a' +///基本查询:查询基础数据,如合约,交易所等常量 +#define Sgit_FTDC_BFC_BaseQry 'b' +///交易查询:如查成交,委托 +#define Sgit_FTDC_BFC_TradeQry 'c' +///交易功能:报单,撤单 +#define Sgit_FTDC_BFC_Trade 'd' +///银期转账 +#define Sgit_FTDC_BFC_Virement 'e' +///风险监控 +#define Sgit_FTDC_BFC_Risk 'f' +///查询/管理:查询会话,踢人等 +#define Sgit_FTDC_BFC_Session 'g' +///风控通知控制 +#define Sgit_FTDC_BFC_RiskNoticeCtl 'h' +///风控通知发送 +#define Sgit_FTDC_BFC_RiskNotice 'i' +///察看经纪公司资金权限 +#define Sgit_FTDC_BFC_BrokerDeposit 'j' +///资金查询 +#define Sgit_FTDC_BFC_QueryFund 'k' +///报单查询 +#define Sgit_FTDC_BFC_QueryOrder 'l' +///成交查询 +#define Sgit_FTDC_BFC_QueryTrade 'm' +///持仓查询 +#define Sgit_FTDC_BFC_QueryPosition 'n' +///行情查询 +#define Sgit_FTDC_BFC_QueryMarketData 'o' +///用户事件查询 +#define Sgit_FTDC_BFC_QueryUserEvent 'p' +///风险通知查询 +#define Sgit_FTDC_BFC_QueryRiskNotify 'q' +///出入金查询 +#define Sgit_FTDC_BFC_QueryFundChange 'r' +///投资者信息查询 +#define Sgit_FTDC_BFC_QueryInvestor 's' +///交易编码查询 +#define Sgit_FTDC_BFC_QueryTradingCode 't' +///强平 +#define Sgit_FTDC_BFC_ForceClose 'u' +///压力测试 +#define Sgit_FTDC_BFC_PressTest 'v' +///权益反算 +#define Sgit_FTDC_BFC_RemainCalc 'w' +///净持仓保证金指标 +#define Sgit_FTDC_BFC_NetPositionInd 'x' +///风险预算 +#define Sgit_FTDC_BFC_RiskPredict 'y' +///数据导出 +#define Sgit_FTDC_BFC_DataExport 'z' +///风控指标设置 +#define Sgit_FTDC_BFC_RiskTargetSetup 'A' +///行情预警 +#define Sgit_FTDC_BFC_MarketDataWarn 'B' +///业务通知查询 +#define Sgit_FTDC_BFC_QryBizNotice 'C' +///业务通知模板设置 +#define Sgit_FTDC_BFC_CfgBizNotice 'D' +///同步动态令牌 +#define Sgit_FTDC_BFC_SyncOTP 'E' +///发送业务通知 +#define Sgit_FTDC_BFC_SendBizNotice 'F' +///风险级别标准设置 +#define Sgit_FTDC_BFC_CfgRiskLevelStd 'G' + +typedef char TSgitFtdcBrokerFunctionCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderActionStatusType是一个报单操作状态类型 +///////////////////////////////////////////////////////////////////////// +///已经提交 +#define Sgit_FTDC_OAS_Submitted 'a' +///已经接受 +#define Sgit_FTDC_OAS_Accepted 'b' +///已经被拒绝 +#define Sgit_FTDC_OAS_Rejected 'c' + +typedef char TSgitFtdcOrderActionStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderStatusType是一个报单状态类型 +///////////////////////////////////////////////////////////////////////// +///全部成交 +#define Sgit_FTDC_OST_AllTraded '0' +///部分成交还在队列中 +#define Sgit_FTDC_OST_PartTradedQueueing '1' +///部分成交不在队列中 +#define Sgit_FTDC_OST_PartTradedNotQueueing '2' +///未成交还在队列中 +#define Sgit_FTDC_OST_NoTradeQueueing '3' +///未成交不在队列中 +#define Sgit_FTDC_OST_NoTradeNotQueueing '4' +///撤单 +#define Sgit_FTDC_OST_Canceled '5' +///未知 +#define Sgit_FTDC_OST_Unknown 'a' +///尚未触发 +#define Sgit_FTDC_OST_NotTouched 'b' +///已触发 +#define Sgit_FTDC_OST_Touched 'c' + +typedef char TSgitFtdcOrderStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderSubmitStatusType是一个报单提交状态类型 +///////////////////////////////////////////////////////////////////////// +///已经提交 +#define Sgit_FTDC_OSS_InsertSubmitted '0' +///撤单已经提交 +#define Sgit_FTDC_OSS_CancelSubmitted '1' +///修改已经提交 +#define Sgit_FTDC_OSS_ModifySubmitted '2' +///已经接受 +#define Sgit_FTDC_OSS_Accepted '3' +///报单已经被拒绝 +#define Sgit_FTDC_OSS_InsertRejected '4' +///撤单已经被拒绝 +#define Sgit_FTDC_OSS_CancelRejected '5' +///改单已经被拒绝 +#define Sgit_FTDC_OSS_ModifyRejected '6' + +typedef char TSgitFtdcOrderSubmitStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionDateType是一个持仓日期类型 +///////////////////////////////////////////////////////////////////////// +///今日持仓 +#define Sgit_FTDC_PSD_Today '1' +///历史持仓 +#define Sgit_FTDC_PSD_History '2' + +typedef char TSgitFtdcPositionDateType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionDateTypeType是一个持仓日期类型类型 +///////////////////////////////////////////////////////////////////////// +///使用历史持仓 +#define Sgit_FTDC_PDT_UseHistory '1' +///不使用历史持仓 +#define Sgit_FTDC_PDT_NoUseHistory '2' + +typedef char TSgitFtdcPositionDateTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradingRoleType是一个交易角色类型 +///////////////////////////////////////////////////////////////////////// +///代理 +#define Sgit_FTDC_ER_Broker '1' +///自营 +#define Sgit_FTDC_ER_Host '2' +///做市商 +#define Sgit_FTDC_ER_Maker '3' + +typedef char TSgitFtdcTradingRoleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductClassType是一个产品类型类型 +///////////////////////////////////////////////////////////////////////// +///期货 +#define Sgit_FTDC_PC_Futures '1' +///期权 +#define Sgit_FTDC_PC_Options '2' +///组合 +#define Sgit_FTDC_PC_Combination '3' +///即期 +#define Sgit_FTDC_PC_Spot '4' +///期转现 +#define Sgit_FTDC_PC_EFP '5' + +typedef char TSgitFtdcProductClassType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstLifePhaseType是一个合约生命周期状态类型 +///////////////////////////////////////////////////////////////////////// +///未上市 +#define Sgit_FTDC_IP_NotStart '0' +///上市 +#define Sgit_FTDC_IP_Started '1' +///停牌 +#define Sgit_FTDC_IP_Pause '2' +///到期 +#define Sgit_FTDC_IP_Expired '3' + +typedef char TSgitFtdcInstLifePhaseType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDirectionType是一个买卖方向类型 +///////////////////////////////////////////////////////////////////////// +///买 +#define Sgit_FTDC_D_Buy '0' +///卖 +#define Sgit_FTDC_D_Sell '1' + +typedef char TSgitFtdcDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionTypeType是一个持仓类型类型 +///////////////////////////////////////////////////////////////////////// +///净持仓 +#define Sgit_FTDC_PT_Net '1' +///综合持仓 +#define Sgit_FTDC_PT_Gross '2' + +typedef char TSgitFtdcPositionTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPosiDirectionType是一个持仓多空方向类型 +///////////////////////////////////////////////////////////////////////// +///净 +#define Sgit_FTDC_PD_Net '1' +///多头 +#define Sgit_FTDC_PD_Long '2' +///空头 +#define Sgit_FTDC_PD_Short '3' + +typedef char TSgitFtdcPosiDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSysSettlementStatusType是一个系统结算状态类型 +///////////////////////////////////////////////////////////////////////// +///不活跃 +#define Sgit_FTDC_SS_NonActive '1' +///启动 +#define Sgit_FTDC_SS_Startup '2' +///操作 +#define Sgit_FTDC_SS_Operating '3' +///结算 +#define Sgit_FTDC_SS_Settlement '4' +///结算完成 +#define Sgit_FTDC_SS_SettlementFinished '5' + +typedef char TSgitFtdcSysSettlementStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRatioAttrType是一个费率属性类型 +///////////////////////////////////////////////////////////////////////// +///交易费率 +#define Sgit_FTDC_RA_Trade '0' +///结算费率 +#define Sgit_FTDC_RA_Settlement '1' + +typedef char TSgitFtdcRatioAttrType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcHedgeFlagType是一个投机套保标志类型 +///////////////////////////////////////////////////////////////////////// +///投机 +#define Sgit_FTDC_HF_Speculation '1' +///套利 +#define Sgit_FTDC_HF_Arbitrage '2' +///套保 +#define Sgit_FTDC_HF_Hedge '3' + +typedef char TSgitFtdcHedgeFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillHedgeFlagType是一个投机套保标志类型 +///////////////////////////////////////////////////////////////////////// +///投机 +#define Sgit_FTDC_BHF_Speculation '1' +///套利 +#define Sgit_FTDC_BHF_Arbitrage '2' +///套保 +#define Sgit_FTDC_BHF_Hedge '3' + +typedef char TSgitFtdcBillHedgeFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientIDTypeType是一个交易编码类型类型 +///////////////////////////////////////////////////////////////////////// +///投机 +#define Sgit_FTDC_CIDT_Speculation '1' +///套利 +#define Sgit_FTDC_CIDT_Arbitrage '2' +///套保 +#define Sgit_FTDC_CIDT_Hedge '3' + +typedef char TSgitFtdcClientIDTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderPriceTypeType是一个报单价格条件类型 +///////////////////////////////////////////////////////////////////////// +///任意价 +#define Sgit_FTDC_OPT_AnyPrice '1' +///限价 +#define Sgit_FTDC_OPT_LimitPrice '2' +///最优价 +#define Sgit_FTDC_OPT_BestPrice '3' +///最新价 +#define Sgit_FTDC_OPT_LastPrice '4' +///最新价浮动上浮1个ticks +#define Sgit_FTDC_OPT_LastPricePlusOneTicks '5' +///最新价浮动上浮2个ticks +#define Sgit_FTDC_OPT_LastPricePlusTwoTicks '6' +///最新价浮动上浮3个ticks +#define Sgit_FTDC_OPT_LastPricePlusThreeTicks '7' +///卖一价 +#define Sgit_FTDC_OPT_AskPrice1 '8' +///卖一价浮动上浮1个ticks +#define Sgit_FTDC_OPT_AskPrice1PlusOneTicks '9' +///卖一价浮动上浮2个ticks +#define Sgit_FTDC_OPT_AskPrice1PlusTwoTicks 'A' +///卖一价浮动上浮3个ticks +#define Sgit_FTDC_OPT_AskPrice1PlusThreeTicks 'B' +///买一价 +#define Sgit_FTDC_OPT_BidPrice1 'C' +///买一价浮动上浮1个ticks +#define Sgit_FTDC_OPT_BidPrice1PlusOneTicks 'D' +///买一价浮动上浮2个ticks +#define Sgit_FTDC_OPT_BidPrice1PlusTwoTicks 'E' +///买一价浮动上浮3个ticks +#define Sgit_FTDC_OPT_BidPrice1PlusThreeTicks 'F' + +typedef char TSgitFtdcOrderPriceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOffsetFlagType是一个开平标志类型 +///////////////////////////////////////////////////////////////////////// +///开仓 +#define Sgit_FTDC_OF_Open '0' +///平仓 +#define Sgit_FTDC_OF_Close '1' +///强平 +#define Sgit_FTDC_OF_ForceClose '2' +///平今 +#define Sgit_FTDC_OF_CloseToday '3' +///平昨 +#define Sgit_FTDC_OF_CloseYesterday '4' +///强减 +#define Sgit_FTDC_OF_ForceOff '5' +///本地强平 +#define Sgit_FTDC_OF_LocalForceClose '6' + +typedef char TSgitFtdcOffsetFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcForceCloseReasonType是一个强平原因类型 +///////////////////////////////////////////////////////////////////////// +///非强平 +#define Sgit_FTDC_FCC_NotForceClose '0' +///资金不足 +#define Sgit_FTDC_FCC_LackDeposit '1' +///客户超仓 +#define Sgit_FTDC_FCC_ClientOverPositionLimit '2' +///会员超仓 +#define Sgit_FTDC_FCC_MemberOverPositionLimit '3' +///持仓非整数倍 +#define Sgit_FTDC_FCC_NotMultiple '4' +///违规 +#define Sgit_FTDC_FCC_Violation '5' +///其它 +#define Sgit_FTDC_FCC_Other '6' +///自然人临近交割 +#define Sgit_FTDC_FCC_PersonDeliv '7' + +typedef char TSgitFtdcForceCloseReasonType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderTypeType是一个报单类型类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_ORDT_Normal '0' +///报价衍生 +#define Sgit_FTDC_ORDT_DeriveFromQuote '1' +///组合衍生 +#define Sgit_FTDC_ORDT_DeriveFromCombination '2' +///组合报单 +#define Sgit_FTDC_ORDT_Combination '3' +///条件单 +#define Sgit_FTDC_ORDT_ConditionalOrder '4' +///互换单 +#define Sgit_FTDC_ORDT_Swap '5' + +typedef char TSgitFtdcOrderTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimeConditionType是一个有效期类型类型 +///////////////////////////////////////////////////////////////////////// +///立即完成,否则撤销 +#define Sgit_FTDC_TC_IOC '1' +///本节有效 +#define Sgit_FTDC_TC_GFS '2' +///当日有效 +#define Sgit_FTDC_TC_GFD '3' +///指定日期前有效 +#define Sgit_FTDC_TC_GTD '4' +///撤销前有效 +#define Sgit_FTDC_TC_GTC '5' +///集合竞价有效 +#define Sgit_FTDC_TC_GFA '6' + +typedef char TSgitFtdcTimeConditionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVolumeConditionType是一个成交量类型类型 +///////////////////////////////////////////////////////////////////////// +///任何数量 +#define Sgit_FTDC_VC_AV '1' +///最小数量 +#define Sgit_FTDC_VC_MV '2' +///全部数量 +#define Sgit_FTDC_VC_CV '3' + +typedef char TSgitFtdcVolumeConditionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcContingentConditionType是一个触发条件类型 +///////////////////////////////////////////////////////////////////////// +///立即 +#define Sgit_FTDC_CC_Immediately '1' +///止损 +#define Sgit_FTDC_CC_Touch '2' +///止赢 +#define Sgit_FTDC_CC_TouchProfit '3' +///预埋单 +#define Sgit_FTDC_CC_ParkedOrder '4' +///最新价大于条件价 +#define Sgit_FTDC_CC_LastPriceGreaterThanStopPrice '5' +///最新价大于等于条件价 +#define Sgit_FTDC_CC_LastPriceGreaterEqualStopPrice '6' +///最新价小于条件价 +#define Sgit_FTDC_CC_LastPriceLesserThanStopPrice '7' +///最新价小于等于条件价 +#define Sgit_FTDC_CC_LastPriceLesserEqualStopPrice '8' +///卖一价大于条件价 +#define Sgit_FTDC_CC_AskPriceGreaterThanStopPrice '9' +///卖一价大于等于条件价 +#define Sgit_FTDC_CC_AskPriceGreaterEqualStopPrice 'A' +///卖一价小于条件价 +#define Sgit_FTDC_CC_AskPriceLesserThanStopPrice 'B' +///卖一价小于等于条件价 +#define Sgit_FTDC_CC_AskPriceLesserEqualStopPrice 'C' +///买一价大于条件价 +#define Sgit_FTDC_CC_BidPriceGreaterThanStopPrice 'D' +///买一价大于等于条件价 +#define Sgit_FTDC_CC_BidPriceGreaterEqualStopPrice 'E' +///买一价小于条件价 +#define Sgit_FTDC_CC_BidPriceLesserThanStopPrice 'F' +///买一价小于等于条件价 +#define Sgit_FTDC_CC_BidPriceLesserEqualStopPrice 'H' + +typedef char TSgitFtdcContingentConditionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcActionFlagType是一个操作标志类型 +///////////////////////////////////////////////////////////////////////// +///删除 +#define Sgit_FTDC_AF_Delete '0' +///修改 +#define Sgit_FTDC_AF_Modify '3' + +typedef char TSgitFtdcActionFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradingRightType是一个交易权限类型 +///////////////////////////////////////////////////////////////////////// +///可以交易 +#define Sgit_FTDC_TR_Allow '0' +///只能平仓 +#define Sgit_FTDC_TR_CloseOnly '1' +///不能交易 +#define Sgit_FTDC_TR_Forbidden '2' + +typedef char TSgitFtdcTradingRightType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderSourceType是一个报单来源类型 +///////////////////////////////////////////////////////////////////////// +///来自参与者 +#define Sgit_FTDC_OSRC_Participant '0' +///来自管理员 +#define Sgit_FTDC_OSRC_Administrator '1' + +typedef char TSgitFtdcOrderSourceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeTypeType是一个成交类型类型 +///////////////////////////////////////////////////////////////////////// +///普通成交 +#define Sgit_FTDC_TRDT_Common '0' +///期权执行 +#define Sgit_FTDC_TRDT_OptionsExecution '1' +///OTC成交 +#define Sgit_FTDC_TRDT_OTC '2' +///期转现衍生成交 +#define Sgit_FTDC_TRDT_EFPDerived '3' +///组合衍生成交 +#define Sgit_FTDC_TRDT_CombinationDerived '4' + +typedef char TSgitFtdcTradeTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPriceSourceType是一个成交价来源类型 +///////////////////////////////////////////////////////////////////////// +///前成交价 +#define Sgit_FTDC_PSRC_LastPrice '0' +///买委托价 +#define Sgit_FTDC_PSRC_Buy '1' +///卖委托价 +#define Sgit_FTDC_PSRC_Sell '2' + +typedef char TSgitFtdcPriceSourceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentStatusType是一个合约交易状态类型 +///////////////////////////////////////////////////////////////////////// +///开盘前 +#define Sgit_FTDC_IS_BeforeTrading '0' +///非交易 +#define Sgit_FTDC_IS_NoTrading '1' +///连续交易 +#define Sgit_FTDC_IS_Continous '2' +///集合竞价报单 +#define Sgit_FTDC_IS_AuctionOrdering '3' +///集合竞价价格平衡 +#define Sgit_FTDC_IS_AuctionBalance '4' +///集合竞价撮合 +#define Sgit_FTDC_IS_AuctionMatch '5' +///收盘 +#define Sgit_FTDC_IS_Closed '6' + +typedef char TSgitFtdcInstrumentStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstStatusEnterReasonType是一个品种进入交易状态原因类型 +///////////////////////////////////////////////////////////////////////// +///自动切换 +#define Sgit_FTDC_IER_Automatic '1' +///手动切换 +#define Sgit_FTDC_IER_Manual '2' +///熔断 +#define Sgit_FTDC_IER_Fuse '3' + +typedef char TSgitFtdcInstStatusEnterReasonType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrderActionRefType是一个报单操作引用类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcOrderActionRefType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstallCountType是一个安装数量类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcInstallCountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstallIDType是一个安装编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcInstallIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcErrorIDType是一个错误代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcErrorIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementIDType是一个结算编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSettlementIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVolumeType是一个数量类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcVolumeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFrontIDType是一个前置编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFrontIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSessionIDType是一个会话编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSessionIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceNoType是一个序号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSequenceNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommandNoType是一个DB命令序号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCommandNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMillisecType是一个时间(毫秒)类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcMillisecType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVolumeMultipleType是一个合约数量乘数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcVolumeMultipleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradingSegmentSNType是一个交易阶段编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTradingSegmentSNType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRequestIDType是一个请求编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcRequestIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcYearType是一个年份类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcYearType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMonthType是一个月份类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcMonthType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBoolType是一个布尔型类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcBoolType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPriceType是一个价格类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcPriceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombOffsetFlagType是一个组合开平标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombOffsetFlagType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombHedgeFlagType是一个组合投机套保标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombHedgeFlagType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRatioType是一个比率类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcRatioType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMoneyType是一个资金类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcMoneyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLargeVolumeType是一个大额数量类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcLargeVolumeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceSeriesType是一个序列系列号类型 +///////////////////////////////////////////////////////////////////////// +typedef short TSgitFtdcSequenceSeriesType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommPhaseNoType是一个通讯时段编号类型 +///////////////////////////////////////////////////////////////////////// +typedef short TSgitFtdcCommPhaseNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceLabelType是一个序列编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSequenceLabelType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPriorityType是一个优先级类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcPriorityType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcContractCodeType是一个合同编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcContractCodeType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCityType是一个市类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCityType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIsStockType是一个是否股民类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIsStockType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcChannelType是一个渠道类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcChannelType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAddressType是一个通讯地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAddressType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcZipCodeType是一个邮政编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcZipCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTelephoneType是一个联系电话类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTelephoneType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFaxType是一个传真类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFaxType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMobileType是一个手机类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMobileType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEMailType是一个电子邮件类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEMailType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMemoType是一个备注类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMemoType[161]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCompanyCodeType是一个企业代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCompanyCodeType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcWebsiteType是一个网站地址类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcWebsiteType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTaxNoType是一个税务登记号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTaxNoType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBatchStatusType是一个处理状态类型 +///////////////////////////////////////////////////////////////////////// +///未上传 +#define Sgit_FTDC_BS_NoUpload '1' +///已上传 +#define Sgit_FTDC_BS_Uploaded '2' +///审核失败 +#define Sgit_FTDC_BS_Failed '3' + +typedef char TSgitFtdcBatchStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyIDType是一个属性代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPropertyIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyNameType是一个属性名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPropertyNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLicenseNoType是一个营业执照号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLicenseNoType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentIDType是一个经纪人代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentNameType是一个经纪人名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentGroupIDType是一个经纪人组代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentGroupIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentGroupNameType是一个经纪人组名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentGroupNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnStyleType是一个按品种返还方式类型 +///////////////////////////////////////////////////////////////////////// +///按所有品种 +#define Sgit_FTDC_RS_All '1' +///按品种 +#define Sgit_FTDC_RS_ByProduct '2' + +typedef char TSgitFtdcReturnStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnPatternType是一个返还模式类型 +///////////////////////////////////////////////////////////////////////// +///按成交手数 +#define Sgit_FTDC_RP_ByVolume '1' +///按留存手续费 +#define Sgit_FTDC_RP_ByFeeOnHand '2' + +typedef char TSgitFtdcReturnPatternType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnLevelType是一个返还级别类型 +///////////////////////////////////////////////////////////////////////// +///级别1 +#define Sgit_FTDC_RL_Level1 '1' +///级别2 +#define Sgit_FTDC_RL_Level2 '2' +///级别3 +#define Sgit_FTDC_RL_Level3 '3' +///级别4 +#define Sgit_FTDC_RL_Level4 '4' +///级别5 +#define Sgit_FTDC_RL_Level5 '5' +///级别6 +#define Sgit_FTDC_RL_Level6 '6' +///级别7 +#define Sgit_FTDC_RL_Level7 '7' +///级别8 +#define Sgit_FTDC_RL_Level8 '8' +///级别9 +#define Sgit_FTDC_RL_Level9 '9' + +typedef char TSgitFtdcReturnLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnStandardType是一个返还标准类型 +///////////////////////////////////////////////////////////////////////// +///分阶段返还 +#define Sgit_FTDC_RSD_ByPeriod '1' +///按某一标准 +#define Sgit_FTDC_RSD_ByStandard '2' + +typedef char TSgitFtdcReturnStandardType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMortgageTypeType是一个质押类型类型 +///////////////////////////////////////////////////////////////////////// +///质出 +#define Sgit_FTDC_MT_Out '0' +///质入 +#define Sgit_FTDC_MT_In '1' + +typedef char TSgitFtdcMortgageTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorSettlementParamIDType是一个投资者结算参数代码类型 +///////////////////////////////////////////////////////////////////////// +///基础保证金 +#define Sgit_FTDC_ISPI_BaseMargin '1' +///最低权益标准 +#define Sgit_FTDC_ISPI_LowestInterest '2' +///质押比例 +#define Sgit_FTDC_ISPI_MortgageRatio '4' +///保证金算法 +#define Sgit_FTDC_ISPI_MarginWay '5' +///结算单(盯市)权益等于结存 +#define Sgit_FTDC_ISPI_BillDeposit '9' + +typedef char TSgitFtdcInvestorSettlementParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeSettlementParamIDType是一个交易所结算参数代码类型 +///////////////////////////////////////////////////////////////////////// +///质押比例 +#define Sgit_FTDC_ESPI_MortgageRatio '1' +///分项资金导入项 +#define Sgit_FTDC_ESPI_OtherFundItem '2' +///分项资金入交易所出入金 +#define Sgit_FTDC_ESPI_OtherFundImport '3' +///上期所交割手续费收取方式 +#define Sgit_FTDC_ESPI_SHFEDelivFee '4' +///大商所交割手续费收取方式 +#define Sgit_FTDC_ESPI_DCEDelivFee '5' +///中金所开户最低可用金额 +#define Sgit_FTDC_ESPI_CFFEXMinPrepa '6' + +typedef char TSgitFtdcExchangeSettlementParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemParamIDType是一个系统参数代码类型 +///////////////////////////////////////////////////////////////////////// +///投资者代码最小长度 +#define Sgit_FTDC_SPI_InvestorIDMinLength '1' +///投资者帐号代码最小长度 +#define Sgit_FTDC_SPI_AccountIDMinLength '2' +///投资者开户默认登录权限 +#define Sgit_FTDC_SPI_UserRightLogon '3' +///投资者交易结算单成交汇总方式 +#define Sgit_FTDC_SPI_SettlementBillTrade '4' +///统一开户更新交易编码方式 +#define Sgit_FTDC_SPI_TradingCode '5' +///结算是否判断存在未复核的出入金和分项资金 +#define Sgit_FTDC_SPI_CheckFund '6' +///是否启用手续费模板数据权限 +#define Sgit_FTDC_SPI_CommModelRight '7' +///是否规范用户才能激活 +#define Sgit_FTDC_SPI_IsStandardActive '8' +///上传的交易所结算文件路径 +#define Sgit_FTDC_SPI_UploadSettlementFile 'U' +///上报保证金监控中心文件路径 +#define Sgit_FTDC_SPI_DownloadCSRCFile 'D' +///生成的结算单文件路径 +#define Sgit_FTDC_SPI_SettlementBillFile 'S' +///证监会文件标识 +#define Sgit_FTDC_SPI_CSRCOthersFile 'C' +///投资者照片路径 +#define Sgit_FTDC_SPI_InvestorPhoto 'P' +///全结经纪公司上传文件路径 +#define Sgit_FTDC_SPI_CSRCData 'R' +///开户密码录入方式 +#define Sgit_FTDC_SPI_InvestorPwdModel 'I' +///投资者中金所结算文件下载路径 +#define Sgit_FTDC_SPI_CFFEXInvestorSettleFile 'F' +///投资者代码编码方式 +#define Sgit_FTDC_SPI_InvestorIDType 'a' + +typedef char TSgitFtdcSystemParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeParamIDType是一个交易系统参数代码类型 +///////////////////////////////////////////////////////////////////////// +///系统加密算法 +#define Sgit_FTDC_TPID_EncryptionStandard 'E' +///系统风险算法 +#define Sgit_FTDC_TPID_RiskMode 'R' +///系统风险算法是否全局 0-否 1-是 +#define Sgit_FTDC_TPID_RiskModeGlobal 'G' + +typedef char TSgitFtdcTradeParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementParamValueType是一个参数代码值类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettlementParamValueType[256]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCounterIDType是一个计数器代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCounterIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorGroupNameType是一个投资者分组名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorGroupNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrandCodeType是一个牌号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrandCodeType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcWarehouseType是一个仓库类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcWarehouseType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductDateType是一个产期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProductDateType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcGradeType是一个等级类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcGradeType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClassifyType是一个类别类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClassifyType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPositionType是一个货位类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPositionType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcYieldlyType是一个产地类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcYieldlyType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcWeightType是一个公定重量类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcWeightType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSubEntryFundNoType是一个分项资金流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSubEntryFundNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileIDType是一个文件标识类型 +///////////////////////////////////////////////////////////////////////// +///资金数据 +#define Sgit_FTDC_FI_SettlementFund 'F' +///成交数据 +#define Sgit_FTDC_FI_Trade 'T' +///投资者持仓数据 +#define Sgit_FTDC_FI_InvestorPosition 'P' +///投资者分项资金数据 +#define Sgit_FTDC_FI_SubEntryFund 'O' +///郑商所组合持仓数据 +#define Sgit_FTDC_FI_CZCECombinationPos 'C' +///上报保证金监控中心数据 +#define Sgit_FTDC_FI_CSRCData 'R' + +typedef char TSgitFtdcFileIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileNameType是一个文件名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFileNameType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileTypeType是一个文件上传类型类型 +///////////////////////////////////////////////////////////////////////// +///结算 +#define Sgit_FTDC_FUT_Settlement '0' +///核对 +#define Sgit_FTDC_FUT_Check '1' + +typedef char TSgitFtdcFileTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileFormatType是一个文件格式类型 +///////////////////////////////////////////////////////////////////////// +///文本文件(.txt) +#define Sgit_FTDC_FFT_Txt '0' +///压缩文件(.zip) +#define Sgit_FTDC_FFT_Zip '1' +///DBF文件(.dbf) +#define Sgit_FTDC_FFT_DBF '2' + +typedef char TSgitFtdcFileFormatType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileUploadStatusType是一个文件状态类型 +///////////////////////////////////////////////////////////////////////// +///上传成功 +#define Sgit_FTDC_FUS_SucceedUpload '1' +///上传失败 +#define Sgit_FTDC_FUS_FailedUpload '2' +///导入成功 +#define Sgit_FTDC_FUS_SucceedLoad '3' +///导入部分成功 +#define Sgit_FTDC_FUS_PartSucceedLoad '4' +///导入失败 +#define Sgit_FTDC_FUS_FailedLoad '5' + +typedef char TSgitFtdcFileUploadStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferDirectionType是一个移仓方向类型 +///////////////////////////////////////////////////////////////////////// +///移出 +#define Sgit_FTDC_TD_Out '0' +///移入 +#define Sgit_FTDC_TD_In '1' + +typedef char TSgitFtdcTransferDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUploadModeType是一个上传文件类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUploadModeType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAccountIDType是一个投资者帐号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAccountIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankFlagType是一个银行统一标识类型类型 +///////////////////////////////////////////////////////////////////////// +///工商银行 +#define Sgit_FTDC_BF_ICBC '1' +///农业银行 +#define Sgit_FTDC_BF_ABC '2' +///中国银行 +#define Sgit_FTDC_BF_BC '3' +///建设银行 +#define Sgit_FTDC_BF_CBC '4' +///交通银行 +#define Sgit_FTDC_BF_BOC '5' +///其他银行 +#define Sgit_FTDC_BF_Other 'Z' + +typedef char TSgitFtdcBankFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccountType是一个银行账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankAccountType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOpenNameType是一个银行账户的开户人名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOpenNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOpenBankType是一个银行账户的开户行类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOpenBankType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankNameType是一个银行名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankNameType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPublishPathType是一个发布路径类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPublishPathType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperatorIDType是一个操作员代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperatorIDType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMonthCountType是一个月份数量类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcMonthCountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAdvanceMonthArrayType是一个月份提前数组类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAdvanceMonthArrayType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDateExprType是一个日期表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDateExprType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentIDExprType是一个合约代码表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentIDExprType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentNameExprType是一个合约名称表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentNameExprType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSpecialCreateRuleType是一个特殊的创建规则类型 +///////////////////////////////////////////////////////////////////////// +///没有特殊创建规则 +#define Sgit_FTDC_SC_NoSpecialRule '0' +///不包含春节 +#define Sgit_FTDC_SC_NoSpringFestival '1' + +typedef char TSgitFtdcSpecialCreateRuleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBasisPriceTypeType是一个挂牌基准价类型类型 +///////////////////////////////////////////////////////////////////////// +///上一合约结算价 +#define Sgit_FTDC_IPT_LastSettlement '1' +///上一合约收盘价 +#define Sgit_FTDC_IPT_LaseClose '2' + +typedef char TSgitFtdcBasisPriceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProductLifePhaseType是一个产品生命周期状态类型 +///////////////////////////////////////////////////////////////////////// +///活跃 +#define Sgit_FTDC_PLP_Active '1' +///不活跃 +#define Sgit_FTDC_PLP_NonActive '2' +///注销 +#define Sgit_FTDC_PLP_Canceled '3' + +typedef char TSgitFtdcProductLifePhaseType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDeliveryModeType是一个交割方式类型 +///////////////////////////////////////////////////////////////////////// +///现金交割 +#define Sgit_FTDC_DM_CashDeliv '1' +///实物交割 +#define Sgit_FTDC_DM_CommodityDeliv '2' + +typedef char TSgitFtdcDeliveryModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLogLevelType是一个日志级别类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLogLevelType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessNameType是一个存储过程名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProcessNameType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperationMemoType是一个操作摘要类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperationMemoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundIOTypeType是一个出入金类型类型 +///////////////////////////////////////////////////////////////////////// +///出入金 +#define Sgit_FTDC_FIOT_FundIO '1' +///银期转帐 +#define Sgit_FTDC_FIOT_Transfer '2' + +typedef char TSgitFtdcFundIOTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundTypeType是一个资金类型类型 +///////////////////////////////////////////////////////////////////////// +///银行存款 +#define Sgit_FTDC_FT_Deposite '1' +///分项资金 +#define Sgit_FTDC_FT_ItemFund '2' +///公司调整 +#define Sgit_FTDC_FT_Company '3' + +typedef char TSgitFtdcFundTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundDirectionType是一个出入金方向类型 +///////////////////////////////////////////////////////////////////////// +///入金 +#define Sgit_FTDC_FD_In '1' +///出金 +#define Sgit_FTDC_FD_Out '2' + +typedef char TSgitFtdcFundDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundStatusType是一个资金状态类型 +///////////////////////////////////////////////////////////////////////// +///已录入 +#define Sgit_FTDC_FS_Record '1' +///已复核 +#define Sgit_FTDC_FS_Check '2' +///已冲销 +#define Sgit_FTDC_FS_Charge '3' + +typedef char TSgitFtdcFundStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillNoType是一个票据号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBillNoType[15]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillNameType是一个票据名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBillNameType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPublishStatusType是一个发布状态类型 +///////////////////////////////////////////////////////////////////////// +///未发布 +#define Sgit_FTDC_PS_None '1' +///正在发布 +#define Sgit_FTDC_PS_Publishing '2' +///已发布 +#define Sgit_FTDC_PS_Published '3' + +typedef char TSgitFtdcPublishStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueIDType是一个枚举值代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueIDType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueTypeType是一个枚举值类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueTypeType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueLabelType是一个枚举值名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueLabelType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEnumValueResultType是一个枚举值结果类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEnumValueResultType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemStatusType是一个系统状态类型 +///////////////////////////////////////////////////////////////////////// +///不活跃 +#define Sgit_FTDC_ES_NonActive '1' +///启动 +#define Sgit_FTDC_ES_Startup '2' +///交易开始初始化 +#define Sgit_FTDC_ES_Initialize '3' +///交易完成初始化 +#define Sgit_FTDC_ES_Initialized '4' +///收市开始 +#define Sgit_FTDC_ES_Close '5' +///收市完成 +#define Sgit_FTDC_ES_Closed '6' +///结算 +#define Sgit_FTDC_ES_Settlement '7' + +typedef char TSgitFtdcSystemStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementStatusType是一个结算状态类型 +///////////////////////////////////////////////////////////////////////// +///初始 +#define Sgit_FTDC_STS_Initialize '0' +///结算中 +#define Sgit_FTDC_STS_Settlementing '1' +///已结算 +#define Sgit_FTDC_STS_Settlemented '2' +///结算完成 +#define Sgit_FTDC_STS_Finished '3' + +typedef char TSgitFtdcSettlementStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRangeIntTypeType是一个限定值类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRangeIntTypeType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRangeIntFromType是一个限定值下限类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRangeIntFromType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRangeIntToType是一个限定值上限类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRangeIntToType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionIDType是一个功能代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionIDType[25]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionValueCodeType是一个功能编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionValueCodeType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionNameType是一个功能名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRoleIDType是一个角色编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRoleIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRoleNameType是一个角色名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRoleNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDescriptionType是一个描述类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDescriptionType[401]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombineIDType是一个组合编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombineIDType[25]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCombineTypeType是一个组合类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCombineTypeType[25]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorTypeType是一个投资者类型类型 +///////////////////////////////////////////////////////////////////////// +///自然人 +#define Sgit_FTDC_CT_Person '0' +///法人 +#define Sgit_FTDC_CT_Company '1' +///投资基金 +#define Sgit_FTDC_CT_Fund '2' + +typedef char TSgitFtdcInvestorTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerTypeType是一个经纪公司类型类型 +///////////////////////////////////////////////////////////////////////// +///交易会员 +#define Sgit_FTDC_BT_Trade '0' +///交易结算会员 +#define Sgit_FTDC_BT_TradeSettle '1' + +typedef char TSgitFtdcBrokerTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskLevelType是一个风险等级类型 +///////////////////////////////////////////////////////////////////////// +///低风险客户 +#define Sgit_FTDC_FAS_Low '1' +///普通客户 +#define Sgit_FTDC_FAS_Normal '2' +///关注客户 +#define Sgit_FTDC_FAS_Focus '3' +///风险客户 +#define Sgit_FTDC_FAS_Risk '4' + +typedef char TSgitFtdcRiskLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFeeAcceptStyleType是一个手续费收取方式类型 +///////////////////////////////////////////////////////////////////////// +///按交易收取 +#define Sgit_FTDC_FAS_ByTrade '1' +///按交割收取 +#define Sgit_FTDC_FAS_ByDeliv '2' +///不收 +#define Sgit_FTDC_FAS_None '3' +///按指定手续费收取 +#define Sgit_FTDC_FAS_FixFee '4' + +typedef char TSgitFtdcFeeAcceptStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPasswordTypeType是一个密码类型类型 +///////////////////////////////////////////////////////////////////////// +///交易密码 +#define Sgit_FTDC_PWDT_Trade '1' +///资金密码 +#define Sgit_FTDC_PWDT_Account '2' + +typedef char TSgitFtdcPasswordTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAlgorithmType是一个盈亏算法类型 +///////////////////////////////////////////////////////////////////////// +///浮盈浮亏都计算 +#define Sgit_FTDC_AG_All '1' +///浮盈不计,浮亏计 +#define Sgit_FTDC_AG_OnlyLost '2' +///浮盈计,浮亏不计 +#define Sgit_FTDC_AG_OnlyGain '3' +///浮盈浮亏都不计算 +#define Sgit_FTDC_AG_None '4' + +typedef char TSgitFtdcAlgorithmType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIncludeCloseProfitType是一个是否包含平仓盈利类型 +///////////////////////////////////////////////////////////////////////// +///包含平仓盈利 +#define Sgit_FTDC_ICP_Include '0' +///不包含平仓盈利 +#define Sgit_FTDC_ICP_NotInclude '2' + +typedef char TSgitFtdcIncludeCloseProfitType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAllWithoutTradeType是一个是否受可提比例限制类型 +///////////////////////////////////////////////////////////////////////// +///不受可提比例限制 +#define Sgit_FTDC_AWT_Enable '0' +///受可提比例限制 +#define Sgit_FTDC_AWT_Disable '2' + +typedef char TSgitFtdcAllWithoutTradeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommentType是一个盈亏算法说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommentType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVersionType是一个版本号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcVersionType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeCodeType是一个交易代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeDateType是一个交易日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeDateType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeTimeType是一个交易时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeTimeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSerialType是一个发起方流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeSerialType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSerialNoType是一个发起方流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTradeSerialNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureIDType是一个期货公司代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankIDType是一个银行代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankIDType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankBrchIDType是一个银行分中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankBrchIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankBranchIDType是一个分中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankBranchIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperNoType是一个交易柜员类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperNoType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDeviceIDType是一个渠道标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDeviceIDType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRecordNumType是一个记录数类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRecordNumType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccountType是一个期货资金账号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureAccountType[22]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFuturePwdFlagType是一个资金密码核对标志类型 +///////////////////////////////////////////////////////////////////////// +///不核对 +#define Sgit_FTDC_FPWD_UnCheck '0' +///核对 +#define Sgit_FTDC_FPWD_Check '1' + +typedef char TSgitFtdcFuturePwdFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferTypeType是一个银期转账类型类型 +///////////////////////////////////////////////////////////////////////// +///银行转期货 +#define Sgit_FTDC_TT_BankToFuture '0' +///期货转银行 +#define Sgit_FTDC_TT_FutureToBank '1' + +typedef char TSgitFtdcTransferTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccPwdType是一个期货资金密码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureAccPwdType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCurrencyCodeType是一个币种类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCurrencyCodeType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRetCodeType是一个响应代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRetCodeType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRetInfoType是一个响应信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRetInfoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeAmtType是一个银行总余额类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTradeAmtType[20]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUseAmtType是一个银行可用余额类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUseAmtType[20]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFetchAmtType是一个银行可取余额类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFetchAmtType[20]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferValidFlagType是一个转账有效标志类型 +///////////////////////////////////////////////////////////////////////// +///无效或失败 +#define Sgit_FTDC_TVF_Invalid '0' +///有效 +#define Sgit_FTDC_TVF_Valid '1' +///冲正 +#define Sgit_FTDC_TVF_Reverse '2' + +typedef char TSgitFtdcTransferValidFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCertCodeType是一个证件号码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCertCodeType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReasonType是一个事由类型 +///////////////////////////////////////////////////////////////////////// +///错单 +#define Sgit_FTDC_RN_CD '0' +///资金在途 +#define Sgit_FTDC_RN_ZT '1' +///其它 +#define Sgit_FTDC_RN_QT '2' + +typedef char TSgitFtdcReasonType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundProjectIDType是一个资金项目编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFundProjectIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSexType是一个性别类型 +///////////////////////////////////////////////////////////////////////// +///未知 +#define Sgit_FTDC_SEX_None '0' +///男 +#define Sgit_FTDC_SEX_Man '1' +///女 +#define Sgit_FTDC_SEX_Woman '2' + +typedef char TSgitFtdcSexType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProfessionType是一个职业类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProfessionType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNationalType是一个国籍类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcNationalType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProvinceType是一个省类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProvinceType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRegionType是一个区类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRegionType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCountryType是一个国家类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCountryType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLicenseNOType是一个营业执照类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcLicenseNOType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCompanyTypeType是一个企业性质类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCompanyTypeType[16]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBusinessScopeType是一个经营范围类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBusinessScopeType[1001]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCapitalCurrencyType是一个注册资本币种类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCapitalCurrencyType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserTypeType是一个用户类型类型 +///////////////////////////////////////////////////////////////////////// +///投资者 +#define Sgit_FTDC_UT_Investor '0' +///操作员 +#define Sgit_FTDC_UT_Operator '1' +///管理员 +#define Sgit_FTDC_UT_SuperUser '2' + +typedef char TSgitFtdcUserTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateTypeType是一个费率类型类型 +///////////////////////////////////////////////////////////////////////// +///保证金率 +#define Sgit_FTDC_RATETYPE_MarginRate '2' + +typedef char TSgitFtdcRateTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNoteTypeType是一个通知类型类型 +///////////////////////////////////////////////////////////////////////// +///交易结算单 +#define Sgit_FTDC_NOTETYPE_TradeSettleBill '1' +///交易结算月报 +#define Sgit_FTDC_NOTETYPE_TradeSettleMonth '2' +///追加保证金通知书 +#define Sgit_FTDC_NOTETYPE_CallMarginNotes '3' +///强行平仓通知书 +#define Sgit_FTDC_NOTETYPE_ForceCloseNotes '4' +///成交通知书 +#define Sgit_FTDC_NOTETYPE_TradeNotes '5' +///交割通知书 +#define Sgit_FTDC_NOTETYPE_DelivNotes '6' + +typedef char TSgitFtdcNoteTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementStyleType是一个结算单方式类型 +///////////////////////////////////////////////////////////////////////// +///逐日盯市 +#define Sgit_FTDC_SBS_Day '1' +///逐笔对冲 +#define Sgit_FTDC_SBS_Volume '2' + +typedef char TSgitFtdcSettlementStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerDNSType是一个域名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBrokerDNSType[256]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSentenceType是一个语句类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSentenceType[501]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettlementBillTypeType是一个结算单类型类型 +///////////////////////////////////////////////////////////////////////// +///日报 +#define Sgit_FTDC_ST_Day '0' +///月报 +#define Sgit_FTDC_ST_Month '1' + +typedef char TSgitFtdcSettlementBillTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserRightTypeType是一个客户权限类型类型 +///////////////////////////////////////////////////////////////////////// +///登录 +#define Sgit_FTDC_URT_Logon '1' +///银期转帐 +#define Sgit_FTDC_URT_Transfer '2' +///邮寄结算单 +#define Sgit_FTDC_URT_EMail '3' +///传真结算单 +#define Sgit_FTDC_URT_Fax '4' +///条件单 +#define Sgit_FTDC_URT_ConditionOrder '5' + +typedef char TSgitFtdcUserRightTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMarginPriceTypeType是一个保证金价格类型类型 +///////////////////////////////////////////////////////////////////////// +///昨结算价 +#define Sgit_FTDC_MPT_PreSettlementPrice '1' +///最新价 +#define Sgit_FTDC_MPT_SettlementPrice '2' +///成交均价 +#define Sgit_FTDC_MPT_AveragePrice '3' +///开仓价 +#define Sgit_FTDC_MPT_OpenPrice '4' + +typedef char TSgitFtdcMarginPriceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBillGenStatusType是一个结算单生成状态类型 +///////////////////////////////////////////////////////////////////////// +///不生成 +#define Sgit_FTDC_BGS_None '0' +///未生成 +#define Sgit_FTDC_BGS_NoGenerated '1' +///已生成 +#define Sgit_FTDC_BGS_Generated '2' + +typedef char TSgitFtdcBillGenStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAlgoTypeType是一个算法类型类型 +///////////////////////////////////////////////////////////////////////// +///持仓处理算法 +#define Sgit_FTDC_AT_HandlePositionAlgo '1' +///寻找保证金率算法 +#define Sgit_FTDC_AT_FindMarginRateAlgo '2' + +typedef char TSgitFtdcAlgoTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcHandlePositionAlgoIDType是一个持仓处理算法编号类型 +///////////////////////////////////////////////////////////////////////// +///基本 +#define Sgit_FTDC_HPA_Base '1' +///大连商品交易所 +#define Sgit_FTDC_HPA_DCE '2' +///郑州商品交易所 +#define Sgit_FTDC_HPA_CZCE '3' + +typedef char TSgitFtdcHandlePositionAlgoIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFindMarginRateAlgoIDType是一个寻找保证金率算法编号类型 +///////////////////////////////////////////////////////////////////////// +///基本 +#define Sgit_FTDC_FMRA_Base '1' +///大连商品交易所 +#define Sgit_FTDC_FMRA_DCE '2' +///郑州商品交易所 +#define Sgit_FTDC_FMRA_CZCE '3' + +typedef char TSgitFtdcFindMarginRateAlgoIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcHandleTradingAccountAlgoIDType是一个资金处理算法编号类型 +///////////////////////////////////////////////////////////////////////// +///基本 +#define Sgit_FTDC_HTAA_Base '1' +///大连商品交易所 +#define Sgit_FTDC_HTAA_DCE '2' +///郑州商品交易所 +#define Sgit_FTDC_HTAA_CZCE '3' + +typedef char TSgitFtdcHandleTradingAccountAlgoIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPersonTypeType是一个联系人类型类型 +///////////////////////////////////////////////////////////////////////// +///指定下单人 +#define Sgit_FTDC_PST_Order '1' +///开户授权人 +#define Sgit_FTDC_PST_Open '2' +///资金调拨人 +#define Sgit_FTDC_PST_Fund '3' +///结算单确认人 +#define Sgit_FTDC_PST_Settlement '4' +///法人 +#define Sgit_FTDC_PST_Company '5' +///法人代表 +#define Sgit_FTDC_PST_Corporation '6' +///投资者联系人 +#define Sgit_FTDC_PST_LinkMan '7' + +typedef char TSgitFtdcPersonTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQueryInvestorRangeType是一个查询范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_QIR_All '1' +///查询分类 +#define Sgit_FTDC_QIR_Group '2' +///单一投资者 +#define Sgit_FTDC_QIR_Single '3' + +typedef char TSgitFtdcQueryInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorRiskStatusType是一个投资者风险状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_IRS_Normal '1' +///警告 +#define Sgit_FTDC_IRS_Warn '2' +///追保 +#define Sgit_FTDC_IRS_Call '3' +///强平 +#define Sgit_FTDC_IRS_Force '4' +///异常 +#define Sgit_FTDC_IRS_Exception '5' + +typedef char TSgitFtdcInvestorRiskStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLegIDType是一个单腿编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLegIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLegMultipleType是一个单腿乘数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLegMultipleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcImplyLevelType是一个派生层数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcImplyLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearAccountType是一个结算账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearAccountType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganNOType是一个结算账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganNOType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearbarchIDType是一个结算账户联行号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearbarchIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserEventTypeType是一个用户事件类型类型 +///////////////////////////////////////////////////////////////////////// +///登录 +#define Sgit_FTDC_UET_Login '1' +///登出 +#define Sgit_FTDC_UET_Logout '2' +///交易成功 +#define Sgit_FTDC_UET_Trading '3' +///交易失败 +#define Sgit_FTDC_UET_TradingError '4' +///修改密码 +#define Sgit_FTDC_UET_UpdatePassword '5' +///客户端认证 +#define Sgit_FTDC_UET_Authenticate '6' +///其他 +#define Sgit_FTDC_UET_Other '9' + +typedef char TSgitFtdcUserEventTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserEventInfoType是一个用户事件信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserEventInfoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCloseStyleType是一个平仓方式类型 +///////////////////////////////////////////////////////////////////////// +///先开先平 +#define Sgit_FTDC_ICS_Close '0' +///先平今再平昨 +#define Sgit_FTDC_ICS_CloseToday '1' + +typedef char TSgitFtdcCloseStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcStatModeType是一个统计方式类型 +///////////////////////////////////////////////////////////////////////// +///---- +#define Sgit_FTDC_SM_Non '0' +///按合约统计 +#define Sgit_FTDC_SM_Instrument '1' +///按产品统计 +#define Sgit_FTDC_SM_Product '2' +///按投资者统计 +#define Sgit_FTDC_SM_Investor '3' + +typedef char TSgitFtdcStatModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParkedOrderStatusType是一个预埋单状态类型 +///////////////////////////////////////////////////////////////////////// +///未发送 +#define Sgit_FTDC_PAOS_NotSend '1' +///已发送 +#define Sgit_FTDC_PAOS_Send '2' +///已删除 +#define Sgit_FTDC_PAOS_Deleted '3' + +typedef char TSgitFtdcParkedOrderStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParkedOrderIDType是一个预埋报单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParkedOrderIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParkedOrderActionIDType是一个预埋撤单编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParkedOrderActionIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirDealStatusType是一个处理状态类型 +///////////////////////////////////////////////////////////////////////// +///正在处理 +#define Sgit_FTDC_VDS_Dealing '1' +///处理成功 +#define Sgit_FTDC_VDS_DeaclSucceed '2' + +typedef char TSgitFtdcVirDealStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrgSystemIDType是一个原有系统代码类型 +///////////////////////////////////////////////////////////////////////// +///综合交易平台 +#define Sgit_FTDC_ORGS_Standard '0' +///易盛系统 +#define Sgit_FTDC_ORGS_ESunny '1' +///金仕达V6系统 +#define Sgit_FTDC_ORGS_KingStarV6 '2' + +typedef char TSgitFtdcOrgSystemIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirTradeStatusType是一个交易状态类型 +///////////////////////////////////////////////////////////////////////// +///正常处理中 +#define Sgit_FTDC_VTS_NaturalDeal '0' +///成功结束 +#define Sgit_FTDC_VTS_SucceedEnd '1' +///失败结束 +#define Sgit_FTDC_VTS_FailedEND '2' +///异常中 +#define Sgit_FTDC_VTS_Exception '3' +///已人工异常处理 +#define Sgit_FTDC_VTS_ManualDeal '4' +///通讯异常 ,请人工处理 +#define Sgit_FTDC_VTS_MesException '5' +///系统出错,请人工处理 +#define Sgit_FTDC_VTS_SysException '6' + +typedef char TSgitFtdcVirTradeStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirBankAccTypeType是一个银行帐户类型类型 +///////////////////////////////////////////////////////////////////////// +///存折 +#define Sgit_FTDC_VBAT_BankBook '1' +///储蓄卡 +#define Sgit_FTDC_VBAT_BankCard '2' +///信用卡 +#define Sgit_FTDC_VBAT_CreditCard '3' + +typedef char TSgitFtdcVirBankAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirementStatusType是一个银行帐户类型类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_VMS_Natural '0' +///销户 +#define Sgit_FTDC_VMS_Canceled '9' + +typedef char TSgitFtdcVirementStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirementAvailAbilityType是一个有效标志类型 +///////////////////////////////////////////////////////////////////////// +///未确认 +#define Sgit_FTDC_VAA_NoAvailAbility '0' +///有效 +#define Sgit_FTDC_VAA_AvailAbility '1' +///冲正 +#define Sgit_FTDC_VAA_Repeal '2' + +typedef char TSgitFtdcVirementAvailAbilityType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcVirementTradeCodeType是一个交易代码类型 +///////////////////////////////////////////////////////////////////////// +///银行发起银行资金转期货 +#define Sgit_FTDC_VTC_BankBankToFuture '102001' +///银行发起期货资金转银行 +#define Sgit_FTDC_VTC_BankFutureToBank '102002' +///期货发起银行资金转期货 +#define Sgit_FTDC_VTC_FutureBankToFuture '202001' +///期货发起期货资金转银行 +#define Sgit_FTDC_VTC_FutureFutureToBank '202002' + +typedef char TSgitFtdcVirementTradeCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPhotoTypeNameType是一个影像类型名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPhotoTypeNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPhotoTypeIDType是一个影像类型代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPhotoTypeIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPhotoNameType是一个影像名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPhotoNameType[161]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTopicIDType是一个主题代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTopicIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReportTypeIDType是一个交易报告类型标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcReportTypeIDType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCharacterIDType是一个交易特征代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCharacterIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLParamIDType是一个参数代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLParamIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInvestorTypeType是一个投资者类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInvestorTypeType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLIdCardTypeType是一个证件类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLIdCardTypeType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTradeDirectType是一个资金进出方向类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTradeDirectType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTradeModelType是一个资金进出方式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTradeModelType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLParamIDType是一个参数代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLParamIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLOpParamValueType是一个业务参数代码值类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcAMLOpParamValueType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCustomerCardTypeType是一个客户身份证件/证明文件类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLCustomerCardTypeType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInstitutionNameType是一个金融机构网点名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInstitutionNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLDistrictIDType是一个金融机构网点所在地区行政区划代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLDistrictIDType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLRelationShipType是一个金融机构网点与大额交易的关系类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLRelationShipType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInstitutionTypeType是一个金融机构网点代码类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInstitutionTypeType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLInstitutionIDType是一个金融机构网点代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLInstitutionIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLAccountTypeType是一个账户类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLAccountTypeType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTradingTypeType是一个交易方式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTradingTypeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLTransactClassType是一个涉外收支交易分类与代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLTransactClassType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCapitalIOType是一个资金收付标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLCapitalIOType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLSiteType是一个交易地点类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLSiteType[10]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCapitalPurposeType是一个资金用途类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLCapitalPurposeType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLReportTypeType是一个报文类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLReportTypeType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLSerialNoType是一个编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLSerialNoType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLStatusType是一个状态类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLStatusType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLGenStatusType是一个Aml生成方式类型 +///////////////////////////////////////////////////////////////////////// +///程序生成 +#define Sgit_FTDC_GEN_Program '0' +///人工生成 +#define Sgit_FTDC_GEN_HandWork '1' + +typedef char TSgitFtdcAMLGenStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLSeqCodeType是一个业务标识号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLSeqCodeType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLFileNameType是一个AML文件名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLFileNameType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLMoneyType是一个反洗钱资金类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcAMLMoneyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLFileAmountType是一个反洗钱资金类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcAMLFileAmountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCFMMCKeyType是一个密钥类型(保证金监管)类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCFMMCKeyType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCFMMCKeyKindType是一个动态密钥类别(保证金监管)类型 +///////////////////////////////////////////////////////////////////////// +///主动请求更新 +#define Sgit_FTDC_CFMMCKK_REQUEST 'R' +///CFMMC自动更新 +#define Sgit_FTDC_CFMMCKK_AUTO 'A' +///CFMMC手动更新 +#define Sgit_FTDC_CFMMCKK_MANUAL 'M' + +typedef char TSgitFtdcCFMMCKeyKindType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLReportNameType是一个报文名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAMLReportNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIndividualNameType是一个个人姓名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIndividualNameType[51]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCurrencyIDType是一个币种代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCurrencyIDType[4]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCustNumberType是一个客户编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCustNumberType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganCodeType是一个机构编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganCodeType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganNameType是一个机构名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSuperOrganCodeType是一个上级机构编码,即期货公司总部、银行总行类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSuperOrganCodeType[12]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSubBranchIDType是一个分支机构类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSubBranchIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSubBranchNameType是一个分支机构名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSubBranchNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBranchNetCodeType是一个机构网点号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBranchNetCodeType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBranchNetNameType是一个机构网点名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBranchNetNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganFlagType是一个机构标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOrganFlagType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankCodingForFutureType是一个银行对期货公司的编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankCodingForFutureType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankReturnCodeType是一个银行对返回码的定义类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankReturnCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPlateReturnCodeType是一个银期转帐平台对返回码的定义类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPlateReturnCodeType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankSubBranchIDType是一个银行分支机构编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankSubBranchIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureBranchIDType是一个期货分支机构编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureBranchIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReturnCodeType是一个返回代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcReturnCodeType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOperatorCodeType是一个操作员类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOperatorCodeType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearDepIDType是一个机构结算帐户机构号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearDepIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearBrchIDType是一个机构结算帐户联行号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearBrchIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClearNameType是一个机构结算帐户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClearNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccountNameType是一个银行帐户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankAccountNameType[71]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvDepIDType是一个机构投资人账号机构号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvDepIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvBrchIDType是一个机构投资人联行号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvBrchIDType[6]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMessageFormatVersionType是一个信息格式版本类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMessageFormatVersionType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDigestType是一个摘要类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDigestType[36]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthenticDataType是一个认证数据类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthenticDataType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPasswordKeyType是一个密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPasswordKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccountNameType是一个期货帐户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureAccountNameType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMobilePhoneType是一个手机类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcMobilePhoneType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureMainKeyType是一个期货公司主密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureMainKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureWorkKeyType是一个期货公司工作密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureWorkKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureTransKeyType是一个期货公司传输密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFutureTransKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankMainKeyType是一个银行主密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankMainKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankWorkKeyType是一个银行工作密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankWorkKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankTransKeyType是一个银行传输密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankTransKeyType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankServerDescriptionType是一个银行服务器描述信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankServerDescriptionType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAddInfoType是一个附加信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAddInfoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDescrInfoForReturnCodeType是一个返回码描述类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDescrInfoForReturnCodeType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCountryCodeType是一个国家代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCountryCodeType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSerialType是一个流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPlateSerialType是一个平台流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcPlateSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankSerialType是一个银行流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankSerialType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCorrectSerialType是一个被冲正交易流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCorrectSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureSerialType是一个期货公司流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFutureSerialType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcApplicationIDType是一个应用标识类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcApplicationIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankProxyIDType是一个银行代理标识类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcBankProxyIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTCoreIDType是一个银期转帐核心系统标识类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFBTCoreIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServerPortType是一个服务端口号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcServerPortType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRepealedTimesType是一个已经冲正次数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcRepealedTimesType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRepealTimeIntervalType是一个冲正时间间隔类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcRepealTimeIntervalType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTotalTimesType是一个每日累计转帐次数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTotalTimesType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTRequestIDType是一个请求ID类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcFBTRequestIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTIDType是一个交易ID类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeAmountType是一个交易金额(元)类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcTradeAmountType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCustFeeType是一个应收客户费用(元)类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcCustFeeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureFeeType是一个应收期货公司费用(元)类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcFutureFeeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSingleMaxAmtType是一个单笔最高限额类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcSingleMaxAmtType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSingleMinAmtType是一个单笔最低限额类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcSingleMinAmtType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTotalAmtType是一个每日累计转帐额度类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcTotalAmtType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCertificationTypeType是一个证件类型类型 +///////////////////////////////////////////////////////////////////////// +///身份证 +#define Sgit_FTDC_CFT_IDCard '0' +///护照 +#define Sgit_FTDC_CFT_Passport '1' +///军官证 +#define Sgit_FTDC_CFT_OfficerIDCard '2' +///士兵证 +#define Sgit_FTDC_CFT_SoldierIDCard '3' +///回乡证 +#define Sgit_FTDC_CFT_HomeComingCard '4' +///户口簿 +#define Sgit_FTDC_CFT_HouseholdRegister '5' +///营业执照号 +#define Sgit_FTDC_CFT_LicenseNo '6' +///组织机构代码证 +#define Sgit_FTDC_CFT_InstitutionCodeCard '7' +///临时营业执照号 +#define Sgit_FTDC_CFT_TempLicenseNo '8' +///民办非企业登记证书 +#define Sgit_FTDC_CFT_NoEnterpriseLicenseNo '9' +///其他证件 +#define Sgit_FTDC_CFT_OtherCard 'x' +///主管部门批文 +#define Sgit_FTDC_CFT_SuperDepAgree 'a' + +typedef char TSgitFtdcCertificationTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileBusinessCodeType是一个文件业务功能类型 +///////////////////////////////////////////////////////////////////////// +///其他 +#define Sgit_FTDC_FBC_Others '0' +///转账交易明细对账 +#define Sgit_FTDC_FBC_TransferDetails '1' +///客户账户状态对账 +#define Sgit_FTDC_FBC_CustAccStatus '2' +///账户类交易明细对账 +#define Sgit_FTDC_FBC_AccountTradeDetails '3' +///期货账户信息变更明细对账 +#define Sgit_FTDC_FBC_FutureAccountChangeInfoDetails '4' +///客户资金台账余额明细对账 +#define Sgit_FTDC_FBC_CustMoneyDetail '5' +///客户销户结息明细对账 +#define Sgit_FTDC_FBC_CustCancelAccountInfo '6' +///客户资金余额对账结果 +#define Sgit_FTDC_FBC_CustMoneyResult '7' +///其它对账异常结果文件 +#define Sgit_FTDC_FBC_OthersExceptionResult '8' +///客户结息净额明细 +#define Sgit_FTDC_FBC_CustInterestNetMoneyDetails '9' +///客户资金交收明细 +#define Sgit_FTDC_FBC_CustMoneySendAndReceiveDetails 'a' +///法人存管银行资金交收汇总 +#define Sgit_FTDC_FBC_CorporationMoneyTotal 'b' +///主体间资金交收汇总 +#define Sgit_FTDC_FBC_MainbodyMoneyTotal 'c' +///总分平衡监管数据 +#define Sgit_FTDC_FBC_MainPartMonitorData 'd' +///存管银行备付金余额 +#define Sgit_FTDC_FBC_PreparationMoney 'e' +///协办存管银行资金监管数据 +#define Sgit_FTDC_FBC_BankMoneyMonitorData 'f' + +typedef char TSgitFtdcFileBusinessCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCashExchangeCodeType是一个汇钞标志类型 +///////////////////////////////////////////////////////////////////////// +///汇 +#define Sgit_FTDC_CEC_Exchange '1' +///钞 +#define Sgit_FTDC_CEC_Cash '2' + +typedef char TSgitFtdcCashExchangeCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcYesNoIndicatorType是一个是或否标识类型 +///////////////////////////////////////////////////////////////////////// +///是 +#define Sgit_FTDC_YNI_Yes '0' +///否 +#define Sgit_FTDC_YNI_No '1' + +typedef char TSgitFtdcYesNoIndicatorType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBanlanceTypeType是一个余额类型类型 +///////////////////////////////////////////////////////////////////////// +///当前余额 +#define Sgit_FTDC_BLT_CurrentMoney '0' +///可用余额 +#define Sgit_FTDC_BLT_UsableMoney '1' +///可取余额 +#define Sgit_FTDC_BLT_FetchableMoney '2' +///冻结余额 +#define Sgit_FTDC_BLT_FreezeMoney '3' + +typedef char TSgitFtdcBanlanceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcGenderType是一个性别类型 +///////////////////////////////////////////////////////////////////////// +///未知状态 +#define Sgit_FTDC_GD_Unknown '0' +///男 +#define Sgit_FTDC_GD_Male '1' +///女 +#define Sgit_FTDC_GD_Female '2' + +typedef char TSgitFtdcGenderType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFeePayFlagType是一个费用支付标志类型 +///////////////////////////////////////////////////////////////////////// +///由受益方支付费用 +#define Sgit_FTDC_FPF_BEN '0' +///由发送方支付费用 +#define Sgit_FTDC_FPF_OUR '1' +///由发送方支付发起的费用,受益方支付接受的费用 +#define Sgit_FTDC_FPF_SHA '2' + +typedef char TSgitFtdcFeePayFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPassWordKeyTypeType是一个密钥类型类型 +///////////////////////////////////////////////////////////////////////// +///交换密钥 +#define Sgit_FTDC_PWKT_ExchangeKey '0' +///密码密钥 +#define Sgit_FTDC_PWKT_PassWordKey '1' +///MAC密钥 +#define Sgit_FTDC_PWKT_MACKey '2' +///报文密钥 +#define Sgit_FTDC_PWKT_MessageKey '3' + +typedef char TSgitFtdcPassWordKeyTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTPassWordTypeType是一个密码类型类型 +///////////////////////////////////////////////////////////////////////// +///查询 +#define Sgit_FTDC_PWT_Query '0' +///取款 +#define Sgit_FTDC_PWT_Fetch '1' +///转帐 +#define Sgit_FTDC_PWT_Transfer '2' +///交易 +#define Sgit_FTDC_PWT_Trade '3' + +typedef char TSgitFtdcFBTPassWordTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTEncryModeType是一个加密方式类型 +///////////////////////////////////////////////////////////////////////// +///不加密 +#define Sgit_FTDC_EM_NoEncry '0' +///DES +#define Sgit_FTDC_EM_DES '1' +///3DES +#define Sgit_FTDC_EM_3DES '2' + +typedef char TSgitFtdcFBTEncryModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankRepealFlagType是一个银行冲正标志类型 +///////////////////////////////////////////////////////////////////////// +///银行无需自动冲正 +#define Sgit_FTDC_BRF_BankNotNeedRepeal '0' +///银行待自动冲正 +#define Sgit_FTDC_BRF_BankWaitingRepeal '1' +///银行已自动冲正 +#define Sgit_FTDC_BRF_BankBeenRepealed '2' + +typedef char TSgitFtdcBankRepealFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerRepealFlagType是一个期商冲正标志类型 +///////////////////////////////////////////////////////////////////////// +///期商无需自动冲正 +#define Sgit_FTDC_BRORF_BrokerNotNeedRepeal '0' +///期商待自动冲正 +#define Sgit_FTDC_BRORF_BrokerWaitingRepeal '1' +///期商已自动冲正 +#define Sgit_FTDC_BRORF_BrokerBeenRepealed '2' + +typedef char TSgitFtdcBrokerRepealFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstitutionTypeType是一个机构类别类型 +///////////////////////////////////////////////////////////////////////// +///银行 +#define Sgit_FTDC_TS_Bank '0' +///期商 +#define Sgit_FTDC_TS_Future '1' +///券商 +#define Sgit_FTDC_TS_Store '2' + +typedef char TSgitFtdcInstitutionTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLastFragmentType是一个最后分片标志类型 +///////////////////////////////////////////////////////////////////////// +///是最后分片 +#define Sgit_FTDC_LF_Yes '0' +///不是最后分片 +#define Sgit_FTDC_LF_No '1' + +typedef char TSgitFtdcLastFragmentType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccStatusType是一个银行账户状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_BAS_Normal '0' +///冻结 +#define Sgit_FTDC_BAS_Freeze '1' +///挂失 +#define Sgit_FTDC_BAS_ReportLoss '2' + +typedef char TSgitFtdcBankAccStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMoneyAccountStatusType是一个资金账户状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_MAS_Normal '0' +///销户 +#define Sgit_FTDC_MAS_Cancel '1' + +typedef char TSgitFtdcMoneyAccountStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcManageStatusType是一个存管状态类型 +///////////////////////////////////////////////////////////////////////// +///指定存管 +#define Sgit_FTDC_MSS_Point '0' +///预指定 +#define Sgit_FTDC_MSS_PrePoint '1' +///撤销指定 +#define Sgit_FTDC_MSS_CancelPoint '2' + +typedef char TSgitFtdcManageStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSystemTypeType是一个应用系统类型类型 +///////////////////////////////////////////////////////////////////////// +///银期转帐 +#define Sgit_FTDC_SYT_FutureBankTransfer '0' +///银证转帐 +#define Sgit_FTDC_SYT_StockBankTransfer '1' +///第三方存管 +#define Sgit_FTDC_SYT_TheThirdPartStore '2' + +typedef char TSgitFtdcSystemTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTxnEndFlagType是一个银期转帐划转结果标志类型 +///////////////////////////////////////////////////////////////////////// +///正常处理中 +#define Sgit_FTDC_TEF_NormalProcessing '0' +///成功结束 +#define Sgit_FTDC_TEF_Success '1' +///失败结束 +#define Sgit_FTDC_TEF_Failed '2' +///异常中 +#define Sgit_FTDC_TEF_Abnormal '3' +///已人工异常处理 +#define Sgit_FTDC_TEF_ManualProcessedForException '4' +///通讯异常 ,请人工处理 +#define Sgit_FTDC_TEF_CommuFailedNeedManualProcess '5' +///系统出错,请人工处理 +#define Sgit_FTDC_TEF_SysErrorNeedManualProcess '6' + +typedef char TSgitFtdcTxnEndFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessStatusType是一个银期转帐服务处理状态类型 +///////////////////////////////////////////////////////////////////////// +///未处理 +#define Sgit_FTDC_PSS_NotProcess '0' +///开始处理 +#define Sgit_FTDC_PSS_StartProcess '1' +///处理完成 +#define Sgit_FTDC_PSS_Finished '2' + +typedef char TSgitFtdcProcessStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCustTypeType是一个客户类型类型 +///////////////////////////////////////////////////////////////////////// +///自然人 +#define Sgit_FTDC_CUSTT_Person '0' +///机构户 +#define Sgit_FTDC_CUSTT_Institution '1' + +typedef char TSgitFtdcCustTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTTransferDirectionType是一个银期转帐方向类型 +///////////////////////////////////////////////////////////////////////// +///入金,银行转期货 +#define Sgit_FTDC_FBTTD_FromBankToFuture '1' +///出金,期货转银行 +#define Sgit_FTDC_FBTTD_FromFutureToBank '2' + +typedef char TSgitFtdcFBTTransferDirectionType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOpenOrDestroyType是一个开销户类别类型 +///////////////////////////////////////////////////////////////////////// +///开户 +#define Sgit_FTDC_OOD_Open '1' +///销户 +#define Sgit_FTDC_OOD_Destroy '0' + +typedef char TSgitFtdcOpenOrDestroyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAvailabilityFlagType是一个有效标志类型 +///////////////////////////////////////////////////////////////////////// +///未确认 +#define Sgit_FTDC_AVAF_Invalid '0' +///有效 +#define Sgit_FTDC_AVAF_Valid '1' +///冲正 +#define Sgit_FTDC_AVAF_Repeal '2' + +typedef char TSgitFtdcAvailabilityFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganTypeType是一个机构类型类型 +///////////////////////////////////////////////////////////////////////// +///银行代理 +#define Sgit_FTDC_OT_Bank '1' +///交易前置 +#define Sgit_FTDC_OT_Future '2' +///银期转帐平台管理 +#define Sgit_FTDC_OT_PlateForm '9' + +typedef char TSgitFtdcOrganTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganLevelType是一个机构级别类型 +///////////////////////////////////////////////////////////////////////// +///银行总行或期商总部 +#define Sgit_FTDC_OL_HeadQuarters '1' +///银行分中心或期货公司营业部 +#define Sgit_FTDC_OL_Branch '2' + +typedef char TSgitFtdcOrganLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProtocalIDType是一个协议类型类型 +///////////////////////////////////////////////////////////////////////// +///期商协议 +#define Sgit_FTDC_PID_FutureProtocal '0' +///工行协议 +#define Sgit_FTDC_PID_ICBCProtocal '1' +///农行协议 +#define Sgit_FTDC_PID_ABCProtocal '2' +///中国银行协议 +#define Sgit_FTDC_PID_CBCProtocal '3' +///建行协议 +#define Sgit_FTDC_PID_CCBProtocal '4' +///交行协议 +#define Sgit_FTDC_PID_BOCOMProtocal '5' +///银期转帐平台协议 +#define Sgit_FTDC_PID_FBTPlateFormProtocal 'X' + +typedef char TSgitFtdcProtocalIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcConnectModeType是一个套接字连接方式类型 +///////////////////////////////////////////////////////////////////////// +///短连接 +#define Sgit_FTDC_CM_ShortConnect '0' +///长连接 +#define Sgit_FTDC_CM_LongConnect '1' + +typedef char TSgitFtdcConnectModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSyncModeType是一个套接字通信方式类型 +///////////////////////////////////////////////////////////////////////// +///异步 +#define Sgit_FTDC_SRM_ASync '0' +///同步 +#define Sgit_FTDC_SRM_Sync '1' + +typedef char TSgitFtdcSyncModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAccTypeType是一个银行帐号类型类型 +///////////////////////////////////////////////////////////////////////// +///银行存折 +#define Sgit_FTDC_BAT_BankBook '1' +///储蓄卡 +#define Sgit_FTDC_BAT_SavingCard '2' +///信用卡 +#define Sgit_FTDC_BAT_CreditCard '3' + +typedef char TSgitFtdcBankAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureAccTypeType是一个期货公司帐号类型类型 +///////////////////////////////////////////////////////////////////////// +///银行存折 +#define Sgit_FTDC_FAT_BankBook '1' +///储蓄卡 +#define Sgit_FTDC_FAT_SavingCard '2' +///信用卡 +#define Sgit_FTDC_FAT_CreditCard '3' + +typedef char TSgitFtdcFutureAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOrganStatusType是一个接入机构状态类型 +///////////////////////////////////////////////////////////////////////// +///启用 +#define Sgit_FTDC_OS_Ready '0' +///签到 +#define Sgit_FTDC_OS_CheckIn '1' +///签退 +#define Sgit_FTDC_OS_CheckOut '2' +///对帐文件到达 +#define Sgit_FTDC_OS_CheckFileArrived '3' +///对帐 +#define Sgit_FTDC_OS_CheckDetail '4' +///日终清理 +#define Sgit_FTDC_OS_DayEndClean '5' +///注销 +#define Sgit_FTDC_OS_Invalid '9' + +typedef char TSgitFtdcOrganStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCCBFeeModeType是一个建行收费模式类型 +///////////////////////////////////////////////////////////////////////// +///按金额扣收 +#define Sgit_FTDC_CCBFM_ByAmount '1' +///按月扣收 +#define Sgit_FTDC_CCBFM_ByMonth '2' + +typedef char TSgitFtdcCCBFeeModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommApiTypeType是一个通讯API类型类型 +///////////////////////////////////////////////////////////////////////// +///客户端 +#define Sgit_FTDC_CAPIT_Client '1' +///服务端 +#define Sgit_FTDC_CAPIT_Server '2' +///交易系统的UserApi +#define Sgit_FTDC_CAPIT_UserApi '3' + +typedef char TSgitFtdcCommApiTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServiceIDType是一个服务编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcServiceIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServiceLineNoType是一个服务线路编号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcServiceLineNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcServiceNameType是一个服务名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcServiceNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLinkStatusType是一个连接状态类型 +///////////////////////////////////////////////////////////////////////// +///已经连接 +#define Sgit_FTDC_LS_Connected '1' +///没有连接 +#define Sgit_FTDC_LS_Disconnected '2' + +typedef char TSgitFtdcLinkStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommApiPointerType是一个通讯API指针类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCommApiPointerType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPwdFlagType是一个密码核对标志类型 +///////////////////////////////////////////////////////////////////////// +///不核对 +#define Sgit_FTDC_BPWDF_NoCheck '0' +///明文核对 +#define Sgit_FTDC_BPWDF_BlankCheck '1' +///密文核对 +#define Sgit_FTDC_BPWDF_EncryptCheck '2' + +typedef char TSgitFtdcPwdFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSecuAccTypeType是一个期货帐号类型类型 +///////////////////////////////////////////////////////////////////////// +///资金帐号 +#define Sgit_FTDC_SAT_AccountID '1' +///资金卡号 +#define Sgit_FTDC_SAT_CardID '2' +///上海股东帐号 +#define Sgit_FTDC_SAT_SHStockholderID '3' +///深圳股东帐号 +#define Sgit_FTDC_SAT_SZStockholderID '4' + +typedef char TSgitFtdcSecuAccTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTransferStatusType是一个转账交易状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_TRFS_Normal '0' +///被冲正 +#define Sgit_FTDC_TRFS_Repealed '1' + +typedef char TSgitFtdcTransferStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSponsorTypeType是一个发起方类型 +///////////////////////////////////////////////////////////////////////// +///期商 +#define Sgit_FTDC_SPTYPE_Broker '0' +///银行 +#define Sgit_FTDC_SPTYPE_Bank '1' + +typedef char TSgitFtdcSponsorTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcReqRspTypeType是一个请求响应类别类型 +///////////////////////////////////////////////////////////////////////// +///请求 +#define Sgit_FTDC_REQRSP_Request '0' +///响应 +#define Sgit_FTDC_REQRSP_Response '1' + +typedef char TSgitFtdcReqRspTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTUserEventTypeType是一个银期转帐用户事件类型类型 +///////////////////////////////////////////////////////////////////////// +///签到 +#define Sgit_FTDC_FBTUET_SignIn '0' +///银行转期货 +#define Sgit_FTDC_FBTUET_FromBankToFuture '1' +///期货转银行 +#define Sgit_FTDC_FBTUET_FromFutureToBank '2' +///开户 +#define Sgit_FTDC_FBTUET_OpenAccount '3' +///销户 +#define Sgit_FTDC_FBTUET_CancelAccount '4' +///变更银行账户 +#define Sgit_FTDC_FBTUET_ChangeAccount '5' +///冲正银行转期货 +#define Sgit_FTDC_FBTUET_RepealFromBankToFuture '6' +///冲正期货转银行 +#define Sgit_FTDC_FBTUET_RepealFromFutureToBank '7' +///查询银行账户 +#define Sgit_FTDC_FBTUET_QueryBankAccount '8' +///查询期货账户 +#define Sgit_FTDC_FBTUET_QueryFutureAccount '9' +///签退 +#define Sgit_FTDC_FBTUET_SignOut 'A' +///密钥同步 +#define Sgit_FTDC_FBTUET_SyncKey 'B' +///其他 +#define Sgit_FTDC_FBTUET_Other 'Z' + +typedef char TSgitFtdcFBTUserEventTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankIDByBankType是一个银行自己的编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcBankIDByBankType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNotifyClassType是一个风险通知类型类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_NC_NOERROR '0' +///警示 +#define Sgit_FTDC_NC_Warn '1' +///追保 +#define Sgit_FTDC_NC_Call '2' +///强平 +#define Sgit_FTDC_NC_Force '3' +///穿仓 +#define Sgit_FTDC_NC_CHUANCANG '4' +///异常 +#define Sgit_FTDC_NC_Exception '5' + +typedef char TSgitFtdcNotifyClassType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskNofityInfoType是一个客户风险通知消息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRiskNofityInfoType[257]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcForceCloseSceneIdType是一个强平场景编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcForceCloseSceneIdType[24]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcForceCloseTypeType是一个强平单类型类型 +///////////////////////////////////////////////////////////////////////// +///手工强平 +#define Sgit_FTDC_FCT_Manual '0' +///单一投资者辅助强平 +#define Sgit_FTDC_FCT_Single '1' +///批量投资者辅助强平 +#define Sgit_FTDC_FCT_Group '2' + +typedef char TSgitFtdcForceCloseTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInstrumentIDsType是一个多个产品代码,用+分隔,如cu+zn类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInstrumentIDsType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskNotifyMethodType是一个风险通知途径类型 +///////////////////////////////////////////////////////////////////////// +///系统通知 +#define Sgit_FTDC_RNM_System '0' +///短信通知 +#define Sgit_FTDC_RNM_SMS '1' +///邮件通知 +#define Sgit_FTDC_RNM_EMail '2' +///人工通知 +#define Sgit_FTDC_RNM_Manual '3' + +typedef char TSgitFtdcRiskNotifyMethodType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskNotifyStatusType是一个风险通知状态类型 +///////////////////////////////////////////////////////////////////////// +///未生成 +#define Sgit_FTDC_RNS_NotGen '0' +///已生成未发送 +#define Sgit_FTDC_RNS_Generated '1' +///发送失败 +#define Sgit_FTDC_RNS_SendError '2' +///已发送未接收 +#define Sgit_FTDC_RNS_SendOk '3' +///已接收未确认 +#define Sgit_FTDC_RNS_Received '4' +///已确认 +#define Sgit_FTDC_RNS_Confirmed '5' + +typedef char TSgitFtdcRiskNotifyStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskUserEventType是一个风控用户操作事件类型 +///////////////////////////////////////////////////////////////////////// +///导出数据 +#define Sgit_FTDC_RUE_ExportData '0' + +typedef char TSgitFtdcRiskUserEventType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParamIDType是一个参数代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcParamIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParamNameType是一个参数名类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParamNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcParamValueType是一个参数值类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcParamValueType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcConditionalOrderSortTypeType是一个条件单索引条件类型 +///////////////////////////////////////////////////////////////////////// +///使用最新价升序 +#define Sgit_FTDC_COST_LastPriceAsc '0' +///使用最新价降序 +#define Sgit_FTDC_COST_LastPriceDesc '1' +///使用卖价升序 +#define Sgit_FTDC_COST_AskPriceAsc '2' +///使用卖价降序 +#define Sgit_FTDC_COST_AskPriceDesc '3' +///使用买价升序 +#define Sgit_FTDC_COST_BidPriceAsc '4' +///使用买价降序 +#define Sgit_FTDC_COST_BidPriceDesc '5' + +typedef char TSgitFtdcConditionalOrderSortTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSendTypeType是一个报送状态类型 +///////////////////////////////////////////////////////////////////////// +///未发送 +#define Sgit_FTDC_UOAST_NoSend '0' +///已发送 +#define Sgit_FTDC_UOAST_Sended '1' +///已生成 +#define Sgit_FTDC_UOAST_Generated '2' +///报送失败 +#define Sgit_FTDC_UOAST_SendFail '3' +///接收成功 +#define Sgit_FTDC_UOAST_Success '4' +///接收失败 +#define Sgit_FTDC_UOAST_Fail '5' +///取消报送 +#define Sgit_FTDC_UOAST_Cancel '6' + +typedef char TSgitFtdcSendTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientIDStatusType是一个交易编码状态类型 +///////////////////////////////////////////////////////////////////////// +///未申请 +#define Sgit_FTDC_UOACS_NoApply '1' +///已提交申请 +#define Sgit_FTDC_UOACS_Submited '2' +///已发送申请 +#define Sgit_FTDC_UOACS_Sended '3' +///完成 +#define Sgit_FTDC_UOACS_Success '4' +///拒绝 +#define Sgit_FTDC_UOACS_Refuse '5' +///已撤销编码 +#define Sgit_FTDC_UOACS_Cancel '6' + +typedef char TSgitFtdcClientIDStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIndustryIDType是一个行业编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIndustryIDType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQuestionIDType是一个特有信息编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcQuestionIDType[5]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQuestionContentType是一个特有信息说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcQuestionContentType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOptionIDType是一个选项编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOptionIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOptionContentType是一个选项说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOptionContentType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQuestionTypeType是一个特有信息类型类型 +///////////////////////////////////////////////////////////////////////// +///单选 +#define Sgit_FTDC_QT_Radio '1' +///多选 +#define Sgit_FTDC_QT_Option '2' +///填空 +#define Sgit_FTDC_QT_Blank '3' + +typedef char TSgitFtdcQuestionTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessIDType是一个业务流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcProcessIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSeqNoType是一个流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSeqNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOAProcessStatusType是一个流程状态类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUOAProcessStatusType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcProcessTypeType是一个流程功能类型类型 +///////////////////////////////////////////////////////////////////////// +///申请交易编码 +#define Sgit_FTDC_PT_ApplyTradingCode '1' +///撤销交易编码 +#define Sgit_FTDC_PT_CancelTradingCode '2' +///修改身份信息 +#define Sgit_FTDC_PT_ModifyIDCard '3' +///修改一般信息 +#define Sgit_FTDC_PT_ModifyNoIDCard '4' +///交易所开户报备 +#define Sgit_FTDC_PT_ExchOpenBak '5' +///交易所销户报备 +#define Sgit_FTDC_PT_ExchCancelBak '6' +///补报规范资料 +#define Sgit_FTDC_PT_StandardAccount '7' +///账户休眠 +#define Sgit_FTDC_PT_FreezeAccount '8' +///激活休眠账户 +#define Sgit_FTDC_PT_ActiveFreezeAccount '9' + +typedef char TSgitFtdcProcessTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBusinessTypeType是一个业务类型类型 +///////////////////////////////////////////////////////////////////////// +///请求 +#define Sgit_FTDC_BT_Request '1' +///应答 +#define Sgit_FTDC_BT_Response '2' +///通知 +#define Sgit_FTDC_BT_Notice '3' + +typedef char TSgitFtdcBusinessTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCfmmcReturnCodeType是一个监控中心返回码类型 +///////////////////////////////////////////////////////////////////////// +///成功 +#define Sgit_FTDC_CRC_Success '0' +///该客户已经有流程在处理中 +#define Sgit_FTDC_CRC_Working '1' +///监控中客户资料检查失败 +#define Sgit_FTDC_CRC_InfoFail '2' +///监控中实名制检查失败 +#define Sgit_FTDC_CRC_IDCardFail '3' +///其他错误 +#define Sgit_FTDC_CRC_OtherFail '4' + +typedef char TSgitFtdcCfmmcReturnCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExReturnCodeType是一个交易所返回码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcExReturnCodeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientTypeType是一个客户类型类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_CfMMCCT_All '0' +///个人 +#define Sgit_FTDC_CfMMCCT_Person '1' +///单位 +#define Sgit_FTDC_CfMMCCT_Company '2' + +typedef char TSgitFtdcClientTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExchangeIDTypeType是一个交易所编号类型 +///////////////////////////////////////////////////////////////////////// +///上海期货交易所 +#define Sgit_FTDC_EIDT_SHFE 'S' +///郑州商品交易所 +#define Sgit_FTDC_EIDT_CZCE 'Z' +///大连商品交易所 +#define Sgit_FTDC_EIDT_DCE 'D' +///中国金融期货交易所 +#define Sgit_FTDC_EIDT_CFFEX 'J' +///黄金 +#define Sgit_FTDC_EIDT_GOLD 'G' +///PAT +#define Sgit_FTDC_EIDT_PAT 'P' + +typedef char TSgitFtdcExchangeIDTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExClientIDTypeType是一个交易编码类型类型 +///////////////////////////////////////////////////////////////////////// +///套保 +#define Sgit_FTDC_ECIDT_Hedge '1' +///套利 +#define Sgit_FTDC_ECIDT_Arbitrage '2' +///投机 +#define Sgit_FTDC_ECIDT_Speculation '3' + +typedef char TSgitFtdcExClientIDTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcClientClassifyType是一个客户分类码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcClientClassifyType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOAOrganTypeType是一个单位性质类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUOAOrganTypeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOACountryCodeType是一个国家代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUOACountryCodeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAreaCodeType是一个区号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAreaCodeType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFuturesIDType是一个监控中心为客户分配的代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFuturesIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCffmcDateType是一个日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCffmcDateType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCffmcTimeType是一个时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCffmcTimeType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcNocIDType是一个组织机构代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcNocIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUpdateFlagType是一个更新状态类型 +///////////////////////////////////////////////////////////////////////// +///未更新 +#define Sgit_FTDC_UF_NoUpdate '0' +///更新全部信息成功 +#define Sgit_FTDC_UF_Success '1' +///更新全部信息失败 +#define Sgit_FTDC_UF_Fail '2' +///更新交易编码成功 +#define Sgit_FTDC_UF_TCSuccess '3' +///更新交易编码失败 +#define Sgit_FTDC_UF_TCFail '4' +///已丢弃 +#define Sgit_FTDC_UF_Cancel '5' + +typedef char TSgitFtdcUpdateFlagType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcApplyOperateIDType是一个申请动作类型 +///////////////////////////////////////////////////////////////////////// +///开户 +#define Sgit_FTDC_AOID_OpenInvestor '1' +///修改身份信息 +#define Sgit_FTDC_AOID_ModifyIDCard '2' +///修改一般信息 +#define Sgit_FTDC_AOID_ModifyNoIDCard '3' +///申请交易编码 +#define Sgit_FTDC_AOID_ApplyTradingCode '4' +///撤销交易编码 +#define Sgit_FTDC_AOID_CancelTradingCode '5' +///销户 +#define Sgit_FTDC_AOID_CancelInvestor '6' +///账户休眠 +#define Sgit_FTDC_AOID_FreezeAccount '8' +///激活休眠账户 +#define Sgit_FTDC_AOID_ActiveFreezeAccount '9' + +typedef char TSgitFtdcApplyOperateIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcApplyStatusIDType是一个申请状态类型 +///////////////////////////////////////////////////////////////////////// +///未补全 +#define Sgit_FTDC_ASID_NoComplete '1' +///已提交 +#define Sgit_FTDC_ASID_Submited '2' +///已审核 +#define Sgit_FTDC_ASID_Checked '3' +///已拒绝 +#define Sgit_FTDC_ASID_Refused '4' +///已删除 +#define Sgit_FTDC_ASID_Deleted '5' + +typedef char TSgitFtdcApplyStatusIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSendMethodType是一个发送方式类型 +///////////////////////////////////////////////////////////////////////// +///文件发送 +#define Sgit_FTDC_UOASM_ByAPI '1' +///电子发送 +#define Sgit_FTDC_UOASM_ByFile '2' + +typedef char TSgitFtdcSendMethodType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEventTypeType是一个业务操作类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcEventTypeType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcEventModeType是一个操作方法类型 +///////////////////////////////////////////////////////////////////////// +///增加 +#define Sgit_FTDC_EvM_ADD '1' +///修改 +#define Sgit_FTDC_EvM_UPDATE '2' +///删除 +#define Sgit_FTDC_EvM_DELETE '3' +///复核 +#define Sgit_FTDC_EvM_CHECK '4' +///复制 +#define Sgit_FTDC_EvM_COPY '5' +///注销 +#define Sgit_FTDC_EvM_CANCEL '6' +///冲销 +#define Sgit_FTDC_EvM_Reverse '7' + +typedef char TSgitFtdcEventModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUOAAutoSendType是一个统一开户申请自动发送类型 +///////////////////////////////////////////////////////////////////////// +///自动发送并接收 +#define Sgit_FTDC_UOAA_ASR '1' +///自动发送,不自动接收 +#define Sgit_FTDC_UOAA_ASNR '2' +///不自动发送,自动接收 +#define Sgit_FTDC_UOAA_NSAR '3' +///不自动发送,也不自动接收 +#define Sgit_FTDC_UOAA_NSR '4' + +typedef char TSgitFtdcUOAAutoSendType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcQueryDepthType是一个查询深度类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcQueryDepthType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataCenterIDType是一个数据中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcDataCenterIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFlowIDType是一个流程ID类型 +///////////////////////////////////////////////////////////////////////// +///投资者对应投资者组设置 +#define Sgit_FTDC_EvM_InvestorGroupFlow '1' +///投资者手续费率设置 +#define Sgit_FTDC_EvM_InvestorRate '2' +///投资者手续费率模板关系设置 +#define Sgit_FTDC_EvM_InvestorCommRateModel '3' + +typedef char TSgitFtdcFlowIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckLevelType是一个复核级别类型 +///////////////////////////////////////////////////////////////////////// +///零级复核 +#define Sgit_FTDC_CL_Zero '0' +///一级复核 +#define Sgit_FTDC_CL_One '1' +///二级复核 +#define Sgit_FTDC_CL_Two '2' + +typedef char TSgitFtdcCheckLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckNoType是一个操作次数类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcCheckNoType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckStatusType是一个复核级别类型 +///////////////////////////////////////////////////////////////////////// +///未复核 +#define Sgit_FTDC_CHS_Init '0' +///复核中 +#define Sgit_FTDC_CHS_Checking '1' +///已复核 +#define Sgit_FTDC_CHS_Checked '2' +///拒绝 +#define Sgit_FTDC_CHS_Refuse '3' +///作废 +#define Sgit_FTDC_CHS_Cancel '4' + +typedef char TSgitFtdcCheckStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUsedStatusType是一个生效状态类型 +///////////////////////////////////////////////////////////////////////// +///未生效 +#define Sgit_FTDC_CHU_Unused '0' +///已生效 +#define Sgit_FTDC_CHU_Used '1' +///生效失败 +#define Sgit_FTDC_CHU_Fail '2' + +typedef char TSgitFtdcUsedStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateTemplateNameType是一个模型名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRateTemplateNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyStringType是一个用于查询的投资属性字段类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcPropertyStringType[2049]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBankAcountOriginType是一个账户来源类型 +///////////////////////////////////////////////////////////////////////// +///手工录入 +#define Sgit_FTDC_BAO_ByAccProperty '0' +///银期转账 +#define Sgit_FTDC_BAO_ByFBTransfer '1' + +typedef char TSgitFtdcBankAcountOriginType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcMonthBillTradeSumType是一个结算单月报成交汇总方式类型 +///////////////////////////////////////////////////////////////////////// +///同日同合约 +#define Sgit_FTDC_MBTS_ByInstrument '0' +///同日同合约同价格 +#define Sgit_FTDC_MBTS_ByDayInsPrc '1' +///同合约 +#define Sgit_FTDC_MBTS_ByDayIns '2' + +typedef char TSgitFtdcMonthBillTradeSumType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTTradeCodeEnumType是一个银期交易代码枚举类型 +///////////////////////////////////////////////////////////////////////// +///银行发起银行转期货 +#define Sgit_FTDC_FTC_BankLaunchBankToBroker '102001' +///期货发起银行转期货 +#define Sgit_FTDC_FTC_BrokerLaunchBankToBroker '202001' +///银行发起期货转银行 +#define Sgit_FTDC_FTC_BankLaunchBrokerToBank '102002' +///期货发起期货转银行 +#define Sgit_FTDC_FTC_BrokerLaunchBrokerToBank '202002' + +typedef char TSgitFtdcFBTTradeCodeEnumType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateTemplateIDType是一个模型代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRateTemplateIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRiskRateType是一个风险度类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRiskRateType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimestampType是一个时间戳类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcTimestampType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorIDRuleNameType是一个号段规则名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorIDRuleNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcInvestorIDRuleExprType是一个号段规则表达式类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcInvestorIDRuleExprType[513]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLastDriftType是一个上次OTP漂移值类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLastDriftType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLastSuccessType是一个上次OTP成功值类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcLastSuccessType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthKeyType是一个令牌密钥类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthKeyType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSerialNumberType是一个序列号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSerialNumberType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPTypeType是一个动态令牌类型类型 +///////////////////////////////////////////////////////////////////////// +///无动态令牌 +#define Sgit_FTDC_OTP_NONE '0' +///时间令牌 +#define Sgit_FTDC_OTP_TOTP '1' + +typedef char TSgitFtdcOTPTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPVendorsIDType是一个动态令牌提供商类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOTPVendorsIDType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPVendorsNameType是一个动态令牌提供商名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcOTPVendorsNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcOTPStatusType是一个动态令牌状态类型 +///////////////////////////////////////////////////////////////////////// +///未使用 +#define Sgit_FTDC_OTPS_Unused '0' +///已使用 +#define Sgit_FTDC_OTPS_Used '1' +///注销 +#define Sgit_FTDC_OTPS_Disuse '2' + +typedef char TSgitFtdcOTPStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcBrokerUserTypeType是一个经济公司用户类型类型 +///////////////////////////////////////////////////////////////////////// +///投资者 +#define Sgit_FTDC_BUT_Investor '1' +///操作员 +#define Sgit_FTDC_BUT_BrokerUser '2' + +typedef char TSgitFtdcBrokerUserTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFutureTypeType是一个期货类型类型 +///////////////////////////////////////////////////////////////////////// +///商品期货 +#define Sgit_FTDC_FUTT_Commodity '1' +///金融期货 +#define Sgit_FTDC_FUTT_Financial '2' + +typedef char TSgitFtdcFutureTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFundEventTypeType是一个资金管理操作类型类型 +///////////////////////////////////////////////////////////////////////// +///转账限额 +#define Sgit_FTDC_FET_Restriction '0' +///当日转账限额 +#define Sgit_FTDC_FET_TodayRestriction '1' +///期商流水 +#define Sgit_FTDC_FET_Transfer '2' +///资金冻结 +#define Sgit_FTDC_FET_Credit '3' +///投资者可提资金比例 +#define Sgit_FTDC_FET_InvestorWithdrawAlm '4' +///单个银行帐户转账限额 +#define Sgit_FTDC_FET_BankRestriction '5' +///银期签约账户 +#define Sgit_FTDC_FET_Accountregister '6' +///交易所出入金 +#define Sgit_FTDC_FET_ExchangeFundIO '7' +///投资者出入金 +#define Sgit_FTDC_FET_InvestorFundIO '8' + +typedef char TSgitFtdcFundEventTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAccountSourceTypeType是一个资金账户来源类型 +///////////////////////////////////////////////////////////////////////// +///银期同步 +#define Sgit_FTDC_AST_FBTransfer '0' +///手工录入 +#define Sgit_FTDC_AST_ManualEntry '1' + +typedef char TSgitFtdcAccountSourceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCodeSourceTypeType是一个交易编码来源类型 +///////////////////////////////////////////////////////////////////////// +///统一开户(已规范) +#define Sgit_FTDC_CST_UnifyAccount '0' +///手工录入(未规范) +#define Sgit_FTDC_CST_ManualEntry '1' + +typedef char TSgitFtdcCodeSourceTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserRangeType是一个操作员范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_UR_All '0' +///单一操作员 +#define Sgit_FTDC_UR_Single '1' + +typedef char TSgitFtdcUserRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTimeSpanType是一个时间跨度类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcTimeSpanType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcImportSequenceIDType是一个动态令牌导入批次编号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcImportSequenceIDType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcByGroupType是一个交易统计表按客户统计方式类型 +///////////////////////////////////////////////////////////////////////// +///按投资者统计 +#define Sgit_FTDC_BG_Investor '2' +///按类统计 +#define Sgit_FTDC_BG_Group '1' + +typedef char TSgitFtdcByGroupType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSumStatModeType是一个交易统计表按范围统计方式类型 +///////////////////////////////////////////////////////////////////////// +///按合约统计 +#define Sgit_FTDC_TSSM_Instrument '1' +///按产品统计 +#define Sgit_FTDC_TSSM_Product '2' +///按交易所统计 +#define Sgit_FTDC_TSSM_Exchange '3' + +typedef char TSgitFtdcTradeSumStatModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcComTypeType是一个组合成交类型类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcComTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserProductIDType是一个产品标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserProductIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserProductNameType是一个产品名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserProductNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcUserProductMemoType是一个产品说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcUserProductMemoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCCancelFlagType是一个新增或变更标志类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCCancelFlagType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCDateType是一个日期类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCDateType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCInvestorNameType是一个客户名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCInvestorNameType[81]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCInvestorIDType是一个客户代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCInvestorIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCIdentifiedCardNoType是一个证件号码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCIdentifiedCardNoType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCClientIDType是一个交易编码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCClientIDType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCBankFlagType是一个银行标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCBankFlagType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCBankAccountType是一个银行账户类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCBankAccountType[23]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCOpenNameType是一个开户人类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCOpenNameType[41]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCMemoType是一个说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCMemoType[101]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCTimeType是一个时间类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCTimeType[11]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCTradeIDType是一个成交流水号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCTradeIDType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCExchangeInstIDType是一个合约代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCExchangeInstIDType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCMortgageNameType是一个质押品名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCMortgageNameType[7]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCReasonType是一个事由类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCReasonType[3]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcIsSettlementType是一个是否为非结算会员类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcIsSettlementType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCMoneyType是一个资金类型 +///////////////////////////////////////////////////////////////////////// +typedef double TSgitFtdcCSRCMoneyType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommModelNameType是一个手续费率模板名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommModelNameType[161]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCommModelMemoType是一个手续费率模板备注类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCommModelMemoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRateInvestorRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_RIR_All '1' +///费率模板 +#define Sgit_FTDC_RIR_Model '2' +///单一投资者 +#define Sgit_FTDC_RIR_Single '3' + +typedef char TSgitFtdcRateInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAgentBrokerIDType是一个代理经纪公司代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAgentBrokerIDType[13]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDRIdentityIDType是一个交易中心代码类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcDRIdentityIDType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDRIdentityNameType是一个交易中心名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDRIdentityNameType[65]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDBLinkIDType是一个DBLink标识号类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDBLinkIDType[31]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSyncDataStatusType是一个主次用系统数据同步状态类型 +///////////////////////////////////////////////////////////////////////// +///未同步 +#define Sgit_FTDC_SDS_Initialize '0' +///同步中 +#define Sgit_FTDC_SDS_Settlementing '1' +///已同步 +#define Sgit_FTDC_SDS_Settlemented '2' + +typedef char TSgitFtdcSyncDataStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcTradeSourceType是一个成交来源类型 +///////////////////////////////////////////////////////////////////////// +///来自交易所普通回报 +#define Sgit_FTDC_TSRC_NORMAL '0' +///来自查询 +#define Sgit_FTDC_TSRC_QUERY '1' + +typedef char TSgitFtdcTradeSourceType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFlexStatModeType是一个产品合约统计方式类型 +///////////////////////////////////////////////////////////////////////// +///产品统计 +#define Sgit_FTDC_FSM_Product '1' +///交易所统计 +#define Sgit_FTDC_FSM_Exchange '2' +///统计所有 +#define Sgit_FTDC_FSM_All '3' + +typedef char TSgitFtdcFlexStatModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcByInvestorRangeType是一个投资者范围统计方式类型 +///////////////////////////////////////////////////////////////////////// +///属性统计 +#define Sgit_FTDC_BIR_Property '1' +///统计所有 +#define Sgit_FTDC_BIR_All '2' + +typedef char TSgitFtdcByInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSRiskRateType是一个风险度类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSRiskRateType[21]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFBTBankIDType是一个银行标识类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFBTBankIDType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSequenceNo12Type是一个序号类型 +///////////////////////////////////////////////////////////////////////// +typedef int TSgitFtdcSequenceNo12Type; + +///////////////////////////////////////////////////////////////////////// +///TFtdcPropertyInvestorRangeType是一个投资者范围类型 +///////////////////////////////////////////////////////////////////////// +///所有 +#define Sgit_FTDC_PIR_All '1' +///投资者属性 +#define Sgit_FTDC_PIR_Property '2' +///单一投资者 +#define Sgit_FTDC_PIR_Single '3' + +typedef char TSgitFtdcPropertyInvestorRangeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileStatusType是一个文件状态类型 +///////////////////////////////////////////////////////////////////////// +///未生成 +#define Sgit_FTDC_FIS_NoCreate '0' +///已生成 +#define Sgit_FTDC_FIS_Created '1' +///生成失败 +#define Sgit_FTDC_FIS_Failed '2' + +typedef char TSgitFtdcFileStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFileGenStyleType是一个文件生成方式类型 +///////////////////////////////////////////////////////////////////////// +///下发 +#define Sgit_FTDC_FGS_FileTransmit '0' +///生成 +#define Sgit_FTDC_FGS_FileGen '1' + +typedef char TSgitFtdcFileGenStyleType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSysOperModeType是一个系统日志操作方法类型 +///////////////////////////////////////////////////////////////////////// +///增加 +#define Sgit_FTDC_SoM_Add '1' +///修改 +#define Sgit_FTDC_SoM_Update '2' +///删除 +#define Sgit_FTDC_SoM_Delete '3' +///复制 +#define Sgit_FTDC_SoM_Copy '4' +///激活 +#define Sgit_FTDC_SoM_AcTive '5' +///注销 +#define Sgit_FTDC_SoM_CanCel '6' +///重置 +#define Sgit_FTDC_SoM_ReSet '7' + +typedef char TSgitFtdcSysOperModeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSysOperTypeType是一个系统日志操作类型类型 +///////////////////////////////////////////////////////////////////////// +///修改操作员密码 +#define Sgit_FTDC_SoT_UpdatePassword '0' +///操作员组织架构关系 +#define Sgit_FTDC_SoT_UserDepartment '1' +///角色管理 +#define Sgit_FTDC_SoT_RoleManager '2' +///角色功能设置 +#define Sgit_FTDC_SoT_RoleFunction '3' +///基础参数设置 +#define Sgit_FTDC_SoT_BaseParam '4' +///设置操作员 +#define Sgit_FTDC_SoT_SetUserID '5' +///用户角色设置 +#define Sgit_FTDC_SoT_SetUserRole '6' +///用户IP限制 +#define Sgit_FTDC_SoT_UserIpRestriction '7' +///组织架构管理 +#define Sgit_FTDC_SoT_DepartmentManager '8' +///组织架构向查询分类复制 +#define Sgit_FTDC_SoT_DepartmentCopy '9' +///交易编码管理 +#define Sgit_FTDC_SoT_Tradingcode 'A' +///投资者状态维护 +#define Sgit_FTDC_SoT_InvestorStatus 'B' +///投资者权限管理 +#define Sgit_FTDC_SoT_InvestorAuthority 'C' +///属性设置 +#define Sgit_FTDC_SoT_PropertySet 'D' +///重置投资者密码 +#define Sgit_FTDC_SoT_ReSetInvestorPasswd 'E' +///投资者个性信息维护 +#define Sgit_FTDC_SoT_InvestorPersonalityInfo 'F' + +typedef char TSgitFtdcSysOperTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCDataQueyTypeType是一个上报数据查询类型类型 +///////////////////////////////////////////////////////////////////////// +///查询当前交易日报送的数据 +#define Sgit_FTDC_CSRCQ_Current '0' +///查询历史报送的代理经纪公司的数据 +#define Sgit_FTDC_CSRCQ_History '1' + +typedef char TSgitFtdcCSRCDataQueyTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFreezeStatusType是一个休眠状态类型 +///////////////////////////////////////////////////////////////////////// +///活跃 +#define Sgit_FTDC_FRS_Normal '1' +///休眠 +#define Sgit_FTDC_FRS_Freeze '0' + +typedef char TSgitFtdcFreezeStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcStandardStatusType是一个规范状态类型 +///////////////////////////////////////////////////////////////////////// +///已规范 +#define Sgit_FTDC_STST_Standard '0' +///未规范 +#define Sgit_FTDC_STST_NonStandard '1' + +typedef char TSgitFtdcStandardStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCSRCFreezeStatusType是一个休眠状态类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCSRCFreezeStatusType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRightParamTypeType是一个配置类型类型 +///////////////////////////////////////////////////////////////////////// +///休眠户 +#define Sgit_FTDC_RPT_Freeze '1' +///激活休眠户 +#define Sgit_FTDC_RPT_FreezeActive '2' + +typedef char TSgitFtdcRightParamTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRightTemplateIDType是一个模板代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRightTemplateIDType[9]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcRightTemplateNameType是一个模板名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcRightTemplateNameType[61]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataStatusType是一个反洗钱审核表数据状态类型 +///////////////////////////////////////////////////////////////////////// +///正常 +#define Sgit_FTDC_AMLDS_Normal '0' +///已删除 +#define Sgit_FTDC_AMLDS_Deleted '1' + +typedef char TSgitFtdcDataStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAMLCheckStatusType是一个审核状态类型 +///////////////////////////////////////////////////////////////////////// +///未复核 +#define Sgit_FTDC_AMLCHS_Init '0' +///复核中 +#define Sgit_FTDC_AMLCHS_Checking '1' +///已复核 +#define Sgit_FTDC_AMLCHS_Checked '2' +///拒绝上报 +#define Sgit_FTDC_AMLCHS_RefuseReport '3' + +typedef char TSgitFtdcAMLCheckStatusType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAmlDateTypeType是一个日期类型类型 +///////////////////////////////////////////////////////////////////////// +///检查日期 +#define Sgit_FTDC_AMLDT_DrawDay '0' +///发生日期 +#define Sgit_FTDC_AMLDT_TouchDay '1' + +typedef char TSgitFtdcAmlDateTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAmlCheckLevelType是一个审核级别类型 +///////////////////////////////////////////////////////////////////////// +///零级审核 +#define Sgit_FTDC_AMLCL_CheckLevel0 '0' +///一级审核 +#define Sgit_FTDC_AMLCL_CheckLevel1 '1' +///二级审核 +#define Sgit_FTDC_AMLCL_CheckLevel2 '2' +///三级审核 +#define Sgit_FTDC_AMLCL_CheckLevel3 '3' + +typedef char TSgitFtdcAmlCheckLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAmlCheckFlowType是一个反洗钱数据抽取审核流程类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAmlCheckFlowType[2]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataTypeType是一个数据类型类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcDataTypeType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcExportFileTypeType是一个导出文件类型类型 +///////////////////////////////////////////////////////////////////////// +///CSV +#define Sgit_FTDC_EFT_CSV '0' +///Excel +#define Sgit_FTDC_EFT_EXCEL '1' +///DBF +#define Sgit_FTDC_EFT_DBF '2' + +typedef char TSgitFtdcExportFileTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerTypeType是一个结算配置类型类型 +///////////////////////////////////////////////////////////////////////// +///结算前准备 +#define Sgit_FTDC_SMT_Before '1' +///结算 +#define Sgit_FTDC_SMT_Settlement '2' +///结算后核对 +#define Sgit_FTDC_SMT_After '3' +///结算完成 +#define Sgit_FTDC_SMT_Settlemented '4' + +typedef char TSgitFtdcSettleManagerTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerIDType是一个结算配置代码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettleManagerIDType[33]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerNameType是一个结算配置名称类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcSettleManagerNameType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerLevelType是一个结算配置等级类型 +///////////////////////////////////////////////////////////////////////// +///必要 +#define Sgit_FTDC_SML_Must '1' +///警告 +#define Sgit_FTDC_SML_Alarm '2' +///提示 +#define Sgit_FTDC_SML_Prompt '3' +///不检查 +#define Sgit_FTDC_SML_Ignore '4' + +typedef char TSgitFtdcSettleManagerLevelType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcSettleManagerGroupType是一个模块分组类型 +///////////////////////////////////////////////////////////////////////// +///交易所核对 +#define Sgit_FTDC_SMG_Exhcange '1' +///内部核对 +#define Sgit_FTDC_SMG_ASP '2' +///上报数据核对 +#define Sgit_FTDC_SMG_CSRC '3' + +typedef char TSgitFtdcSettleManagerGroupType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcCheckResultMemoType是一个核对结果说明类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcCheckResultMemoType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcFunctionUrlType是一个功能链接类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcFunctionUrlType[1025]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthInfoType是一个客户端认证信息类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthInfoType[129]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcAuthCodeType是一个客户端认证码类型 +///////////////////////////////////////////////////////////////////////// +typedef char TSgitFtdcAuthCodeType[17]; + +///////////////////////////////////////////////////////////////////////// +///TFtdcLimitUseTypeType是一个保值额度使用类型类型 +///////////////////////////////////////////////////////////////////////// +///可重复使用 +#define Sgit_FTDC_LUT_Repeatable '1' +///不可重复使用 +#define Sgit_FTDC_LUT_Unrepeatable '2' + +typedef char TSgitFtdcLimitUseTypeType; + +///////////////////////////////////////////////////////////////////////// +///TFtdcDataResourceType是一个数据来源类型 +///////////////////////////////////////////////////////////////////////// +///本系统 +#define Sgit_FTDC_DAR_Settle '1' +///交易所 +#define Sgit_FTDC_DAR_Exchange '2' +///报送数据 +#define Sgit_FTDC_DAR_CSRC '3' + +typedef char TSgitFtdcDataResourceType; + +#endif diff --git a/vn.sgit/sgitapi/SgitFtdcUserApiStruct.h b/vn.sgit/sgitapi/SgitFtdcUserApiStruct.h new file mode 100644 index 00000000..c2637568 --- /dev/null +++ b/vn.sgit/sgitapi/SgitFtdcUserApiStruct.h @@ -0,0 +1,5862 @@ +///////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////// + +#if !defined(Sgit_FTDCSTRUCT_H) +#define Sgit_FTDCSTRUCT_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "SgitFtdcUserApiDataType.h" + +///信息分发 +struct CSgitFtdcDisseminationField +{ + ///序列系列号 + TSgitFtdcSequenceSeriesType SequenceSeries; + ///序列号 + TSgitFtdcSequenceNoType SequenceNo; +}; + +///用户登录请求 +struct CSgitFtdcReqUserLoginField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///密码 + TSgitFtdcPasswordType Password; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///接口端产品信息 + TSgitFtdcProductInfoType InterfaceProductInfo; + ///协议信息 + TSgitFtdcProtocolInfoType ProtocolInfo; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; + ///动态密码 + TSgitFtdcPasswordType OneTimePassword; + ///终端IP地址 + TSgitFtdcIPAddressType ClientIPAddress; +}; + +///用户登录应答 +struct CSgitFtdcRspUserLoginField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///登录成功时间 + TSgitFtdcTimeType LoginTime; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///交易系统名称 + TSgitFtdcSystemNameType SystemName; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///最大报单引用 + TSgitFtdcOrderRefType MaxOrderRef; + ///上期所时间 + TSgitFtdcTimeType SHFETime; + ///大商所时间 + TSgitFtdcTimeType DCETime; + ///郑商所时间 + TSgitFtdcTimeType CZCETime; + ///中金所时间 + TSgitFtdcTimeType FFEXTime; +}; + +///用户登出请求 +struct CSgitFtdcUserLogoutField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///强制交易员退出 +struct CSgitFtdcForceUserLogoutField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///客户端认证请求 +struct CSgitFtdcReqAuthenticateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///认证码 + TSgitFtdcAuthCodeType AuthCode; +}; + +///客户端认证响应 +struct CSgitFtdcRspAuthenticateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; +}; + +///客户端认证信息 +struct CSgitFtdcAuthenticationInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///认证信息 + TSgitFtdcAuthInfoType AuthInfo; + ///是否为认证结果 + TSgitFtdcBoolType IsResult; +}; + +///银期转帐报文头 +struct CSgitFtdcTransferHeaderField +{ + ///版本号,常量,1.0 + TSgitFtdcVersionType Version; + ///交易代码,必填 + TSgitFtdcTradeCodeType TradeCode; + ///交易日期,必填,格式:yyyymmdd + TSgitFtdcTradeDateType TradeDate; + ///交易时间,必填,格式:hhmmss + TSgitFtdcTradeTimeType TradeTime; + ///发起方流水号,N/A + TSgitFtdcTradeSerialType TradeSerial; + ///期货公司代码,必填 + TSgitFtdcFutureIDType FutureID; + ///银行代码,根据查询银行得到,必填 + TSgitFtdcBankIDType BankID; + ///银行分中心代码,根据查询银行得到,必填 + TSgitFtdcBankBrchIDType BankBrchID; + ///操作员,N/A + TSgitFtdcOperNoType OperNo; + ///交易设备类型,N/A + TSgitFtdcDeviceIDType DeviceID; + ///记录数,N/A + TSgitFtdcRecordNumType RecordNum; + ///会话编号,N/A + TSgitFtdcSessionIDType SessionID; + ///请求编号,N/A + TSgitFtdcRequestIDType RequestID; +}; + +///银行资金转期货请求,TradeCode=202001 +struct CSgitFtdcTransferBankToFutureReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///密码标志 + TSgitFtdcFuturePwdFlagType FuturePwdFlag; + ///密码 + TSgitFtdcFutureAccPwdType FutureAccPwd; + ///转账金额 + TSgitFtdcMoneyType TradeAmt; + ///客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种:RMB-人民币 USD-美圆 HKD-港元 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///银行资金转期货请求响应 +struct CSgitFtdcTransferBankToFutureRspField +{ + ///响应代码 + TSgitFtdcRetCodeType RetCode; + ///响应信息 + TSgitFtdcRetInfoType RetInfo; + ///资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///转帐金额 + TSgitFtdcMoneyType TradeAmt; + ///应收客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///期货资金转银行请求,TradeCode=202002 +struct CSgitFtdcTransferFutureToBankReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///密码标志 + TSgitFtdcFuturePwdFlagType FuturePwdFlag; + ///密码 + TSgitFtdcFutureAccPwdType FutureAccPwd; + ///转账金额 + TSgitFtdcMoneyType TradeAmt; + ///客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种:RMB-人民币 USD-美圆 HKD-港元 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///期货资金转银行请求响应 +struct CSgitFtdcTransferFutureToBankRspField +{ + ///响应代码 + TSgitFtdcRetCodeType RetCode; + ///响应信息 + TSgitFtdcRetInfoType RetInfo; + ///资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///转帐金额 + TSgitFtdcMoneyType TradeAmt; + ///应收客户手续费 + TSgitFtdcMoneyType CustFee; + ///币种 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///查询银行资金请求,TradeCode=204002 +struct CSgitFtdcTransferQryBankReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///密码标志 + TSgitFtdcFuturePwdFlagType FuturePwdFlag; + ///密码 + TSgitFtdcFutureAccPwdType FutureAccPwd; + ///币种:RMB-人民币 USD-美圆 HKD-港元 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///查询银行资金请求响应 +struct CSgitFtdcTransferQryBankRspField +{ + ///响应代码 + TSgitFtdcRetCodeType RetCode; + ///响应信息 + TSgitFtdcRetInfoType RetInfo; + ///资金账户 + TSgitFtdcAccountIDType FutureAccount; + ///银行余额 + TSgitFtdcMoneyType TradeAmt; + ///银行可用余额 + TSgitFtdcMoneyType UseAmt; + ///银行可取余额 + TSgitFtdcMoneyType FetchAmt; + ///币种 + TSgitFtdcCurrencyCodeType CurrencyCode; +}; + +///查询银行交易明细请求,TradeCode=204999 +struct CSgitFtdcTransferQryDetailReqField +{ + ///期货资金账户 + TSgitFtdcAccountIDType FutureAccount; +}; + +///查询银行交易明细请求响应 +struct CSgitFtdcTransferQryDetailRspField +{ + ///交易日期 + TSgitFtdcDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///交易代码 + TSgitFtdcTradeCodeType TradeCode; + ///期货流水号 + TSgitFtdcTradeSerialNoType FutureSerial; + ///期货公司代码 + TSgitFtdcFutureIDType FutureID; + ///资金帐号 + TSgitFtdcFutureAccountType FutureAccount; + ///银行流水号 + TSgitFtdcTradeSerialNoType BankSerial; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; + ///银行账号 + TSgitFtdcBankAccountType BankAccount; + ///证件号码 + TSgitFtdcCertCodeType CertCode; + ///货币代码 + TSgitFtdcCurrencyCodeType CurrencyCode; + ///发生金额 + TSgitFtdcMoneyType TxAmount; + ///有效标志 + TSgitFtdcTransferValidFlagType Flag; +}; + +///响应信息 +struct CSgitFtdcRspInfoField +{ + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///交易所 +struct CSgitFtdcExchangeField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所名称 + TSgitFtdcExchangeNameType ExchangeName; + ///交易所属性 + TSgitFtdcExchangePropertyType ExchangeProperty; +}; + +///产品 +struct CSgitFtdcProductField +{ + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; + ///产品名称 + TSgitFtdcProductNameType ProductName; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///产品类型 + TSgitFtdcProductClassType ProductClass; + ///合约数量乘数 + TSgitFtdcVolumeMultipleType VolumeMultiple; + ///最小变动价位 + TSgitFtdcPriceType PriceTick; + ///市价单最大下单量 + TSgitFtdcVolumeType MaxMarketOrderVolume; + ///市价单最小下单量 + TSgitFtdcVolumeType MinMarketOrderVolume; + ///限价单最大下单量 + TSgitFtdcVolumeType MaxLimitOrderVolume; + ///限价单最小下单量 + TSgitFtdcVolumeType MinLimitOrderVolume; + ///持仓类型 + TSgitFtdcPositionTypeType PositionType; + ///持仓日期类型 + TSgitFtdcPositionDateTypeType PositionDateType; +}; + +///合约 +struct CSgitFtdcInstrumentField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约名称 + TSgitFtdcInstrumentNameType InstrumentName; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; + ///产品类型 + TSgitFtdcProductClassType ProductClass; + ///交割年份 + TSgitFtdcYearType DeliveryYear; + ///交割月 + TSgitFtdcMonthType DeliveryMonth; + ///市价单最大下单量 + TSgitFtdcVolumeType MaxMarketOrderVolume; + ///市价单最小下单量 + TSgitFtdcVolumeType MinMarketOrderVolume; + ///限价单最大下单量 + TSgitFtdcVolumeType MaxLimitOrderVolume; + ///限价单最小下单量 + TSgitFtdcVolumeType MinLimitOrderVolume; + ///合约数量乘数 + TSgitFtdcVolumeMultipleType VolumeMultiple; + ///最小变动价位 + TSgitFtdcPriceType PriceTick; + ///创建日 + TSgitFtdcDateType CreateDate; + ///上市日 + TSgitFtdcDateType OpenDate; + ///到期日 + TSgitFtdcDateType ExpireDate; + ///开始交割日 + TSgitFtdcDateType StartDelivDate; + ///结束交割日 + TSgitFtdcDateType EndDelivDate; + ///合约生命周期状态 + TSgitFtdcInstLifePhaseType InstLifePhase; + ///当前是否交易 + TSgitFtdcBoolType IsTrading; + ///持仓类型 + TSgitFtdcPositionTypeType PositionType; + ///持仓日期类型 + TSgitFtdcPositionDateTypeType PositionDateType; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatio; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatio; +}; + +///经纪公司 +struct CSgitFtdcBrokerField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///经纪公司简称 + TSgitFtdcBrokerAbbrType BrokerAbbr; + ///经纪公司名称 + TSgitFtdcBrokerNameType BrokerName; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///交易所交易员 +struct CSgitFtdcTraderField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///密码 + TSgitFtdcPasswordType Password; + ///安装数量 + TSgitFtdcInstallCountType InstallCount; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///投资者 +struct CSgitFtdcInvestorField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者名称 + TSgitFtdcPartyNameType InvestorName; + ///证件类型 + TSgitFtdcIdCardTypeType IdentifiedCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///联系电话 + TSgitFtdcTelephoneType Telephone; + ///通讯地址 + TSgitFtdcAddressType Address; + ///开户日期 + TSgitFtdcDateType OpenDate; + ///手机 + TSgitFtdcMobileType Mobile; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; +}; + +///交易编码 +struct CSgitFtdcTradingCodeField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///交易编码类型 + TSgitFtdcClientIDTypeType ClientIDType; +}; + +///会员编码和经纪公司编码对照表 +struct CSgitFtdcPartBrokerField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///管理用户 +struct CSgitFtdcSuperUserField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户名称 + TSgitFtdcUserNameType UserName; + ///密码 + TSgitFtdcPasswordType Password; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///管理用户功能权限 +struct CSgitFtdcSuperUserFunctionField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; + ///功能代码 + TSgitFtdcFunctionCodeType FunctionCode; +}; + +///投资者组 +struct CSgitFtdcInvestorGroupField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者分组名称 + TSgitFtdcInvestorGroupNameType InvestorGroupName; +}; + +///资金账户 +struct CSgitFtdcTradingAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///上次质押金额 + TSgitFtdcMoneyType PreMortgage; + ///上次信用额度 + TSgitFtdcMoneyType PreCredit; + ///上次存款额 + TSgitFtdcMoneyType PreDeposit; + ///上次结算准备金 + TSgitFtdcMoneyType PreBalance; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///利息基数 + TSgitFtdcMoneyType InterestBase; + ///利息收入 + TSgitFtdcMoneyType Interest; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///出金金额 + TSgitFtdcMoneyType Withdraw; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///当前保证金总额 + TSgitFtdcMoneyType CurrMargin; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///期货结算准备金 + TSgitFtdcMoneyType Balance; + ///可用资金 + TSgitFtdcMoneyType Available; + ///可取资金 + TSgitFtdcMoneyType WithdrawQuota; + ///基本准备金 + TSgitFtdcMoneyType Reserve; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///信用额度 + TSgitFtdcMoneyType Credit; + ///质押金额 + TSgitFtdcMoneyType Mortgage; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///投资者交割保证金 + TSgitFtdcMoneyType DeliveryMargin; + ///交易所交割保证金 + TSgitFtdcMoneyType ExchangeDeliveryMargin; +}; + +///投资者持仓 +struct CSgitFtdcInvestorPositionField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///持仓多空方向 + TSgitFtdcPosiDirectionType PosiDirection; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///持仓日期 + TSgitFtdcPositionDateType PositionDate; + ///上日持仓 + TSgitFtdcVolumeType YdPosition; + ///今日持仓 + TSgitFtdcVolumeType Position; + ///多头冻结 + TSgitFtdcVolumeType LongFrozen; + ///空头冻结 + TSgitFtdcVolumeType ShortFrozen; + ///开仓冻结金额 + TSgitFtdcMoneyType LongFrozenAmount; + ///开仓冻结金额 + TSgitFtdcMoneyType ShortFrozenAmount; + ///开仓量 + TSgitFtdcVolumeType OpenVolume; + ///平仓量 + TSgitFtdcVolumeType CloseVolume; + ///开仓金额 + TSgitFtdcMoneyType OpenAmount; + ///平仓金额 + TSgitFtdcMoneyType CloseAmount; + ///持仓成本 + TSgitFtdcMoneyType PositionCost; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///占用的保证金 + TSgitFtdcMoneyType UseMargin; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///开仓成本 + TSgitFtdcMoneyType OpenCost; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///组合成交形成的持仓 + TSgitFtdcVolumeType CombPosition; + ///组合多头冻结 + TSgitFtdcVolumeType CombLongFrozen; + ///组合空头冻结 + TSgitFtdcVolumeType CombShortFrozen; + ///逐日盯市平仓盈亏 + TSgitFtdcMoneyType CloseProfitByDate; + ///逐笔对冲平仓盈亏 + TSgitFtdcMoneyType CloseProfitByTrade; + ///今日持仓 + TSgitFtdcVolumeType TodayPosition; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; +}; + +///合约保证金率 +struct CSgitFtdcInstrumentMarginRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///是否相对交易所收取 + TSgitFtdcBoolType IsRelative; +}; + +///合约手续费率 +struct CSgitFtdcInstrumentCommissionRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///开仓手续费率 + TSgitFtdcRatioType OpenRatioByMoney; + ///开仓手续费 + TSgitFtdcRatioType OpenRatioByVolume; + ///平仓手续费率 + TSgitFtdcRatioType CloseRatioByMoney; + ///平仓手续费 + TSgitFtdcRatioType CloseRatioByVolume; + ///平今手续费率 + TSgitFtdcRatioType CloseTodayRatioByMoney; + ///平今手续费 + TSgitFtdcRatioType CloseTodayRatioByVolume; +}; + +///深度行情 +struct CSgitFtdcDepthMarketDataField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///最新价 + TSgitFtdcPriceType LastPrice; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///昨收盘 + TSgitFtdcPriceType PreClosePrice; + ///昨持仓量 + TSgitFtdcLargeVolumeType PreOpenInterest; + ///今开盘 + TSgitFtdcPriceType OpenPrice; + ///最高价 + TSgitFtdcPriceType HighestPrice; + ///最低价 + TSgitFtdcPriceType LowestPrice; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交金额 + TSgitFtdcMoneyType Turnover; + ///持仓量 + TSgitFtdcLargeVolumeType OpenInterest; + ///今收盘 + TSgitFtdcPriceType ClosePrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///涨停板价 + TSgitFtdcPriceType UpperLimitPrice; + ///跌停板价 + TSgitFtdcPriceType LowerLimitPrice; + ///昨虚实度 + TSgitFtdcRatioType PreDelta; + ///今虚实度 + TSgitFtdcRatioType CurrDelta; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///最后修改毫秒 + TSgitFtdcMillisecType UpdateMillisec; + ///申买价一 + TSgitFtdcPriceType BidPrice1; + ///申买量一 + TSgitFtdcVolumeType BidVolume1; + ///申卖价一 + TSgitFtdcPriceType AskPrice1; + ///申卖量一 + TSgitFtdcVolumeType AskVolume1; + ///申买价二 + TSgitFtdcPriceType BidPrice2; + ///申买量二 + TSgitFtdcVolumeType BidVolume2; + ///申卖价二 + TSgitFtdcPriceType AskPrice2; + ///申卖量二 + TSgitFtdcVolumeType AskVolume2; + ///申买价三 + TSgitFtdcPriceType BidPrice3; + ///申买量三 + TSgitFtdcVolumeType BidVolume3; + ///申卖价三 + TSgitFtdcPriceType AskPrice3; + ///申卖量三 + TSgitFtdcVolumeType AskVolume3; + ///申买价四 + TSgitFtdcPriceType BidPrice4; + ///申买量四 + TSgitFtdcVolumeType BidVolume4; + ///申卖价四 + TSgitFtdcPriceType AskPrice4; + ///申卖量四 + TSgitFtdcVolumeType AskVolume4; + ///申买价五 + TSgitFtdcPriceType BidPrice5; + ///申买量五 + TSgitFtdcVolumeType BidVolume5; + ///申卖价五 + TSgitFtdcPriceType AskPrice5; + ///申卖量五 + TSgitFtdcVolumeType AskVolume5; + ///当日均价 + TSgitFtdcPriceType AveragePrice; +}; + +///投资者合约交易权限 +struct CSgitFtdcInstrumentTradingRightField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易权限 + TSgitFtdcTradingRightType TradingRight; +}; + +///经纪公司用户 +struct CSgitFtdcBrokerUserField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户名称 + TSgitFtdcUserNameType UserName; + ///用户类型 + TSgitFtdcUserTypeType UserType; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///是否使用令牌 + TSgitFtdcBoolType IsUsingOTP; +}; + +///经纪公司用户口令 +struct CSgitFtdcBrokerUserPasswordField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///密码 + TSgitFtdcPasswordType Password; +}; + +///经纪公司用户功能权限 +struct CSgitFtdcBrokerUserFunctionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///经纪公司功能代码 + TSgitFtdcBrokerFunctionCodeType BrokerFunctionCode; +}; + +///交易所交易员报盘机 +struct CSgitFtdcTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所交易员连接状态 + TSgitFtdcTraderConnectStatusType TraderConnectStatus; + ///发出连接请求的日期 + TSgitFtdcDateType ConnectRequestDate; + ///发出连接请求的时间 + TSgitFtdcTimeType ConnectRequestTime; + ///上次报告日期 + TSgitFtdcDateType LastReportDate; + ///上次报告时间 + TSgitFtdcTimeType LastReportTime; + ///完成连接日期 + TSgitFtdcDateType ConnectDate; + ///完成连接时间 + TSgitFtdcTimeType ConnectTime; + ///启动日期 + TSgitFtdcDateType StartDate; + ///启动时间 + TSgitFtdcTimeType StartTime; + ///交易日 + TSgitFtdcDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///本席位最大成交编号 + TSgitFtdcTradeIDType MaxTradeID; + ///本席位最大报单备拷 + TSgitFtdcReturnCodeType MaxOrderMessageReference; +}; + +///投资者结算结果 +struct CSgitFtdcSettlementInfoField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///消息正文 + TSgitFtdcContentType Content; +}; + +///合约保证金率调整 +struct CSgitFtdcInstrumentMarginRateAdjustField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///是否相对交易所收取 + TSgitFtdcBoolType IsRelative; +}; + +///交易所保证金率 +struct CSgitFtdcExchangeMarginRateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; +}; + +///交易所保证金率调整 +struct CSgitFtdcExchangeMarginRateAdjustField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///跟随交易所投资者多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///跟随交易所投资者多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///跟随交易所投资者空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///跟随交易所投资者空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///交易所多头保证金率 + TSgitFtdcRatioType ExchLongMarginRatioByMoney; + ///交易所多头保证金费 + TSgitFtdcMoneyType ExchLongMarginRatioByVolume; + ///交易所空头保证金率 + TSgitFtdcRatioType ExchShortMarginRatioByMoney; + ///交易所空头保证金费 + TSgitFtdcMoneyType ExchShortMarginRatioByVolume; + ///不跟随交易所投资者多头保证金率 + TSgitFtdcRatioType NoLongMarginRatioByMoney; + ///不跟随交易所投资者多头保证金费 + TSgitFtdcMoneyType NoLongMarginRatioByVolume; + ///不跟随交易所投资者空头保证金率 + TSgitFtdcRatioType NoShortMarginRatioByMoney; + ///不跟随交易所投资者空头保证金费 + TSgitFtdcMoneyType NoShortMarginRatioByVolume; +}; + +///结算引用 +struct CSgitFtdcSettlementRefField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; +}; + +///当前时间 +struct CSgitFtdcCurrentTimeField +{ + ///当前日期 + TSgitFtdcDateType CurrDate; + ///当前时间 + TSgitFtdcTimeType CurrTime; + ///当前时间(毫秒) + TSgitFtdcMillisecType CurrMillisec; +}; + +///通讯阶段 +struct CSgitFtdcCommPhaseField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///通讯时段编号 + TSgitFtdcCommPhaseNoType CommPhaseNo; +}; + +///登录信息 +struct CSgitFtdcLoginInfoField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///登录日期 + TSgitFtdcDateType LoginDate; + ///登录时间 + TSgitFtdcTimeType LoginTime; + ///IP地址 + TSgitFtdcIPAddressType IPAddress; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///接口端产品信息 + TSgitFtdcProductInfoType InterfaceProductInfo; + ///协议信息 + TSgitFtdcProtocolInfoType ProtocolInfo; + ///系统名称 + TSgitFtdcSystemNameType SystemName; + ///密码 + TSgitFtdcPasswordType Password; + ///最大报单引用 + TSgitFtdcOrderRefType MaxOrderRef; + ///上期所时间 + TSgitFtdcTimeType SHFETime; + ///大商所时间 + TSgitFtdcTimeType DCETime; + ///郑商所时间 + TSgitFtdcTimeType CZCETime; + ///中金所时间 + TSgitFtdcTimeType FFEXTime; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; + ///动态密码 + TSgitFtdcPasswordType OneTimePassword; +}; + +///登录信息 +struct CSgitFtdcLogoutAllField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///系统名称 + TSgitFtdcSystemNameType SystemName; +}; + +///前置状态 +struct CSgitFtdcFrontStatusField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///上次报告日期 + TSgitFtdcDateType LastReportDate; + ///上次报告时间 + TSgitFtdcTimeType LastReportTime; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///用户口令变更 +struct CSgitFtdcUserPasswordUpdateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///原来的口令 + TSgitFtdcPasswordType OldPassword; + ///新的口令 + TSgitFtdcPasswordType NewPassword; +}; + +///输入报单 +struct CSgitFtdcInputOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; +}; + +///报单 +struct CSgitFtdcOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///报单提交状态 + TSgitFtdcOrderSubmitStatusType OrderSubmitStatus; + ///报单提示序号 + TSgitFtdcSequenceNoType NotifySequence; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///报单来源 + TSgitFtdcOrderSourceType OrderSource; + ///报单状态 + TSgitFtdcOrderStatusType OrderStatus; + ///报单类型 + TSgitFtdcOrderTypeType OrderType; + ///今成交数量 + TSgitFtdcVolumeType VolumeTraded; + ///剩余数量 + TSgitFtdcVolumeType VolumeTotal; + ///报单日期 + TSgitFtdcDateType InsertDate; + ///委托时间 + TSgitFtdcTimeType InsertTime; + ///激活时间 + TSgitFtdcTimeType ActiveTime; + ///挂起时间 + TSgitFtdcTimeType SuspendTime; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///撤销时间 + TSgitFtdcTimeType CancelTime; + ///最后修改交易所交易员代码 + TSgitFtdcTraderIDType ActiveTraderID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///操作用户代码 + TSgitFtdcUserIDType ActiveUserID; + ///经纪公司报单编号 + TSgitFtdcSequenceNoType BrokerOrderSeq; + ///相关报单 + TSgitFtdcOrderSysIDType RelativeOrderSysID; +}; + +///交易所报单 +struct CSgitFtdcExchangeOrderField +{ + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///报单提交状态 + TSgitFtdcOrderSubmitStatusType OrderSubmitStatus; + ///报单提示序号 + TSgitFtdcSequenceNoType NotifySequence; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///报单来源 + TSgitFtdcOrderSourceType OrderSource; + ///报单状态 + TSgitFtdcOrderStatusType OrderStatus; + ///报单类型 + TSgitFtdcOrderTypeType OrderType; + ///今成交数量 + TSgitFtdcVolumeType VolumeTraded; + ///剩余数量 + TSgitFtdcVolumeType VolumeTotal; + ///报单日期 + TSgitFtdcDateType InsertDate; + ///委托时间 + TSgitFtdcTimeType InsertTime; + ///激活时间 + TSgitFtdcTimeType ActiveTime; + ///挂起时间 + TSgitFtdcTimeType SuspendTime; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///撤销时间 + TSgitFtdcTimeType CancelTime; + ///最后修改交易所交易员代码 + TSgitFtdcTraderIDType ActiveTraderID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; +}; + +///交易所报单插入失败 +struct CSgitFtdcExchangeOrderInsertErrorField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///输入报单操作 +struct CSgitFtdcInputOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///报单操作 +struct CSgitFtdcOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///操作日期 + TSgitFtdcDateType ActionDate; + ///操作时间 + TSgitFtdcTimeType ActionTime; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///报单操作状态 + TSgitFtdcOrderActionStatusType OrderActionStatus; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///交易所报单操作 +struct CSgitFtdcExchangeOrderActionField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///操作日期 + TSgitFtdcDateType ActionDate; + ///操作时间 + TSgitFtdcTimeType ActionTime; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///报单操作状态 + TSgitFtdcOrderActionStatusType OrderActionStatus; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///交易所报单操作失败 +struct CSgitFtdcExchangeOrderActionErrorField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///交易所成交 +struct CSgitFtdcExchangeTradeField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易角色 + TSgitFtdcTradingRoleType TradingRole; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///价格 + TSgitFtdcPriceType Price; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交时期 + TSgitFtdcDateType TradeDate; + ///成交时间 + TSgitFtdcTimeType TradeTime; + ///成交类型 + TSgitFtdcTradeTypeType TradeType; + ///成交价来源 + TSgitFtdcPriceSourceType PriceSource; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///成交来源 + TSgitFtdcTradeSourceType TradeSource; +}; + +///成交 +struct CSgitFtdcTradeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易角色 + TSgitFtdcTradingRoleType TradingRole; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///价格 + TSgitFtdcPriceType Price; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交时期 + TSgitFtdcDateType TradeDate; + ///成交时间 + TSgitFtdcTimeType TradeTime; + ///成交类型 + TSgitFtdcTradeTypeType TradeType; + ///成交价来源 + TSgitFtdcPriceSourceType PriceSource; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///经纪公司报单编号 + TSgitFtdcSequenceNoType BrokerOrderSeq; + ///成交来源 + TSgitFtdcTradeSourceType TradeSource; +}; + +///用户会话 +struct CSgitFtdcUserSessionField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///登录日期 + TSgitFtdcDateType LoginDate; + ///登录时间 + TSgitFtdcTimeType LoginTime; + ///IP地址 + TSgitFtdcIPAddressType IPAddress; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///接口端产品信息 + TSgitFtdcProductInfoType InterfaceProductInfo; + ///协议信息 + TSgitFtdcProtocolInfoType ProtocolInfo; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; +}; + +///查询最大报单数量 +struct CSgitFtdcQueryMaxOrderVolumeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///最大允许报单数量 + TSgitFtdcVolumeType MaxVolume; +}; + +///投资者结算结果确认信息 +struct CSgitFtdcSettlementInfoConfirmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///确认日期 + TSgitFtdcDateType ConfirmDate; + ///确认时间 + TSgitFtdcTimeType ConfirmTime; +}; + +///出入金同步 +struct CSgitFtdcSyncDepositField +{ + ///出入金流水号 + TSgitFtdcDepositSeqNoType DepositSeqNo; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///是否强制进行 + TSgitFtdcBoolType IsForce; +}; + +///经纪公司同步 +struct CSgitFtdcBrokerSyncField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///正在同步中的投资者 +struct CSgitFtdcSyncingInvestorField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者名称 + TSgitFtdcPartyNameType InvestorName; + ///证件类型 + TSgitFtdcIdCardTypeType IdentifiedCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///联系电话 + TSgitFtdcTelephoneType Telephone; + ///通讯地址 + TSgitFtdcAddressType Address; + ///开户日期 + TSgitFtdcDateType OpenDate; + ///手机 + TSgitFtdcMobileType Mobile; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; +}; + +///正在同步中的交易代码 +struct CSgitFtdcSyncingTradingCodeField +{ + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///是否活跃 + TSgitFtdcBoolType IsActive; + ///交易编码类型 + TSgitFtdcClientIDTypeType ClientIDType; +}; + +///正在同步中的投资者分组 +struct CSgitFtdcSyncingInvestorGroupField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者分组代码 + TSgitFtdcInvestorIDType InvestorGroupID; + ///投资者分组名称 + TSgitFtdcInvestorGroupNameType InvestorGroupName; +}; + +///正在同步中的交易账号 +struct CSgitFtdcSyncingTradingAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///上次质押金额 + TSgitFtdcMoneyType PreMortgage; + ///上次信用额度 + TSgitFtdcMoneyType PreCredit; + ///上次存款额 + TSgitFtdcMoneyType PreDeposit; + ///上次结算准备金 + TSgitFtdcMoneyType PreBalance; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///利息基数 + TSgitFtdcMoneyType InterestBase; + ///利息收入 + TSgitFtdcMoneyType Interest; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///出金金额 + TSgitFtdcMoneyType Withdraw; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///当前保证金总额 + TSgitFtdcMoneyType CurrMargin; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///期货结算准备金 + TSgitFtdcMoneyType Balance; + ///可用资金 + TSgitFtdcMoneyType Available; + ///可取资金 + TSgitFtdcMoneyType WithdrawQuota; + ///基本准备金 + TSgitFtdcMoneyType Reserve; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///信用额度 + TSgitFtdcMoneyType Credit; + ///质押金额 + TSgitFtdcMoneyType Mortgage; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///投资者交割保证金 + TSgitFtdcMoneyType DeliveryMargin; + ///交易所交割保证金 + TSgitFtdcMoneyType ExchangeDeliveryMargin; +}; + +///正在同步中的投资者持仓 +struct CSgitFtdcSyncingInvestorPositionField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///持仓多空方向 + TSgitFtdcPosiDirectionType PosiDirection; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///持仓日期 + TSgitFtdcPositionDateType PositionDate; + ///上日持仓 + TSgitFtdcVolumeType YdPosition; + ///今日持仓 + TSgitFtdcVolumeType Position; + ///多头冻结 + TSgitFtdcVolumeType LongFrozen; + ///空头冻结 + TSgitFtdcVolumeType ShortFrozen; + ///开仓冻结金额 + TSgitFtdcMoneyType LongFrozenAmount; + ///开仓冻结金额 + TSgitFtdcMoneyType ShortFrozenAmount; + ///开仓量 + TSgitFtdcVolumeType OpenVolume; + ///平仓量 + TSgitFtdcVolumeType CloseVolume; + ///开仓金额 + TSgitFtdcMoneyType OpenAmount; + ///平仓金额 + TSgitFtdcMoneyType CloseAmount; + ///持仓成本 + TSgitFtdcMoneyType PositionCost; + ///上次占用的保证金 + TSgitFtdcMoneyType PreMargin; + ///占用的保证金 + TSgitFtdcMoneyType UseMargin; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; + ///冻结的资金 + TSgitFtdcMoneyType FrozenCash; + ///冻结的手续费 + TSgitFtdcMoneyType FrozenCommission; + ///资金差额 + TSgitFtdcMoneyType CashIn; + ///手续费 + TSgitFtdcMoneyType Commission; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///持仓盈亏 + TSgitFtdcMoneyType PositionProfit; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///开仓成本 + TSgitFtdcMoneyType OpenCost; + ///交易所保证金 + TSgitFtdcMoneyType ExchangeMargin; + ///组合成交形成的持仓 + TSgitFtdcVolumeType CombPosition; + ///组合多头冻结 + TSgitFtdcVolumeType CombLongFrozen; + ///组合空头冻结 + TSgitFtdcVolumeType CombShortFrozen; + ///逐日盯市平仓盈亏 + TSgitFtdcMoneyType CloseProfitByDate; + ///逐笔对冲平仓盈亏 + TSgitFtdcMoneyType CloseProfitByTrade; + ///今日持仓 + TSgitFtdcVolumeType TodayPosition; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; +}; + +///正在同步中的合约保证金率 +struct CSgitFtdcSyncingInstrumentMarginRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///多头保证金率 + TSgitFtdcRatioType LongMarginRatioByMoney; + ///多头保证金费 + TSgitFtdcMoneyType LongMarginRatioByVolume; + ///空头保证金率 + TSgitFtdcRatioType ShortMarginRatioByMoney; + ///空头保证金费 + TSgitFtdcMoneyType ShortMarginRatioByVolume; + ///是否相对交易所收取 + TSgitFtdcBoolType IsRelative; +}; + +///正在同步中的合约手续费率 +struct CSgitFtdcSyncingInstrumentCommissionRateField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///开仓手续费率 + TSgitFtdcRatioType OpenRatioByMoney; + ///开仓手续费 + TSgitFtdcRatioType OpenRatioByVolume; + ///平仓手续费率 + TSgitFtdcRatioType CloseRatioByMoney; + ///平仓手续费 + TSgitFtdcRatioType CloseRatioByVolume; + ///平今手续费率 + TSgitFtdcRatioType CloseTodayRatioByMoney; + ///平今手续费 + TSgitFtdcRatioType CloseTodayRatioByVolume; +}; + +///正在同步中的合约交易权限 +struct CSgitFtdcSyncingInstrumentTradingRightField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易权限 + TSgitFtdcTradingRightType TradingRight; +}; + +///查询报单 +struct CSgitFtdcQryOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///开始时间 + TSgitFtdcTimeType InsertTimeStart; + ///结束时间 + TSgitFtdcTimeType InsertTimeEnd; +}; + +///查询成交 +struct CSgitFtdcQryTradeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///开始时间 + TSgitFtdcTimeType TradeTimeStart; + ///结束时间 + TSgitFtdcTimeType TradeTimeEnd; +}; + +///查询投资者持仓 +struct CSgitFtdcQryInvestorPositionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询资金账户 +struct CSgitFtdcQryTradingAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///查询投资者 +struct CSgitFtdcQryInvestorField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///查询交易编码 +struct CSgitFtdcQryTradingCodeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易编码类型 + TSgitFtdcClientIDTypeType ClientIDType; +}; + +///查询交易编码 +struct CSgitFtdcQryInvestorGroupField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///查询交易编码 +struct CSgitFtdcQryInstrumentMarginRateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; +}; + +///查询交易编码 +struct CSgitFtdcQryInstrumentCommissionRateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询交易编码 +struct CSgitFtdcQryInstrumentTradingRightField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询经纪公司 +struct CSgitFtdcQryBrokerField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///查询交易员 +struct CSgitFtdcQryTraderField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询经纪公司会员代码 +struct CSgitFtdcQryPartBrokerField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; +}; + +///查询管理用户功能权限 +struct CSgitFtdcQrySuperUserFunctionField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询用户会话 +struct CSgitFtdcQryUserSessionField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询前置状态 +struct CSgitFtdcQryFrontStatusField +{ + ///前置编号 + TSgitFtdcFrontIDType FrontID; +}; + +///查询交易所报单 +struct CSgitFtdcQryExchangeOrderField +{ + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询报单操作 +struct CSgitFtdcQryOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///查询交易所报单操作 +struct CSgitFtdcQryExchangeOrderActionField +{ + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询管理用户 +struct CSgitFtdcQrySuperUserField +{ + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询交易所 +struct CSgitFtdcQryExchangeField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///查询产品 +struct CSgitFtdcQryProductField +{ + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; +}; + +///查询合约 +struct CSgitFtdcQryInstrumentField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///产品代码 + TSgitFtdcInstrumentIDType ProductID; +}; + +///查询行情 +struct CSgitFtdcQryDepthMarketDataField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询经纪公司用户 +struct CSgitFtdcQryBrokerUserField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询经纪公司用户权限 +struct CSgitFtdcQryBrokerUserFunctionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; +}; + +///查询交易员报盘机 +struct CSgitFtdcQryTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询出入金流水 +struct CSgitFtdcQrySyncDepositField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///出入金流水号 + TSgitFtdcDepositSeqNoType DepositSeqNo; +}; + +///查询投资者结算结果 +struct CSgitFtdcQrySettlementInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易日 + TSgitFtdcDateType TradingDay; +}; + +///查询报单 +struct CSgitFtdcQryHisOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///开始时间 + TSgitFtdcTimeType InsertTimeStart; + ///结束时间 + TSgitFtdcTimeType InsertTimeEnd; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; +}; + +///市场行情 +struct CSgitFtdcMarketDataField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///最新价 + TSgitFtdcPriceType LastPrice; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///昨收盘 + TSgitFtdcPriceType PreClosePrice; + ///昨持仓量 + TSgitFtdcLargeVolumeType PreOpenInterest; + ///今开盘 + TSgitFtdcPriceType OpenPrice; + ///最高价 + TSgitFtdcPriceType HighestPrice; + ///最低价 + TSgitFtdcPriceType LowestPrice; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交金额 + TSgitFtdcMoneyType Turnover; + ///持仓量 + TSgitFtdcLargeVolumeType OpenInterest; + ///今收盘 + TSgitFtdcPriceType ClosePrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///涨停板价 + TSgitFtdcPriceType UpperLimitPrice; + ///跌停板价 + TSgitFtdcPriceType LowerLimitPrice; + ///昨虚实度 + TSgitFtdcRatioType PreDelta; + ///今虚实度 + TSgitFtdcRatioType CurrDelta; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///最后修改毫秒 + TSgitFtdcMillisecType UpdateMillisec; +}; + +///行情基础属性 +struct CSgitFtdcMarketDataBaseField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///上次结算价 + TSgitFtdcPriceType PreSettlementPrice; + ///昨收盘 + TSgitFtdcPriceType PreClosePrice; + ///昨持仓量 + TSgitFtdcLargeVolumeType PreOpenInterest; + ///昨虚实度 + TSgitFtdcRatioType PreDelta; +}; + +///行情静态属性 +struct CSgitFtdcMarketDataStaticField +{ + ///今开盘 + TSgitFtdcPriceType OpenPrice; + ///最高价 + TSgitFtdcPriceType HighestPrice; + ///最低价 + TSgitFtdcPriceType LowestPrice; + ///今收盘 + TSgitFtdcPriceType ClosePrice; + ///涨停板价 + TSgitFtdcPriceType UpperLimitPrice; + ///跌停板价 + TSgitFtdcPriceType LowerLimitPrice; + ///本次结算价 + TSgitFtdcPriceType SettlementPrice; + ///今虚实度 + TSgitFtdcRatioType CurrDelta; +}; + +///行情最新成交属性 +struct CSgitFtdcMarketDataLastMatchField +{ + ///最新价 + TSgitFtdcPriceType LastPrice; + ///数量 + TSgitFtdcVolumeType Volume; + ///成交金额 + TSgitFtdcMoneyType Turnover; + ///持仓量 + TSgitFtdcLargeVolumeType OpenInterest; +}; + +///行情最优价属性 +struct CSgitFtdcMarketDataBestPriceField +{ + ///申买价一 + TSgitFtdcPriceType BidPrice1; + ///申买量一 + TSgitFtdcVolumeType BidVolume1; + ///申卖价一 + TSgitFtdcPriceType AskPrice1; + ///申卖量一 + TSgitFtdcVolumeType AskVolume1; +}; + +///行情申买二、三属性 +struct CSgitFtdcMarketDataBid23Field +{ + ///申买价二 + TSgitFtdcPriceType BidPrice2; + ///申买量二 + TSgitFtdcVolumeType BidVolume2; + ///申买价三 + TSgitFtdcPriceType BidPrice3; + ///申买量三 + TSgitFtdcVolumeType BidVolume3; +}; + +///行情申卖二、三属性 +struct CSgitFtdcMarketDataAsk23Field +{ + ///申卖价二 + TSgitFtdcPriceType AskPrice2; + ///申卖量二 + TSgitFtdcVolumeType AskVolume2; + ///申卖价三 + TSgitFtdcPriceType AskPrice3; + ///申卖量三 + TSgitFtdcVolumeType AskVolume3; +}; + +///行情申买四、五属性 +struct CSgitFtdcMarketDataBid45Field +{ + ///申买价四 + TSgitFtdcPriceType BidPrice4; + ///申买量四 + TSgitFtdcVolumeType BidVolume4; + ///申买价五 + TSgitFtdcPriceType BidPrice5; + ///申买量五 + TSgitFtdcVolumeType BidVolume5; +}; + +///行情申卖四、五属性 +struct CSgitFtdcMarketDataAsk45Field +{ + ///申卖价四 + TSgitFtdcPriceType AskPrice4; + ///申卖量四 + TSgitFtdcVolumeType AskVolume4; + ///申卖价五 + TSgitFtdcPriceType AskPrice5; + ///申卖量五 + TSgitFtdcVolumeType AskVolume5; +}; + +///行情更新时间属性 +struct CSgitFtdcMarketDataUpdateTimeField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///最后修改毫秒 + TSgitFtdcMillisecType UpdateMillisec; +}; + +///行情交易所代码属性 +struct CSgitFtdcMarketDataExchangeField +{ + ///交易所代码 + TSgitFtdcPriceType ExchangeID; +}; + +///指定的合约 +struct CSgitFtdcSpecificInstrumentField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///合约状态 +struct CSgitFtdcInstrumentStatusField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///结算组代码 + TSgitFtdcSettlementGroupIDType SettlementGroupID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///合约交易状态 + TSgitFtdcInstrumentStatusType InstrumentStatus; + ///交易阶段编号 + TSgitFtdcTradingSegmentSNType TradingSegmentSN; + ///进入本状态时间 + TSgitFtdcTimeType EnterTime; + ///进入本状态原因 + TSgitFtdcInstStatusEnterReasonType EnterReason; +}; + +///查询合约状态 +struct CSgitFtdcQryInstrumentStatusField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; +}; + +///投资者账户 +struct CSgitFtdcInvestorAccountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; +}; + +///浮动盈亏算法 +struct CSgitFtdcPositionProfitAlgorithmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///盈亏算法 + TSgitFtdcAlgorithmType Algorithm; + ///备注 + TSgitFtdcMemoType Memo; +}; + +///会员资金折扣 +struct CSgitFtdcDiscountField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///资金折扣比例 + TSgitFtdcRatioType Discount; +}; + +///查询转帐银行 +struct CSgitFtdcQryTransferBankField +{ + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; +}; + +///转帐银行 +struct CSgitFtdcTransferBankField +{ + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; + ///银行名称 + TSgitFtdcBankNameType BankName; + ///是否活跃 + TSgitFtdcBoolType IsActive; +}; + +///查询投资者持仓明细 +struct CSgitFtdcQryInvestorPositionDetailField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///投资者持仓明细 +struct CSgitFtdcInvestorPositionDetailField +{ + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///买卖 + TSgitFtdcDirectionType Direction; + ///开仓日期 + TSgitFtdcDateType OpenDate; + ///成交编号 + TSgitFtdcTradeIDType TradeID; + ///数量 + TSgitFtdcVolumeType Volume; + ///开仓价 + TSgitFtdcPriceType OpenPrice; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///成交类型 + TSgitFtdcTradeTypeType TradeType; + ///组合合约代码 + TSgitFtdcInstrumentIDType CombInstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///逐日盯市平仓盈亏 + TSgitFtdcMoneyType CloseProfitByDate; + ///逐笔对冲平仓盈亏 + TSgitFtdcMoneyType CloseProfitByTrade; + ///逐日盯市持仓盈亏 + TSgitFtdcMoneyType PositionProfitByDate; + ///逐笔对冲持仓盈亏 + TSgitFtdcMoneyType PositionProfitByTrade; + ///投资者保证金 + TSgitFtdcMoneyType Margin; + ///交易所保证金 + TSgitFtdcMoneyType ExchMargin; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; + ///昨结算价 + TSgitFtdcPriceType LastSettlementPrice; + ///结算价 + TSgitFtdcPriceType SettlementPrice; + ///平仓量 + TSgitFtdcVolumeType CloseVolume; + ///平仓金额 + TSgitFtdcMoneyType CloseAmount; +}; + +///资金账户口令域 +struct CSgitFtdcTradingAccountPasswordField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///密码 + TSgitFtdcPasswordType Password; +}; + +///交易所行情报盘机 +struct CSgitFtdcMDTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所交易员连接状态 + TSgitFtdcTraderConnectStatusType TraderConnectStatus; + ///发出连接请求的日期 + TSgitFtdcDateType ConnectRequestDate; + ///发出连接请求的时间 + TSgitFtdcTimeType ConnectRequestTime; + ///上次报告日期 + TSgitFtdcDateType LastReportDate; + ///上次报告时间 + TSgitFtdcTimeType LastReportTime; + ///完成连接日期 + TSgitFtdcDateType ConnectDate; + ///完成连接时间 + TSgitFtdcTimeType ConnectTime; + ///启动日期 + TSgitFtdcDateType StartDate; + ///启动时间 + TSgitFtdcTimeType StartTime; + ///交易日 + TSgitFtdcDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///本席位最大成交编号 + TSgitFtdcTradeIDType MaxTradeID; + ///本席位最大报单备拷 + TSgitFtdcReturnCodeType MaxOrderMessageReference; +}; + +///查询行情报盘机 +struct CSgitFtdcQryMDTraderOfferField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; +}; + +///查询客户通知 +struct CSgitFtdcQryNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///客户通知 +struct CSgitFtdcNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///消息正文 + TSgitFtdcContentType Content; + ///经纪公司通知内容序列号 + TSgitFtdcSequenceLabelType SequenceLabel; +}; + +///用户权限 +struct CSgitFtdcUserRightField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///客户权限类型 + TSgitFtdcUserRightTypeType UserRightType; + ///是否禁止 + TSgitFtdcBoolType IsForbidden; +}; + +///查询结算信息确认域 +struct CSgitFtdcQrySettlementInfoConfirmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///装载结算信息 +struct CSgitFtdcLoadSettlementInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///经纪公司可提资金算法表 +struct CSgitFtdcBrokerWithdrawAlgorithmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///可提资金算法 + TSgitFtdcAlgorithmType WithdrawAlgorithm; + ///资金使用率 + TSgitFtdcRatioType UsingRatio; + ///可提是否包含平仓盈利 + TSgitFtdcIncludeCloseProfitType IncludeCloseProfit; + ///本日无仓且无成交客户是否受可提比例限制 + TSgitFtdcAllWithoutTradeType AllWithoutTrade; + ///可用是否包含平仓盈利 + TSgitFtdcIncludeCloseProfitType AvailIncludeCloseProfit; + ///是否启用用户事件 + TSgitFtdcBoolType IsBrokerUserEvent; +}; + +///资金账户口令变更域 +struct CSgitFtdcTradingAccountPasswordUpdateV1Field +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///原来的口令 + TSgitFtdcPasswordType OldPassword; + ///新的口令 + TSgitFtdcPasswordType NewPassword; +}; + +///资金账户口令变更域 +struct CSgitFtdcTradingAccountPasswordUpdateField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///原来的口令 + TSgitFtdcPasswordType OldPassword; + ///新的口令 + TSgitFtdcPasswordType NewPassword; +}; + +///查询组合合约分腿 +struct CSgitFtdcQryCombinationLegField +{ + ///组合合约代码 + TSgitFtdcInstrumentIDType CombInstrumentID; + ///单腿编号 + TSgitFtdcLegIDType LegID; + ///单腿合约代码 + TSgitFtdcInstrumentIDType LegInstrumentID; +}; + +///查询组合合约分腿 +struct CSgitFtdcQrySyncStatusField +{ + ///交易日 + TSgitFtdcDateType TradingDay; +}; + +///组合交易合约的单腿 +struct CSgitFtdcCombinationLegField +{ + ///组合合约代码 + TSgitFtdcInstrumentIDType CombInstrumentID; + ///单腿编号 + TSgitFtdcLegIDType LegID; + ///单腿合约代码 + TSgitFtdcInstrumentIDType LegInstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///单腿乘数 + TSgitFtdcLegMultipleType LegMultiple; + ///派生层数 + TSgitFtdcImplyLevelType ImplyLevel; +}; + +///数据同步状态 +struct CSgitFtdcSyncStatusField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///数据同步状态 + TSgitFtdcDataSyncStatusType DataSyncStatus; +}; + +///查询联系人 +struct CSgitFtdcQryLinkManField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///联系人 +struct CSgitFtdcLinkManField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///联系人类型 + TSgitFtdcPersonTypeType PersonType; + ///证件类型 + TSgitFtdcIdCardTypeType IdentifiedCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///名称 + TSgitFtdcPartyNameType PersonName; + ///联系电话 + TSgitFtdcTelephoneType Telephone; + ///通讯地址 + TSgitFtdcAddressType Address; + ///邮政编码 + TSgitFtdcZipCodeType ZipCode; + ///优先级 + TSgitFtdcPriorityType Priority; +}; + +///查询经纪公司用户事件 +struct CSgitFtdcQryBrokerUserEventField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户事件类型 + TSgitFtdcUserEventTypeType UserEventType; +}; + +///查询经纪公司用户事件 +struct CSgitFtdcBrokerUserEventField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///用户事件类型 + TSgitFtdcUserEventTypeType UserEventType; + ///用户事件序号 + TSgitFtdcSequenceNoType EventSequenceNo; + ///事件发生日期 + TSgitFtdcDateType EventDate; + ///事件发生时间 + TSgitFtdcTimeType EventTime; + ///用户事件信息 + TSgitFtdcUserEventInfoType UserEventInfo; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///查询签约银行请求 +struct CSgitFtdcQryContractBankField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; +}; + +///查询签约银行响应 +struct CSgitFtdcContractBankField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分中心代码 + TSgitFtdcBankBrchIDType BankBrchID; + ///银行名称 + TSgitFtdcBankNameType BankName; +}; + +///投资者组合持仓明细 +struct CSgitFtdcInvestorPositionCombineDetailField +{ + ///交易日 + TSgitFtdcDateType TradingDay; + ///开仓日期 + TSgitFtdcDateType OpenDate; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///组合编号 + TSgitFtdcTradeIDType ComTradeID; + ///撮合编号 + TSgitFtdcTradeIDType TradeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///买卖 + TSgitFtdcDirectionType Direction; + ///持仓量 + TSgitFtdcVolumeType TotalAmt; + ///投资者保证金 + TSgitFtdcMoneyType Margin; + ///交易所保证金 + TSgitFtdcMoneyType ExchMargin; + ///保证金率 + TSgitFtdcRatioType MarginRateByMoney; + ///保证金率(按手数) + TSgitFtdcRatioType MarginRateByVolume; + ///单腿编号 + TSgitFtdcLegIDType LegID; + ///单腿乘数 + TSgitFtdcLegMultipleType LegMultiple; + ///组合持仓合约编码 + TSgitFtdcInstrumentIDType CombInstrumentID; +}; + +///预埋单 +struct CSgitFtdcParkedOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///预埋报单编号 + TSgitFtdcParkedOrderIDType ParkedOrderID; + ///用户类型 + TSgitFtdcUserTypeType UserType; + ///预埋单状态 + TSgitFtdcParkedOrderStatusType Status; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///输入预埋单操作 +struct CSgitFtdcParkedOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///预埋撤单单编号 + TSgitFtdcParkedOrderActionIDType ParkedOrderActionID; + ///用户类型 + TSgitFtdcUserTypeType UserType; + ///预埋撤单状态 + TSgitFtdcParkedOrderStatusType Status; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询预埋单 +struct CSgitFtdcQryParkedOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///查询预埋撤单 +struct CSgitFtdcQryParkedOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///删除预埋单 +struct CSgitFtdcRemoveParkedOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///预埋报单编号 + TSgitFtdcParkedOrderIDType ParkedOrderID; +}; + +///删除预埋撤单 +struct CSgitFtdcRemoveParkedOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///预埋撤单编号 + TSgitFtdcParkedOrderActionIDType ParkedOrderActionID; +}; + +///经纪公司可提资金算法表 +struct CSgitFtdcInvestorWithdrawAlgorithmField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///可提资金比例 + TSgitFtdcRatioType UsingRatio; +}; + +///查询组合持仓明细 +struct CSgitFtdcQryInvestorPositionCombineDetailField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///组合持仓合约编码 + TSgitFtdcInstrumentIDType CombInstrumentID; +}; + +///成交均价 +struct CSgitFtdcMarketDataAveragePriceField +{ + ///当日均价 + TSgitFtdcPriceType AveragePrice; +}; + +///校验投资者密码 +struct CSgitFtdcVerifyInvestorPasswordField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///密码 + TSgitFtdcPasswordType Password; +}; + +///用户IP +struct CSgitFtdcUserIPField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///IP地址 + TSgitFtdcIPAddressType IPAddress; + ///IP地址掩码 + TSgitFtdcIPAddressType IPMask; + ///Mac地址 + TSgitFtdcMacAddressType MacAddress; +}; + +///用户事件通知信息 +struct CSgitFtdcTradingNoticeInfoField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///发送时间 + TSgitFtdcTimeType SendTime; + ///消息正文 + TSgitFtdcContentType FieldContent; + ///序列系列号 + TSgitFtdcSequenceSeriesType SequenceSeries; + ///序列号 + TSgitFtdcSequenceNoType SequenceNo; +}; + +///用户事件通知 +struct CSgitFtdcTradingNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者范围 + TSgitFtdcInvestorRangeType InvestorRange; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///序列系列号 + TSgitFtdcSequenceSeriesType SequenceSeries; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///发送时间 + TSgitFtdcTimeType SendTime; + ///序列号 + TSgitFtdcSequenceNoType SequenceNo; + ///消息正文 + TSgitFtdcContentType FieldContent; +}; + +///查询交易事件通知 +struct CSgitFtdcQryTradingNoticeField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///查询错误报单 +struct CSgitFtdcQryErrOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///错误报单 +struct CSgitFtdcErrOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询错误报单操作 +struct CSgitFtdcErrorConditionalOrderField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///报单价格条件 + TSgitFtdcOrderPriceTypeType OrderPriceType; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///组合开平标志 + TSgitFtdcCombOffsetFlagType CombOffsetFlag; + ///组合投机套保标志 + TSgitFtdcCombHedgeFlagType CombHedgeFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量 + TSgitFtdcVolumeType VolumeTotalOriginal; + ///有效期类型 + TSgitFtdcTimeConditionType TimeCondition; + ///GTD日期 + TSgitFtdcDateType GTDDate; + ///成交量类型 + TSgitFtdcVolumeConditionType VolumeCondition; + ///最小成交量 + TSgitFtdcVolumeType MinVolume; + ///触发条件 + TSgitFtdcContingentConditionType ContingentCondition; + ///止损价 + TSgitFtdcPriceType StopPrice; + ///强平原因 + TSgitFtdcForceCloseReasonType ForceCloseReason; + ///自动挂起标志 + TSgitFtdcBoolType IsAutoSuspend; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///合约在交易所的代码 + TSgitFtdcExchangeInstIDType ExchangeInstID; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///报单提交状态 + TSgitFtdcOrderSubmitStatusType OrderSubmitStatus; + ///报单提示序号 + TSgitFtdcSequenceNoType NotifySequence; + ///交易日 + TSgitFtdcDateType TradingDay; + ///结算编号 + TSgitFtdcSettlementIDType SettlementID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///报单来源 + TSgitFtdcOrderSourceType OrderSource; + ///报单状态 + TSgitFtdcOrderStatusType OrderStatus; + ///报单类型 + TSgitFtdcOrderTypeType OrderType; + ///今成交数量 + TSgitFtdcVolumeType VolumeTraded; + ///剩余数量 + TSgitFtdcVolumeType VolumeTotal; + ///报单日期 + TSgitFtdcDateType InsertDate; + ///委托时间 + TSgitFtdcTimeType InsertTime; + ///激活时间 + TSgitFtdcTimeType ActiveTime; + ///挂起时间 + TSgitFtdcTimeType SuspendTime; + ///最后修改时间 + TSgitFtdcTimeType UpdateTime; + ///撤销时间 + TSgitFtdcTimeType CancelTime; + ///最后修改交易所交易员代码 + TSgitFtdcTraderIDType ActiveTraderID; + ///结算会员编号 + TSgitFtdcParticipantIDType ClearingPartID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///用户端产品信息 + TSgitFtdcProductInfoType UserProductInfo; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///用户强评标志 + TSgitFtdcBoolType UserForceClose; + ///操作用户代码 + TSgitFtdcUserIDType ActiveUserID; + ///经纪公司报单编号 + TSgitFtdcSequenceNoType BrokerOrderSeq; + ///相关报单 + TSgitFtdcOrderSysIDType RelativeOrderSysID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询错误报单操作 +struct CSgitFtdcQryErrOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///错误报单操作 +struct CSgitFtdcErrOrderActionField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///报单操作引用 + TSgitFtdcOrderActionRefType OrderActionRef; + ///报单引用 + TSgitFtdcOrderRefType OrderRef; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///前置编号 + TSgitFtdcFrontIDType FrontID; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///报单编号 + TSgitFtdcOrderSysIDType OrderSysID; + ///操作标志 + TSgitFtdcActionFlagType ActionFlag; + ///价格 + TSgitFtdcPriceType LimitPrice; + ///数量变化 + TSgitFtdcVolumeType VolumeChange; + ///操作日期 + TSgitFtdcDateType ActionDate; + ///操作时间 + TSgitFtdcTimeType ActionTime; + ///交易所交易员代码 + TSgitFtdcTraderIDType TraderID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///本地报单编号 + TSgitFtdcOrderLocalIDType OrderLocalID; + ///操作本地编号 + TSgitFtdcOrderLocalIDType ActionLocalID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///客户代码 + TSgitFtdcClientIDType ClientID; + ///业务单元 + TSgitFtdcBusinessUnitType BusinessUnit; + ///报单操作状态 + TSgitFtdcOrderActionStatusType OrderActionStatus; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///状态信息 + TSgitFtdcErrorMsgType StatusMsg; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询交易所状态 +struct CSgitFtdcQryExchangeSequenceField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///交易所状态 +struct CSgitFtdcExchangeSequenceField +{ + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///序号 + TSgitFtdcSequenceNoType SequenceNo; + ///合约交易状态 + TSgitFtdcInstrumentStatusType MarketStatus; +}; + +///根据价格查询最大报单数量 +struct CSgitFtdcQueryMaxOrderVolumeWithPriceField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///开平标志 + TSgitFtdcOffsetFlagType OffsetFlag; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///最大允许报单数量 + TSgitFtdcVolumeType MaxVolume; + ///报单价格 + TSgitFtdcPriceType Price; +}; + +///查询经纪公司交易参数 +struct CSgitFtdcQryBrokerTradingParamsField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///经纪公司交易参数 +struct CSgitFtdcBrokerTradingParamsField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///保证金价格类型 + TSgitFtdcMarginPriceTypeType MarginPriceType; + ///盈亏算法 + TSgitFtdcAlgorithmType Algorithm; + ///可用是否包含平仓盈利 + TSgitFtdcIncludeCloseProfitType AvailIncludeCloseProfit; +}; + +///查询经纪公司交易算法 +struct CSgitFtdcQryBrokerTradingAlgosField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///经纪公司交易算法 +struct CSgitFtdcBrokerTradingAlgosField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///持仓处理算法编号 + TSgitFtdcHandlePositionAlgoIDType HandlePositionAlgoID; + ///寻找保证金率算法编号 + TSgitFtdcFindMarginRateAlgoIDType FindMarginRateAlgoID; + ///资金处理算法编号 + TSgitFtdcHandleTradingAccountAlgoIDType HandleTradingAccountAlgoID; +}; + +///查询经纪公司资金 +struct CSgitFtdcQueryBrokerDepositField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; +}; + +///经纪公司资金 +struct CSgitFtdcBrokerDepositField +{ + ///交易日期 + TSgitFtdcTradeDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///会员代码 + TSgitFtdcParticipantIDType ParticipantID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///上次结算准备金 + TSgitFtdcMoneyType PreBalance; + ///当前保证金总额 + TSgitFtdcMoneyType CurrMargin; + ///平仓盈亏 + TSgitFtdcMoneyType CloseProfit; + ///期货结算准备金 + TSgitFtdcMoneyType Balance; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///出金金额 + TSgitFtdcMoneyType Withdraw; + ///可提资金 + TSgitFtdcMoneyType Available; + ///基本准备金 + TSgitFtdcMoneyType Reserve; + ///冻结的保证金 + TSgitFtdcMoneyType FrozenMargin; +}; + +///查询保证金监管系统经纪公司密钥 +struct CSgitFtdcQryCFMMCBrokerKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; +}; + +///保证金监管系统经纪公司密钥 +struct CSgitFtdcCFMMCBrokerKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///经纪公司统一编码 + TSgitFtdcParticipantIDType ParticipantID; + ///密钥生成日期 + TSgitFtdcDateType CreateDate; + ///密钥生成时间 + TSgitFtdcTimeType CreateTime; + ///密钥编号 + TSgitFtdcSequenceNoType KeyID; + ///动态密钥 + TSgitFtdcCFMMCKeyType CurrentKey; + ///动态密钥类型 + TSgitFtdcCFMMCKeyKindType KeyKind; +}; + +///保证金监管系统经纪公司资金账户密钥 +struct CSgitFtdcCFMMCTradingAccountKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///经纪公司统一编码 + TSgitFtdcParticipantIDType ParticipantID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///密钥编号 + TSgitFtdcSequenceNoType KeyID; + ///动态密钥 + TSgitFtdcCFMMCKeyType CurrentKey; +}; + +///请求查询保证金监管系统经纪公司资金账户密钥 +struct CSgitFtdcQryCFMMCTradingAccountKeyField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; +}; + +///用户动态令牌参数 +struct CSgitFtdcBrokerUserOTPParamField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///动态令牌提供商 + TSgitFtdcOTPVendorsIDType OTPVendorsID; + ///动态令牌序列号 + TSgitFtdcSerialNumberType SerialNumber; + ///令牌密钥 + TSgitFtdcAuthKeyType AuthKey; + ///漂移值 + TSgitFtdcLastDriftType LastDrift; + ///成功值 + TSgitFtdcLastSuccessType LastSuccess; + ///动态令牌类型 + TSgitFtdcOTPTypeType OTPType; +}; + +///手工同步用户动态令牌 +struct CSgitFtdcManualSyncBrokerUserOTPField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///动态令牌类型 + TSgitFtdcOTPTypeType OTPType; + ///第一个动态密码 + TSgitFtdcPasswordType FirstOTP; + ///第二个动态密码 + TSgitFtdcPasswordType SecondOTP; +}; + +///投资者手续费率模板 +struct CSgitFtdcCommRateModelField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; + ///模板名称 + TSgitFtdcCommModelNameType CommModelName; +}; + +///请求查询投资者手续费率模板 +struct CSgitFtdcQryCommRateModelField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///手续费率模板代码 + TSgitFtdcInvestorIDType CommModelID; +}; + +///仓单折抵信息 +struct CSgitFtdcEWarrantOffsetField +{ + ///交易日期 + TSgitFtdcTradeDateType TradingDay; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; + ///买卖方向 + TSgitFtdcDirectionType Direction; + ///投机套保标志 + TSgitFtdcHedgeFlagType HedgeFlag; + ///数量 + TSgitFtdcVolumeType Volume; +}; + +///查询仓单折抵信息 +struct CSgitFtdcQryEWarrantOffsetField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///交易所代码 + TSgitFtdcExchangeIDType ExchangeID; + ///合约代码 + TSgitFtdcInstrumentIDType InstrumentID; +}; + +///转帐开户请求 +struct CSgitFtdcReqOpenAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///转帐销户请求 +struct CSgitFtdcReqCancelAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///变更银行账户请求 +struct CSgitFtdcReqChangeAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///新银行帐号 + TSgitFtdcBankAccountType NewBankAccount; + ///新银行密码 + TSgitFtdcPasswordType NewBankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易ID + TSgitFtdcTIDType TID; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///转账请求 +struct CSgitFtdcReqTransferField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; +}; + +///银行发起银行资金转期货响应 +struct CSgitFtdcRspTransferField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///冲正请求 +struct CSgitFtdcReqRepealField +{ + ///冲正时间间隔 + TSgitFtdcRepealTimeIntervalType RepealTimeInterval; + ///已经冲正次数 + TSgitFtdcRepealedTimesType RepealedTimes; + ///银行冲正标志 + TSgitFtdcBankRepealFlagType BankRepealFlag; + ///期商冲正标志 + TSgitFtdcBrokerRepealFlagType BrokerRepealFlag; + ///被冲正平台流水号 + TSgitFtdcPlateSerialType PlateRepealSerial; + ///被冲正银行流水号 + TSgitFtdcBankSerialType BankRepealSerial; + ///被冲正期货流水号 + TSgitFtdcFutureSerialType FutureRepealSerial; + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; +}; + +///冲正响应 +struct CSgitFtdcRspRepealField +{ + ///冲正时间间隔 + TSgitFtdcRepealTimeIntervalType RepealTimeInterval; + ///已经冲正次数 + TSgitFtdcRepealedTimesType RepealedTimes; + ///银行冲正标志 + TSgitFtdcBankRepealFlagType BankRepealFlag; + ///期商冲正标志 + TSgitFtdcBrokerRepealFlagType BrokerRepealFlag; + ///被冲正平台流水号 + TSgitFtdcPlateSerialType PlateRepealSerial; + ///被冲正银行流水号 + TSgitFtdcBankSerialType BankRepealSerial; + ///被冲正期货流水号 + TSgitFtdcFutureSerialType FutureRepealSerial; + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///期货可取金额 + TSgitFtdcTradeAmountType FutureFetchAmount; + ///费用支付标志 + TSgitFtdcFeePayFlagType FeePayFlag; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///发送方给接收方的消息 + TSgitFtdcAddInfoType Message; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///转账交易状态 + TSgitFtdcTransferStatusType TransferStatus; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询账户信息请求 +struct CSgitFtdcReqQueryAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///查询账户信息响应 +struct CSgitFtdcRspQueryAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///银行可用金额 + TSgitFtdcTradeAmountType BankUseAmount; + ///银行可取金额 + TSgitFtdcTradeAmountType BankFetchAmount; +}; + +///期商签到签退 +struct CSgitFtdcFutureSignIOField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///期商签到响应 +struct CSgitFtdcRspFutureSignInField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; + ///PIN密钥 + TSgitFtdcPasswordKeyType PinKey; + ///MAC密钥 + TSgitFtdcPasswordKeyType MacKey; +}; + +///期商签退请求 +struct CSgitFtdcReqFutureSignOutField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///期商签退响应 +struct CSgitFtdcRspFutureSignOutField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询指定流水号的交易结果请求 +struct CSgitFtdcReqQueryTradeResultBySerialField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///流水号 + TSgitFtdcSerialType Reference; + ///本流水号发布者的机构类型 + TSgitFtdcInstitutionTypeType RefrenceIssureType; + ///本流水号发布者机构编码 + TSgitFtdcOrganCodeType RefrenceIssure; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///查询指定流水号的交易结果响应 +struct CSgitFtdcRspQueryTradeResultBySerialField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; + ///流水号 + TSgitFtdcSerialType Reference; + ///本流水号发布者的机构类型 + TSgitFtdcInstitutionTypeType RefrenceIssureType; + ///本流水号发布者机构编码 + TSgitFtdcOrganCodeType RefrenceIssure; + ///原始返回代码 + TSgitFtdcReturnCodeType OriginReturnCode; + ///原始返回码描述 + TSgitFtdcDescrInfoForReturnCodeType OriginDescrInfoForReturnCode; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///转帐金额 + TSgitFtdcTradeAmountType TradeAmount; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///日终文件就绪请求 +struct CSgitFtdcReqDayEndFileReadyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///文件业务功能 + TSgitFtdcFileBusinessCodeType FileBusinessCode; + ///摘要 + TSgitFtdcDigestType Digest; +}; + +///返回结果 +struct CSgitFtdcReturnResultField +{ + ///返回代码 + TSgitFtdcReturnCodeType ReturnCode; + ///返回码描述 + TSgitFtdcDescrInfoForReturnCodeType DescrInfoForReturnCode; +}; + +///验证期货资金密码 +struct CSgitFtdcVerifyFuturePasswordField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///验证客户信息 +struct CSgitFtdcVerifyCustInfoField +{ + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; +}; + +///验证期货资金密码和客户信息 +struct CSgitFtdcVerifyFuturePasswordAndCustInfoField +{ + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; +}; + +///验证期货资金密码和客户信息 +struct CSgitFtdcDepositResultInformField +{ + ///出入金流水号,该流水号为银期报盘返回的流水号 + TSgitFtdcDepositSeqNoType DepositSeqNo; + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///入金金额 + TSgitFtdcMoneyType Deposit; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///返回代码 + TSgitFtdcReturnCodeType ReturnCode; + ///返回码描述 + TSgitFtdcDescrInfoForReturnCodeType DescrInfoForReturnCode; +}; + +///交易核心向银期报盘发出密钥同步请求 +struct CSgitFtdcReqSyncKeyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///交易核心给银期报盘的消息 + TSgitFtdcAddInfoType Message; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; +}; + +///交易核心向银期报盘发出密钥同步响应 +struct CSgitFtdcRspSyncKeyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///交易核心给银期报盘的消息 + TSgitFtdcAddInfoType Message; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///查询账户信息通知 +struct CSgitFtdcNotifyQueryAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///银行可用金额 + TSgitFtdcTradeAmountType BankUseAmount; + ///银行可取金额 + TSgitFtdcTradeAmountType BankFetchAmount; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///银期转账交易流水表 +struct CSgitFtdcTransferSerialField +{ + ///平台流水号 + TSgitFtdcPlateSerialType PlateSerial; + ///交易发起方日期 + TSgitFtdcTradeDateType TradeDate; + ///交易日期 + TSgitFtdcDateType TradingDay; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///交易代码 + TSgitFtdcTradeCodeType TradeCode; + ///会话编号 + TSgitFtdcSessionIDType SessionID; + ///银行编码 + TSgitFtdcBankIDType BankID; + ///银行分支机构编码 + TSgitFtdcBankBrchIDType BankBranchID; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///期货公司编码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///期货公司帐号类型 + TSgitFtdcFutureAccTypeType FutureAccType; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///投资者代码 + TSgitFtdcInvestorIDType InvestorID; + ///期货公司流水号 + TSgitFtdcFutureSerialType FutureSerial; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///交易金额 + TSgitFtdcTradeAmountType TradeAmount; + ///应收客户费用 + TSgitFtdcCustFeeType CustFee; + ///应收期货公司费用 + TSgitFtdcFutureFeeType BrokerFee; + ///有效标志 + TSgitFtdcAvailabilityFlagType AvailabilityFlag; + ///操作员 + TSgitFtdcOperatorCodeType OperatorCode; + ///新银行帐号 + TSgitFtdcBankAccountType BankNewAccount; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///请求查询转帐流水 +struct CSgitFtdcQryTransferSerialField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///银行编码 + TSgitFtdcBankIDType BankID; +}; + +///期商签到通知 +struct CSgitFtdcNotifyFutureSignInField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; + ///PIN密钥 + TSgitFtdcPasswordKeyType PinKey; + ///MAC密钥 + TSgitFtdcPasswordKeyType MacKey; +}; + +///期商签退通知 +struct CSgitFtdcNotifyFutureSignOutField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///摘要 + TSgitFtdcDigestType Digest; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///交易核心向银期报盘发出密钥同步处理结果的通知 +struct CSgitFtdcNotifySyncKeyField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///用户标识 + TSgitFtdcUserIDType UserID; + ///交易核心给银期报盘的消息 + TSgitFtdcAddInfoType Message; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///请求编号 + TSgitFtdcRequestIDType RequestID; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///请求查询银期签约关系 +struct CSgitFtdcQryAccountregisterField +{ + ///经纪公司代码 + TSgitFtdcBrokerIDType BrokerID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///银行编码 + TSgitFtdcBankIDType BankID; +}; + +///客户开销户信息表 +struct CSgitFtdcAccountregisterField +{ + ///交易日期 + TSgitFtdcTradeDateType TradeDay; + ///银行编码 + TSgitFtdcBankIDType BankID; + ///银行分支机构编码 + TSgitFtdcBankBrchIDType BankBranchID; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///期货公司编码 + TSgitFtdcBrokerIDType BrokerID; + ///期货公司分支机构编码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///开销户类别 + TSgitFtdcOpenOrDestroyType OpenOrDestroy; + ///签约日期 + TSgitFtdcTradeDateType RegDate; + ///解约日期 + TSgitFtdcTradeDateType OutDate; + ///交易ID + TSgitFtdcTIDType TID; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; +}; + +///银期开户信息 +struct CSgitFtdcOpenAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///银期销户信息 +struct CSgitFtdcCancelAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///汇钞标志 + TSgitFtdcCashExchangeCodeType CashExchangeCode; + ///摘要 + TSgitFtdcDigestType Digest; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///渠道标志 + TSgitFtdcDeviceIDType DeviceID; + ///期货单位帐号类型 + TSgitFtdcBankAccTypeType BankSecuAccType; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///期货单位帐号 + TSgitFtdcBankAccountType BankSecuAcc; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易柜员 + TSgitFtdcOperNoType OperNo; + ///交易ID + TSgitFtdcTIDType TID; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///银期变更银行账号信息 +struct CSgitFtdcChangeAccountField +{ + ///业务功能码 + TSgitFtdcTradeCodeType TradeCode; + ///银行代码 + TSgitFtdcBankIDType BankID; + ///银行分支机构代码 + TSgitFtdcBankBrchIDType BankBranchID; + ///期商代码 + TSgitFtdcBrokerIDType BrokerID; + ///期商分支机构代码 + TSgitFtdcFutureBranchIDType BrokerBranchID; + ///交易日期 + TSgitFtdcTradeDateType TradeDate; + ///交易时间 + TSgitFtdcTradeTimeType TradeTime; + ///银行流水号 + TSgitFtdcBankSerialType BankSerial; + ///交易系统日期 + TSgitFtdcTradeDateType TradingDay; + ///银期平台消息流水号 + TSgitFtdcSerialType PlateSerial; + ///最后分片标志 + TSgitFtdcLastFragmentType LastFragment; + ///会话号 + TSgitFtdcSessionIDType SessionID; + ///客户姓名 + TSgitFtdcIndividualNameType CustomerName; + ///证件类型 + TSgitFtdcIdCardTypeType IdCardType; + ///证件号码 + TSgitFtdcIdentifiedCardNoType IdentifiedCardNo; + ///性别 + TSgitFtdcGenderType Gender; + ///国家代码 + TSgitFtdcCountryCodeType CountryCode; + ///客户类型 + TSgitFtdcCustTypeType CustType; + ///地址 + TSgitFtdcAddressType Address; + ///邮编 + TSgitFtdcZipCodeType ZipCode; + ///电话号码 + TSgitFtdcTelephoneType Telephone; + ///手机 + TSgitFtdcMobilePhoneType MobilePhone; + ///传真 + TSgitFtdcFaxType Fax; + ///电子邮件 + TSgitFtdcEMailType EMail; + ///资金账户状态 + TSgitFtdcMoneyAccountStatusType MoneyAccountStatus; + ///银行帐号 + TSgitFtdcBankAccountType BankAccount; + ///银行密码 + TSgitFtdcPasswordType BankPassWord; + ///新银行帐号 + TSgitFtdcBankAccountType NewBankAccount; + ///新银行密码 + TSgitFtdcPasswordType NewBankPassWord; + ///投资者帐号 + TSgitFtdcAccountIDType AccountID; + ///期货密码 + TSgitFtdcPasswordType Password; + ///银行帐号类型 + TSgitFtdcBankAccTypeType BankAccType; + ///安装编号 + TSgitFtdcInstallIDType InstallID; + ///验证客户证件号码标志 + TSgitFtdcYesNoIndicatorType VerifyCertNoFlag; + ///币种代码 + TSgitFtdcCurrencyIDType CurrencyID; + ///期货公司银行编码 + TSgitFtdcBankCodingForFutureType BrokerIDByBank; + ///银行密码标志 + TSgitFtdcPwdFlagType BankPwdFlag; + ///期货资金密码核对标志 + TSgitFtdcPwdFlagType SecuPwdFlag; + ///交易ID + TSgitFtdcTIDType TID; + ///摘要 + TSgitFtdcDigestType Digest; + ///错误代码 + TSgitFtdcErrorIDType ErrorID; + ///错误信息 + TSgitFtdcErrorMsgType ErrorMsg; +}; + +///灾备中心交易权限 +struct CSgitFtdcUserRightsAssignField +{ + ///应用单元代码 + TSgitFtdcBrokerIDType BrokerID; + ///用户代码 + TSgitFtdcUserIDType UserID; + ///交易中心代码 + TSgitFtdcDRIdentityIDType DRIdentityID; +}; + +///经济公司是否有在本标示的交易权限 +struct CSgitFtdcBrokerUserRightAssignField +{ + ///应用单元代码 + TSgitFtdcBrokerIDType BrokerID; + ///交易中心代码 + TSgitFtdcDRIdentityIDType DRIdentityID; + ///能否交易 + TSgitFtdcBoolType Tradeable; +}; + +///灾备交易转换报文 +struct CSgitFtdcDRTransferField +{ + ///原交易中心代码 + TSgitFtdcDRIdentityIDType OrigDRIdentityID; + ///目标交易中心代码 + TSgitFtdcDRIdentityIDType DestDRIdentityID; + ///原应用单元代码 + TSgitFtdcBrokerIDType OrigBrokerID; + ///目标易用单元代码 + TSgitFtdcBrokerIDType DestBrokerID; +}; + +//合约价位查询域 +struct CSgitMBLQuotReq +{ + TSgitFtdcInstrumentIDType StartContractID; //起始合约号 + TSgitFtdcInstrumentIDType EndContractID; //结束合约号 + TSgitFtdcDirectionType BsFlag; //买卖标志 +}; + +//合约价位域 +struct CSgitMBLQuotData +{ + TSgitFtdcInstrumentIDType ContractID; //合约号 + TSgitFtdcDirectionType BsFlag; //买卖标志 + TSgitFtdcPriceType Price; //价格 + TSgitFtdcVolumeType Qty; //数量 +}; + +//订阅合约行情行情 +struct CSgitSubQuotField +{ + TSgitFtdcInstrumentIDType ContractID; //合约号 +}; + +#endif diff --git a/vn.sgit/sgitapi/libsgitquotapi.so.64 b/vn.sgit/sgitapi/libsgitquotapi.so.64 new file mode 100644 index 0000000000000000000000000000000000000000..229b03756a4f8da777d116c4eab37bf76892c2d0 GIT binary patch literal 436035 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 A_=~O%kaU5TJUgo8U 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℘C}jXR|R~TehkqN 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%0DhY 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 z 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

+6AqVM$!h1*kH^^BpO+ciCW|Gua43h}F+81>wt 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�IHOcr`K6bp2NSy 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 T+r#JH_2y}IvQ=P|8YKJ+;iYDW literal 0 HcmV?d00001 diff --git a/vn.sgit/sgitapi/sgitquotapi.dll b/vn.sgit/sgitapi/sgitquotapi.dll new file mode 100644 index 0000000000000000000000000000000000000000..3bab121701ea8908ce78ba3f7b656e3660c1edd8 GIT binary patch literal 295011 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 BPr3jA literal 0 HcmV?d00001 diff --git a/vn.sgit/sgitapi/sgitquotapi.lib b/vn.sgit/sgitapi/sgitquotapi.lib new file mode 100644 index 0000000000000000000000000000000000000000..90892edd7007572f5769ec65847aa12b6e1b1e4d GIT binary patch literal 3432 zcmcIn%TE(Q82@b_RN6*~8gGV@a6k{xmUfGY(%tfi4FzgjiQ%%AEU70TI@H}C!r z9zAg~ocsegc;G-hcp#j;<2SoI?RMM;Yh;pne2kpSHmKY|dJ}jRUv~L{5O%88Axggl_ia77)L(`X0^H6BlMro&(8qO)IZf*J}-J zajCvgD_0xqHSK7p-FtuB={37;XxiHAO66}Re6VquJdKyH*H*MewV|R|%q-ODl;xh@ zTGiEVTT#mDlJaJg&TAiZHGjHR5D$<`3Z0u4(XWQjb)&oNR7)FaMH#5&xScZ@CvZmP z@ni~6555V-1vwXvMGcfdo)vDZ{%L)Gf5z{=D%kF;iWJ7j-On4pB~ab~KLIHrjnK-Y zjS($Gx10w{*q{+3<7I;}_a~2?w@;eZx3`XWChJ_%GA;JWetT0eR+?_>&0cdd%kd9s z@s;?#TfEFh1?f|ZPv(5g)L%9}hF6d}C70n5)go*6grH5~!59@d)v4K71TM$#ueMu< zoukgXUTUiLBvmP|tyuKoiOS#D$xbli5;GhgB`5|#6qHuypi4?$jz@5P&1LdvGA%>k zwkv?4_b$g6Rx&Na9Ft=_gg~DsKfo~jBpa;8P6u9C5Sv2Sr15sXeS+n_m66To`}b}| z3K^C0&Cro)3dt#Rbb~Y)Y?(95u`F}GaKM^b=GCf#IF-1-Sff@>|2?;HpO0; ztY#|`yR~NwJ0pJIb|I7qEsF8?-h#f8 z3mIpdSy6`#$-eIZQH9`s=f4<&-=|222%_Y7=O>0JSb%+PpL6m0JjsnR+XFpb1nKw# DaYgZ5 literal 0 HcmV?d00001 diff --git a/vn.sgit/sgitapi/sgittradeapi.dll b/vn.sgit/sgitapi/sgittradeapi.dll new file mode 100644 index 0000000000000000000000000000000000000000..7c2faad881737d2b2a2563459ad64a71ef9ed870 GIT binary patch literal 208896 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 RnD`v6M<@zo-Gl6Y{RWM*{7nD= literal 0 HcmV?d00001 diff --git a/vn.sgit/vnsgitmd/vnsgitmd/ReadMe.txt b/vn.sgit/vnsgitmd/vnsgitmd/ReadMe.txt new file mode 100644 index 00000000..4cb43d72 --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/ReadMe.txt @@ -0,0 +1,48 @@ +======================================================================== + DYNAMIC LINK LIBRARY : vnsgittd Project Overview +======================================================================== + +AppWizard has created this vnsgittd DLL for you. + +This file contains a summary of what you will find in each of the files that +make up your vnsgittd application. + + +vnsgittd.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +vnsgittd.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +vnsgittd.cpp + This is the main DLL source file. + + When created, this DLL does not export any symbols. As a result, it + will not produce a .lib file when it is built. If you wish this project + to be a project dependency of some other project, you will either need to + add code to export some symbols from the DLL so that an export library + will be produced, or you can set the Ignore Input Library property to Yes + on the General propert page of the Linker folder in the project's Property + Pages dialog box. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named vnsgittd.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/vn.sgit/vnsgitmd/vnsgitmd/dllmain.cpp b/vn.sgit/vnsgitmd/vnsgitmd/dllmain.cpp new file mode 100644 index 00000000..69b58914 --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include "stdafx.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/vn.sgit/vnsgitmd/vnsgitmd/stdafx.cpp b/vn.sgit/vnsgitmd/vnsgitmd/stdafx.cpp new file mode 100644 index 00000000..b2d963fe --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// vnsgittd.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/vn.sgit/vnsgitmd/vnsgitmd/stdafx.h b/vn.sgit/vnsgitmd/vnsgitmd/stdafx.h new file mode 100644 index 00000000..f3a07375 --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/stdafx.h @@ -0,0 +1,16 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files: +#include + + + +// TODO: reference additional headers your program requires here diff --git a/vn.sgit/vnsgitmd/vnsgitmd/targetver.h b/vn.sgit/vnsgitmd/vnsgitmd/targetver.h new file mode 100644 index 00000000..87c0086d --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.cpp b/vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.cpp new file mode 100644 index 00000000..e1d7457e --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.cpp @@ -0,0 +1,564 @@ +// MdApi.cpp : 定义 DLL 应用程序的导出函数。 +// + +#include "stdafx.h" +#include "vnsgitmd.h" + + + +///------------------------------------------------------------------------------------- +///从Python对象到C++类型转换用的函数 +///------------------------------------------------------------------------------------- + +void getInt(dict d, string key, int *value) +{ + if (d.has_key(key)) //检查字典中是否存在该键值 + { + object o = d[key]; //获取该键值 + extract x(o); //创建提取器 + if (x.check()) //如果可以提取 + { + *value = x(); //对目标整数指针赋值 + } + } +}; + +void getLong(dict d, string key, long *value) +{ + if (d.has_key(key)) //检查字典中是否存在该键值 + { + object o = d[key]; //获取该键值 + extract x(o); //创建提取器 + if (x.check()) //如果可以提取 + { + *value = x(); //对目标整数指针赋值 + } + } +}; + +void getShort(dict d, string key, short *value) +{ + if (d.has_key(key)) //检查字典中是否存在该键值 + { + object o = d[key]; //获取该键值 + extract x(o); //创建提取器 + if (x.check()) //如果可以提取 + { + *value = x(); //对目标整数指针赋值 + } + } +}; + +void getDouble(dict d, string key, double *value) +{ + if (d.has_key(key)) + { + object o = d[key]; + extract x(o); + if (x.check()) + { + *value = x(); + } + } +}; + +void getChar(dict d, string key, char *value) +{ + if (d.has_key(key)) + { + object o = d[key]; + extract x(o); + if (x.check()) + { + string s = x(); + const char *buffer = s.c_str(); + *value = *buffer; + } + } +}; + +void getString(dict d, string key, char *value) +{ + if (d.has_key(key)) + { + object o = d[key]; + extract x(o); + if (x.check()) + { + string s = x(); + const char *buffer = s.c_str(); + //对字符串指针赋值必须使用strcpy_s, vs2013使用strcpy编译通不过 + //+1应该是因为C++字符串的结尾符号?不是特别确定,不加这个1会出错 + strcpy_s(value, strlen(buffer) + 1, buffer); + } + } +}; + + + +///------------------------------------------------------------------------------------- +///C++的回调函数将数据保存到队列中 +///------------------------------------------------------------------------------------- + +void MdApi::OnFrontConnected() +{ + Task task = Task(); + task.task_name = ONFRONTCONNECTED; + this->task_queue.push(task); +}; + +void MdApi::OnFrontDisconnected(char *pErrMsg) +{ + Task task = Task(); + task.task_name = ONFRONTDISCONNECTED; + + if (pErrMsg) + { + task.task_data = *pErrMsg; + } + else + { + char empty_data = char(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void MdApi::OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGIN; + + if (pRspUserLogin) + { + task.task_data = *pRspUserLogin; + } + else + { + CSgitFtdcRspUserLoginField empty_data = CSgitFtdcRspUserLoginField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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::OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGOUT; + + if (pUserLogout) + { + task.task_data = *pUserLogout; + } + else + { + CSgitFtdcUserLogoutField empty_data = CSgitFtdcUserLogoutField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcDepthMarketDataField *pDepthMarketData) +{ + Task task = Task(); + task.task_name = ONRTNDEPTHMARKETDATA; + + if (pDepthMarketData) + { + task.task_data = *pDepthMarketData; + } + else + { + CSgitFtdcDepthMarketDataField empty_data = CSgitFtdcDepthMarketDataField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + + +///------------------------------------------------------------------------------------- +///工作线程从队列中取出数据,转化为python对象后,进行推送 +///------------------------------------------------------------------------------------- + +void MdApi::processTask() +{ + while (1) + { + Task task = this->task_queue.wait_and_pop(); + + switch (task.task_name) + { + case ONFRONTCONNECTED: + { + this->processFrontConnected(task); + break; + } + + case ONFRONTDISCONNECTED: + { + this->processFrontDisconnected(task); + break; + } + + case ONRSPUSERLOGIN: + { + this->processRspUserLogin(task); + break; + } + + case ONRSPUSERLOGOUT: + { + this->processRspUserLogout(task); + break; + } + + case ONRTNDEPTHMARKETDATA: + { + this->processRtnDepthMarketData(task); + break; + } + }; + } +}; + +void MdApi::processFrontConnected(Task task) +{ + PyLock lock; + this->onFrontConnected(); +}; + +void MdApi::processFrontDisconnected(Task task) +{ + PyLock lock; + string msg = any_cast(task.task_data); + this->onFrontDisconnected(msg); +}; + +void MdApi::processRspUserLogin(Task task) +{ + PyLock lock; + CSgitFtdcRspUserLoginField task_data = any_cast(task.task_data); + dict data; + data["CZCETime"] = task_data.CZCETime; + data["SHFETime"] = task_data.SHFETime; + data["MaxOrderRef"] = task_data.MaxOrderRef; + data["UserID"] = task_data.UserID; + data["TradingDay"] = task_data.TradingDay; + data["SessionID"] = task_data.SessionID; + data["SystemName"] = task_data.SystemName; + data["FrontID"] = task_data.FrontID; + data["FFEXTime"] = task_data.FFEXTime; + data["BrokerID"] = task_data.BrokerID; + data["DCETime"] = task_data.DCETime; + data["LoginTime"] = task_data.LoginTime; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogin(data, error, task.task_id, task.task_last); +}; + +void MdApi::processRspUserLogout(Task task) +{ + PyLock lock; + CSgitFtdcUserLogoutField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["BrokerID"] = task_data.BrokerID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogout(data, error, task.task_id, task.task_last); +}; + +void MdApi::processRtnDepthMarketData(Task task) +{ + PyLock lock; + CSgitFtdcDepthMarketDataField 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["PreClosePrice"] = task_data.PreClosePrice; + data["AskPrice1"] = task_data.AskPrice1; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["AskVolume1"] = task_data.AskVolume1; + data["UpdateTime"] = task_data.UpdateTime; + data["UpdateMillisec"] = task_data.UpdateMillisec; + data["AveragePrice"] = task_data.AveragePrice; + data["BidVolume5"] = task_data.BidVolume5; + data["BidVolume4"] = task_data.BidVolume4; + data["BidVolume3"] = task_data.BidVolume3; + data["BidVolume2"] = task_data.BidVolume2; + data["PreOpenInterest"] = task_data.PreOpenInterest; + data["AskPrice2"] = task_data.AskPrice2; + data["Volume"] = task_data.Volume; + data["AskVolume3"] = task_data.AskVolume3; + data["AskVolume2"] = task_data.AskVolume2; + data["AskVolume5"] = task_data.AskVolume5; + data["AskVolume4"] = task_data.AskVolume4; + data["UpperLimitPrice"] = task_data.UpperLimitPrice; + data["BidVolume1"] = task_data.BidVolume1; + data["InstrumentID"] = task_data.InstrumentID; + data["ClosePrice"] = task_data.ClosePrice; + data["ExchangeID"] = task_data.ExchangeID; + data["TradingDay"] = task_data.TradingDay; + data["PreDelta"] = task_data.PreDelta; + data["OpenInterest"] = task_data.OpenInterest; + data["CurrDelta"] = task_data.CurrDelta; + data["Turnover"] = task_data.Turnover; + data["LastPrice"] = task_data.LastPrice; + data["SettlementPrice"] = task_data.SettlementPrice; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["LowestPrice"] = task_data.LowestPrice; + + this->onRtnDepthMarketData(data); +}; + + +///------------------------------------------------------------------------------------- +///主动函数 +///------------------------------------------------------------------------------------- + +void MdApi::createFtdcMdApi(string pszFlowPath) +{ + //该函数为手动编写 + this->api = CSgitFtdcMdApi::CreateFtdcMdApi(pszFlowPath.c_str()); + this->api->RegisterSpi(this); +}; + +void MdApi::release() +{ + //该函数为手动编写 + this->api->Release(); +}; + +void MdApi::init(bool isLogged) +{ + //该函数为手动编写 + this->api->Init(isLogged); +}; + +int MdApi::exit() +{ + //该函数为手动编写 + this->api->Release(); + this->api = NULL; + return 1; +}; + +int MdApi::join() +{ + int i = this->api->Join(); + return i; +} + +string MdApi::getTradingDay() +{ + //该函数为手动编写 + string day = this->api->GetTradingDay(); + return day; +}; + +void MdApi::registerFront(string pszFrontAddress) +{ + //该函数为手动编写 + this->api->RegisterFront((char*)pszFrontAddress.c_str()); +}; + +void MdApi::setMultiCastAddr(string address) +{ + //该函数为手动编写 + this->api->SetMultiCastAddr((char*)address.c_str()); +}; + +void MdApi::subscribeMarketTopic(int nType) +{ + //该函数为手动编写 + Sgit_TE_RESUME_TYPE type = Sgit_TE_RESUME_TYPE(nType); + this->api->SubscribeMarketTopic(type); +}; + +int MdApi::ready() +{ + //该函数为手动编写 + int i = this->api->Ready(); + return i; +} + +int MdApi::subQuot(dict req) +{ + CSgitSubQuotField myreq = CSgitSubQuotField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "ContractID", myreq.ContractID); + int i = this->api->SubQuot(&myreq); + return i; +}; + +int MdApi::reqUserLogin(dict req, int nRequestID) +{ + CSgitFtdcReqUserLoginField myreq = CSgitFtdcReqUserLoginField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "MacAddress", myreq.MacAddress); + getString(req, "UserProductInfo", myreq.UserProductInfo); + getString(req, "UserID", myreq.UserID); + getString(req, "TradingDay", myreq.TradingDay); + getString(req, "InterfaceProductInfo", myreq.InterfaceProductInfo); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "ClientIPAddress", myreq.ClientIPAddress); + getString(req, "OneTimePassword", myreq.OneTimePassword); + getString(req, "ProtocolInfo", myreq.ProtocolInfo); + getString(req, "Password", myreq.Password); + int i = this->api->ReqUserLogin(&myreq, nRequestID); + return i; +}; + +int MdApi::reqUserLogout(dict req, int nRequestID) +{ + CSgitFtdcUserLogoutField myreq = CSgitFtdcUserLogoutField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "UserID", myreq.UserID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqUserLogout(&myreq, nRequestID); + return i; +}; + + +///------------------------------------------------------------------------------------- +///Boost.Python封装 +///------------------------------------------------------------------------------------- + +struct MdApiWrap : MdApi, wrapper < MdApi > +{ + virtual void onFrontConnected() + { + //以下的try...catch...可以实现捕捉python环境中错误的功能,防止C++直接出现原因未知的崩溃 + try + { + this->get_override("onFrontConnected")(); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onFrontDisconnected(string msg) + { + try + { + this->get_override("onFrontDisconnected")(msg); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspUserLogin(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspUserLogin")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspUserLogout(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspUserLogout")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRtnDepthMarketData(dict data) + { + try + { + this->get_override("onRtnDepthMarketData")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; +}; + + +BOOST_PYTHON_MODULE(vnsgitmd) +{ + PyEval_InitThreads(); //导入时运行,保证先创建GIL + + class_("MdApi") + .def("createFtdcMdApi", &MdApiWrap::createFtdcMdApi) + .def("release", &MdApiWrap::release) + .def("init", &MdApiWrap::init) + .def("join", &MdApiWrap::join) + .def("exit", &MdApiWrap::exit) + .def("getTradingDay", &MdApiWrap::getTradingDay) + .def("registerFront", &MdApiWrap::registerFront) + .def("setMultiCastAddr", &MdApiWrap::setMultiCastAddr) + .def("subscribeMarketTopic", &MdApiWrap::subscribeMarketTopic) + .def("subQuot", &MdApiWrap::subQuot) + .def("ready", &MdApiWrap::ready) + .def("reqUserLogin", &MdApiWrap::reqUserLogin) + .def("reqUserLogout", &MdApiWrap::reqUserLogout) + + .def("onFrontConnected", pure_virtual(&MdApiWrap::onFrontConnected)) + .def("onFrontDisconnected", pure_virtual(&MdApiWrap::onFrontDisconnected)) + .def("onRspUserLogin", pure_virtual(&MdApiWrap::onRspUserLogin)) + .def("onRspUserLogout", pure_virtual(&MdApiWrap::onRspUserLogout)) + .def("onRtnDepthMarketData", pure_virtual(&MdApiWrap::onRtnDepthMarketData)) + ; +}; \ No newline at end of file diff --git a/vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.h b/vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.h new file mode 100644 index 00000000..3df4d8c3 --- /dev/null +++ b/vn.sgit/vnsgitmd/vnsgitmd/vnsgitmd.h @@ -0,0 +1,248 @@ +//说明部分 + +//系统 +#include "stdafx.h" +#include +#include + +//Boost +#define BOOST_PYTHON_STATIC_LIB +#include //python封装 +#include //python封装 +#include //python封装 +#include //python封装 +#include //python封装 +#include //任务队列的线程功能 +#include //任务队列的线程功能 +#include //任务队列的任务实现 + +//API +#include "SgitFtdcMdApi.h" + +//命名空间 +using namespace std; +using namespace boost::python; +using namespace boost; + +//常量 +#define ONFRONTCONNECTED 1 +#define ONFRONTDISCONNECTED 2 +#define ONRSPUSERLOGIN 3 +#define ONRSPUSERLOGOUT 4 +#define ONRTNDEPTHMARKETDATA 5 + + +///------------------------------------------------------------------------------------- +///API中的部分组件 +///------------------------------------------------------------------------------------- + +//GIL全局锁简化获取用, +//用于帮助C++线程获得GIL锁,从而防止python崩溃 +class PyLock +{ +private: + PyGILState_STATE gil_state; + +public: + //在某个函数方法中创建该对象时,获得GIL锁 + PyLock() + { + gil_state = PyGILState_Ensure(); + } + + //在某个函数完成后销毁该对象时,解放GIL锁 + ~PyLock() + { + PyGILState_Release(gil_state); + } +}; + + +//任务结构体 +struct Task +{ + int task_name; //回调函数名称对应的常量 + any task_data; //数据结构体 + any task_error; //错误结构体 + int task_id; //请求id + bool task_last; //是否为最后返回 +}; + + +///线程安全的队列 +template + +class ConcurrentQueue +{ +private: + queue the_queue; //标准库队列 + mutable mutex the_mutex; //boost互斥锁 + condition_variable the_condition_variable; //boost条件变量 + +public: + + //存入新的任务 + void push(Data const& data) + { + mutex::scoped_lock lock(the_mutex); //获取互斥锁 + the_queue.push(data); //向队列中存入数据 + lock.unlock(); //释放锁 + the_condition_variable.notify_one(); //通知正在阻塞等待的线程 + } + + //检查队列是否为空 + bool empty() const + { + mutex::scoped_lock lock(the_mutex); + return the_queue.empty(); + } + + //取出 + Data wait_and_pop() + { + mutex::scoped_lock lock(the_mutex); + + while (the_queue.empty()) //当队列为空时 + { + the_condition_variable.wait(lock); //等待条件变量通知 + } + + Data popped_value = the_queue.front(); //获取队列中的最后一个任务 + the_queue.pop(); //删除该任务 + return popped_value; //返回该任务 + } + +}; + + +//从字典中获取某个建值对应的整数,并赋值到请求结构体对象的值上 +void getInt(dict d, string key, int* value); + +//从字典中获取某个建值对应的长整数,并赋值到请求结构体对象的值上 +void getLong(dict d, string key, long* value); + +//从字典中获取某个建值对应的短整数,并赋值到请求结构体对象的值上 +void getShort(dict d, string key, short* value); + + +//从字典中获取某个建值对应的浮点数,并赋值到请求结构体对象的值上 +void getDouble(dict d, string key, double* value); + + +//从字典中获取某个建值对应的单字符,并赋值到请求结构体对象的值上 +void getChar(dict d, string key, char* value); + + +//从字典中获取某个建值对应的字符串,并赋值到请求结构体对象的值上 +void getString(dict d, string key, char* value); + + +///------------------------------------------------------------------------------------- +///C++ SPI的回调函数方法实现 +///------------------------------------------------------------------------------------- + +//API的继承实现 +class MdApi : public CSgitFtdcMdSpi +{ +private: + CSgitFtdcMdApi* api; //API对象 + thread *task_thread; //工作线程指针(向python中推送数据) + ConcurrentQueue task_queue; //任务队列 + +public: + MdApi() + { + function0 f = boost::bind(&MdApi::processTask, this); + thread t(f); + this->task_thread = &t; + }; + + ~MdApi() + { + }; + + //------------------------------------------------------------------------------------- + //API回调函数 + //------------------------------------------------------------------------------------- + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 + virtual void OnFrontConnected(); + + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 + ///@param pErrMsg 错误原因 + virtual void OnFrontDisconnected(char *pErrMsg); + + ///登录请求响应 + virtual void OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///登出请求响应 + virtual void OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///深度行情通知 + virtual void OnRtnDepthMarketData(CSgitFtdcDepthMarketDataField *pDepthMarketData) ; + + //------------------------------------------------------------------------------------- + //task:任务 + //------------------------------------------------------------------------------------- + + void processTask(); + + void processFrontConnected(Task task); + + void processFrontDisconnected(Task task); + + void processRspUserLogin(Task task); + + void processRspUserLogout(Task task); + + void processRtnDepthMarketData(Task task); + + //------------------------------------------------------------------------------------- + //data:回调函数的数据字典 + //error:回调函数的错误字典 + //id:请求id + //last:是否为最后返回 + //i:整数 + //------------------------------------------------------------------------------------- + + virtual void onFrontConnected(){}; + + virtual void onFrontDisconnected(string msg) {}; + + virtual void onRspUserLogin(dict data, dict error, int id, bool last) {}; + + virtual void onRspUserLogout(dict data, dict error, int id, bool last) {}; + + virtual void onRtnDepthMarketData(dict data) {}; + + + //------------------------------------------------------------------------------------- + //req:主动函数的请求字典 + //------------------------------------------------------------------------------------- + + void createFtdcMdApi(string pszFlowPath); + + void release(); + + void init(bool isLogged); + + int join(); + + int exit(); + + string getTradingDay(); + + void registerFront(string pszFrontAddress); + + void setMultiCastAddr(string address); + + void subscribeMarketTopic(int type); + + int subQuot(dict req); + + int ready(); + + int reqUserLogin(dict req, int nRequestID); + + int reqUserLogout(dict req, int nRequestID); + +}; diff --git a/vn.sgit/vnsgittd/vnsgittd/ReadMe.txt b/vn.sgit/vnsgittd/vnsgittd/ReadMe.txt new file mode 100644 index 00000000..4cb43d72 --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/ReadMe.txt @@ -0,0 +1,48 @@ +======================================================================== + DYNAMIC LINK LIBRARY : vnsgittd Project Overview +======================================================================== + +AppWizard has created this vnsgittd DLL for you. + +This file contains a summary of what you will find in each of the files that +make up your vnsgittd application. + + +vnsgittd.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +vnsgittd.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +vnsgittd.cpp + This is the main DLL source file. + + When created, this DLL does not export any symbols. As a result, it + will not produce a .lib file when it is built. If you wish this project + to be a project dependency of some other project, you will either need to + add code to export some symbols from the DLL so that an export library + will be produced, or you can set the Ignore Input Library property to Yes + on the General propert page of the Linker folder in the project's Property + Pages dialog box. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named vnsgittd.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/vn.sgit/vnsgittd/vnsgittd/dllmain.cpp b/vn.sgit/vnsgittd/vnsgittd/dllmain.cpp new file mode 100644 index 00000000..69b58914 --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include "stdafx.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/vn.sgit/vnsgittd/vnsgittd/stdafx.cpp b/vn.sgit/vnsgittd/vnsgittd/stdafx.cpp new file mode 100644 index 00000000..b2d963fe --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// vnsgittd.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/vn.sgit/vnsgittd/vnsgittd/stdafx.h b/vn.sgit/vnsgittd/vnsgittd/stdafx.h new file mode 100644 index 00000000..f3a07375 --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/stdafx.h @@ -0,0 +1,16 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files: +#include + + + +// TODO: reference additional headers your program requires here diff --git a/vn.sgit/vnsgittd/vnsgittd/targetver.h b/vn.sgit/vnsgittd/vnsgittd/targetver.h new file mode 100644 index 00000000..87c0086d --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/vn.sgit/vnsgittd/vnsgittd/vnsgittd.cpp b/vn.sgit/vnsgittd/vnsgittd/vnsgittd.cpp new file mode 100644 index 00000000..7c6bfbad --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/vnsgittd.cpp @@ -0,0 +1,1673 @@ +// TdApi.cpp : 定义 DLL 应用程序的导出函数。 +// + +#include "stdafx.h" +#include "vnsgittd.h" + + + +///------------------------------------------------------------------------------------- +///从Python对象到C++类型转换用的函数 +///------------------------------------------------------------------------------------- + +void getInt(dict d, string key, int *value) +{ + if (d.has_key(key)) //检查字典中是否存在该键值 + { + object o = d[key]; //获取该键值 + extract x(o); //创建提取器 + if (x.check()) //如果可以提取 + { + *value = x(); //对目标整数指针赋值 + } + } +}; + +void getLong(dict d, string key, long *value) +{ + if (d.has_key(key)) //检查字典中是否存在该键值 + { + object o = d[key]; //获取该键值 + extract x(o); //创建提取器 + if (x.check()) //如果可以提取 + { + *value = x(); //对目标整数指针赋值 + } + } +}; + +void getShort(dict d, string key, short *value) +{ + if (d.has_key(key)) //检查字典中是否存在该键值 + { + object o = d[key]; //获取该键值 + extract x(o); //创建提取器 + if (x.check()) //如果可以提取 + { + *value = x(); //对目标整数指针赋值 + } + } +}; + +void getDouble(dict d, string key, double *value) +{ + if (d.has_key(key)) + { + object o = d[key]; + extract x(o); + if (x.check()) + { + *value = x(); + } + } +}; + +void getChar(dict d, string key, char *value) +{ + if (d.has_key(key)) + { + object o = d[key]; + extract x(o); + if (x.check()) + { + string s = x(); + const char *buffer = s.c_str(); + *value = *buffer; + } + } +}; + +void getString(dict d, string key, char *value) +{ + if (d.has_key(key)) + { + object o = d[key]; + extract x(o); + if (x.check()) + { + string s = x(); + const char *buffer = s.c_str(); + //对字符串指针赋值必须使用strcpy_s, vs2013使用strcpy编译通不过 + //+1应该是因为C++字符串的结尾符号?不是特别确定,不加这个1会出错 + strcpy_s(value, strlen(buffer) + 1, buffer); + } + } +}; + + + +///------------------------------------------------------------------------------------- +///C++的回调函数将数据保存到队列中 +///------------------------------------------------------------------------------------- + +void TdApi::OnFrontConnected() +{ + Task task = Task(); + task.task_name = ONFRONTCONNECTED; + this->task_queue.push(task); +}; + +void TdApi::OnFrontDisconnected(char *pErrMsg) +{ + Task task = Task(); + task.task_name = ONFRONTDISCONNECTED; + + if (pErrMsg) + { + task.task_data = *pErrMsg; + } + else + { + char empty_data = char(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGIN; + + if (pRspUserLogin) + { + task.task_data = *pRspUserLogin; + } + else + { + CSgitFtdcRspUserLoginField empty_data = CSgitFtdcRspUserLoginField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERLOGOUT; + + if (pUserLogout) + { + task.task_data = *pUserLogout; + } + else + { + CSgitFtdcUserLogoutField empty_data = CSgitFtdcUserLogoutField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPUSERPASSWORDUPDATE; + + if (pUserPasswordUpdate) + { + task.task_data = *pUserPasswordUpdate; + } + else + { + CSgitFtdcUserPasswordUpdateField empty_data = CSgitFtdcUserPasswordUpdateField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspOrderInsert(CSgitFtdcInputOrderField *pInputOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPORDERINSERT; + + if (pInputOrder) + { + task.task_data = *pInputOrder; + } + else + { + CSgitFtdcInputOrderField empty_data = CSgitFtdcInputOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPORDERACTION; + + if (pInputOrderAction) + { + task.task_data = *pInputOrderAction; + } + else + { + CSgitFtdcInputOrderActionField empty_data = CSgitFtdcInputOrderActionField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspQryOrder(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYORDER; + + if (pOrder) + { + task.task_data = *pOrder; + } + else + { + CSgitFtdcOrderField empty_data = CSgitFtdcOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspQryTradingAccount(CSgitFtdcTradingAccountField *pTradingAccount, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYTRADINGACCOUNT; + + if (pTradingAccount) + { + task.task_data = *pTradingAccount; + } + else + { + CSgitFtdcTradingAccountField empty_data = CSgitFtdcTradingAccountField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + task.task_id = nRequestID; + task.task_last = bIsLast; + this->task_queue.push(task); +}; + +void TdApi::OnRspQryInvestor(CSgitFtdcInvestorField *pInvestor, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTOR; + + if (pInvestor) + { + task.task_data = *pInvestor; + } + else + { + CSgitFtdcInvestorField empty_data = CSgitFtdcInvestorField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcInstrumentField *pInstrument, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINSTRUMENT; + + if (pInstrument) + { + task.task_data = *pInstrument; + } + else + { + CSgitFtdcInstrumentField empty_data = CSgitFtdcInstrumentField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo) +{ + Task task = Task(); + task.task_name = ONRTNORDER; + + if (pOrder) + { + task.task_data = *pOrder; + } + else + { + CSgitFtdcOrderField empty_data = CSgitFtdcOrderField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + memset(&empty_error, 0, sizeof(empty_error)); + task.task_error = empty_error; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnTrade(CSgitFtdcTradeField *pTrade) +{ + Task task = Task(); + task.task_name = ONRTNTRADE; + + if (pTrade) + { + task.task_data = *pTrade; + } + else + { + CSgitFtdcTradeField empty_data = CSgitFtdcTradeField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRtnInstrumentStatus(CSgitFtdcInstrumentStatusField *pInstrumentStatus) +{ + Task task = Task(); + task.task_name = ONRTNINSTRUMENTSTATUS; + + if (pInstrumentStatus) + { + task.task_data = *pInstrumentStatus; + } + else + { + CSgitFtdcInstrumentStatusField empty_data = CSgitFtdcInstrumentStatusField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + this->task_queue.push(task); +}; + +void TdApi::OnRspQryInvestorPositionDetail(CSgitFtdcInvestorPositionDetailField *pInvestorPositionDetail, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORPOSITIONDETAIL; + + if (pInvestorPositionDetail) + { + task.task_data = *pInvestorPositionDetail; + } + else + { + CSgitFtdcInvestorPositionDetailField empty_data = CSgitFtdcInvestorPositionDetailField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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(CSgitFtdcInvestorPositionField *pInvestorPosition, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) +{ + Task task = Task(); + task.task_name = ONRSPQRYINVESTORPOSITION; + + if (pInvestorPosition) + { + task.task_data = *pInvestorPosition; + } + else + { + CSgitFtdcInvestorPositionField empty_data = CSgitFtdcInvestorPositionField(); + memset(&empty_data, 0, sizeof(empty_data)); + task.task_data = empty_data; + } + + if (pRspInfo) + { + task.task_error = *pRspInfo; + } + else + { + CSgitFtdcRspInfoField empty_error = CSgitFtdcRspInfoField(); + 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); +}; + + +///------------------------------------------------------------------------------------- +///工作线程从队列中取出数据,转化为python对象后,进行推送 +///------------------------------------------------------------------------------------- + +void TdApi::processTask() +{ + while (1) + { + Task task = this->task_queue.wait_and_pop(); + + switch (task.task_name) + { + case ONFRONTCONNECTED: + { + this->processFrontConnected(task); + break; + } + + case ONFRONTDISCONNECTED: + { + this->processFrontDisconnected(task); + break; + } + + case ONRSPUSERLOGIN: + { + this->processRspUserLogin(task); + break; + } + + case ONRSPUSERLOGOUT: + { + this->processRspUserLogout(task); + break; + } + + case ONRSPUSERPASSWORDUPDATE: + { + this->processRspUserPasswordUpdate(task); + break; + } + + case ONRSPORDERINSERT: + { + this->processRspOrderInsert(task); + break; + } + + case ONRSPORDERACTION: + { + this->processRspOrderAction(task); + break; + } + + case ONRSPQRYORDER: + { + this->processRspQryOrder(task); + break; + } + + case ONRSPQRYTRADINGACCOUNT: + { + this->processRspQryTradingAccount(task); + break; + } + + case ONRSPQRYINVESTOR: + { + this->processRspQryInvestor(task); + break; + } + + case ONRSPQRYINSTRUMENT: + { + this->processRspQryInstrument(task); + break; + } + + case ONRTNORDER: + { + this->processRtnOrder(task); + break; + } + + case ONRTNTRADE: + { + this->processRtnTrade(task); + break; + } + + case ONRTNINSTRUMENTSTATUS: + { + this->processRtnInstrumentStatus(task); + break; + } + + case ONRSPQRYINVESTORPOSITIONDETAIL: + { + this->processRspQryInvestorPositionDetail(task); + break; + } + + case ONRSPQRYINVESTORPOSITION: + { + this->processRspQryInvestorPosition(task); + break; + } + + }; + } +}; + +void TdApi::processFrontConnected(Task task) +{ + PyLock lock; + this->onFrontConnected(); +}; + +void TdApi::processFrontDisconnected(Task task) +{ + PyLock lock; + string msg = any_cast(task.task_data); + this->onFrontDisconnected(msg); +}; + +void TdApi::processRspUserLogin(Task task) +{ + PyLock lock; + CSgitFtdcRspUserLoginField task_data = any_cast(task.task_data); + dict data; + data["CZCETime"] = task_data.CZCETime; + data["SHFETime"] = task_data.SHFETime; + data["MaxOrderRef"] = task_data.MaxOrderRef; + data["UserID"] = task_data.UserID; + data["TradingDay"] = task_data.TradingDay; + data["SessionID"] = task_data.SessionID; + data["SystemName"] = task_data.SystemName; + data["FrontID"] = task_data.FrontID; + data["FFEXTime"] = task_data.FFEXTime; + data["BrokerID"] = task_data.BrokerID; + data["DCETime"] = task_data.DCETime; + data["LoginTime"] = task_data.LoginTime; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogin(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspUserLogout(Task task) +{ + PyLock lock; + CSgitFtdcUserLogoutField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["BrokerID"] = task_data.BrokerID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserLogout(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspUserPasswordUpdate(Task task) +{ + PyLock lock; + CSgitFtdcUserPasswordUpdateField task_data = any_cast(task.task_data); + dict data; + data["UserID"] = task_data.UserID; + data["NewPassword"] = task_data.NewPassword; + data["OldPassword"] = task_data.OldPassword; + data["BrokerID"] = task_data.BrokerID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspUserPasswordUpdate(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspOrderInsert(Task task) +{ + PyLock lock; + CSgitFtdcInputOrderField task_data = any_cast(task.task_data); + dict data; + data["ContingentCondition"] = task_data.ContingentCondition; + data["CombOffsetFlag"] = task_data.CombOffsetFlag; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["UserForceClose"] = task_data.UserForceClose; + data["Direction"] = task_data.Direction; + data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; + data["OrderPriceType"] = task_data.OrderPriceType; + data["TimeCondition"] = task_data.TimeCondition; + data["IsAutoSuspend"] = task_data.IsAutoSuspend; + data["StopPrice"] = task_data.StopPrice; + data["InstrumentID"] = task_data.InstrumentID; + data["MinVolume"] = task_data.MinVolume; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["BrokerID"] = task_data.BrokerID; + data["CombHedgeFlag"] = task_data.CombHedgeFlag; + data["GTDDate"] = task_data.GTDDate; + data["BusinessUnit"] = task_data.BusinessUnit; + data["OrderRef"] = task_data.OrderRef; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RequestID"] = task_data.RequestID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspOrderInsert(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspOrderAction(Task task) +{ + PyLock lock; + CSgitFtdcInputOrderActionField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["ActionFlag"] = task_data.ActionFlag; + data["OrderActionRef"] = task_data.OrderActionRef; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["OrderRef"] = task_data.OrderRef; + data["InvestorID"] = task_data.InvestorID; + data["SessionID"] = task_data.SessionID; + data["VolumeChange"] = task_data.VolumeChange; + data["BrokerID"] = task_data.BrokerID; + data["RequestID"] = task_data.RequestID; + data["OrderSysID"] = task_data.OrderSysID; + data["FrontID"] = task_data.FrontID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspOrderAction(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryOrder(Task task) +{ + PyLock lock; + CSgitFtdcOrderField task_data = any_cast(task.task_data); + dict data; + data["ContingentCondition"] = task_data.ContingentCondition; + data["NotifySequence"] = task_data.NotifySequence; + data["ActiveUserID"] = task_data.ActiveUserID; + data["VolumeTraded"] = task_data.VolumeTraded; + data["UserProductInfo"] = task_data.UserProductInfo; + data["CombOffsetFlag"] = task_data.CombOffsetFlag; + data["TraderID"] = task_data.TraderID; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["UserForceClose"] = task_data.UserForceClose; + data["RelativeOrderSysID"] = task_data.RelativeOrderSysID; + data["Direction"] = task_data.Direction; + data["InstallID"] = task_data.InstallID; + data["ParticipantID"] = task_data.ParticipantID; + data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["ClientID"] = task_data.ClientID; + data["VolumeTotal"] = task_data.VolumeTotal; + data["OrderPriceType"] = task_data.OrderPriceType; + data["SessionID"] = task_data.SessionID; + data["TimeCondition"] = task_data.TimeCondition; + data["OrderStatus"] = task_data.OrderStatus; + data["OrderSysID"] = task_data.OrderSysID; + data["OrderSubmitStatus"] = task_data.OrderSubmitStatus; + data["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["StatusMsg"] = task_data.StatusMsg; + data["SettlementID"] = task_data.SettlementID; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["OrderType"] = task_data.OrderType; + data["UpdateTime"] = task_data.UpdateTime; + data["TradingDay"] = task_data.TradingDay; + data["ActiveTime"] = task_data.ActiveTime; + data["BrokerID"] = task_data.BrokerID; + data["InsertTime"] = task_data.InsertTime; + data["FrontID"] = task_data.FrontID; + data["SuspendTime"] = task_data.SuspendTime; + data["ClearingPartID"] = task_data.ClearingPartID; + data["CombHedgeFlag"] = task_data.CombHedgeFlag; + data["CancelTime"] = task_data.CancelTime; + data["GTDDate"] = task_data.GTDDate; + data["OrderLocalID"] = task_data.OrderLocalID; + data["BusinessUnit"] = task_data.BusinessUnit; + data["InsertDate"] = task_data.InsertDate; + data["SequenceNo"] = task_data.SequenceNo; + data["OrderRef"] = task_data.OrderRef; + data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RequestID"] = task_data.RequestID; + data["OrderSource"] = task_data.OrderSource; + data["ActiveTraderID"] = task_data.ActiveTraderID; + + CSgitFtdcRspInfoField 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::processRspQryTradingAccount(Task task) +{ + PyLock lock; + CSgitFtdcTradingAccountField task_data = any_cast(task.task_data); + dict data; + data["Mortgage"] = task_data.Mortgage; + data["ExchangeDeliveryMargin"] = task_data.ExchangeDeliveryMargin; + data["FrozenMargin"] = task_data.FrozenMargin; + data["WithdrawQuota"] = task_data.WithdrawQuota; + data["PositionProfit"] = task_data.PositionProfit; + data["Commission"] = task_data.Commission; + data["Interest"] = task_data.Interest; + data["CashIn"] = task_data.CashIn; + data["AccountID"] = task_data.AccountID; + data["Available"] = task_data.Available; + data["PreCredit"] = task_data.PreCredit; + data["PreMortgage"] = task_data.PreMortgage; + data["InterestBase"] = task_data.InterestBase; + data["ExchangeMargin"] = task_data.ExchangeMargin; + data["PreMargin"] = task_data.PreMargin; + data["SettlementID"] = task_data.SettlementID; + data["DeliveryMargin"] = task_data.DeliveryMargin; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["FrozenCash"] = task_data.FrozenCash; + data["Withdraw"] = task_data.Withdraw; + data["Balance"] = task_data.Balance; + data["Reserve"] = task_data.Reserve; + data["PreDeposit"] = task_data.PreDeposit; + data["Credit"] = task_data.Credit; + data["PreBalance"] = task_data.PreBalance; + data["CurrMargin"] = task_data.CurrMargin; + data["FrozenCommission"] = task_data.FrozenCommission; + data["CloseProfit"] = task_data.CloseProfit; + data["Deposit"] = task_data.Deposit; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryTradingAccount(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestor(Task task) +{ + PyLock lock; + CSgitFtdcInvestorField task_data = any_cast(task.task_data); + dict data; + data["CommModelID"] = task_data.CommModelID; + data["InvestorName"] = task_data.InvestorName; + data["Mobile"] = task_data.Mobile; + data["IdentifiedCardNo"] = task_data.IdentifiedCardNo; + data["Telephone"] = task_data.Telephone; + data["InvestorID"] = task_data.InvestorID; + data["BrokerID"] = task_data.BrokerID; + data["Address"] = task_data.Address; + data["InvestorGroupID"] = task_data.InvestorGroupID; + data["OpenDate"] = task_data.OpenDate; + data["IsActive"] = task_data.IsActive; + data["IdentifiedCardType"] = task_data.IdentifiedCardType; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestor(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInstrument(Task task) +{ + PyLock lock; + CSgitFtdcInstrumentField task_data = any_cast(task.task_data); + dict data; + data["IsTrading"] = task_data.IsTrading; + data["ExpireDate"] = task_data.ExpireDate; + data["PositionDateType"] = task_data.PositionDateType; + data["LongMarginRatio"] = task_data.LongMarginRatio; + data["PositionType"] = task_data.PositionType; + data["ProductClass"] = task_data.ProductClass; + data["InstrumentName"] = task_data.InstrumentName; + data["ShortMarginRatio"] = task_data.ShortMarginRatio; + data["VolumeMultiple"] = task_data.VolumeMultiple; + data["DeliveryYear"] = task_data.DeliveryYear; + data["CreateDate"] = task_data.CreateDate; + data["InstrumentID"] = task_data.InstrumentID; + data["MaxLimitOrderVolume"] = task_data.MaxLimitOrderVolume; + data["ExchangeID"] = task_data.ExchangeID; + data["MinLimitOrderVolume"] = task_data.MinLimitOrderVolume; + data["MaxMarketOrderVolume"] = task_data.MaxMarketOrderVolume; + data["StartDelivDate"] = task_data.StartDelivDate; + data["DeliveryMonth"] = task_data.DeliveryMonth; + data["PriceTick"] = task_data.PriceTick; + data["InstLifePhase"] = task_data.InstLifePhase; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["MinMarketOrderVolume"] = task_data.MinMarketOrderVolume; + data["EndDelivDate"] = task_data.EndDelivDate; + data["OpenDate"] = task_data.OpenDate; + data["ProductID"] = task_data.ProductID; + + CSgitFtdcRspInfoField 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::processRtnOrder(Task task) +{ + PyLock lock; + CSgitFtdcOrderField task_data = any_cast(task.task_data); + dict data; + data["ContingentCondition"] = task_data.ContingentCondition; + data["NotifySequence"] = task_data.NotifySequence; + data["ActiveUserID"] = task_data.ActiveUserID; + data["VolumeTraded"] = task_data.VolumeTraded; + data["UserProductInfo"] = task_data.UserProductInfo; + data["CombOffsetFlag"] = task_data.CombOffsetFlag; + data["TraderID"] = task_data.TraderID; + data["UserID"] = task_data.UserID; + data["LimitPrice"] = task_data.LimitPrice; + data["UserForceClose"] = task_data.UserForceClose; + data["RelativeOrderSysID"] = task_data.RelativeOrderSysID; + data["Direction"] = task_data.Direction; + data["InstallID"] = task_data.InstallID; + data["ParticipantID"] = task_data.ParticipantID; + data["VolumeTotalOriginal"] = task_data.VolumeTotalOriginal; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["ClientID"] = task_data.ClientID; + data["VolumeTotal"] = task_data.VolumeTotal; + data["OrderPriceType"] = task_data.OrderPriceType; + data["SessionID"] = task_data.SessionID; + data["TimeCondition"] = task_data.TimeCondition; + data["OrderStatus"] = task_data.OrderStatus; + data["OrderSysID"] = task_data.OrderSysID; + data["OrderSubmitStatus"] = task_data.OrderSubmitStatus; + data["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["StatusMsg"] = task_data.StatusMsg; + data["SettlementID"] = task_data.SettlementID; + data["ForceCloseReason"] = task_data.ForceCloseReason; + data["OrderType"] = task_data.OrderType; + data["UpdateTime"] = task_data.UpdateTime; + data["TradingDay"] = task_data.TradingDay; + data["ActiveTime"] = task_data.ActiveTime; + data["BrokerID"] = task_data.BrokerID; + data["InsertTime"] = task_data.InsertTime; + data["FrontID"] = task_data.FrontID; + data["SuspendTime"] = task_data.SuspendTime; + data["ClearingPartID"] = task_data.ClearingPartID; + data["CombHedgeFlag"] = task_data.CombHedgeFlag; + data["CancelTime"] = task_data.CancelTime; + data["GTDDate"] = task_data.GTDDate; + data["OrderLocalID"] = task_data.OrderLocalID; + data["BusinessUnit"] = task_data.BusinessUnit; + data["InsertDate"] = task_data.InsertDate; + data["SequenceNo"] = task_data.SequenceNo; + data["OrderRef"] = task_data.OrderRef; + data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; + data["InvestorID"] = task_data.InvestorID; + data["VolumeCondition"] = task_data.VolumeCondition; + data["RequestID"] = task_data.RequestID; + data["OrderSource"] = task_data.OrderSource; + data["ActiveTraderID"] = task_data.ActiveTraderID; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRtnOrder(data, error); +}; + +void TdApi::processRtnTrade(Task task) +{ + PyLock lock; + CSgitFtdcTradeField task_data = any_cast(task.task_data); + dict data; + data["TradeType"] = task_data.TradeType; + data["TraderID"] = task_data.TraderID; + data["HedgeFlag"] = task_data.HedgeFlag; + data["TradeTime"] = task_data.TradeTime; + data["Direction"] = task_data.Direction; + data["ParticipantID"] = task_data.ParticipantID; + data["Price"] = task_data.Price; + data["ClientID"] = task_data.ClientID; + data["Volume"] = task_data.Volume; + data["OrderSysID"] = task_data.OrderSysID; + data["ClearingPartID"] = task_data.ClearingPartID; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["SettlementID"] = task_data.SettlementID; + data["UserID"] = task_data.UserID; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["OffsetFlag"] = task_data.OffsetFlag; + data["OrderLocalID"] = task_data.OrderLocalID; + data["TradeID"] = task_data.TradeID; + data["TradeDate"] = task_data.TradeDate; + data["BusinessUnit"] = task_data.BusinessUnit; + data["SequenceNo"] = task_data.SequenceNo; + data["OrderRef"] = task_data.OrderRef; + data["BrokerOrderSeq"] = task_data.BrokerOrderSeq; + data["InvestorID"] = task_data.InvestorID; + data["ExchangeInstID"] = task_data.ExchangeInstID; + data["TradeSource"] = task_data.TradeSource; + data["PriceSource"] = task_data.PriceSource; + data["TradingRole"] = task_data.TradingRole; + + this->onRtnTrade(data); +}; + +void TdApi::processRtnInstrumentStatus(Task task) +{ + PyLock lock; + CSgitFtdcInstrumentStatusField task_data = any_cast(task.task_data); + dict data; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["EnterTime"] = task_data.EnterTime; + data["SettlementGroupID"] = task_data.SettlementGroupID; + data["TradingSegmentSN"] = task_data.TradingSegmentSN; + data["EnterReason"] = task_data.EnterReason; + data["InstrumentStatus"] = task_data.InstrumentStatus; + data["ExchangeInstID"] = task_data.ExchangeInstID; + + this->onRtnInstrumentStatus(data); +}; + +void TdApi::processRspQryInvestorPositionDetail(Task task) +{ + PyLock lock; + CSgitFtdcInvestorPositionDetailField task_data = any_cast(task.task_data); + dict data; + data["PositionProfitByDate"] = task_data.PositionProfitByDate; + data["ExchMargin"] = task_data.ExchMargin; + data["TradeType"] = task_data.TradeType; + data["MarginRateByMoney"] = task_data.MarginRateByMoney; + data["HedgeFlag"] = task_data.HedgeFlag; + data["MarginRateByVolume"] = task_data.MarginRateByVolume; + data["Direction"] = task_data.Direction; + data["CloseAmount"] = task_data.CloseAmount; + data["OpenPrice"] = task_data.OpenPrice; + data["Volume"] = task_data.Volume; + data["LastSettlementPrice"] = task_data.LastSettlementPrice; + data["CloseVolume"] = task_data.CloseVolume; + data["InstrumentID"] = task_data.InstrumentID; + data["ExchangeID"] = task_data.ExchangeID; + data["CloseProfitByTrade"] = task_data.CloseProfitByTrade; + data["SettlementID"] = task_data.SettlementID; + data["TradingDay"] = task_data.TradingDay; + data["BrokerID"] = task_data.BrokerID; + data["Margin"] = task_data.Margin; + data["TradeID"] = task_data.TradeID; + data["PositionProfitByTrade"] = task_data.PositionProfitByTrade; + data["CloseProfitByDate"] = task_data.CloseProfitByDate; + data["SettlementPrice"] = task_data.SettlementPrice; + data["InvestorID"] = task_data.InvestorID; + data["CombInstrumentID"] = task_data.CombInstrumentID; + data["OpenDate"] = task_data.OpenDate; + + CSgitFtdcRspInfoField task_error = any_cast(task.task_error); + dict error; + error["ErrorMsg"] = task_error.ErrorMsg; + error["ErrorID"] = task_error.ErrorID; + + this->onRspQryInvestorPositionDetail(data, error, task.task_id, task.task_last); +}; + +void TdApi::processRspQryInvestorPosition(Task task) +{ + PyLock lock; + CSgitFtdcInvestorPositionField task_data = any_cast(task.task_data); + dict data; + data["ShortFrozenAmount"] = task_data.ShortFrozenAmount; + data["FrozenMargin"] = task_data.FrozenMargin; + data["HedgeFlag"] = task_data.HedgeFlag; + data["PositionProfit"] = task_data.PositionProfit; + data["Commission"] = task_data.Commission; + data["MarginRateByVolume"] = task_data.MarginRateByVolume; + data["CombPosition"] = task_data.CombPosition; + data["CashIn"] = task_data.CashIn; + data["PreSettlementPrice"] = task_data.PreSettlementPrice; + data["CombLongFrozen"] = task_data.CombLongFrozen; + data["CloseAmount"] = task_data.CloseAmount; + data["PosiDirection"] = task_data.PosiDirection; + data["YdPosition"] = task_data.YdPosition; + data["MarginRateByMoney"] = task_data.MarginRateByMoney; + data["OpenVolume"] = task_data.OpenVolume; + data["CloseVolume"] = task_data.CloseVolume; + data["ExchangeMargin"] = task_data.ExchangeMargin; + data["InstrumentID"] = task_data.InstrumentID; + data["PositionDate"] = task_data.PositionDate; + data["CloseProfitByTrade"] = task_data.CloseProfitByTrade; + data["PreMargin"] = task_data.PreMargin; + data["SettlementID"] = task_data.SettlementID; + data["ShortFrozen"] = task_data.ShortFrozen; + data["LongFrozen"] = task_data.LongFrozen; + data["TodayPosition"] = task_data.TodayPosition; + data["TradingDay"] = task_data.TradingDay; + data["PositionCost"] = task_data.PositionCost; + data["BrokerID"] = task_data.BrokerID; + data["FrozenCash"] = task_data.FrozenCash; + data["OpenAmount"] = task_data.OpenAmount; + data["OpenCost"] = task_data.OpenCost; + data["Position"] = task_data.Position; + data["FrozenCommission"] = task_data.FrozenCommission; + data["CombShortFrozen"] = task_data.CombShortFrozen; + data["CloseProfitByDate"] = task_data.CloseProfitByDate; + data["SettlementPrice"] = task_data.SettlementPrice; + data["LongFrozenAmount"] = task_data.LongFrozenAmount; + data["InvestorID"] = task_data.InvestorID; + data["CloseProfit"] = task_data.CloseProfit; + data["UseMargin"] = task_data.UseMargin; + + CSgitFtdcRspInfoField 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::createFtdcTraderApi(string pszFlowPath) +{ + //该函数为手动编写 + this->api = CSgitFtdcTraderApi::CreateFtdcTraderApi(pszFlowPath.c_str()); + this->api->RegisterSpi(this); +}; + +void TdApi::release() +{ + //该函数为手动编写 + this->api->Release(); +}; + +void TdApi::init(bool isLogged) +{ + //该函数为手动编写 + this->api->Init(isLogged); +}; + +int TdApi::exit() +{ + //该函数为手动编写 + this->api->Release(); + this->api = NULL; + return 1; +}; + +int TdApi::join() +{ + int i = this->api->Join(); + return i; +} + +string TdApi::getTradingDay() +{ + //该函数为手动编写 + string day = this->api->GetTradingDay(); + return day; +}; + +void TdApi::registerFront(string pszFrontAddress) +{ + //该函数为手动编写 + this->api->RegisterFront((char*)pszFrontAddress.c_str()); +}; + +void TdApi::subscribePrivateTopic(int nType) +{ + //该函数为手动编写 + Sgit_TE_RESUME_TYPE type = Sgit_TE_RESUME_TYPE(nType); + this->api->SubscribePrivateTopic(type); +}; + +void TdApi::subscribePublicTopic(int nType) +{ + //该函数为手动编写 + Sgit_TE_RESUME_TYPE type = Sgit_TE_RESUME_TYPE(nType); + this->api->SubscribePublicTopic(type); +}; + +int TdApi::ready() +{ + //该函数为手动编写 + int i = this->api->Ready(); + return i; +} + +int TdApi::reqUserLogin(dict req, int nRequestID) +{ + CSgitFtdcReqUserLoginField myreq = CSgitFtdcReqUserLoginField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "MacAddress", myreq.MacAddress); + getString(req, "UserProductInfo", myreq.UserProductInfo); + getString(req, "UserID", myreq.UserID); + getString(req, "TradingDay", myreq.TradingDay); + getString(req, "InterfaceProductInfo", myreq.InterfaceProductInfo); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "ClientIPAddress", myreq.ClientIPAddress); + getString(req, "OneTimePassword", myreq.OneTimePassword); + getString(req, "ProtocolInfo", myreq.ProtocolInfo); + getString(req, "Password", myreq.Password); + int i = this->api->ReqUserLogin(&myreq, nRequestID); + return i; +}; + +int TdApi::reqUserLogout(dict req, int nRequestID) +{ + CSgitFtdcUserLogoutField myreq = CSgitFtdcUserLogoutField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "UserID", myreq.UserID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqUserLogout(&myreq, nRequestID); + return i; +}; + +int TdApi::reqUserPasswordUpdate(dict req, int nRequestID) +{ + CSgitFtdcUserPasswordUpdateField myreq = CSgitFtdcUserPasswordUpdateField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "UserID", myreq.UserID); + getString(req, "NewPassword", myreq.NewPassword); + getString(req, "OldPassword", myreq.OldPassword); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqUserPasswordUpdate(&myreq, nRequestID); + return i; +}; + +int TdApi::reqOrderInsert(dict req, int nRequestID) +{ + CSgitFtdcInputOrderField myreq = CSgitFtdcInputOrderField(); + memset(&myreq, 0, sizeof(myreq)); + getChar(req, "ContingentCondition", &myreq.ContingentCondition); + getString(req, "CombOffsetFlag", myreq.CombOffsetFlag); + getString(req, "UserID", myreq.UserID); + getDouble(req, "LimitPrice", &myreq.LimitPrice); + getInt(req, "UserForceClose", &myreq.UserForceClose); + getChar(req, "Direction", &myreq.Direction); + getInt(req, "VolumeTotalOriginal", &myreq.VolumeTotalOriginal); + getChar(req, "OrderPriceType", &myreq.OrderPriceType); + getChar(req, "TimeCondition", &myreq.TimeCondition); + getInt(req, "IsAutoSuspend", &myreq.IsAutoSuspend); + getDouble(req, "StopPrice", &myreq.StopPrice); + getString(req, "InstrumentID", myreq.InstrumentID); + getInt(req, "MinVolume", &myreq.MinVolume); + getChar(req, "ForceCloseReason", &myreq.ForceCloseReason); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "CombHedgeFlag", myreq.CombHedgeFlag); + getString(req, "GTDDate", myreq.GTDDate); + getString(req, "BusinessUnit", myreq.BusinessUnit); + getString(req, "OrderRef", myreq.OrderRef); + getString(req, "InvestorID", myreq.InvestorID); + getChar(req, "VolumeCondition", &myreq.VolumeCondition); + getInt(req, "RequestID", &myreq.RequestID); + int i = this->api->ReqOrderInsert(&myreq, nRequestID); + return i; +}; + +int TdApi::reqOrderAction(dict req, int nRequestID) +{ + CSgitFtdcInputOrderActionField myreq = CSgitFtdcInputOrderActionField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "ExchangeID", myreq.ExchangeID); + getChar(req, "ActionFlag", &myreq.ActionFlag); + getInt(req, "OrderActionRef", &myreq.OrderActionRef); + getString(req, "UserID", myreq.UserID); + getDouble(req, "LimitPrice", &myreq.LimitPrice); + getString(req, "OrderRef", myreq.OrderRef); + getString(req, "InvestorID", myreq.InvestorID); + getInt(req, "SessionID", &myreq.SessionID); + getInt(req, "VolumeChange", &myreq.VolumeChange); + getString(req, "BrokerID", myreq.BrokerID); + getInt(req, "RequestID", &myreq.RequestID); + getString(req, "OrderSysID", myreq.OrderSysID); + getInt(req, "FrontID", &myreq.FrontID); + int i = this->api->ReqOrderAction(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryOrder(dict req, int nRequestID) +{ + CSgitFtdcQryOrderField myreq = CSgitFtdcQryOrderField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "ExchangeID", myreq.ExchangeID); + getString(req, "InsertTimeStart", myreq.InsertTimeStart); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + getString(req, "OrderSysID", myreq.OrderSysID); + getString(req, "InsertTimeEnd", myreq.InsertTimeEnd); + int i = this->api->ReqQryOrder(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryTradingAccount(dict req, int nRequestID) +{ + CSgitFtdcQryTradingAccountField myreq = CSgitFtdcQryTradingAccountField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryTradingAccount(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestor(dict req, int nRequestID) +{ + CSgitFtdcQryInvestorField myreq = CSgitFtdcQryInvestorField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestor(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInstrument(dict req, int nRequestID) +{ + CSgitFtdcQryInstrumentField myreq = CSgitFtdcQryInstrumentField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "ExchangeID", myreq.ExchangeID); + getString(req, "ExchangeInstID", myreq.ExchangeInstID); + getString(req, "ProductID", myreq.ProductID); + int i = this->api->ReqQryInstrument(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorPositionDetail(dict req, int nRequestID) +{ + CSgitFtdcQryInvestorPositionDetailField myreq = CSgitFtdcQryInvestorPositionDetailField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestorPositionDetail(&myreq, nRequestID); + return i; +}; + +int TdApi::reqQryInvestorPosition(dict req, int nRequestID) +{ + CSgitFtdcQryInvestorPositionField myreq = CSgitFtdcQryInvestorPositionField(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "InstrumentID", myreq.InstrumentID); + getString(req, "InvestorID", myreq.InvestorID); + getString(req, "BrokerID", myreq.BrokerID); + int i = this->api->ReqQryInvestorPosition(&myreq, nRequestID); + return i; +}; + +/* +int TdApi::reqMBLQuot(dict req, int nRequestID) +{ + CSgitMBLQuotReq myreq = CSgitMBLQuotReq(); + memset(&myreq, 0, sizeof(myreq)); + getString(req, "StartContractID", myreq.StartContractID); + getString(req, "EndContractID", myreq.EndContractID); + getString(req, "BsFlag", &myreq.BsFlag); + int i = this->api->ReqMBLQuot(nRequestID, &myreq); + return i; +}; +*/ + + +///------------------------------------------------------------------------------------- +///Boost.Python封装 +///------------------------------------------------------------------------------------- + +struct TdApiWrap : TdApi, wrapper < TdApi > +{ + virtual void onFrontConnected() + { + //以下的try...catch...可以实现捕捉python环境中错误的功能,防止C++直接出现原因未知的崩溃 + try + { + this->get_override("onFrontConnected")(); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onFrontDisconnected(string msg) + { + try + { + this->get_override("onFrontDisconnected")(msg); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspUserLogin(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspUserLogin")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspUserLogout(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspUserLogout")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspUserPasswordUpdate(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspUserPasswordUpdate")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspOrderInsert(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspOrderInsert")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspOrderAction(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspOrderAction")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryOrder(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryOrder")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryTradingAccount(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryTradingAccount")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryInvestor(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryInvestor")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void 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 onRtnOrder(dict data, dict error) + { + try + { + this->get_override("onRtnOrder")(data, error); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRtnTrade(dict data) + { + try + { + this->get_override("onRtnTrade")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRtnInstrumentStatus(dict data) + { + try + { + this->get_override("onRtnInstrumentStatus")(data); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void onRspQryInvestorPositionDetail(dict data, dict error, int id, bool last) + { + try + { + this->get_override("onRspQryInvestorPositionDetail")(data, error, id, last); + } + catch (error_already_set const &) + { + PyErr_Print(); + } + }; + + virtual void 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(); + } + }; +}; + + +BOOST_PYTHON_MODULE(vnsgittd) +{ + PyEval_InitThreads(); //导入时运行,保证先创建GIL + + class_("TdApi") + .def("createFtdcTraderApi", &TdApiWrap::createFtdcTraderApi) + .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("subscribePrivateTopic", &TdApiWrap::subscribePrivateTopic) + .def("subscribePublicTopic", &TdApiWrap::subscribePublicTopic) + .def("ready", &TdApiWrap::ready) + .def("reqUserLogin", &TdApiWrap::reqUserLogin) + .def("reqUserLogout", &TdApiWrap::reqUserLogout) + .def("reqUserPasswordUpdate", &TdApiWrap::reqUserPasswordUpdate) + .def("reqOrderInsert", &TdApiWrap::reqOrderInsert) + .def("reqOrderAction", &TdApiWrap::reqOrderAction) + .def("reqQryOrder", &TdApiWrap::reqQryOrder) + .def("reqQryTradingAccount", &TdApiWrap::reqQryTradingAccount) + .def("reqQryInvestor", &TdApiWrap::reqQryInvestor) + .def("reqQryInstrument", &TdApiWrap::reqQryInstrument) + .def("reqQryInvestorPositionDetail", &TdApiWrap::reqQryInvestorPositionDetail) + .def("reqQryInvestorPosition", &TdApiWrap::reqQryInvestorPosition) + //.def("reqMBLQuot", &TdApiWrap::reqMBLQuot) + + .def("onFrontConnected", pure_virtual(&TdApiWrap::onFrontConnected)) + .def("onFrontDisconnected", pure_virtual(&TdApiWrap::onFrontDisconnected)) + .def("onRspUserLogin", pure_virtual(&TdApiWrap::onRspUserLogin)) + .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("onRspQryTradingAccount", pure_virtual(&TdApiWrap::onRspQryTradingAccount)) + .def("onRspQryInvestor", pure_virtual(&TdApiWrap::onRspQryInvestor)) + .def("onRspQryInstrument", pure_virtual(&TdApiWrap::onRspQryInstrument)) + .def("onRtnOrder", pure_virtual(&TdApiWrap::onRtnOrder)) + .def("onRtnTrade", pure_virtual(&TdApiWrap::onRtnTrade)) + .def("onRtnInstrumentStatus", pure_virtual(&TdApiWrap::onRtnInstrumentStatus)) + .def("onRspQryInvestorPositionDetail", pure_virtual(&TdApiWrap::onRspQryInvestorPositionDetail)) + .def("onRspQryInvestorPosition", pure_virtual(&TdApiWrap::onRspQryInvestorPosition)) + ; +}; \ No newline at end of file diff --git a/vn.sgit/vnsgittd/vnsgittd/vnsgittd.h b/vn.sgit/vnsgittd/vnsgittd/vnsgittd.h new file mode 100644 index 00000000..87e5c2fb --- /dev/null +++ b/vn.sgit/vnsgittd/vnsgittd/vnsgittd.h @@ -0,0 +1,356 @@ +//说明部分 + +//系统 +#include "stdafx.h" +#include +#include + +//Boost +#define BOOST_PYTHON_STATIC_LIB +#include //python封装 +#include //python封装 +#include //python封装 +#include //python封装 +#include //python封装 +#include //任务队列的线程功能 +#include //任务队列的线程功能 +#include //任务队列的任务实现 + +//API +#include "SgitFtdcTraderApi.h" + +//命名空间 +using namespace std; +using namespace boost::python; +using namespace boost; + +//常量 +#define ONFRONTCONNECTED 1 +#define ONFRONTDISCONNECTED 2 +#define ONRSPUSERLOGIN 3 +#define ONRSPUSERLOGOUT 4 +#define ONRSPUSERPASSWORDUPDATE 5 +#define ONRSPORDERINSERT 6 +#define ONRSPORDERACTION 7 +#define ONRSPQRYORDER 8 +#define ONRSPQRYTRADINGACCOUNT 9 +#define ONRSPQRYINVESTOR 10 +#define ONRSPQRYINSTRUMENT 11 +#define ONRTNORDER 12 +#define ONRTNTRADE 13 +#define ONRTNINSTRUMENTSTATUS 14 +#define ONRSPQRYINVESTORPOSITIONDETAIL 15 +#define ONRSPQRYINVESTORPOSITION 16 + + +///------------------------------------------------------------------------------------- +///API中的部分组件 +///------------------------------------------------------------------------------------- + +//GIL全局锁简化获取用, +//用于帮助C++线程获得GIL锁,从而防止python崩溃 +class PyLock +{ +private: + PyGILState_STATE gil_state; + +public: + //在某个函数方法中创建该对象时,获得GIL锁 + PyLock() + { + gil_state = PyGILState_Ensure(); + } + + //在某个函数完成后销毁该对象时,解放GIL锁 + ~PyLock() + { + PyGILState_Release(gil_state); + } +}; + + +//任务结构体 +struct Task +{ + int task_name; //回调函数名称对应的常量 + any task_data; //数据结构体 + any task_error; //错误结构体 + int task_id; //请求id + bool task_last; //是否为最后返回 +}; + + +///线程安全的队列 +template + +class ConcurrentQueue +{ +private: + queue the_queue; //标准库队列 + mutable mutex the_mutex; //boost互斥锁 + condition_variable the_condition_variable; //boost条件变量 + +public: + + //存入新的任务 + void push(Data const& data) + { + mutex::scoped_lock lock(the_mutex); //获取互斥锁 + the_queue.push(data); //向队列中存入数据 + lock.unlock(); //释放锁 + the_condition_variable.notify_one(); //通知正在阻塞等待的线程 + } + + //检查队列是否为空 + bool empty() const + { + mutex::scoped_lock lock(the_mutex); + return the_queue.empty(); + } + + //取出 + Data wait_and_pop() + { + mutex::scoped_lock lock(the_mutex); + + while (the_queue.empty()) //当队列为空时 + { + the_condition_variable.wait(lock); //等待条件变量通知 + } + + Data popped_value = the_queue.front(); //获取队列中的最后一个任务 + the_queue.pop(); //删除该任务 + return popped_value; //返回该任务 + } + +}; + + +//从字典中获取某个建值对应的整数,并赋值到请求结构体对象的值上 +void getInt(dict d, string key, int* value); + +//从字典中获取某个建值对应的长整数,并赋值到请求结构体对象的值上 +void getLong(dict d, string key, long* value); + +//从字典中获取某个建值对应的短整数,并赋值到请求结构体对象的值上 +void getShort(dict d, string key, short* value); + + +//从字典中获取某个建值对应的浮点数,并赋值到请求结构体对象的值上 +void getDouble(dict d, string key, double* value); + + +//从字典中获取某个建值对应的单字符,并赋值到请求结构体对象的值上 +void getChar(dict d, string key, char* value); + + +//从字典中获取某个建值对应的字符串,并赋值到请求结构体对象的值上 +void getString(dict d, string key, char* value); + + +///------------------------------------------------------------------------------------- +///C++ SPI的回调函数方法实现 +///------------------------------------------------------------------------------------- + +//API的继承实现 +class TdApi : public CSgitFtdcTraderSpi +{ +private: + CSgitFtdcTraderApi* api; //API对象 + thread *task_thread; //工作线程指针(向python中推送数据) + ConcurrentQueue task_queue; //任务队列 + +public: + TdApi() + { + function0 f = boost::bind(&TdApi::processTask, this); + thread t(f); + this->task_thread = &t; + }; + + ~TdApi() + { + }; + + //------------------------------------------------------------------------------------- + //API回调函数 + //------------------------------------------------------------------------------------- + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 + virtual void OnFrontConnected(); + + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 + ///@param pErrMsg 错误原因 + virtual void OnFrontDisconnected(char *pErrMsg); + + ///登录请求响应 + virtual void OnRspUserLogin(CSgitFtdcRspUserLoginField *pRspUserLogin, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///登出请求响应 + virtual void OnRspUserLogout(CSgitFtdcUserLogoutField *pUserLogout, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///用户口令更新请求响应 + virtual void OnRspUserPasswordUpdate(CSgitFtdcUserPasswordUpdateField *pUserPasswordUpdate, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///报单录入请求响应 + virtual void OnRspOrderInsert(CSgitFtdcInputOrderField *pInputOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///报单操作请求响应 + virtual void OnRspOrderAction(CSgitFtdcInputOrderActionField *pInputOrderAction, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///请求查询报单响应 + virtual void OnRspQryOrder(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///请求查询资金账户响应 + virtual void OnRspQryTradingAccount(CSgitFtdcTradingAccountField *pTradingAccount, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///请求查询投资者响应 + virtual void OnRspQryInvestor(CSgitFtdcInvestorField *pInvestor, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///请求查询合约响应 + virtual void OnRspQryInstrument(CSgitFtdcInstrumentField *pInstrument, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///报单通知 + virtual void OnRtnOrder(CSgitFtdcOrderField *pOrder, CSgitFtdcRspInfoField *pRspInfo) ; + + ///成交通知 + virtual void OnRtnTrade(CSgitFtdcTradeField *pTrade) ; + + ///合约交易状态通知 + virtual void OnRtnInstrumentStatus(CSgitFtdcInstrumentStatusField *pInstrumentStatus) ; + + ///请求查询投资者持仓明细响应 + virtual void OnRspQryInvestorPositionDetail(CSgitFtdcInvestorPositionDetailField *pInvestorPositionDetail, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + ///请求查询投资者持仓响应 + virtual void OnRspQryInvestorPosition(CSgitFtdcInvestorPositionField *pInvestorPosition, CSgitFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) ; + + /// 当收到合约价位查询应答时回调该函数 + virtual void onRspMBLQuot(CSgitMBLQuotData *pMBLQuotData, CSgitFtdcRspInfoField *pRspMsg, int nRequestID, bool bIsLast){}; + + //------------------------------------------------------------------------------------- + //task:任务 + //------------------------------------------------------------------------------------- + + void processTask(); + + void processFrontConnected(Task task); + + void processFrontDisconnected(Task task); + + void processRspUserLogin(Task task); + + void processRspUserLogout(Task task); + + void processRspUserPasswordUpdate(Task task); + + void processRspOrderInsert(Task task); + + void processRspOrderAction(Task task); + + void processRspQryOrder(Task task); + + void processRspQryTradingAccount(Task task); + + void processRspQryInvestor(Task task); + + void processRspQryInstrument(Task task); + + void processRtnOrder(Task task); + + void processRtnTrade(Task task); + + void processRtnInstrumentStatus(Task task); + + void processRspQryInvestorPositionDetail(Task task); + + void processRspQryInvestorPosition(Task task); + + //------------------------------------------------------------------------------------- + //data:回调函数的数据字典 + //error:回调函数的错误字典 + //id:请求id + //last:是否为最后返回 + //i:整数 + //------------------------------------------------------------------------------------- + + virtual void onFrontConnected(){}; + + virtual void onFrontDisconnected(string msg){}; + + virtual void onRspUserLogin(dict data, dict error, int id, bool last) {}; + + virtual void onRspUserLogout(dict data, dict error, int id, bool last) {}; + + virtual void onRspUserPasswordUpdate(dict data, dict error, int id, bool last) {}; + + virtual void onRspOrderInsert(dict data, dict error, int id, bool last) {}; + + virtual void onRspOrderAction(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryOrder(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryTradingAccount(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInvestor(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInstrument(dict data, dict error, int id, bool last) {}; + + virtual void onRtnOrder(dict data, dict error) {}; + + virtual void onRtnTrade(dict data) {}; + + virtual void onRtnInstrumentStatus(dict data) {}; + + virtual void onRspQryInvestorPositionDetail(dict data, dict error, int id, bool last) {}; + + virtual void onRspQryInvestorPosition(dict data, dict error, int id, bool last) {}; + + + //------------------------------------------------------------------------------------- + //req:主动函数的请求字典 + //------------------------------------------------------------------------------------- + + void createFtdcTraderApi(string pszFlowPath); + + void release(); + + void init(bool isLogged); + + int join(); + + int exit(); + + string getTradingDay(); + + void registerFront(string pszFrontAddress); + + void subscribePrivateTopic(int type); + + void subscribePublicTopic(int type); + + int ready(); + + int reqUserLogin(dict req, int nRequestID); + + int reqUserLogout(dict req, int nRequestID); + + int reqUserPasswordUpdate(dict req, int nRequestID); + + int reqOrderInsert(dict req, int nRequestID); + + int reqOrderAction(dict req, int nRequestID); + + int reqQryOrder(dict req, int nRequestID); + + int reqQryTradingAccount(dict req, int nRequestID); + + int reqQryInvestor(dict req, int nRequestID); + + int reqQryInstrument(dict req, int nRequestID); + + int reqQryInvestorPositionDetail(dict req, int nRequestID); + + int reqQryInvestorPosition(dict req, int nRequestID); + + //int reqMBLQuot(dict req, int nRequestID); +};