C#接口发布(海风版)

Discussion in 'CTP' started by hubert28, Mar 10, 2010.

  1. 提供源码下载.
    此处权限不够没法上传文件,需要的朋友可以加群65164336.共享里有下,使用此接口设计的交易终端也在共享里.
    有关使用中遇到的问题请在群里提出或在论坛里发贴.
    共同学习,为推广CTP贡献自己的一点力量.:p
     
  2. 支持啊!
    向hubert28致敬!
     
  3. 现在论坛不支持上传附件了,只能采用外部文件保存,然后贴连接的方式了.
     
  4. 不懂接口编程。
    不知道这样的接口,能否在使用C#为编程语言的交易平台(如RE、NT、OQ等)直接调用呢?
    如果可以,那不是可以使用如上的软件直接通过CTP下单?
    无论如何,感谢楼主的贡献。
     
  5. 是的,直接调用接口就能下单,收行情了.
    公布源码主要是为了大家调试方面.
     
  6. MdApi.h 行情函数及调用类型声明

    MdApi.h 行情函数及调用类型声明
    Code:
    // 下列 ifdef 块是创建使从 DLL 导出更简单的
    // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MDAPI_EXPORTS
    // 符号编译的。在使用此 DLL 的
    // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
    // MDAPI_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
    // 符号视为是被导出的。
    #ifdef MDAPI_EXPORTS
    #define MDAPI_API __declspec(dllexport)
    #else
    #define MDAPI_API __declspec(dllimport)
    #endif
    #include ".\api\ThostFtdcMdApi.h"
    
    // 此类是从 MdApi.dll 导出的
    class /*MDAPI_API*/ CMdSpi : public CThostFtdcMdSpi
    {
    public:
    	CMdSpi(void);
    	// TODO: 在此添加您的方法。
    	
    	///错误应答
    	virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo,
    		int nRequestID, bool bIsLast);
    
    	///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    	///@param nReason 错误原因
    	///        0x1001 网络读失败
    	///        0x1002 网络写失败
    	///        0x2001 接收心跳超时
    	///        0x2002 发送心跳失败
    	///        0x2003 收到错误报文
    	virtual void OnFrontDisconnected(int nReason);
    		
    	///心跳超时警告。当长时间未收到报文时,该方法被调用。
    	///@param nTimeLapse 距离上次接收报文的时间
    	virtual void OnHeartBeatWarning(int nTimeLapse);
    
    	///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    	virtual void OnFrontConnected();
    	
    	///登录请求响应
    	virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin,	CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///登出请求响应
    	virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///订阅行情应答
    	virtual void OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///取消订阅行情应答
    	virtual void OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///深度行情通知
    	virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData);
    
    
    };
    
    ///连接
    typedef int (WINAPI *CBOnFrontConnected)(void);
    ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    	///@param nReason 错误原因
    	///        0x1001 网络读失败
    	///        0x1002 网络写失败
    	///        0x2001 接收心跳超时
    	///        0x2002 发送心跳失败
    	///        0x2003 收到错误报文
    typedef int (WINAPI *CBOnFrontDisconnected)(int nReason);
    
    	///用户登录请求
    typedef int (WINAPI *CBOnRspUserLogin)(CThostFtdcRspUserLoginField *pRspUserLogin,CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	//登录请求响应
    typedef int (WINAPI *CBOnRspUserLogout)(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    
    //订阅行情应答
    typedef int (WINAPI *CBOnRspSubMarketData)(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    //取消行情应答
    typedef int (WINAPI *CBOnRspUnSubMarketData)(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	//深度行情通知
    typedef int (WINAPI *CBOnRtnDepthMarketData)(CThostFtdcDepthMarketDataField *pDepthMarketData) ;
    
     
  7. // MdApi.cpp : 定义 DLL 应用程序的导出函数。
    Code:
    //
    #include "stdafx.h"
    #include "MdApi.h"
    #include <iostream>
    //#include <vector>		//动态数组,支持赋值
    using namespace std;
    
    #include ".\api\ThostFtdcMdApi.h"
    
    
    // 这是导出变量的一个示例
    //MDAPI_API int nMdApi=0;
    
    // USER_API参数
    extern CThostFtdcMdApi* pUserApi;
    
    extern CBOnFrontConnected cbOnFrontConnected;
    extern CBOnFrontDisconnected cbOnFrontDisconnected;
    extern CBOnRspUserLogin cbOnRspUserLogin;
    extern CBOnRspUserLogout cbOnRspUserLogout;
    extern CBOnRspSubMarketData cbOnRspSubMarketData;
    extern CBOnRspUnSubMarketData cbOnRspUnSubMarketData;
    extern CBOnRtnDepthMarketData cbOnRtnDepthMarketData;
    
    // 请求编号
    extern int iRequestID;
    
    
    
    // 这是已导出类的构造函数。
    // 有关类定义的信息,请参阅 MdApi.h
    CMdSpi::CMdSpi()
    {
    	return;
    }
    
    
    
    void CMdSpi::OnRspError(CThostFtdcRspInfoField *pRspInfo,
    		int nRequestID, bool bIsLast)
    {
    	//cerr << "--->>> "<< __FUNCTION__ << endl;
    	//IsErrorRspInfo(pRspInfo);
    }
    
    void CMdSpi::OnFrontDisconnected(int nReason)
    {
    	//cerr << "--->>> " << __FUNCTION__ << endl;
    	//cerr << "--->>> Reason = " << nReason << endl;
    	if(cbOnFrontDisconnected!=NULL)
    		cbOnFrontDisconnected(nReason);
    }
    		
    void CMdSpi::OnHeartBeatWarning(int nTimeLapse)
    {
    	//cerr << "--->>> " << __FUNCTION__ << endl;
    	//cerr << "--->>> nTimerLapse = " << nTimeLapse << endl;
    }
    
    void CMdSpi::OnFrontConnected()
    {
    	//cerr << "--->>> " << __FUNCTION__ << endl;
    	if(cbOnFrontConnected!=NULL)
    		cbOnFrontConnected();
    }
    
    void CMdSpi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin,
    		CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspUserLogin!=NULL)
    		cbOnRspUserLogin(pRspUserLogin,pRspInfo,nRequestID,bIsLast);
    }
    
    void CMdSpi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspUserLogout!=NULL)
    		cbOnRspUserLogout(pUserLogout, pRspInfo, nRequestID, bIsLast);
    }
    
    void CMdSpi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	//cerr << __FUNCTION__ << endl;
    	if(cbOnRspSubMarketData!=NULL)
    		cbOnRspSubMarketData(pSpecificInstrument,pRspInfo,nRequestID,bIsLast);
    }
    
    void CMdSpi::OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	//cerr << __FUNCTION__ << endl;
    	if(cbOnRspUnSubMarketData!=NULL)
    		cbOnRspUnSubMarketData(pSpecificInstrument, pRspInfo,nRequestID,bIsLast);
    }
    
    void CMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
    {
    	//cerr << "深度行情" << endl;
    	if(cbOnRtnDepthMarketData!=NULL)
    		cbOnRtnDepthMarketData(pDepthMarketData);
    }
    
    
     
  8. // AppMain.cpp : 定义 DLL 应用程序的函数。
    Code:
    //
    #include "stdafx.h"
    #include "MdApi.h"
    #include <iostream>
    //#include <vector>		//动态数组,支持赋值
    //using namespace std;
    
    #include ".\api\ThostFtdcMdApi.h"
    
    // UserApi对象
    CThostFtdcMdApi* pUserApi;
    
    // 请求编号
    int iRequestID = 0;
    
    //回调函数
    CBOnFrontConnected cbOnFrontConnected=0;
    CBOnFrontDisconnected cbOnFrontDisconnected=0;
    CBOnRspUserLogin cbOnRspUserLogin=0;
    CBOnRspUserLogout cbOnRspUserLogout=0;
    CBOnRspSubMarketData cbOnRspSubMarketData=0;
    CBOnRspUnSubMarketData cbOnRspUnSubMarketData=0;
    CBOnRtnDepthMarketData cbOnRtnDepthMarketData=0;
    
    
    //连接
    MDAPI_API void Connect(char* FRONT_ADDR)
    {
    	
    	CThostFtdcMdSpi* pUserSpi = new CMdSpi();
    	// 初始化UserApi
    	pUserApi = CThostFtdcMdApi::CreateFtdcMdApi();			// 创建UserApi
    
    	pUserApi->RegisterSpi(pUserSpi);						// 注册事件类
    	pUserApi->RegisterFront(FRONT_ADDR);					// connect
    	pUserApi->Init();
    //	pUserApi->Join();
    }
    MDAPI_API void DisConnect()
    {
    	pUserApi->Release();
    }
    //登录
    MDAPI_API void ReqUserLogin(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcPasswordType PASSWORD)
    {	
    	CThostFtdcReqUserLoginField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.UserID, INVESTOR_ID);
    	strcpy_s(req.Password, PASSWORD);
    	pUserApi->ReqUserLogin(&req, ++iRequestID);
    }
    
    ///登出请求
    MDAPI_API void ReqUserLogout(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcUserLogoutField req;
    	memset(&req,0,sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.UserID,INVESTOR_ID);
    	pUserApi->ReqUserLogout(&req,++iRequestID);
    }
    //订阅行情
    MDAPI_API void SubMarketData(char* instrumentsID[],int nCount)
    {
    	pUserApi->SubscribeMarketData(instrumentsID,nCount);
    }
    ///退订行情
    MDAPI_API void UnSubscribeMarketData(char *ppInstrumentID[], int nCount)
    {
    	pUserApi->UnSubscribeMarketData(ppInstrumentID, nCount);
    }
    
    //连接应答
    MDAPI_API void WINAPI RegOnFrontConnected(CBOnFrontConnected cb)
    {
    		cbOnFrontConnected=cb;
    }
    //连接断开
    MDAPI_API void WINAPI RegOnFrontDisconnected(CBOnFrontDisconnected cb)
    {
    		cbOnFrontDisconnected=cb;
    }
    //登录请求应答
    MDAPI_API void WINAPI RegOnRspUserLogin(CBOnRspUserLogin cb)
    {
    		cbOnRspUserLogin=cb;
    }
    //登出请求应答
    MDAPI_API void WINAPI RegOnRspUserLogout(CBOnRspUserLogout cb)
    {
    		cbOnRspUserLogout=cb;
    }
    //订阅行情应答
    MDAPI_API void WINAPI RegOnRspSubMarketData(CBOnRspSubMarketData cb)
    {
    		cbOnRspSubMarketData=cb;
    }
    
    //退订行情应答
    MDAPI_API void WINAPI RegOnRspUnSubMarketData(CBOnRspUnSubMarketData cb)
    {
    		cbOnRspUnSubMarketData=cb;
    }
    //深度行情通知
    MDAPI_API void WINAPI RegOnRtnDepthMarketData(CBOnRtnDepthMarketData cb)
    {
    		cbOnRtnDepthMarketData=cb;
    }
    
     
  9. TradeApi.h 定义函数及导出函数类型定义
    Code:
    // 下列 ifdef 块是创建使从 DLL 导出更简单的
    // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 TRADEAPI_EXPORTS
    // 符号编译的。在使用此 DLL 的
    // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
    // TRADEAPI_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
    // 符号视为是被导出的。
    #ifdef TRADEAPI_EXPORTS
    #define TRADEAPI_API __declspec(dllexport)
    #else
    #define TRADEAPI_API __declspec(dllimport)
    #endif
    
    #include ".\api\ThostFtdcTraderApi.h"
    #include ".\api\ThostFtdcUserApiDataType.h"
    #include ".\api\ThostFtdcUserApiStruct.h"
    
    // 此类是从 TradeApi.dll 导出的
    class CTraderSpi : public CThostFtdcTraderSpi
    {
    public:
    	///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    virtual void OnFrontConnected();
    
    	///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    virtual void OnFrontDisconnected(int nReason);
    	
    	///心跳超时警告。当长时间未收到报文时,该方法被调用。
    virtual void OnHeartBeatWarning(int nTimeLapse);
    
    	///登录请求响应
    virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin,	CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	//登出请求响应
    virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///用户口令更新请求响应
    virtual void OnRspUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///资金账户口令更新请求响应
    virtual void  OnRspTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///报单录入请求响应
    virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///报单操作请求响应
    virtual void  OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///查询最大报单数量响应
    virtual void OnRspQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///投资者结算结果确认响应
    virtual void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询报单响应
    virtual void OnRspQryOrder(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询成交响应
    virtual void OnRspQryTrade(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者持仓响应
    virtual void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询资金账户响应
    virtual void  OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询投资者响应
    virtual void OnRspQryInvestor(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询交易编码响应
    virtual void OnRspQryTradingCode(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询合约保证金率响应
    virtual void  OnRspQryInstrumentMarginRate(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询合约手续费率响应
    virtual void OnRspQryInstrumentCommissionRate(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询交易所响应
    virtual void OnRspQryExchange(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询合约响应
    virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询行情响应
    virtual void OnRspQryDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者结算结果响应
    virtual void OnRspQrySettlementInfo(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者持仓明细响应
    virtual void OnRspQryInvestorPositionDetail(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者持仓明细响应
    virtual void OnRspQryInvestorPositionCombineDetail(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询客户通知响应
    virtual void OnRspQryNotice(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询结算信息确认响应
    virtual void OnRspQrySettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///查询保证金监管系统经纪公司资金账户密钥响应
    virtual void OnRspQryCFMMCTradingAccountKey(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///错误应答
    virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///报单通知
    virtual void OnRtnOrder(CThostFtdcOrderField *pOrder);
    
    	///成交通知
    virtual void OnRtnTrade(CThostFtdcTradeField *pTrade);
    
    	///报单录入错误回报
    virtual void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo);
    
    	///报单操作错误回报
    virtual void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo);
    	
    	///合约交易状态通知
    virtual void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField *pInstrumentStatus);
    		
    	///请求查询交易通知响应
    virtual void OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///交易通知
    virtual void OnRtnTradingNotice(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo);
    	
    	///提示条件单校验错误
    virtual void OnRtnErrorConditionalOrder(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder);
    	
    	///请求查询经纪公司交易参数响应
    virtual void OnRspQryBrokerTradingParams(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询经纪公司交易算法响应
    virtual void OnRspQryBrokerTradingAlgos(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    private:
    	CThostFtdcRspInfoField* repareInfo(CThostFtdcRspInfoField *pRspInfo);
    	// 是否收到成功的响应
    	bool IsErrorRspInfo(CThostFtdcRspInfoField *pRspInfo);
    	// 是否我的报单回报
    	bool IsMyOrder(CThostFtdcOrderField *pOrder);
    	// 是否正在交易的报单
    	bool IsTradingOrder(CThostFtdcOrderField *pOrder);
    };
    
    	///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    typedef int (WINAPI *CBOnFrontConnected)();
    
    	///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    typedef int (WINAPI *CBOnFrontDisconnected)(int nReason);
    	
    	///心跳超时警告。当长时间未收到报文时,该方法被调用。
    typedef int (WINAPI *CBOnHeartBeatWarning)(int nTimeLapse);
    
    	///登录请求响应
    typedef int (WINAPI *CBOnRspUserLogin)(CThostFtdcRspUserLoginField *pRspUserLogin,	CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	//登出请求响应
    typedef int (WINAPI *CBOnRspUserLogout)(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///用户口令更新请求响应
    typedef int (WINAPI *CBOnRspUserPasswordUpdate)(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///资金账户口令更新请求响应
    typedef int (WINAPI *CBOnRspTradingAccountPasswordUpdate)(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///报单录入请求响应
    typedef int (WINAPI *CBOnRspOrderInsert)(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///报单操作请求响应
    typedef int (WINAPI *CBOnRspOrderAction)(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///查询最大报单数量响应
    typedef int (WINAPI *CBOnRspQueryMaxOrderVolume)(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///投资者结算结果确认响应
    typedef int (WINAPI *CBOnRspSettlementInfoConfirm)(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询报单响应
    typedef int (WINAPI *CBOnRspQryOrder)(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询成交响应
    typedef int (WINAPI *CBOnRspQryTrade)(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者持仓响应
    typedef int (WINAPI *CBOnRspQryInvestorPosition)(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询资金账户响应
    typedef int (WINAPI *CBOnRspQryTradingAccount)(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询投资者响应
    typedef int (WINAPI *CBOnRspQryInvestor)(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询交易编码响应
    typedef int (WINAPI *CBOnRspQryTradingCode)(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询合约保证金率响应
    typedef int (WINAPI *CBOnRspQryInstrumentMarginRate)(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询合约手续费率响应
    typedef int (WINAPI *CBOnRspQryInstrumentCommissionRate)(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询交易所响应
    typedef int (WINAPI *CBOnRspQryExchange)(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询合约响应
    typedef int (WINAPI *CBOnRspQryInstrument)(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询行情响应
    typedef int (WINAPI *CBOnRspQryDepthMarketData)(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者结算结果响应
    typedef int (WINAPI *CBOnRspQrySettlementInfo)(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者持仓明细响应
    typedef int (WINAPI *CBOnRspQryInvestorPositionDetail)(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询投资者**组合**持仓明细响应
    typedef int (WINAPI *CBOnRspQryInvestorPositionCombineDetail)(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///请求查询客户通知响应
    typedef int (WINAPI *CBOnRspQryNotice)(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询结算信息确认响应
    typedef int (WINAPI *CBOnRspQrySettlementInfoConfirm)(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///查询保证金监管系统经纪公司资金账户密钥响应
    typedef int (WINAPI *CBOnRspQryCFMMCTradingAccountKey)(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///错误应答
    typedef int (WINAPI *CBOnRspError)(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///报单通知
    typedef int (WINAPI *CBOnRtnOrder)(CThostFtdcOrderField *pOrder);
    
    	///成交通知
    typedef int (WINAPI *CBOnRtnTrade)(CThostFtdcTradeField *pTrade);
    
    	///报单录入错误回报
    typedef int (WINAPI *CBOnErrRtnOrderInsert)(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo);
    
    	///报单操作错误回报
    typedef int (WINAPI *CBOnErrRtnOrderAction)(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo);
    	
    	///合约交易状态通知
    typedef int (WINAPI *CBOnRtnInstrumentStatus)(CThostFtdcInstrumentStatusField *pInstrumentStatus);
    		
    	///请求查询交易通知响应
    typedef int (WINAPI *CBOnRspQryTradingNotice)(CThostFtdcTradingNoticeField *pTradingNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    	///交易通知
    typedef int (WINAPI *CBOnRtnTradingNotice)(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo);
    	
    	///提示条件单校验错误
    typedef int (WINAPI *CBOnRtnErrorConditionalOrder)(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder);
    	
    	///请求查询经纪公司交易参数响应
    typedef int (WINAPI *CBOnRspQryBrokerTradingParams)(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    	
    	///请求查询经纪公司交易算法响应
    typedef int (WINAPI *CBOnRspQryBrokerTradingAlgos)(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
    
    
     
  10. // TradeApi.cpp : 定义 DLL 应用程序的函数及回调函数。
    Code:
    //
    
    #include "stdafx.h"
    #include "TradeApi.h"
    #include <iostream>
    using namespace std;
    
    
    #pragma warning(disable : 4996)
    
    // USER_API参数
    extern CThostFtdcTraderApi* pUserApi;
    
    //回调函数
    extern CBOnFrontConnected cbOnFrontConnected;		///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    extern CBOnFrontDisconnected cbOnFrontDisconnected;		///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    extern CBOnHeartBeatWarning cbOnHeartBeatWarning;		///心跳超时警告。当长时间未收到报文时,该方法被调用。
    extern CBOnRspUserLogin cbOnRspUserLogin;		///登录请求响应
    extern CBOnRspUserLogout cbOnRspUserLogout;//登出请求响应
    extern CBOnRspUserPasswordUpdate cbOnRspUserPasswordUpdate;		///用户口令更新请求响应
    extern CBOnRspTradingAccountPasswordUpdate cbOnRspTradingAccountPasswordUpdate;		///资金账户口令更新请求响应
    extern CBOnRspOrderInsert cbOnRspOrderInsert;		///报单录入请求响应
    extern CBOnRspOrderAction cbOnRspOrderAction;		///报单操作请求响应
    extern CBOnRspQueryMaxOrderVolume cbOnRspQueryMaxOrderVolume;		///查询最大报单数量响应
    extern CBOnRspSettlementInfoConfirm cbOnRspSettlementInfoConfirm;		///投资者结算结果确认响应
    extern CBOnRspQryOrder cbOnRspQryOrder;		///请求查询报单响应
    extern CBOnRspQryTrade cbOnRspQryTrade;		///请求查询成交响应
    extern CBOnRspQryInvestorPosition cbOnRspQryInvestorPosition;		///请求查询投资者持仓响应
    extern CBOnRspQryTradingAccount cbOnRspQryTradingAccount;		///请求查询资金账户响应
    extern CBOnRspQryInvestor cbOnRspQryInvestor;		///请求查询投资者响应
    extern CBOnRspQryTradingCode cbOnRspQryTradingCode;		///请求查询交易编码响应
    extern CBOnRspQryInstrumentMarginRate cbOnRspQryInstrumentMarginRate;		///请求查询合约保证金率响应
    extern CBOnRspQryInstrumentCommissionRate cbOnRspQryInstrumentCommissionRate;		///请求查询合约手续费率响应
    extern CBOnRspQryExchange cbOnRspQryExchange;		///请求查询交易所响应
    extern CBOnRspQryInstrument cbOnRspQryInstrument;		///请求查询合约响应
    extern CBOnRspQryDepthMarketData cbOnRspQryDepthMarketData;		///请求查询行情响应
    extern CBOnRspQrySettlementInfo cbOnRspQrySettlementInfo;		///请求查询投资者结算结果响应
    extern CBOnRspQryInvestorPositionDetail cbOnRspQryInvestorPositionDetail;		///请求查询投资者持仓明细响应
    extern CBOnRspQryInvestorPositionCombineDetail cbOnRspQryInvestorPositionCombineDetail;		///请求查询投资者持仓明细响应
    extern CBOnRspQryNotice cbOnRspQryNotice;		///请求查询客户通知响应
    extern CBOnRspQrySettlementInfoConfirm cbOnRspQrySettlementInfoConfirm;		///请求查询结算信息确认响应
    extern CBOnRspQryCFMMCTradingAccountKey cbOnRspQryCFMMCTradingAccountKey;		///查询保证金监管系统经纪公司资金账户密钥响应
    extern CBOnRspError cbOnRspError;		///错误应答
    extern CBOnRtnOrder cbOnRtnOrder;		///报单通知
    extern CBOnRtnTrade cbOnRtnTrade;		///成交通知
    extern CBOnErrRtnOrderInsert cbOnErrRtnOrderInsert;		///报单录入错误回报
    extern CBOnErrRtnOrderAction cbOnErrRtnOrderAction;		///报单操作错误回报
    extern CBOnRtnInstrumentStatus cbOnRtnInstrumentStatus;		///合约交易状态通知
    extern CBOnRspQryTradingNotice cbOnRspQryTradingNotice;		///请求查询交易通知响应
    extern CBOnRtnTradingNotice cbOnRtnTradingNotice;		///交易通知
    extern CBOnRtnErrorConditionalOrder cbOnRtnErrorConditionalOrder;		///提示条件单校验错误
    extern CBOnRspQryBrokerTradingParams cbOnRspQryBrokerTradingParams;		///请求查询经纪公司交易参数响应
    extern CBOnRspQryBrokerTradingAlgos cbOnRspQryBrokerTradingAlgos;		///请求查询经纪公司交易算法响应
    
    // 配置参数
    //extern char FRONT_ADDR[];		// 前置地址
    extern char BROKER_ID[];		// 经纪公司代码
    extern char INVESTOR_ID[];		// 投资者代码
    extern char PASSWORD[];			// 用户密码
    extern char INSTRUMENT_ID[];	// 合约代码
    extern TThostFtdcPriceType	LIMIT_PRICE;	// 价格
    extern TThostFtdcDirectionType	DIRECTION;	// 买卖方向
    
    // 请求编号
    extern int iRequestID;
    
    	///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    void CTraderSpi::OnFrontConnected()
    { 
    	if(cbOnFrontConnected!=NULL) 
    		cbOnFrontConnected();//00611c62
    }
    
    ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    void CTraderSpi:: OnFrontDisconnected(int nReason){if(cbOnFrontDisconnected != NULL) cbOnFrontDisconnected(nReason);}
    
    	///心跳超时警告。当长时间未收到报文时,该方法被调用。  @param nTimeLapse 距离上次接收报文的时间
    void CTraderSpi::OnHeartBeatWarning(int nTimeLapse){if(cbOnHeartBeatWarning != NULL) cbOnHeartBeatWarning(nTimeLapse);}
    
    ///登录请求响应
    void CTraderSpi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin,CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {	
    	if(cbOnRspUserLogin!=NULL && pRspUserLogin!=NULL)	
    		cbOnRspUserLogin(pRspUserLogin,repareInfo(pRspInfo), nRequestID,bIsLast); 
    }
    ///登出请求响应
    void CTraderSpi::OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspUserLogout!=NULL && pUserLogout!=NULL)	
    		cbOnRspUserLogout(pUserLogout,repareInfo(pRspInfo), nRequestID,bIsLast);
    }
    	///用户口令更新请求响应
    void CTraderSpi::OnRspUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspUserPasswordUpdate!=NULL && pUserPasswordUpdate!=NULL)
    		cbOnRspUserPasswordUpdate(pUserPasswordUpdate, repareInfo(pRspInfo), nRequestID, bIsLast);
    }
    	///资金账户口令更新请求响应
    void CTraderSpi::OnRspTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspTradingAccountPasswordUpdate!=NULL && pTradingAccountPasswordUpdate!=NULL)
    		cbOnRspTradingAccountPasswordUpdate(pTradingAccountPasswordUpdate, repareInfo(pRspInfo), nRequestID, bIsLast);
    }
    	///报单录入请求响应
    void CTraderSpi::OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID,bool bIsLast)
    {
    	if(cbOnRspOrderInsert != NULL && pInputOrder!=NULL)
    	{
    		cbOnRspOrderInsert(pInputOrder, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///报单操作请求响应
    void CTraderSpi::OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspOrderAction != NULL && pInputOrderAction!=NULL)
    	{
    			cbOnRspOrderAction(pInputOrderAction, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///查询最大报单数量响应
    void CTraderSpi::OnRspQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQueryMaxOrderVolume!=NULL && pQueryMaxOrderVolume != NULL)
    	{
    			cbOnRspQueryMaxOrderVolume(pQueryMaxOrderVolume, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///投资者结算结果确认响应
    void CTraderSpi::OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspSettlementInfoConfirm != NULL && pSettlementInfoConfirm!=NULL)
    	{
    			cbOnRspSettlementInfoConfirm(pSettlementInfoConfirm, repareInfo(pRspInfo),nRequestID, bIsLast);
    	}
    }
    	///请求查询报单响应
    void CTraderSpi::OnRspQryOrder(CThostFtdcOrderField *pOrder,  CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryOrder!=NULL && pOrder != NULL)
    	{
    			cbOnRspQryOrder(pOrder, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询成交响应
    void CTraderSpi::OnRspQryTrade(CThostFtdcTradeField *pTrade,  CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryTrade!=NULL && pTrade != NULL)
    	{
    			cbOnRspQryTrade(pTrade, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询投资者持仓响应
    void CTraderSpi::OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInvestorPosition != NULL && pInvestorPosition!=NULL)
    	{
    			cbOnRspQryInvestorPosition(pInvestorPosition,  repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询资金账户响应
    void CTraderSpi::OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryTradingAccount != NULL && pTradingAccount!=NULL)
    	{
    			cbOnRspQryTradingAccount(pTradingAccount, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询投资者响应
    void CTraderSpi::OnRspQryInvestor(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInvestor!=NULL && pInvestor != NULL)
    	{
    			cbOnRspQryInvestor(pInvestor, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }	
    	///请求查询交易编码响应
    void CTraderSpi::OnRspQryTradingCode(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryTradingCode!=NULL && pTradingCode != NULL)
    	{
    			cbOnRspQryTradingCode(pTradingCode, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询合约保证金率响应
    void CTraderSpi::OnRspQryInstrumentMarginRate(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInstrumentMarginRate!=NULL && pInstrumentMarginRate != NULL)
    	{
    			cbOnRspQryInstrumentMarginRate(pInstrumentMarginRate, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询合约手续费率响应
    void CTraderSpi::OnRspQryInstrumentCommissionRate(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInstrumentCommissionRate!=NULL && pInstrumentCommissionRate != NULL)
    	{
    			cbOnRspQryInstrumentCommissionRate(pInstrumentCommissionRate, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询交易所响应
    void CTraderSpi::OnRspQryExchange(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryExchange!=NULL && pExchange!=NULL)
    	{
    			cbOnRspQryExchange(pExchange, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询合约响应
    void CTraderSpi::OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInstrument!=NULL && pInstrument!=NULL)
    	{
    		cbOnRspQryInstrument(pInstrument, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询行情响应
    void CTraderSpi::OnRspQryDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryDepthMarketData != NULL && pDepthMarketData != NULL)
    	{
    			cbOnRspQryDepthMarketData(pDepthMarketData, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询投资者结算结果响应
    void CTraderSpi::OnRspQrySettlementInfo(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQrySettlementInfo!=NULL && pSettlementInfo!=NULL)
    	{
    			cbOnRspQrySettlementInfo(pSettlementInfo, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询投资者持仓明细响应
    void CTraderSpi::OnRspQryInvestorPositionDetail(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInvestorPositionDetail != NULL && pInvestorPositionDetail!=NULL)
    	{
    			cbOnRspQryInvestorPositionDetail(pInvestorPositionDetail,  repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询投资者**组合**持仓明细响应
    void CTraderSpi::OnRspQryInvestorPositionCombineDetail(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryInvestorPositionCombineDetail != NULL && pInvestorPositionCombineDetail!=NULL)
    	{
    			cbOnRspQryInvestorPositionCombineDetail(pInvestorPositionCombineDetail, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///请求查询客户通知响应
    void CTraderSpi::OnRspQryNotice(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryNotice!=NULL && pNotice != NULL)
    	{
    			cbOnRspQryNotice(pNotice, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }	
    	///请求查询结算信息确认响应
    void CTraderSpi::OnRspQrySettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQrySettlementInfoConfirm!=NULL && pSettlementInfoConfirm != NULL)
    	{
    			cbOnRspQrySettlementInfoConfirm(pSettlementInfoConfirm, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }	
    	///查询保证金监管系统经纪公司资金账户密钥响应
    void CTraderSpi::OnRspQryCFMMCTradingAccountKey(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryCFMMCTradingAccountKey!=NULL && pCFMMCTradingAccountKey!=NULL)
    	{
    			cbOnRspQryCFMMCTradingAccountKey(pCFMMCTradingAccountKey, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///错误应答
    void CTraderSpi::OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspError != NULL)
    		cbOnRspError(repareInfo(pRspInfo), nRequestID, bIsLast);
    }
    	///报单通知
    void CTraderSpi::OnRtnOrder(CThostFtdcOrderField *pOrder)
    {
    	if(cbOnRtnOrder != NULL && pOrder!=NULL)
    	{
    		 	cbOnRtnOrder(pOrder);
    	}
    }
    	///成交通知
    void CTraderSpi::OnRtnTrade(CThostFtdcTradeField *pTrade)
    {
    	if(cbOnRtnTrade != NULL && pTrade!=NULL)
    	{
    			cbOnRtnTrade(pTrade);
    	}
    }
    	///报单录入错误回报
    void CTraderSpi::OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo)
    {
    	if(cbOnErrRtnOrderInsert != NULL && pInputOrder!=NULL)
    	{
    			cbOnErrRtnOrderInsert(pInputOrder, pRspInfo);
    	}
    }
    	///报单操作错误回报
    void CTraderSpi::OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo)
    {
    	if(cbOnErrRtnOrderAction != NULL && pOrderAction!=NULL)
    	{
    			cbOnErrRtnOrderAction(pOrderAction, repareInfo(pRspInfo));
    	}
    }
    	///合约交易状态通知
    void CTraderSpi::OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField *pInstrumentStatus)
    {
    	if(cbOnRtnInstrumentStatus!=NULL && pInstrumentStatus!=NULL)
    	{
    			cbOnRtnInstrumentStatus(pInstrumentStatus);
    	}
    }		
    	///请求查询交易通知响应
    void CTraderSpi::OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice,  CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryTradingNotice!=NULL && pTradingNotice!=NULL)
    	{
    			cbOnRspQryTradingNotice(pTradingNotice, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    	///交易通知
    void CTraderSpi::OnRtnTradingNotice(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo)
    {
    	if(cbOnRtnTradingNotice!=NULL && pTradingNoticeInfo!=NULL)
    	{
    			cbOnRtnTradingNotice(pTradingNoticeInfo);
    	}
    }	
    	///提示条件单校验错误
    void CTraderSpi::OnRtnErrorConditionalOrder(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder)
    {
    	if(cbOnRtnErrorConditionalOrder!=NULL && pErrorConditionalOrder != NULL)
    	{
    			cbOnRtnErrorConditionalOrder(pErrorConditionalOrder);
    	}
    }	
    	///请求查询经纪公司交易参数响应
    void CTraderSpi::OnRspQryBrokerTradingParams(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams,  CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryBrokerTradingParams!=NULL && pBrokerTradingParams != NULL)
    	{
    		cbOnRspQryBrokerTradingParams(pBrokerTradingParams, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }	
    	///请求查询经纪公司交易算法响应
    void CTraderSpi::OnRspQryBrokerTradingAlgos(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos,  CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
    	if(cbOnRspQryBrokerTradingAlgos!=NULL && pBrokerTradingAlgos!=NULL)
    	{
    			cbOnRspQryBrokerTradingAlgos(pBrokerTradingAlgos, repareInfo(pRspInfo), nRequestID, bIsLast);
    	}
    }
    
    //针对收到空反馈的处理
    CThostFtdcRspInfoField rif;
    CThostFtdcRspInfoField* CTraderSpi::repareInfo(CThostFtdcRspInfoField *pRspInfo)
    {
    	if(pRspInfo==NULL)
    	{
    		memset(&rif,0,sizeof(rif));
    		return &rif;
    	}
    	else
    		return pRspInfo;
    }
    
    
    //bool CTraderSpi::IsMyOrder(CThostFtdcOrderField *pOrder)
    //{
    //	return ((pOrder->FrontID == FRONT_ID) &&
    //			(pOrder->SessionID == SESSION_ID) &&
    //			(strcmp(pOrder->OrderRef, ORDER_REF) == 0));
    //}
    
    //bool CTraderSpi::IsTradingOrder(CThostFtdcOrderField *pOrder)
    //{
    //	return ((pOrder->OrderStatus != THOST_FTDC_OST_PartTradedNotQueueing) &&
    //			(pOrder->OrderStatus != THOST_FTDC_OST_Canceled) &&
    //			(pOrder->OrderStatus != THOST_FTDC_OST_AllTraded));
    //}
    
     
  11. AppMain.cpp 定义导出的函数
    Code:
    
    #include "stdafx.h"
    #include "TradeApi.h"
    #include ".\api\ThostFtdcUserApiDataType.h"
    #include ".\api\ThostFtdcUserApiStruct.h"
    
    // UserApi对象
    CThostFtdcTraderApi* pUserApi;
    
    //回调函数
    CBOnFrontConnected cbOnFrontConnected=0;		///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    CBOnFrontDisconnected cbOnFrontDisconnected=0;		///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    CBOnHeartBeatWarning cbOnHeartBeatWarning=0;		///心跳超时警告。当长时间未收到报文时,该方法被调用。
    CBOnRspUserLogin cbOnRspUserLogin=0;		///登录请求响应
    CBOnRspUserLogout cbOnRspUserLogout=0;//登出请求响应
    CBOnRspUserPasswordUpdate cbOnRspUserPasswordUpdate=0;		///用户口令更新请求响应
    CBOnRspTradingAccountPasswordUpdate cbOnRspTradingAccountPasswordUpdate=0;		///资金账户口令更新请求响应
    CBOnRspOrderInsert cbOnRspOrderInsert=0;		///报单录入请求响应
    CBOnRspOrderAction cbOnRspOrderAction=0;		///报单操作请求响应
    CBOnRspQueryMaxOrderVolume cbOnRspQueryMaxOrderVolume=0;		///查询最大报单数量响应
    CBOnRspSettlementInfoConfirm cbOnRspSettlementInfoConfirm=0;		///投资者结算结果确认响应
    CBOnRspQryOrder cbOnRspQryOrder=0;		///请求查询报单响应
    CBOnRspQryTrade cbOnRspQryTrade=0;		///请求查询成交响应
    CBOnRspQryInvestorPosition cbOnRspQryInvestorPosition=0;		///请求查询投资者持仓响应
    CBOnRspQryTradingAccount cbOnRspQryTradingAccount=0;		///请求查询资金账户响应
    CBOnRspQryInvestor cbOnRspQryInvestor=0;		///请求查询投资者响应
    CBOnRspQryTradingCode cbOnRspQryTradingCode=0;		///请求查询交易编码响应
    CBOnRspQryInstrumentMarginRate cbOnRspQryInstrumentMarginRate=0;		///请求查询合约保证金率响应
    CBOnRspQryInstrumentCommissionRate cbOnRspQryInstrumentCommissionRate=0;		///请求查询合约手续费率响应
    CBOnRspQryExchange cbOnRspQryExchange=0;		///请求查询交易所响应
    CBOnRspQryInstrument cbOnRspQryInstrument=0;		///请求查询合约响应
    CBOnRspQryDepthMarketData cbOnRspQryDepthMarketData=0;		///请求查询行情响应
    CBOnRspQrySettlementInfo cbOnRspQrySettlementInfo=0;		///请求查询投资者结算结果响应
    CBOnRspQryInvestorPositionDetail cbOnRspQryInvestorPositionDetail=0;		///请求查询投资者持仓明细响应
    CBOnRspQryInvestorPositionCombineDetail cbOnRspQryInvestorPositionCombineDetail=0;		///请求查询投资者持仓明细响应
    CBOnRspQryNotice cbOnRspQryNotice=0;		///请求查询客户通知响应
    CBOnRspQrySettlementInfoConfirm cbOnRspQrySettlementInfoConfirm=0;		///请求查询结算信息确认响应
    CBOnRspQryCFMMCTradingAccountKey cbOnRspQryCFMMCTradingAccountKey=0;		///查询保证金监管系统经纪公司资金账户密钥响应
    CBOnRspError cbOnRspError=0;		///错误应答
    CBOnRtnOrder cbOnRtnOrder=0;		///报单通知
    CBOnRtnTrade cbOnRtnTrade=0;		///成交通知
    CBOnErrRtnOrderInsert cbOnErrRtnOrderInsert=0;		///报单录入错误回报
    CBOnErrRtnOrderAction cbOnErrRtnOrderAction=0;		///报单操作错误回报
    CBOnRtnInstrumentStatus cbOnRtnInstrumentStatus=0;		///合约交易状态通知
    CBOnRspQryTradingNotice cbOnRspQryTradingNotice=0;		///请求查询交易通知响应
    CBOnRtnTradingNotice cbOnRtnTradingNotice=0;		///交易通知
    CBOnRtnErrorConditionalOrder cbOnRtnErrorConditionalOrder=0;		///提示条件单校验错误
    CBOnRspQryBrokerTradingParams cbOnRspQryBrokerTradingParams=0;		///请求查询经纪公司交易参数响应
    CBOnRspQryBrokerTradingAlgos cbOnRspQryBrokerTradingAlgos=0;		///请求查询经纪公司交易算法响应
    
    
    // 请求编号
    int iRequestID = 0;
    
    
    //连接
    TRADEAPI_API void Connect(char* FRONT_ADDR)
    {
    	// 初始化UserApi
    	pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi();			// 创建UserApi
    	CTraderSpi* pUserSpi = new CTraderSpi();
    	pUserApi->RegisterSpi((CThostFtdcTraderSpi*)pUserSpi);			// 注册事件类
    	pUserApi->SubscribePublicTopic(THOST_TERT_QUICK/*THOST_TERT_RESTART*/);					// 注册公有流
    	pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK/*THOST_TERT_RESTART*/);					// 注册私有流
    	pUserApi->RegisterFront(FRONT_ADDR);							// connect
    	pUserApi->Init();
    	//pUserApi->Join();
    }
    
    //断开
    TRADEAPI_API void DisConnect()
    {
    	pUserApi->Release();
    }
    //发送用户登录请求
    TRADEAPI_API void ReqUserLogin(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcUserIDType USER_ID,TThostFtdcPasswordType PASSWORD)
    {
    	CThostFtdcReqUserLoginField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.UserID, USER_ID);
    	strcpy_s(req.Password, PASSWORD);
    	pUserApi->ReqUserLogin(&req, ++iRequestID);
    }
    //发送登出请求
    TRADEAPI_API void ReqUserLogout(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcUserIDType INVESTOR_ID)
    {
    	CThostFtdcUserLogoutField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.UserID, INVESTOR_ID);
    	pUserApi->ReqUserLogout(&req, ++iRequestID);
    }
    //更新用户口令
    TRADEAPI_API void ReqUserPasswordUpdate(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcUserIDType USER_ID,TThostFtdcUserIDType OLD_PASSWORD,TThostFtdcPasswordType NEW_PASSWORD)
    {
    	CThostFtdcUserPasswordUpdateField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.UserID, USER_ID);
    	strcpy_s(req.OldPassword,OLD_PASSWORD);
    	strcpy_s(req.NewPassword,NEW_PASSWORD);
    	pUserApi->ReqUserPasswordUpdate(&req, ++iRequestID);
    }
    ///资金账户口令更新请求
    TRADEAPI_API void ReqTradingAccountPasswordUpdate(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcAccountIDType ACCOUNT_ID,TThostFtdcUserIDType OLD_PASSWORD,TThostFtdcPasswordType NEW_PASSWORD)
    {
    	CThostFtdcTradingAccountPasswordUpdateField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.AccountID, ACCOUNT_ID);
    	strcpy_s(req.NewPassword,NEW_PASSWORD);
    	strcpy_s(req.OldPassword,OLD_PASSWORD);
    	pUserApi->ReqTradingAccountPasswordUpdate(&req, ++iRequestID);
    }
    
    //报单录入请求
    TRADEAPI_API void ReqOrderInsert(CThostFtdcInputOrderField *pOrder)
    {
    	pUserApi->ReqOrderInsert(pOrder, ++iRequestID);
    }
    
    //报单操作请求
    TRADEAPI_API void ReqOrderAction(CThostFtdcInputOrderActionField *pOrder)
    {
    	pUserApi->ReqOrderAction(pOrder, ++iRequestID);
    }
    	
    ///查询最大报单数量请求
    TRADEAPI_API void ReqQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pMaxOrderVolume)
    {
    	pUserApi->ReqQueryMaxOrderVolume(pMaxOrderVolume, ++iRequestID);
    }
    
    //投资者结算结果确认
    TRADEAPI_API void ReqSettlementInfoConfirm(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcSettlementInfoConfirmField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.InvestorID, INVESTOR_ID);
    	pUserApi->ReqSettlementInfoConfirm(&req, ++iRequestID);
    }
    ///请求查询报单
    TRADEAPI_API void ReqQryOrder(CThostFtdcQryOrderField *pQryOrder)
    {
    	pUserApi->ReqQryOrder(pQryOrder, ++iRequestID);
    }
    ///请求查询成交
    TRADEAPI_API void ReqQryTrade(CThostFtdcQryTradeField *pQryTrade)
    {
    	pUserApi->ReqQryTrade(pQryTrade, ++iRequestID);
    }
    
    //请求查询投资者持仓
    TRADEAPI_API void ReqQryInvestorPosition(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryInvestorPositionField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.InvestorID, INVESTOR_ID);
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID, INSTRUMENT_ID);
    	pUserApi->ReqQryInvestorPosition(&req, ++iRequestID);
    }
    
    //请求查询资金账户
    TRADEAPI_API void ReqQryTradingAccount(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcQryTradingAccountField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID, BROKER_ID);
    	strcpy_s(req.InvestorID, INVESTOR_ID);
    	pUserApi->ReqQryTradingAccount(&req, ++iRequestID);
    }
    	
    ///请求查询投资者
    TRADEAPI_API void ReqQryInvestor(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcQryInvestorField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID ,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	pUserApi->ReqQryInvestor(&req, ++iRequestID);
    }
    	///请求查询交易编码
    TRADEAPI_API void ReqQryTradingCode(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcClientIDType CLIENT_ID,TThostFtdcExchangeIDType	EXCHANGE_ID)
    {
    	CThostFtdcQryTradingCodeField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID ,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	if(CLIENT_ID != NULL)
    		strcpy_s(req.ClientID,CLIENT_ID);
    	if(EXCHANGE_ID != NULL)
    		strcpy_s(req.ExchangeID,EXCHANGE_ID);
    	pUserApi->ReqQryTradingCode(&req, ++iRequestID);
    }
    	///请求查询合约保证金率
    TRADEAPI_API void ReqQryInstrumentMarginRate(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcInstrumentIDType INSTRUMENT_ID,TThostFtdcHedgeFlagType	HEDGE_FLAG)
    {
    	CThostFtdcQryInstrumentMarginRateField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID ,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);	
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID,INSTRUMENT_ID);	
    	req.HedgeFlag = HEDGE_FLAG;							//因为不能使用strcpy_s,此处可能会有错误*****************************
    	pUserApi->ReqQryInstrumentMarginRate(&req, ++iRequestID);
    }
    	///请求查询合约手续费率
    TRADEAPI_API void ReqQryInstrumentCommissionRate(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryInstrumentCommissionRateField  req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID ,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);	
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID,INSTRUMENT_ID);
    	pUserApi->ReqQryInstrumentCommissionRate(&req, ++iRequestID);
    }
    	///请求查询交易所
    TRADEAPI_API void ReqQryExchange(TThostFtdcExchangeIDType EXCHANGE_ID)
    {
    	CThostFtdcQryExchangeField  req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.ExchangeID,EXCHANGE_ID);
    	pUserApi->ReqQryExchange(&req, ++iRequestID);
    }
    
    //请求查询合约
    TRADEAPI_API void ReqQryInstrument(TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryInstrumentField req;
    	memset(&req, 0, sizeof(req));
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID, INSTRUMENT_ID);
    	pUserApi->ReqQryInstrument(&req, ++iRequestID);
    }
    
    //请求查询行情
    TRADEAPI_API void ReqQryDepthMarketData(TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryDepthMarketDataField req;
    	memset(&req,0,sizeof(req));
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID, INSTRUMENT_ID);
    	pUserApi->ReqQryDepthMarketData(&req, ++iRequestID);
    }
    	///请求查询投资者结算结果
    TRADEAPI_API void ReqQrySettlementInfo(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcDateType	TRADING_DAY)
    {
    	CThostFtdcQrySettlementInfoField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID ,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);	
    	if(TRADING_DAY != NULL)
    		strcpy_s(req.TradingDay, TRADING_DAY);
    	pUserApi->ReqQrySettlementInfo(&req, ++iRequestID);
    }
    
    //查询持仓明细
    TRADEAPI_API void ReqQryInvestorPositionDetail(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryInvestorPositionDetailField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID, INSTRUMENT_ID);
    	pUserApi->ReqQryInvestorPositionDetail(&req, ++iRequestID);
    }
    	///请求查询客户通知
    TRADEAPI_API void ReqQryNotice(TThostFtdcBrokerIDType BROKERID)
    {
    	CThostFtdcQryNoticeField  req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKERID);
    	pUserApi->ReqQryNotice(&req, ++iRequestID);
    }
    	///请求查询结算信息确认
    TRADEAPI_API void ReqQrySettlementInfoConfirm(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcQrySettlementInfoConfirmField  req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	pUserApi->ReqQrySettlementInfoConfirm(&req, ++iRequestID);
    }
    	///请求查询**组合**持仓明细
    TRADEAPI_API void ReqQryInvestorPositionCombineDetail(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID,TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryInvestorPositionCombineDetailField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.CombInstrumentID, INSTRUMENT_ID);
    	pUserApi->ReqQryInvestorPositionCombineDetail(&req, ++iRequestID);
    }
    	///请求查询保证金监管系统经纪公司资金账户密钥
    TRADEAPI_API void ReqQryCFMMCTradingAccountKey(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcQryCFMMCTradingAccountKeyField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	pUserApi->ReqQryCFMMCTradingAccountKey(&req, ++iRequestID);
    }
    	///请求查询交易通知
    TRADEAPI_API void ReqQryTradingNotice(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcQryTradingNoticeField req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	pUserApi->ReqQryTradingNotice(&req, ++iRequestID);
    }
    	///请求查询经纪公司交易参数
    TRADEAPI_API void ReqQryBrokerTradingParams(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcInvestorIDType INVESTOR_ID)
    {
    	CThostFtdcQryBrokerTradingParamsField  req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	strcpy_s(req.InvestorID,INVESTOR_ID);
    	pUserApi->ReqQryBrokerTradingParams(&req, ++iRequestID);
    }
    	///请求查询经纪公司交易算法
    TRADEAPI_API void ReqQryBrokerTradingAlgos(TThostFtdcBrokerIDType BROKER_ID,TThostFtdcExchangeIDType EXCHANGE_ID,TThostFtdcInstrumentIDType INSTRUMENT_ID)
    {
    	CThostFtdcQryBrokerTradingAlgosField  req;
    	memset(&req, 0, sizeof(req));
    	strcpy_s(req.BrokerID,BROKER_ID);
    	if(EXCHANGE_ID != NULL)
    		strcpy_s(req.ExchangeID, EXCHANGE_ID);
    	if(INSTRUMENT_ID != NULL)
    		strcpy_s(req.InstrumentID, INSTRUMENT_ID);
    	pUserApi->ReqQryBrokerTradingAlgos(&req, ++iRequestID);
    }
    
    ///==================================== 回调函数 =======================================
    TRADEAPI_API void WINAPI RegOnFrontConnected(CBOnFrontConnected cb)		///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    {	cbOnFrontConnected = cb;	}
    
    TRADEAPI_API void WINAPI RegOnFrontDisconnected(CBOnFrontDisconnected cb)		///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    {	cbOnFrontDisconnected = cb;	}
    
    TRADEAPI_API void WINAPI RegOnHeartBeatWarning(CBOnHeartBeatWarning cb)		///心跳超时警告。当长时间未收到报文时,该方法被调用。
    {	cbOnHeartBeatWarning = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspUserLogin(CBOnRspUserLogin cb)		///登录请求响应
    {	cbOnRspUserLogin = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspUserLogout(CBOnRspUserLogout cb)//登出请求响应
    {	cbOnRspUserLogout = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspUserPasswordUpdate(CBOnRspUserPasswordUpdate cb)		///用户口令更新请求响应
    {	cbOnRspUserPasswordUpdate = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspTradingAccountPasswordUpdate(CBOnRspTradingAccountPasswordUpdate cb)		///资金账户口令更新请求响应
    {	cbOnRspTradingAccountPasswordUpdate = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspOrderInsert(CBOnRspOrderInsert cb)		///报单录入请求响应
    {	cbOnRspOrderInsert = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspOrderAction(CBOnRspOrderAction cb)		///报单操作请求响应
    {	cbOnRspOrderAction = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQueryMaxOrderVolume(CBOnRspQueryMaxOrderVolume cb)		///查询最大报单数量响应
    {	cbOnRspQueryMaxOrderVolume = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspSettlementInfoConfirm(CBOnRspSettlementInfoConfirm cb)		///投资者结算结果确认响应
    {	cbOnRspSettlementInfoConfirm = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryOrder(CBOnRspQryOrder cb)		///请求查询报单响应
    {	cbOnRspQryOrder = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryTrade(CBOnRspQryTrade cb)		///请求查询成交响应
    {	cbOnRspQryTrade = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInvestorPosition(CBOnRspQryInvestorPosition cb)		///请求查询投资者持仓响应
    {	cbOnRspQryInvestorPosition = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryTradingAccount(CBOnRspQryTradingAccount cb)		///请求查询资金账户响应
    {	cbOnRspQryTradingAccount = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInvestor(CBOnRspQryInvestor cb)		///请求查询投资者响应
    {	cbOnRspQryInvestor = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryTradingCode(CBOnRspQryTradingCode cb)		///请求查询交易编码响应
    {	cbOnRspQryTradingCode = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInstrumentMarginRate(CBOnRspQryInstrumentMarginRate cb)		///请求查询合约保证金率响应
    {	cbOnRspQryInstrumentMarginRate = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInstrumentCommissionRate(CBOnRspQryInstrumentCommissionRate cb)		///请求查询合约手续费率响应
    {	cbOnRspQryInstrumentCommissionRate = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryExchange(CBOnRspQryExchange cb)		///请求查询交易所响应
    {	cbOnRspQryExchange = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInstrument(CBOnRspQryInstrument cb)		///请求查询合约响应
    {	cbOnRspQryInstrument = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryDepthMarketData(CBOnRspQryDepthMarketData cb)		///请求查询行情响应
    {	cbOnRspQryDepthMarketData = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQrySettlementInfo(CBOnRspQrySettlementInfo cb)		///请求查询投资者结算结果响应
    {	cbOnRspQrySettlementInfo = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInvestorPositionDetail(CBOnRspQryInvestorPositionDetail cb)		///请求查询投资者持仓明细响应
    {	cbOnRspQryInvestorPositionDetail = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryInvestorPositionCombineDetail(CBOnRspQryInvestorPositionCombineDetail cb)		///请求查询投资者持仓明细响应
    {	cbOnRspQryInvestorPositionCombineDetail = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryNotice(CBOnRspQryNotice cb)		///请求查询客户通知响应
    {	cbOnRspQryNotice = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQrySettlementInfoConfirm(CBOnRspQrySettlementInfoConfirm cb)		///请求查询结算信息确认响应
    {	cbOnRspQrySettlementInfoConfirm = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryCFMMCTradingAccountKey(CBOnRspQryCFMMCTradingAccountKey cb)		///查询保证金监管系统经纪公司资金账户密钥响应
    {	cbOnRspQryCFMMCTradingAccountKey = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspError(CBOnRspError cb)		///错误应答
    {	cbOnRspError = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRtnOrder(CBOnRtnOrder cb)		///报单通知
    {	cbOnRtnOrder = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRtnTrade(CBOnRtnTrade cb)		///成交通知
    {	cbOnRtnTrade = cb;	}
    
    TRADEAPI_API void WINAPI RegOnErrRtnOrderInsert(CBOnErrRtnOrderInsert cb)		///报单录入错误回报
    {	cbOnErrRtnOrderInsert = cb;	}
    
    TRADEAPI_API void WINAPI RegOnErrRtnOrderAction(CBOnErrRtnOrderAction cb)		///报单操作错误回报
    {	cbOnErrRtnOrderAction = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRtnInstrumentStatus(CBOnRtnInstrumentStatus cb)		///合约交易状态通知
    {	cbOnRtnInstrumentStatus = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryTradingNotice(CBOnRspQryTradingNotice cb)		///请求查询交易通知响应
    {	cbOnRspQryTradingNotice = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRtnTradingNotice(CBOnRtnTradingNotice cb)		///交易通知
    {	cbOnRtnTradingNotice = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRtnErrorConditionalOrder(CBOnRtnErrorConditionalOrder cb)		///提示条件单校验错误
    {	cbOnRtnErrorConditionalOrder = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryBrokerTradingParams(CBOnRspQryBrokerTradingParams cb)		///请求查询经纪公司交易参数响应
    {	cbOnRspQryBrokerTradingParams = cb;	}
    
    TRADEAPI_API void WINAPI RegOnRspQryBrokerTradingAlgos(CBOnRspQryBrokerTradingAlgos cb)		///请求查询经纪公司交易算法响应
    {	cbOnRspQryBrokerTradingAlgos = cb;	}
    
     
  12. struct.cs 结构/类型/枚举映射
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    
    namespace CTPTradeApi
    {
    	/// <summary>
    	/// 用户登录请求
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcReqUserLoginField
    	{
    		/// <summary>
    		/// 交易日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 用户代码				char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 密码					char 41
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string Password;
    
    		/// <summary>
    		/// 用户端产品信息		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string UserProductInfo;
    
    		/// <summary>
    		/// 接口端产品信息		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string InterfaceProductInfo;
    
    		/// <summary>
    		/// 协议信息				char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ProtocolInfo;
    	}
    
    	/// <summary>
    	/// 用户登录应答
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcRspUserLoginField
    	{
    		/// <summary>
    		/// 交易日		char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 登录成功时间	char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string LoginTime;
    
    		/// <summary>
    		/// 经纪公司代码	char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 用户代码		char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 交易系统名称	char 41
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string SystemName;
    
    		/// <summary>
    		/// 前置编号		int
    		/// </summary>
    		public int FrontID;
    
    		/// <summary>
    		/// 会话编号		int
    		/// </summary>
    		public int SessionID;
    
    		/// <summary>
    		/// 最大报单引用	char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string MaxOrderRef;
    
    		/// <summary>
    		/// 上期所时间	char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string SHFETime;
    
    		/// <summary>
    		/// 大商所时间	char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string DCETime;
    
    		/// <summary>
    		/// 郑商所时间	char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string CZCETime;
    
    		/// <summary>
    		/// 中金所时间	char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string FFEXTime;
    	}
    
    	/// <summary>
    	/// 投资者结算结果确认信息
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcSettlementInfoConfirmField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 确认日期			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ConfirmDate;
    
    		/// <summary>
    		/// 确认时间			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ConfirmTime;
    	}
    
    	/// <summary>
    	/// 合约查询的结果
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInstrumentField
    	{
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 合约名称				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string InstrumentName;
    
    		/// <summary>
    		/// 合约在交易所的代码	char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeInstID;
    
    		/// <summary>
    		/// 产品代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ProductID;
    
    		/// <summary>
    		/// 产品类型				char
    		/// </summary>
    		public EnumProductClass ProductClass;
    
    		/// <summary>
    		/// 交割年份				int
    		/// </summary>
    		public int DeliveryYear;
    
    		/// <summary>
    		/// 交割月					int
    		/// </summary>
    		public int DeliveryMonth;
    
    		/// <summary>
    		/// 市价单最大下单量		int
    		/// </summary>
    		public int MaxMarketOrderVolume;
    
    		/// <summary>
    		/// 市价单最小下单量		int
    		/// </summary>
    		public int MinMarketOrderVolume;
    
    		/// <summary>
    		/// 限价单最大下单量		int
    		/// </summary>
    		public int MaxLimitOrderVolume;
    
    		/// <summary>
    		/// 限价单最小下单量		int
    		/// </summary>
    		public int MinLimitOrderVolume;
    
    		/// <summary>
    		/// 合约数量乘数			int
    		/// </summary>
    		public int VolumeMultiple;
    
    		/// <summary>
    		/// 最小变动价位			double
    		/// </summary>
    		public double PriceTick;
    
    		/// <summary>
    		/// 创建日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string CreateDate;
    
    		/// <summary>
    		/// 上市日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string OpenDate;
    
    		/// <summary>
    		/// 到期日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExpireDate;
    
    		/// <summary>
    		/// 开始交割日			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string StartDelivDate;
    
    		/// <summary>
    		/// 结束交割日			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string EndDelivDate;
    
    		/// <summary>
    		/// 合约生命周期状态		char
    		/// </summary>
    		public EnumInstLifePhaseType InstLifePhase;
    
    		/// <summary>
    		/// 当前是否交易			int
    		/// </summary>
    		public EnumIntBoolType IsTrading;
    
    		/// <summary>
    		/// 持仓类型				char
    		/// </summary>
    		public EnumPositionType PositionType;
    
    		/// <summary>
    		/// 持仓日期类型			char
    		/// </summary>
    		public EnumUseHistoryPosition PositionDateType;
    
    		/// <summary>
    		/// 多头保证金率			double
    		/// </summary>
    		public double LongMarginRatio;
    
    		/// <summary>
    		/// 空头保证金率			double
    		/// </summary>
    		public double ShortMarginRatio;
    	};
    
    	/// <summary>
    	/// 深度行情
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcDepthMarketDataField
    	{
    		/// <summary>
    		/// 交易日			char[9]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 合约代码			char[31]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 交易所代码		char[9]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 合约在交易所的代码char[31]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeInstID;
    
    		/// <summary>
    		/// 最新价			double
    		/// </summary>
    		public double LastPrice;
    
    		/// <summary>
    		/// 上次结算价		double
    		/// </summary>
    		public double PreSettlementPrice;
    
    		/// <summary>
    		/// 昨收盘			double
    		/// </summary>
    		public double PreClosePrice;
    
    		/// <summary>
    		/// 昨持仓量			double
    		/// </summary>
    		public double PreOpenInterest;
    
    		/// <summary>
    		/// 今开盘			double
    		/// </summary>
    		public double OpenPrice;
    
    		/// <summary>
    		/// 最高价			double
    		/// </summary>
    		public double HighestPrice;
    
    		/// <summary>
    		/// 最低价			double
    		/// </summary>
    		public double LowestPrice;
    
    		/// <summary>
    		/// 数量				int
    		/// </summary>
    		public int Volume;
    
    		/// <summary>
    		/// 成交金额			double
    		/// </summary>
    		public double Turnover;
    
    		/// <summary>
    		/// 持仓量			double
    		/// </summary>
    		public double OpenInterest;
    
    		/// <summary>
    		/// 今收盘			double
    		/// </summary>
    		public double ClosePrice;
    
    		/// <summary>
    		/// 本次结算价		double
    		/// </summary>
    		public double SettlementPrice;
    
    		/// <summary>
    		/// 涨停板价			double
    		/// </summary>
    		public double UpperLimitPrice;
    
    		/// <summary>
    		/// 跌停板价			double
    		/// </summary>
    		public double LowerLimitPrice;
    
    		/// <summary>
    		/// 昨虚实度			double
    		/// </summary>
    		public double PreDelta;
    
    		/// <summary>
    		/// 今虚实度			double
    		/// </summary>
    		public double CurrDelta;
    
    		/// <summary>
    		/// 最后修改时间		char[9]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string UpdateTime;
    
    		/// <summary>
    		/// 最后修改毫秒		int
    		/// </summary>
    		public int UpdateMillisec;
    
    		/// <summary>
    		/// 申买价一			double
    		/// </summary>
    		public double BidPrice1;
    
    		/// <summary>
    		/// 申买量一			int
    		/// </summary>
    		public int BidVolume1;
    
    		/// <summary>
    		/// 申卖价一			double
    		/// </summary>
    		public double AskPrice1;
    
    		/// <summary>
    		/// 申卖量一			int
    		/// </summary>
    		public int AskVolume1;
    
    		/// <summary>
    		/// 申买价二			double
    		/// </summary>
    		public double BidPrice2;
    
    		/// <summary>
    		/// 申买量二			int
    		/// </summary>
    		public int BidVolume2;
    
    		/// <summary>
    		/// 申卖价二			double
    		/// </summary>
    		public double AskPrice2;
    
    		/// <summary>
    		/// 申卖量二			int
    		/// </summary>
    		public int AskVolume2;
    
    		/// <summary>
    		/// 申买价三			double
    		/// </summary>
    		public double BidPrice3;
    
    		/// <summary>
    		/// 申买量三			int
    		/// </summary>
    		public int BidVolume3;
    
    		/// <summary>
    		/// 申卖价三			double
    		/// </summary>
    		public double AskPrice3;
    
    		/// <summary>
    		/// 申卖量三			int
    		/// </summary>
    		public int AskVolume3;
    
    		/// <summary>
    		/// 申买价四			double
    		/// </summary>
    		public double BidPrice4;
    
    		/// <summary>
    		/// 申买量四			int
    		/// </summary>
    		public int BidVolume4;
    
    		/// <summary>
    		/// 申卖价四			double
    		/// </summary>
    		public double AskPrice4;
    
    		/// <summary>
    		/// 申卖量四			int
    		/// </summary>
    		public int AskVolume4;
    
    		/// <summary>
    		/// 申买价五			double
    		/// </summary>
    		public double BidPrice5;
    
    		/// <summary>
    		/// 申买量五			int
    		/// </summary>
    		public int BidVolume5;
    
    		/// <summary>
    		/// 申卖价五			double
    		/// </summary>
    		public double AskPrice5;
    
    		/// <summary>
    		/// 申卖量五			int
    		/// </summary>
    		public int AskVolume5;
    
    		/// <summary>
    		/// 当日均价			double
    		/// </summary>
    		public double AveragePrice;
    	}
    
    	/// <summary>
    	/// 帐户资金
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcTradingAccountField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者帐号			char 13							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string AccountID;
    
    		/// <summary>
    		/// 上次质押金额			double							0
    		/// </summary>
    		public double PreMortgage;
    
    		/// <summary>
    		/// 上次信用额度			double							0
    		/// </summary>
    		public double PreCredit;
    
    		/// <summary>
    		/// 上次存款额			double							0
    		/// </summary>
    		public double PreDeposit;
    
    		/// <summary>
    		/// 上次结算准备金		double
    		/// </summary>
    		public double PreBalance;
    
    		/// <summary>
    		/// 上次占用的保证金		double							0
    		/// </summary>
    		public double PreMargin;
    
    		/// <summary>
    		/// 利息基数				double							0
    		/// </summary>
    		public double InterestBase;
    
    		/// <summary>
    		/// 利息收入				double							0
    		/// </summary>
    		public double Interest;
    
    		/// <summary>
    		/// 入金金额				double
    		/// </summary>
    		public double Deposit;
    
    		/// <summary>
    		/// 出金金额				double
    		/// </summary>
    		public double Withdraw;
    
    		/// <summary>
    		/// 冻结的保证金			double
    		/// </summary>
    		public double FrozenMargin;
    
    		/// <summary>
    		/// 冻结的资金			double							0
    		/// </summary>
    		public double FrozenCash;
    
    		/// <summary>
    		/// 冻结的手续费			double
    		/// </summary>
    		public double FrozenCommission;
    
    		/// <summary>
    		/// 当前保证金总额		double
    		/// </summary>
    		public double CurrMargin;
    
    		/// <summary>
    		/// 资金差额				double							0
    		/// </summary>
    		public double CashIn;
    
    		/// <summary>
    		/// 手续费				double
    		/// </summary>
    		public double Commission;
    
    		/// <summary>
    		/// 平仓盈亏				double
    		/// </summary>
    		public double CloseProfit;
    
    		/// <summary>
    		/// 持仓盈亏				double
    		/// </summary>
    		public double PositionProfit;
    
    		/// <summary>
    		/// 期货结算准备金		double							0
    		/// </summary>
    		public double Balance;
    
    		/// <summary>
    		/// 可用资金				double
    		/// </summary>
    		public double Available;
    
    		/// <summary>
    		/// 可取资金				double
    		/// </summary>
    		public double WithdrawQuota;
    
    		/// <summary>
    		/// 基本准备金			double
    		/// </summary>
    		public double Reserve;
    
    		/// <summary>
    		/// 交易日				char 9							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int							0
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 信用额度				double							0
    		/// </summary>
    		public double Credit;
    
    		/// <summary>
    		/// 质押金额				double							0
    		/// </summary>
    		public double Mortgage;
    
    		/// <summary>
    		/// 交易所保证金			double							0
    		/// </summary>
    		public double ExchangeMargin;
    
    		/// <summary>
    		/// 投资者交割保证金		double							0
    		/// </summary>
    		public double DeliveryMargin;
    
    		/// <summary>
    		/// 交易所交割保证金		double							0
    		/// </summary>
    		public double ExchangeDeliveryMargin;
    	};
    
    	/// <summary>
    	/// 投资者持仓
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInvestorPositionField
    	{
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 经纪公司代码			char 11					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码			char 13					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 多空	方向-持仓			char
    		/// </summary>
    		public EnumPosiDirectionType PosiDirection;
    
    		/// <summary>
    		/// 投机套保	标志			char					0
    		/// </summary>
    		public EnumHedgeFlagType HedgeFlag;
    
    		/// <summary>
    		/// 持仓日期	类型			char
    		/// </summary>
    		public EnumPositionDateType PositionDate;
    
    		/// <summary>
    		/// 上日持仓				int
    		/// </summary>
    		public int YdPosition;
    
    		/// <summary>
    		/// 今日持仓				int
    		/// </summary>
    		public int Position;
    
    		/// <summary>
    		/// 多头冻结				int					0
    		/// </summary>
    		public int LongFrozen;
    
    		/// <summary>
    		/// 空头冻结				int					0
    		/// </summary>
    		public int ShortFrozen;
    
    		/// <summary>
    		/// 多头开仓冻结金额			double					0
    		/// </summary>
    		public double LongFrozenAmount;
    
    		/// <summary>
    		/// 空头开仓冻结金额			double					0
    		/// </summary>
    		public double ShortFrozenAmount;
    
    		/// <summary>
    		/// 开仓量				int
    		/// </summary>
    		public int OpenVolume;
    
    		/// <summary>
    		/// 平仓量				int					0
    		/// </summary>
    		public int CloseVolume;
    
    		/// <summary>
    		/// 开仓金额				double
    		/// </summary>
    		public double OpenAmount;
    
    		/// <summary>
    		/// 平仓金额				double					0
    		/// </summary>
    		public double CloseAmount;
    
    		/// <summary>
    		/// 持仓成本				double
    		/// </summary>
    		public double PositionCost;
    
    		/// <summary>
    		/// 上次占用的保证金		double					0
    		/// </summary>
    		public double PreMargin;
    
    		/// <summary>
    		/// 占用的保证金			double					0
    		/// </summary>
    		public double UseMargin;
    
    		/// <summary>
    		/// 冻结的保证金			double					0
    		/// </summary>
    		public double FrozenMargin;
    
    		/// <summary>
    		/// 冻结的资金			double					0
    		/// </summary>
    		public double FrozenCash;
    
    		/// <summary>
    		/// 冻结的手续费			double					0
    		/// </summary>
    		public double FrozenCommission;
    
    		/// <summary>
    		/// 资金差额				double					0
    		/// </summary>
    		public double CashIn;
    
    		/// <summary>
    		/// 手续费				double
    		/// </summary>
    		public double Commission;
    
    		/// <summary>
    		/// 平仓盈亏				double					0
    		/// </summary>
    		public double CloseProfit;
    
    		/// <summary>
    		/// 持仓盈亏				double
    		/// </summary>
    		public double PositionProfit;
    
    		/// <summary>
    		/// 结算价	上次			double					0
    		/// </summary>
    		public double PreSettlementPrice;
    
    		/// <summary>
    		/// 结算价	本次			double
    		/// </summary>
    		public double SettlementPrice;
    
    		/// <summary>
    		/// 交易日				char 9					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int					0
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 开仓成本				double					0
    		/// </summary>
    		public double OpenCost;
    
    		/// <summary>
    		/// 交易所保证金			double					0
    		/// </summary>
    		public double ExchangeMargin;
    
    		/// <summary>
    		/// 组合成交形成的持仓	int					0
    		/// </summary>
    		public int CombPosition;
    
    		/// <summary>
    		/// 组合多头冻结			int					0
    		/// </summary>
    		public int CombLongFrozen;
    
    		/// <summary>
    		/// 组合空头冻结			int					0
    		/// </summary>
    		public int CombShortFrozen;
    
    		/// <summary>
    		/// 逐日盯市平仓盈亏		double					0
    		/// </summary>
    		public double CloseProfitByDate;
    
    		/// <summary>
    		/// 逐笔对冲平仓盈亏		double					0
    		/// </summary>
    		public double CloseProfitByTrade;
    
    		/// <summary>
    		/// 今日持仓				int					0
    		/// </summary>
    		public int TodayPosition;
    
    		/// <summary>
    		/// 保证金率				double
    		/// </summary>
    		public double MarginRateByMoney;
    
    		/// <summary>
    		/// 保证金率(按手数)		double					0
    		/// </summary>
    		public double MarginRateByVolume;
    	};
    
    	/// <summary>
    	/// 投资者持仓明细
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInvestorPositionDetailField
    	{
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 经纪公司代码			char 11							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码			char 13							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 投机套保	标志			char						0
    		/// </summary>
    		public EnumHedgeFlagType HedgeFlag;
    
    		/// <summary>
    		/// 买卖	方向
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 开仓日期				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string OpenDate;
    
    		/// <summary>
    		/// 成交编号				char 21							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TradeID;
    
    		/// <summary>
    		/// 数量					int
    		/// </summary>
    		public int Volume;
    
    		/// <summary>
    		/// 开仓价				double
    		/// </summary>
    		public double OpenPrice;
    
    		/// <summary>
    		/// 交易日				char 9							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int							0
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 成交类型				char							0
    		/// </summary>
    		public EnumTradeType TradeType;
    
    		/// <summary>
    		/// 组合合约代码			char 31							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string CombInstrumentID;
    
    		/// <summary>
    		/// 交易所代码			char 9							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 逐日盯市平仓盈亏		double							0
    		/// </summary>
    		public double CloseProfitByDate;
    
    		/// <summary>
    		/// 逐笔对冲平仓盈亏		double							0
    		/// </summary>
    		public double CloseProfitByTrade;
    
    		/// <summary>
    		/// 持仓盈亏	逐日盯市		double							0
    		/// </summary>
    		public double PositionProfitByDate;
    
    		/// <summary>
    		/// 持仓盈亏	逐笔对冲		double
    		/// </summary>
    		public double PositionProfitByTrade;
    
    		/// <summary>
    		/// 保证金	投资者			double
    		/// </summary>
    		public double Margin;
    
    		/// <summary>
    		/// 保证金	交易所			double							0
    		/// </summary>
    		public double ExchMargin;
    
    		/// <summary>
    		/// 保证金率				double
    		/// </summary>
    		public double MarginRateByMoney;
    
    		/// <summary>
    		/// 保证金率(按手数)		double							0
    		/// </summary>
    		public double MarginRateByVolume;
    
    		/// <summary>
    		/// 昨结算价				double							0
    		/// </summary>
    		public double LastSettlementPrice;
    
    		/// <summary>
    		/// 结算价				double
    		/// </summary>
    		public double SettlementPrice;
    
    		/// <summary>
    		/// 平仓量				int							0
    		/// </summary>
    		public int CloseVolume;
    
    		/// <summary>
    		/// 平仓金额				double							0
    		/// </summary>
    		public double CloseAmount;
    	}
    
    	/// <summary>
    	/// 投资者组合持仓明细
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInvestorPositionCombineDetailField
    	{
    		/// <summary>
    		/// 交易日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 开仓日期				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string OpenDate;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 结算编号				int
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码			char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 组合编号			char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string ComTradeID;
    
    		/// <summary>
    		/// 撮合编号			char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TradeID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 投机套保标志			char
    		/// </summary>
    		public EnumHedgeFlagType HedgeFlag;
    
    		/// <summary>
    		/// 买卖方向
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 持仓量
    		/// </summary>
    		public int TotalAmt;
    
    		/// <summary>
    		/// 投资者保证金
    		/// </summary>
    		public double Margin;
    
    		/// <summary>
    		/// 交易所保证金
    		/// </summary>
    		public double ExchMargin;
    
    		/// <summary>
    		/// 保证金率
    		/// </summary>
    		public double MarginRateByMoney;
    
    		/// <summary>
    		/// 保证金率(按手数)
    		/// </summary>
    		public double MarginRateByVolume;
    
    		/// <summary>
    		/// 单腿编号
    		/// </summary>
    		public int LegID;
    
    		/// <summary>
    		/// 单腿乘数
    		/// </summary>
    		public int LegMultiple;
    
    		/// <summary>
    		/// 组合持仓合约编码
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string CombInstrumentID;
    	}
    
    	/// <summary>
    	/// 输入报单
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInputOrderField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 报单引用				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderRef;
    
    		/// <summary>
    		/// 用户代码				char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 报单价格条件			char
    		/// </summary>
    		public EnumOrderPriceType OrderPriceType;
    
    		/// <summary>
    		/// 买卖方向				char
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag1;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag2;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag3;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag4;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag5;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag1;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag2;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag3;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag4;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag5;
    
    		/// <summary>
    		/// 价格					double
    		/// </summary>
    		public double LimitPrice;
    
    		/// <summary>
    		/// 数量					int
    		/// </summary>
    		public int VolumeTotalOriginal;
    
    		/// <summary>
    		/// 有效期类型			char
    		/// </summary>
    		public EnumTimeConditionType TimeCondition;
    
    		/// <summary>
    		/// GTD日期				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string GTDDate;
    
    		/// <summary>
    		/// 成交量类型			char
    		/// </summary>
    		public EnumVolumeConditionType VolumeCondition;
    
    		/// <summary>
    		/// 最小成交量			int
    		/// </summary>
    		public int MinVolume;
    
    		/// <summary>
    		/// 触发条件				char
    		/// </summary>
    		public EnumContingentConditionType ContingentCondition;
    
    		/// <summary>
    		/// 止损价				double
    		/// </summary>
    		public double StopPrice;
    
    		/// <summary>
    		/// 强平原因				char
    		/// </summary>
    		public EnumForceCloseReasonType ForceCloseReason;
    
    		/// <summary>
    		/// 自动挂起标志			int
    		/// </summary>
    		public EnumIntBoolType IsAutoSuspend;
    
    		/// <summary>
    		/// 业务单元				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string BusinessUnit;
    
    		/// <summary>
    		/// 请求编号				int
    		/// </summary>
    		public int RequestID;
    
    		/// <summary>
    		/// 用户强评标志			int
    		/// </summary>
    		public EnumIntBoolType UserForceClose;
    	}
    
    	/// <summary>
    	/// 报单
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcOrderField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码				char 13						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 报单引用				char 13						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderRef;
    
    		/// <summary>
    		/// 用户代码				char 16						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 报单价格条件			char							0
    		/// </summary>
    		public EnumOrderPriceType OrderPriceType;
    
    		/// <summary>
    		/// 买卖	方向				char
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 开平	组合标志:共5个开平标志			char
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag1;
    
    		/// <summary>
    		/// 开平	组合标志:共5个开平标志			char 						0
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag2;
    
    		/// <summary>
    		/// 开平	组合标志:共5个开平标志			char 						0
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag3;
    
    		/// <summary>
    		/// 开平	组合标志:共5个开平标志			char 						0
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag4;
    
    		/// <summary>
    		/// 开平	组合标志:共5个开平标志			char 						0
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag5;
    
    		/// <summary>
    		/// 投机套保	组合标志:共5个		char						0
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag1;
    
    		/// <summary>
    		/// 投机套保	组合保标志:共5个		char						0
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag2;
    
    		/// <summary>
    		/// 投机套保	组合保标志:共5个		char						0
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag3;
    
    		/// <summary>
    		/// 投机套保	组合保标志:共5个		char						0
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag4;
    
    		/// <summary>
    		/// 投机套保	组合保标志:共5个		char						0
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag5;
    
    		/// <summary>
    		/// 价格					double
    		/// </summary>
    		public double LimitPrice;
    
    		/// <summary>
    		/// 数量					int
    		/// </summary>
    		public int VolumeTotalOriginal;
    
    		/// <summary>
    		/// 有效期类型			char							0
    		/// </summary>
    		public EnumTimeConditionType TimeCondition;
    
    		/// <summary>
    		/// GTD日期				char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string GTDDate;
    
    		/// <summary>
    		/// 成交量类型			char						0
    		/// </summary>
    		public EnumVolumeConditionType VolumeCondition;
    
    		/// <summary>
    		/// 最小成交量			int							0
    		/// </summary>
    		public int MinVolume;
    
    		/// <summary>
    		/// 触发条件			char					0
    		/// </summary>
    		public EnumContingentConditionType ContingentCondition;
    
    		/// <summary>
    		/// 止损价				double							0
    		/// </summary>
    		public double StopPrice;
    
    		/// <summary>
    		/// 强平原因			char						0
    		/// </summary>
    		public EnumForceCloseReasonType ForceCloseReason;
    
    		/// <summary>
    		/// 自动挂起标志		int							0
    		/// </summary>
    		public EnumIntBoolType IsAutoSuspend;
    
    		/// <summary>
    		/// 业务单元			char 21						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string BusinessUnit;
    
    		/// <summary>
    		/// 请求编号				int						0
    		/// </summary>
    		public int RequestID;
    
    		/// <summary>
    		/// 本地报单编号			char 13					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderLocalID;
    
    		/// <summary>
    		/// 交易所代码			char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 会员代码				char 11					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ParticipantID;
    
    		/// <summary>
    		/// 客户代码				char 11					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClientID;
    
    		/// <summary>
    		/// 合约在交易所的代码	char 31						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeInstID;
    
    		/// <summary>
    		/// 交易所交易员代码		char 21					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TraderID;
    
    		/// <summary>
    		/// 安装编号				int						0
    		/// </summary>
    		public int InstallID;
    
    		/// <summary>
    		/// 报单提交状态			char							0
    		/// </summary>
    		public EnumOrderSubmitStatusType OrderSubmitStatus;
    
    		/// <summary>
    		/// 报单提示序号			int						0
    		/// </summary>
    		public int NotifySequence;
    
    		/// <summary>
    		/// 交易日				char 9							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int						0
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 报单编号				char 21					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string OrderSysID;
    
    		/// <summary>
    		/// 报单来源				char							0
    		/// </summary>
    		public EnumOrderSourceType OrderSource;
    
    		/// <summary>
    		/// 报单状态				char
    		/// </summary>
    		public EnumOrderStatusType OrderStatus;
    
    		/// <summary>
    		/// 报单类型				char							0
    		/// </summary>
    		public EnumOrderType OrderType;
    
    		/// <summary>
    		/// 今成交	数量			int
    		/// </summary>
    		public int VolumeTraded;
    
    		/// <summary>
    		/// 剩余数量				int
    		/// </summary>
    		public int VolumeTotal;
    
    		/// <summary>
    		/// 报单日期				char 9							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertDate;
    
    		/// <summary>
    		/// 委托时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertTime;
    
    		/// <summary>
    		/// 激活时间				char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ActiveTime;
    
    		/// <summary>
    		/// 挂起时间				char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string SuspendTime;
    
    		/// <summary>
    		/// 最后修改时间			char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string UpdateTime;
    
    		/// <summary>
    		/// 撤销时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string CancelTime;
    
    		/// <summary>
    		/// 最后修改交易所交易员代码	char 21					0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string ActiveTraderID;
    
    		/// <summary>
    		/// 结算会员编号			char 11						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClearingPartID;
    
    		/// <summary>
    		/// 序号					int							0
    		/// </summary>
    		public int SequenceNo;
    
    		/// <summary>
    		/// 前置编号				int							0
    		/// </summary>
    		public int FrontID;
    
    		/// <summary>
    		/// 会话编号				int							0
    		/// </summary>
    		public int SessionID;
    
    		/// <summary>
    		/// 用户端产品信息		char 11							0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string UserProductInfo;
    
    		/// <summary>
    		/// 状态信息				char 81						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)]
    		public string StatusMsg;
    
    		/// <summary>
    		/// 用户强评标志			int							0
    		/// </summary>
    		public EnumIntBoolType UserForceClose;
    
    		/// <summary>
    		/// 操作用户代码			char 16						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string ActiveUserID;
    
    		/// <summary>
    		/// 经纪公司报单编号		int							0
    		/// </summary>
    		public int BrokerOrderSeq;
    
    		/// <summary>
    		/// 相关报单				char 21						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string RelativeOrderSysID;
    	}
    
    	/// <summary>
    	/// 交易所报单成功
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcTradeField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码				char 13						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 报单引用				char 13						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderRef;
    
    		/// <summary>
    		/// 用户代码				char 16						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 交易所代码			char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 成交编号				char 21						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TradeID;
    
    		/// <summary>
    		/// 买卖	方向				char
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 报单编号				char 21						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string OrderSysID;
    
    		/// <summary>
    		/// 会员代码				char 11						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ParticipantID;
    
    		/// <summary>
    		/// 客户代码				char 11						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClientID;
    
    		/// <summary>
    		/// 交易角色				char						0
    		/// </summary>
    		public EnumTradingRoleType TradingRole;
    
    		/// <summary>
    		/// 合约在交易所的代码	char 31						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeInstID;
    
    		/// <summary>
    		/// 开平	标志				char
    		/// </summary>
    		public EnumOffsetFlagType OffsetFlag;
    
    		/// <summary>
    		/// 投机套保	标志			char						0
    		/// </summary>
    		public EnumHedgeFlagType HedgeFlag;
    
    		/// <summary>
    		/// 价格					double
    		/// </summary>
    		public double Price;
    
    		/// <summary>
    		/// 数量					int
    		/// </summary>
    		public int Volume;
    
    		/// <summary>
    		/// 成交日期				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradeDate;
    
    		/// <summary>
    		/// 成交时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradeTime;
    
    		/// <summary>
    		/// 成交类型				char						0
    		/// </summary>
    		public EnumTradeType TradeType;
    
    		/// <summary>
    		/// 成交价来源			char						0
    		/// </summary>
    		public EnumPriceSourceType PriceSource;
    
    		/// <summary>
    		/// 交易所交易员代码		char 21						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TraderID;
    
    		/// <summary>
    		/// 本地报单编号			char 13						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderLocalID;
    
    		/// <summary>
    		/// 结算会员编号			char 11						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClearingPartID;
    
    		/// <summary>
    		/// 业务单元				char 21						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string BusinessUnit;
    
    		/// <summary>
    		/// 序号					int						0
    		/// </summary>
    		public int SequenceNo;
    
    		/// <summary>
    		/// 交易日				char 9						0
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int						0
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 经纪公司报单编号		int						0
    		/// </summary>
    		public int BrokerOrderSeq;
    	}
    
    	/// <summary>
    	/// 输入报单操作
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInputOrderActionField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 报单操作引用
    		/// </summary>
    		public int OrderActionRef;
    
    		/// <summary>
    		/// 报单引用				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderRef;
    
    		/// <summary>
    		/// 请求编号				int
    		/// </summary>
    		public int RequestID;
    
    		/// <summary>
    		/// 前置编号				int
    		/// </summary>
    		public int FrontID;
    
    		/// <summary>
    		/// 会话编号				int
    		/// </summary>
    		public int SessionID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 报单编号				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string OrderSysID;
    
    		/// <summary>
    		/// 操作标志				char
    		/// </summary>
    		public EnumActionFlagType ActionFlag;
    
    		/// <summary>
    		/// 价格					double
    		/// </summary>
    		public double LimitPrice;
    
    		/// <summary>
    		/// 数量变化				int
    		/// </summary>
    		public int VolumeChange;
    
    		/// <summary>
    		/// 用户代码				char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    	}
    
    	
    	/// <summary>
    	/// 报单操作
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcOrderActionField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 报单操作引用
    		/// </summary>
    		public int OrderActionRef;
    
    		/// <summary>
    		/// 报单引用				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderRef;
    
    		/// <summary>
    		/// 请求编号				int
    		/// </summary>
    		public int RequestID;
    
    		/// <summary>
    		/// 前置编号				int
    		/// </summary>
    		public int FrontID;
    
    		/// <summary>
    		/// 会话编号				int
    		/// </summary>
    		public int SessionID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 报单编号				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string OrderSysID;
    
    		/// <summary>
    		/// 操作标志				char
    		/// </summary>
    		public EnumActionFlagType ActionFlag;
    
    		/// <summary>
    		/// 价格					double
    		/// </summary>
    		public double LimitPrice;
    
    		/// <summary>
    		/// 数量变化				int
    		/// </summary>
    		public int VolumeChange;
    
    		/// <summary>
    		/// 操作日期
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ActionDate;
    
    		/// <summary>
    		/// 操作时间
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ActionTime;
    
    		/// <summary>
    		/// 交易所交易员代码		char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TraderID;
    
    		/// <summary>
    		/// 安装编号				int
    		/// </summary>
    		public int InstallID;
    
    		/// <summary>
    		/// 本地报单编号			char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderLocalID;
    
    		/// <summary>
    		/// 操作本地编号
    		/// </summary>
    		public int ActionLocalID;
    
    		/// <summary>
    		/// 会员代码				char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ParticipantID;
    
    		/// <summary>
    		/// 客户代码				char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClientID;
    
    		/// <summary>
    		/// 业务单元				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string BusinessUnit;
    
    		/// <summary>
    		/// 报单操作状态			char
    		/// </summary>
    		public EnumOrderActionStatusType OrderActionStatus;
    
    		/// <summary>
    		/// 用户代码					char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 状态信息					char 81
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)]
    		public string StatusMsg;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    	}
    
    	/// <summary>
    	/// 查询最大报单数量
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcQueryMaxOrderVolumeField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 买卖方向
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 开平标志
    		/// </summary>
    		public EnumOffsetFlagType OffsetFlag;
    
    		/// <summary>
    		/// 投机套保标志
    		/// </summary>
    		public EnumHedgeFlagType HedgeFlag;
    
    		/// <summary>
    		/// 最大允许报单数量
    		/// </summary>
    		public int MaxVolume;
    	}
    
    	
    	/// <summary>
    	/// 查询报单
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcQryOrderField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 报单编号				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string OrderSysID;
    
    		/// <summary>
    		/// 开始时间			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertTimeStart;
    
    		/// <summary>
    		/// 结束时间			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertTimeEnd;
    	}
    
    	/// <summary>
    	/// 查询成交
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcQryTradeField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 成交编号				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TradeID;
    
    		/// <summary>
    		/// 开始时间
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertTimeStart;
    
    		/// <summary>
    		/// 结束时间
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertTimeEnd;
    	}
    
    	
    	/// <summary>
    	/// 用户登出请求
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcUserLogoutField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 用户代码		char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    	}
    
    	
    	/// <summary>
    	/// 用户口令变更
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcUserPasswordUpdateField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 用户代码		char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 原来的口令
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string OldPassword;
    
    		/// <summary>
    		/// 新的口令
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string NewPassword;
    	}
    
    	
    	/// <summary>
    	/// 资金账户口令变更域
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcTradingAccountPasswordUpdateField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者帐号
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string AccountID;
    
    		/// <summary>
    		/// 原来的口令
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string OldPassword;
    
    		/// <summary>
    		/// 新的口令
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string NewPassword;
    	}
    
    	/// <summary>
    	/// 投资者
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInvestorField
    	{
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者分组代码
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorGroupID;
    
    		/// <summary>
    		/// 投资者名称
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)]
    		public string InvestorName;
    
    		///证件类型
    		public EnumIdCardType IdentifiedCardType;
    
    		/// <summary>
    		/// 证件号码
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 51)]
    		public string IdentifiedCardNo;
    
    		/// <summary>
    		/// 是否活跃
    		/// </summary>
    		public EnumIntBoolType IsActive;
    
    		/// <summary>
    		/// 联系电话
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string Telephone;
    
    		/// <summary>
    		/// 通讯地址
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 101)]
    		public string Address;
    
    		/// <summary>
    		/// 开户日期
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string OpenDate;
    
    		/// <summary>
    		/// 手机
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 41)]
    		public string Mobile;
    	}
    
    	/// <summary>
    	/// 交易编码
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcTradingCodeField
    	{
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 客户代码				char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClientID;
    
    		/// <summary>
    		/// 是否活跃
    		/// </summary>
    		public EnumIntBoolType IsActive;
    	}
    
    	/// <summary>
    	/// 合约保证金率
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInstrumentMarginRateField
    	{
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 投资者范围
    		/// </summary>
    		public EnumInvestorRangeType InvestorRange;
    
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 投机套保标志
    		/// </summary>
    		public EnumHedgeFlagType HedgeFlag;
    
    		/// <summary>
    		/// 多头保证金率
    		/// </summary>
    		public double LongMarginRatioByMoney;
    
    		/// <summary>
    		/// 多头保证金费
    		/// </summary>
    		public double LongMarginRatioByVolume;
    
    		/// <summary>
    		/// 空头保证金率
    		/// </summary>
    		public double ShortMarginRatioByMoney;
    
    		/// <summary>
    		/// 空头保证金费
    		/// </summary>
    		public double ShortMarginRatioByVolume;
    
    		/// <summary>
    		/// 是否相对交易所收取
    		/// </summary>
    		public EnumIntBoolType IsRelative;
    	}
    
    	/// <summary>
    	/// 合约手续费率
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInstrumentCommissionRateField
    	{
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 投资者范围
    		/// </summary>
    		public EnumInvestorRangeType InvestorRange;
    
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 开仓手续费率
    		/// </summary>
    		public double OpenRatioByMoney;
    
    		/// <summary>
    		/// 开仓手续费
    		/// </summary>
    		public double OpenRatioByVolume;
    
    		/// <summary>
    		/// 平仓手续费率
    		/// </summary>
    		public double CloseRatioByMoney;
    
    		/// <summary>
    		/// 平仓手续费
    		/// </summary>
    		public double CloseRatioByVolume;
    
    		/// <summary>
    		/// 平今手续费率
    		/// </summary>
    		public double CloseTodayRatioByMoney;
    
    		/// <summary>
    		/// 平今手续费
    		/// </summary>
    		public double CloseTodayRatioByVolume;
    	}
    
    	/// <summary>
    	/// 交易所
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcExchangeField
    	{
    		/// <summary>
    		/// 交易所代码				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 交易所名称				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeName;
    
    		/// <summary>
    		/// 交易所属性
    		/// </summary>
    		public EnumExchangePropertyType ExchangeProperty;
    	}
    
    	/// <summary>
    	/// 投资者结算结果
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcSettlementInfoField
    	{
    		/// <summary>
    		/// 交易日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码			char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 序号				int
    		/// </summary>
    		public int SequenceNo;
    
    		/// <summary>
    		/// 消息正文			char 501
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 501)]
    		public string Content;
    	}
    
    	/// <summary>
    	/// 客户通知
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcNoticeField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 消息正文			char 501
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 501)]
    		public string Content;
    
    		/// <summary>
    		/// 经纪公司通知内容序列号		char 2
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
    		public string SequenceLabel;
    	}
    
    	/// <summary>
    	/// 保证金监管系统经纪公司资金账户密钥
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcCFMMCTradingAccountKeyField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 经纪公司统一编码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ParticipantID;
    
    		/// <summary>
    		/// 投资者帐号
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string AccountID;
    
    		/// <summary>
    		/// 密钥编号			int
    		/// </summary>
    		public int KeyID;
    
    		/// <summary>
    		/// 动态密钥			char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string CurrentKey;
    	}
    
    	/// <summary>
    	/// 合约状态
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcInstrumentStatusField
    	{
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 合约在交易所的代码	char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeInstID;
    
    		/// <summary>
    		/// 结算组代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string SettlementGroupID;
    
    		/// <summary>
    		/// 合约代码			char[31]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 合约交易状态
    		/// </summary>
    		public EnumInstrumentStatusType InstrumentStatus;
    
    		/// <summary>
    		/// 交易阶段编号
    		/// </summary>
    		public int TradingSegmentSN;
    
    		/// <summary>
    		/// 进入本状态时间
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string EnterTime;
    
    		/// <summary>
    		/// 进入本状态原因
    		/// </summary>
    		public EnumInstStatusEnterReasonType EnterReason;
    	}
    
    	/// <summary>
    	/// 用户事件通知
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcTradingNoticeField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者范围
    		/// </summary>
    		public EnumInvestorRangeType InvestorRange;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 序列系列号			short
    		/// </summary>
    		public short SequenceSeries;
    
    		/// <summary>
    		/// 用户代码				char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 发送时间			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string SendTime;
    
    		/// <summary>
    		/// 序列号
    		/// </summary>
    		public int SequenceNo;
    
    		/// <summary>
    		/// 消息正文			char 501
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 501)]
    		public string Content;
    	}
    
    	/// <summary>
    	/// 用户事件通知信息
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcTradingNoticeInfoField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 发送时间			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string SendTime;
    
    		/// <summary>
    		/// 消息正文			char 501
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 501)]
    		public string Content;
    
    		/// <summary>
    		/// 序列系列号			short
    		/// </summary>
    		public short SequenceSeries;
    
    		/// <summary>
    		/// 序列号
    		/// </summary>
    		public int SequenceNo;
    	}
    
    	/// <summary>
    	/// 查询错误报单操作
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcErrorConditionalOrderField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 合约代码				char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 报单引用				char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderRef;
    
    		/// <summary>
    		/// 用户代码				char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string UserID;
    
    		/// <summary>
    		/// 报单价格条件			char
    		/// </summary>
    		public EnumOrderPriceType OrderPriceType;
    
    		/// <summary>
    		/// 买卖方向				char
    		/// </summary>
    		public EnumDirectionType Direction;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag1;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag2;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag3;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag4;
    
    		/// <summary>
    		/// 组合开平标志:共5个开平标志			char 
    		/// </summary>
    		public EnumOffsetFlagType CombOffsetFlag5;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag1;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag2;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag3;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag4;
    
    		/// <summary>
    		/// 组合投机套保标志:共5个		char
    		/// </summary>
    		public EnumHedgeFlagType CombHedgeFlag5;
    
    		/// <summary>
    		/// 价格					double
    		/// </summary>
    		public double LimitPrice;
    
    		/// <summary>
    		/// 数量					int
    		/// </summary>
    		public int VolumeTotalOriginal;
    
    		/// <summary>
    		/// 有效期类型			char
    		/// </summary>
    		public EnumTimeConditionType TimeCondition;
    
    		/// <summary>
    		/// GTD日期				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string GTDDate;
    
    		/// <summary>
    		/// 成交量类型			char
    		/// </summary>
    		public EnumVolumeConditionType VolumeCondition;
    
    		/// <summary>
    		/// 最小成交量			int
    		/// </summary>
    		public int MinVolume;
    
    		/// <summary>
    		/// 触发条件				char
    		/// </summary>
    		public EnumContingentConditionType ContingentCondition;
    
    		/// <summary>
    		/// 止损价				double
    		/// </summary>
    		public double StopPrice;
    
    		/// <summary>
    		/// 强平原因				char
    		/// </summary>
    		public EnumForceCloseReasonType ForceCloseReason;
    
    		/// <summary>
    		/// 自动挂起标志			int
    		/// </summary>
    		public EnumIntBoolType IsAutoSuspend;
    
    		/// <summary>
    		/// 业务单元				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string BusinessUnit;
    
    		/// <summary>
    		/// 请求编号				int
    		/// </summary>
    		public int RequestID;
    
    		/// <summary>
    		/// 本地报单编号			char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string OrderLocalID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 会员代码				char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ParticipantID;
    
    		/// <summary>
    		/// 客户代码				char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClientID;
    
    		/// <summary>
    		/// 合约在交易所的代码	char 31
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string ExchangeInstID;
    
    		/// <summary>
    		/// 交易所交易员代码		char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string TraderID;
    
    		/// <summary>
    		/// 安装编号				int
    		/// </summary>
    		public int InstallID;
    
    		/// <summary>
    		/// 报单提交状态			char
    		/// </summary>
    		public EnumOrderSubmitStatusType OrderSubmitStatus;
    
    		/// <summary>
    		/// 报单提示序号			int
    		/// </summary>
    		public int NotifySequence;
    
    		/// <summary>
    		/// 交易日				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string TradingDay;
    
    		/// <summary>
    		/// 结算编号				int
    		/// </summary>
    		public int SettlementID;
    
    		/// <summary>
    		/// 报单编号				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string OrderSysID;
    
    		/// <summary>
    		/// 报单来源				char
    		/// </summary>
    		public EnumOrderSourceType OrderSource;
    
    		/// <summary>
    		/// 报单状态				char
    		/// </summary>
    		public EnumOrderStatusType OrderStatus;
    
    		/// <summary>
    		/// 报单类型				char
    		/// </summary>
    		public EnumOrderType OrderType;
    
    		/// <summary>
    		/// 今成交数量			int
    		/// </summary>
    		public int VolumeTraded;
    
    		/// <summary>
    		/// 剩余数量				int
    		/// </summary>
    		public int VolumeTotal;
    
    		/// <summary>
    		/// 报单日期				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertDate;
    
    		/// <summary>
    		/// 委托时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string InsertTime;
    
    		/// <summary>
    		/// 激活时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ActiveTime;
    
    		/// <summary>
    		/// 挂起时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string SuspendTime;
    
    		/// <summary>
    		/// 最后修改时间			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string UpdateTime;
    
    		/// <summary>
    		/// 撤销时间				char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string CancelTime;
    
    		/// <summary>
    		/// 最后修改交易所交易员代码	char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string ActiveTraderID;
    
    		/// <summary>
    		/// 结算会员编号			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string ClearingPartID;
    
    		/// <summary>
    		/// 序号					int
    		/// </summary>
    		public int SequenceNo;
    
    		/// <summary>
    		/// 前置编号				int
    		/// </summary>
    		public int FrontID;
    
    		/// <summary>
    		/// 会话编号				int
    		/// </summary>
    		public int SessionID;
    
    		/// <summary>
    		/// 用户端产品信息		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string UserProductInfo;
    
    		/// <summary>
    		/// 状态信息				char 81
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)]
    		public string StatusMsg;
    
    		/// <summary>
    		/// 用户强评标志			int
    		/// </summary>
    		public EnumIntBoolType UserForceClose;
    
    		/// <summary>
    		/// 操作用户代码			char 16
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
    		public string ActiveUserID;
    
    		/// <summary>
    		/// 经纪公司报单编号		int
    		/// </summary>
    		public int BrokerOrderSeq;
    
    		/// <summary>
    		/// 相关报单				char 21
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
    		public string RelativeOrderSysID;
    
    		/// <summary>
    		/// 错误代码		int
    		/// </summary>
    		public int ErrorID;
    
    		/// <summary>
    		/// 错误信息		char 81
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)]
    		public string ErrorMsg;
    	}
    
    	/// <summary>
    	/// 经纪公司交易参数
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcBrokerTradingParamsField
    	{
    		/// <summary>
    		/// 经纪公司代码			char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 投资者代码		char 13
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 13)]
    		public string InvestorID;
    
    		/// <summary>
    		/// 保证金价格类型
    		/// </summary>
    		public EnumMarginPriceTypeType MarginPriceType;
    
    		/// <summary>
    		/// 浮盈浮亏都不计算
    		/// </summary>
    		public EnumAlgorithmType Algorithm;
    
    		/// <summary>
    		/// 可用是否包含平仓盈利
    		/// </summary>
    		public EnumIncludeCloseProfitType AvailIncludeCloseProfit;
    	}
    
    	/// <summary>
    	/// 经纪公司交易算法
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcBrokerTradingAlgosField
    	{
    		/// <summary>
    		/// 经纪公司代码		char 11
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
    		public string BrokerID;
    
    		/// <summary>
    		/// 交易所代码			char 9
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
    		public string ExchangeID;
    
    		/// <summary>
    		/// 合约代码			char[31]
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 31)]
    		public string InstrumentID;
    
    		/// <summary>
    		/// 持仓处理算法编号
    		/// </summary>
    		public EnumHandlePositionAlgoIDType HandlePositionAlgoID;
    
    		/// <summary>
    		/// 寻找保证金率算法编号
    		/// </summary>
    		public EnumFindMarginRateAlgoIDType FindMarginRateAlgoID;
    
    		/// <summary>
    		/// 资金处理算法编号
    		/// </summary>
    		public EnumHandleTradingAccountAlgoIDType HandleTradingAccountAlgoID;
    	}
    
    	/// <summary>
    	/// 响应错误信息
    	/// </summary>
    	[StructLayout(LayoutKind.Sequential)]
    	public struct CThostFtdcRspInfoField
    	{
    		/// <summary>
    		/// 错误代码		int
    		/// </summary>
    		public int ErrorID;
    
    		/// <summary>
    		/// 错误信息		char 81
    		/// </summary>
    		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)]
    		public string ErrorMsg;
    	}
    
    	/// <summary>
    	/// 持仓处理算法编号类型
    	/// </summary>
    	public enum EnumHandlePositionAlgoIDType : byte
    	{
    		///基本
    		Base = (byte)'1',
    
    		///大连商品交易所
    		DCE = (byte)'2',
    
    		///郑州商品交易所
    		CZCE = (byte)'3'
    	}
    
    	
    	/// <summary>
    	/// 寻找保证金率算法编号
    	/// </summary>
    	public enum EnumFindMarginRateAlgoIDType : byte
    	{
    		///基本
    		Base = (byte)'1',
    
    		///大连商品交易所
    		DCE = (byte)'2',
    
    		///郑州商品交易所
    		CZCE = (byte)'3'
    	}
    
    	/// <summary>
    	/// 资金处理算法编号
    	/// </summary>
    	public enum EnumHandleTradingAccountAlgoIDType : byte
    	{
    		///基本
    		Base = (byte)'1',
    
    		///大连商品交易所
    		DCE = (byte)'2',
    
    		///郑州商品交易所
    		CZCE = (byte)'3'
    	}
    
    	/// <summary>
    	/// 是否包含平仓盈利类型
    	/// </summary>
    	public enum EnumIncludeCloseProfitType : byte
    	{
    		/// <summary>
    		/// 包含平仓盈利
    		/// </summary>
    		Include = (byte)'0',
    
    		/// <summary>
    		/// 不包含平仓盈利
    		/// </summary>
    		NotInclude = (byte)'2'
    	}
    
    
    	/// <summary>
    	/// 保证金价格类型类型
    	/// </summary>
    	public enum EnumMarginPriceTypeType : byte
    	{
    		/// <summary>
    		/// 昨结算价
    		/// </summary>
    		PreSettlementPrice = (byte)'1',
    
    		/// <summary>
    		/// 最新价
    		/// </summary>
    		SettlementPrice = (byte)'2',
    
    		/// <summary>
    		/// 成交均价
    		/// </summary>
    		AveragePrice = (byte)'3',
    
    		/// <summary>
    		/// 开仓价
    		/// </summary>
    		OpenPrice = (byte)'4'
    	}
    
    	/// <summary>
    	/// 盈亏算法类型
    	/// </summary>
    	public enum EnumAlgorithmType : byte
    	{
    		/// <summary>
    		/// 浮盈浮亏都计算
    		/// </summary>
    		AG_All = (byte)'1',
    
    		/// <summary>
    		/// 浮盈不计,浮亏计
    		/// </summary>
    		AG_OnlyLost = (byte)'2',
    
    		/// <summary>
    		/// 浮盈计,浮亏不计
    		/// </summary>
    		AG_OnlyGain = (byte)'3',
    
    		/// <summary>
    		/// 浮盈浮亏都不计算
    		/// </summary>
    		AG_None = (byte)'4'
    	}
    
    
    	/// <summary>
    	/// 合约交易状态
    	/// </summary>
    	public enum EnumInstrumentStatusType : byte
    	{
    		/// <summary>
    		/// 开盘前
    		/// </summary>
    		BeforeTrading = (byte)'0',
    
    		/// <summary>
    		/// 非交易
    		/// </summary>
    		NoTrading = (byte)'1',
    
    		/// <summary>
    		/// 连续交易
    		/// </summary>
    		Continous = (byte)'2',
    
    		/// <summary>
    		/// 集合竞价报单
    		/// </summary>
    		AuctionOrdering = (byte)'3',
    
    		/// <summary>
    		/// 集合竞价价格平衡
    		/// </summary>
    		AuctionBalance = (byte)'4',
    
    		/// <summary>
    		/// 集合竞价撮合
    		/// </summary>
    		AuctionMatch = (byte)'5',
    
    		/// <summary>
    		/// 收盘
    		/// </summary>
    		Closed = (byte)'6'
    	}
    
    	/// <summary>
    	/// 品种进入交易状态原因类型
    	/// </summary>
    	public enum EnumInstStatusEnterReasonType : byte
    	{
    		/// <summary>
    		/// 自动切换
    		/// </summary>
    		Automatic = (byte)'1',
    
    		/// <summary>
    		/// 手动切换
    		/// </summary>
    		Manual = (byte)'2',
    
    		/// <summary>
    		/// 熔断
    		/// </summary>
    		Fuse = (byte)'3'
    	}
    
    	/// <summary>
    	/// 交易所属性类型
    	/// </summary>
    	public enum EnumExchangePropertyType : byte
    	{
    		/// <summary>
    		/// 正常
    		/// </summary>
    		Normal = (byte)'0',
    
    		/// <summary>
    		/// 根据成交生成报单
    		/// </summary>
    		GenOrderByTrade = (byte)'1'
    	}
    
    	/// <summary>
    	/// 投资者范围类型
    	/// </summary>
    	public enum EnumInvestorRangeType : byte
    	{
    		/// <summary>
    		/// 所有
    		/// </summary>
    		All = (byte)'1',
    
    		/// <summary>
    		/// 投资者组
    		/// </summary>
    		Group = (byte)'2',
    
    		/// <summary>
    		/// 单一投资者
    		/// </summary>
    		Single = (byte)'3'
    	}
    
    	/// <summary>
    	/// 证件类型
    	/// </summary>
    	public enum EnumIdCardType : byte
    	{
    		/// <summary>
    		/// 组织机构代码
    		/// </summary>
    		EID = (byte)'0',
    
    		/// <summary>
    		/// 身份证
    		/// </summary>
    		IDCard = (byte)'1',
    
    		/// <summary>
    		/// 军官证
    		/// </summary>
    		OfficerIDCard = (byte)'2',
    
    		/// <summary>
    		/// 警官证
    		/// </summary>
    		PoliceIDCard = (byte)'3',
    
    		/// <summary>
    		/// 士兵证
    		/// </summary>
    		SoldierIDCard = (byte)'4',
    
    		/// <summary>
    		/// 户口簿
    		/// </summary>
    		HouseholdRegister = (byte)'5',
    
    		/// <summary>
    		/// 护照
    		/// </summary>
    		Passport = (byte)'6',
    
    		/// <summary>
    		/// 台胞证
    		/// </summary>
    		TaiwanCompatriotIDCard = (byte)'7',
    
    		/// <summary>
    		/// 回乡证
    		/// </summary>
    		HomeComingCard = (byte)'8',
    
    		/// <summary>
    		/// 营业执照号
    		/// </summary>
    		LicenseNo = (byte)'9',
    
    		/// <summary>
    		/// 其他证件
    		/// </summary>
    		OtherCard = (byte)'x'
    	}
    
    	/// <summary>
    	/// 系统状态:
    	/// </summary>
    	public enum EnumState : byte
    	{
    		/// <summary>
    		/// 连接成功
    		/// </summary>
    		Connected,
    
    		/// <summary>
    		/// 登录成功
    		/// </summary>
    		Login,
    
    		/// <summary>
    		/// 结算确认完成
    		/// </summary>
    		SettlementInfoConfirm,
    
    		/// <summary>
    		/// 查询合约完成
    		/// </summary>
    		RspQryInstrument,
    
    		/// <summary>
    		/// 查询资金完成
    		/// </summary>
    		RspQryTradingAccount,
    
    		/// <summary>
    		/// 查询持仓完成
    		/// </summary>
    		RspQryInvestorPosition,
    
    		/// <summary>
    		/// Thost报单错误
    		/// </summary>
    		RspOrderInsert,
    
    		/// <summary>
    		/// Exchange报单错误
    		/// </summary>
    		ErrRtnOrderInsert,
    
    		/// <summary>
    		/// Thost报单操作错误
    		/// </summary>
    		RspOrderAction,
    
    		/// <summary>
    		/// Exchange报单操作错误
    		/// </summary>
    		ErrRtnOrderAction,
    
    		/// <summary>
    		/// 错误信息
    		/// </summary>
    		RspError,
    
    		/// <summary>
    		/// Thost报单录入成功
    		/// </summary>
    		RtnOrder,
    
    		/// <summary>
    		/// Exchange报单成功
    		/// </summary>
    		RtnTrade
    	}
    
    	/// <summary>
    	/// 产品类型
    	/// </summary>
    	public enum EnumProductClass : byte
    	{
    		/// <summary>
    		/// 期货
    		/// </summary>
    		Futures = (byte)'1',
    
    		/// <summary>
    		/// 期权
    		/// </summary>
    		Options = (byte)'2',
    
    		/// <summary>
    		/// 组合
    		/// </summary>
    		Combination = (byte)'3',
    
    		/// <summary>
    		/// 即期
    		/// </summary>
    		Spot = (byte)'4',
    
    		/// <summary>
    		/// 期转现
    		/// </summary>
    		EFP = (byte)'5'
    	}
    
    	/// <summary>
    	/// 合约生命周期状态
    	/// </summary>
    	public enum EnumInstLifePhaseType : byte
    	{
    		/// <summary>
    		/// 未上市
    		/// </summary>
    		NotStart = (byte)'0',
    
    		/// <summary>
    		/// 上市
    		/// </summary>
    		Started = (byte)'1',
    
    		/// <summary>
    		/// 停牌
    		/// </summary>
    		Pause = (byte)'2',
    
    		/// <summary>
    		/// 到期
    		/// </summary>
    		Expired = (byte)'3'
    	}
    
    	/// <summary>
    	/// 整型bool是否
    	/// </summary>
    	public enum EnumIntBoolType : int
    	{
    		/// <summary>
    		/// 是
    		/// </summary>
    		Yes = 1,
    
    		/// <summary>
    		/// 否
    		/// </summary>
    		No = 0
    	}
    
    	/// <summary>
    	/// 持仓类型
    	/// </summary>
    	public enum EnumPositionType : byte
    	{
    		/// <summary>
    		/// 净持仓
    		/// </summary>
    		Net = (byte)'1',
    
    		/// <summary>
    		/// 综合持仓
    		/// </summary>
    		Gross = (byte)'2'
    	}
    
    	/// <summary>
    	/// 持仓日期类型
    	/// </summary>
    	public enum EnumUseHistoryPosition : byte
    	{
    		/// <summary>
    		/// 使用历史持仓
    		/// </summary>
    		UseHistory = (byte)'1',
    
    		/// <summary>
    		/// 不使用历史持仓
    		/// </summary>
    		NoUseHistory = (byte)'1'
    	}
    
    	/// <summary>
    	/// 持仓多空方向
    	/// </summary>
    	public enum EnumPosiDirectionType : byte
    	{
    		/// <summary>
    		/// 净持仓
    		/// </summary>
    		Net = (byte)'1',
    
    		/// <summary>
    		/// 多持仓
    		/// </summary>
    		Long = (byte)'2',
    
    		/// <summary>
    		/// 空持仓
    		/// </summary>
    		Short = (byte)'3'
    	}
    
    	/// <summary>
    	/// 投机套保标志
    	/// </summary>
    	public enum EnumHedgeFlagType : byte
    	{
    		/// <summary>
    		/// 投机
    		/// </summary>
    		Speculation = (byte)'1',
    
    		/// <summary>
    		/// 套保
    		/// </summary>
    		Hedge = (byte)'3',
    	}
    
    	/// <summary>
    	/// 持仓日期类型
    	/// </summary>
    	public enum EnumPositionDateType : byte
    	{
    		/// <summary>
    		/// 今日持仓
    		/// </summary>
    		Today = (byte)'1',
    
    		/// <summary>
    		/// 历史持仓
    		/// </summary>
    		History = (byte)'2'
    	}
    
    	/// <summary>
    	/// 报单价格条件
    	/// </summary>
    	public enum EnumOrderPriceType : byte
    	{
    		/// <summary>
    		/// 任意价
    		/// </summary>
    		AnyPrice = (byte)'1',
    
    		/// <summary>
    		/// 限价
    		/// </summary>
    		LimitPrice = (byte)'2',
    
    		/// <summary>
    		/// 最优价
    		/// </summary>
    		BestPrice = (byte)'3',
    
    		/// <summary>
    		/// 最新价
    		/// </summary>
    		LastPrice = (byte)'4',
    
    		/// <summary>
    		/// 最新价上浮1
    		/// </summary>
    		LastPricePlusOneTicks = (byte)'5',
    
    		/// <summary>
    		/// 最新价上浮2
    		/// </summary>
    		LastPricePlusTwoTicks = (byte)'6',
    
    		/// <summary>
    		/// 最新价上浮3
    		/// </summary>
    		LastPricePlusThreeTicks = (byte)'7',
    
    		/// <summary>
    		/// 卖1价
    		/// </summary>
    		AskPrice1 = (byte)'8',
    
    		/// <summary>
    		/// 卖1价上浮1
    		/// </summary>
    		AskPrice1PlusOneTicks = (byte)'9',
    
    		/// <summary>
    		/// 卖1价上浮2
    		/// </summary>
    		AskPrice1PlusTwoTicks = (byte)'A',
    
    		/// <summary>
    		/// 卖1价上浮3
    		/// </summary>
    		AskPrice1PlusThreeTicks = (byte)'B',
    
    		/// <summary>
    		/// 买1价
    		/// </summary>
    		BidPrice1 = (byte)'C',
    
    		/// <summary>
    		/// 买1价上浮1
    		/// </summary>
    		BidPrice1PlusOneTicks = (byte)'D',
    
    		/// <summary>
    		/// 买1价上浮2
    		/// </summary>
    		BidPrice1PlusTwoTicks = (byte)'E',
    
    		/// <summary>
    		/// 买1价上浮3
    		/// </summary>
    		BidPrice1PlusThreeTicks = (byte)'F'
    	}
    
    	/// <summary>
    	/// 买卖方向
    	/// </summary>
    	public enum EnumDirectionType : byte
    	{
    		/// <summary>
    		/// 买
    		/// </summary>
    		Buy = (byte)'0',
    
    		/// <summary>
    		/// 卖
    		/// </summary>
    		Sell = (byte)'1'
    	}
    
    	/// <summary>
    	/// 开平标志
    	/// </summary>
    	public enum EnumOffsetFlagType : byte
    	{
    		/// <summary>
    		/// 开仓
    		/// </summary>
    		Open = (byte)'0',
    
    		/// <summary>
    		/// 平仓
    		/// </summary>
    		Close = (byte)'1',
    
    		/// <summary>
    		/// 强平
    		/// </summary>
    		ForceClose = (byte)'2',
    
    		/// <summary>
    		/// 平今
    		/// </summary>
    		CloseToday = (byte)'3',
    
    		/// <summary>
    		/// 平昨
    		/// </summary>
    		CloseYesterday = (byte)'4',
    	}
    
    	/// <summary>
    	/// 有效期类型
    	/// </summary>
    	public enum EnumTimeConditionType : byte
    	{
    		/// <summary>
    		/// 立即完成,否则撤销
    		/// </summary>
    		IOC = (byte)'1',
    
    		/// <summary>
    		/// 本节有效
    		/// </summary>
    		GFS = (byte)'2',
    
    		/// <summary>
    		/// 当日有效
    		/// </summary>
    		GFD = (byte)'3',
    
    		/// <summary>
    		/// 指定日期前有效
    		/// </summary>
    		GTD = (byte)'4',
    
    		/// <summary>
    		/// 撤销前有效
    		/// </summary>
    		GTC = (byte)'5',
    
    		/// <summary>
    		/// 集合竞价有效
    		/// </summary>
    		GFA = (byte)'6'
    	}
    
    	/// <summary>
    	/// 成交量类型
    	/// </summary>
    	public enum EnumVolumeConditionType : byte
    	{
    		/// <summary>
    		/// 任何数量
    		/// </summary>
    		AV = (byte)'1',
    
    		/// <summary>
    		/// 最小数量
    		/// </summary>
    		MV = (byte)'2',
    
    		/// <summary>
    		/// 全部数量
    		/// </summary>
    		CV = (byte)'3'
    	}
    
    	/// <summary>
    	/// 触发条件
    	/// </summary>
    	public enum EnumContingentConditionType : byte
    	{
    		/// <summary>
    		/// 立即
    		/// </summary>
    		Immediately = (byte)'1',
    
    		/// <summary>
    		/// 止损
    		/// </summary>
    		Touch = (byte)'2',
    
    		/// <summary>
    		/// 止赢
    		/// </summary>
    		TouchProfit = (byte)'3',
    
    		/// <summary>
    		/// 预埋单
    		/// </summary>
    		ParkedOrder = (byte)'4',
    
    		/// <summary>
    		/// 最新价>条件价
    		/// </summary>
    		LastPriceGreaterThanStopPrice = (byte)'5',
    
    		/// <summary>
    		/// 最新价>=条件价
    		/// </summary>
    		LastPriceGreaterEqualStopPrice = (byte)'6',
    
    		/// <summary>
    		/// 最新价 小于 条件价
    		/// </summary>
    		LastPriceLesserThanStopPrice = (byte)'7',
    
    		/// <summary>
    		/// 最新价 小等于 条件价
    		/// </summary>
    		LastPriceLesserEqualStopPrice = (byte)'8',
    
    		/// <summary>
    		/// 卖1价>条件价
    		/// </summary>
    		AskPriceGreaterThanStopPrice = (byte)'9',
    
    		/// <summary>
    		/// 卖1价>=条件价
    		/// </summary>
    		AskPriceGreaterEqualStopPrice = (byte)'A',
    
    		/// <summary>
    		/// 卖1价 小于 条件价
    		/// </summary>
    		AskPriceLesserThanStopPrice = (byte)'B',
    
    		/// <summary>
    		/// 卖1价 小等于 条件价
    		/// </summary>
    		AskPriceLesserEqualStopPrice = (byte)'C',
    
    		/// <summary>
    		/// 买1价>条件价
    		/// </summary>
    		BidPriceGreaterThanStopPrice = (byte)'D',
    
    		/// <summary>
    		/// 买1价>=条件价
    		/// </summary>
    		BidPriceGreaterEqualStopPrice = (byte)'E',
    
    		/// <summary>
    		/// 买1价 小于 条件价
    		/// </summary>
    		BidPriceLesserThanStopPrice = (byte)'F',
    
    		/// <summary>
    		/// 买1价 小等于 条件价
    		/// </summary>
    		BidPriceLesserEqualStopPrice = (byte)'H'
    	}
    
    	/// <summary>
    	/// 强平标志
    	/// </summary>
    	public enum EnumForceCloseReasonType : byte
    	{
    		/// <summary>
    		/// 非强平
    		/// </summary>
    		NotForceClose = (byte)'0',
    
    		/// <summary>
    		/// 资金不足
    		/// </summary>
    		LackDeposit = (byte)'1',
    
    		/// <summary>
    		/// 客户超仓
    		/// </summary>
    		ClientOverPositionLimit = (byte)'2',
    
    		/// <summary>
    		/// 会员超仓
    		/// </summary>
    		MemberOverPositionLimi = (byte)'3',
    
    		/// <summary>
    		/// 持仓非整数倍
    		/// </summary>
    		NotMultiple = (byte)'4',
    
    		/// <summary>
    		/// 违规
    		/// </summary>
    		Violation = (byte)'5',
    
    		/// <summary>
    		/// 其它
    		/// </summary>
    		Other = (byte)'6'
    	}
    
    	/// <summary>
    	/// 报单提交状态
    	/// </summary>
    	public enum EnumOrderSubmitStatusType : byte
    	{
    		/// <summary>
    		/// 已经提交
    		/// </summary>
    		InsertSubmitted = (byte)'0',
    
    		/// <summary>
    		/// 撤单已经提交
    		/// </summary>
    		CancelSubmitted = (byte)'1',
    
    		/// <summary>
    		/// 修改已经提交
    		/// </summary>
    		ModifySubmitted = (byte)'2',
    
    		/// <summary>
    		/// 已经接受
    		/// </summary>
    		Accepted = (byte)'3',
    
    		/// <summary>
    		/// 报单已经被拒绝
    		/// </summary>
    		InsertRejected = (byte)'4',
    
    		/// <summary>
    		/// 撤单已经被拒绝
    		/// </summary>
    		CancelRejected = (byte)'5',
    
    		/// <summary>
    		/// 改单已经被拒绝
    		/// </summary>
    		ModifyRejected = (byte)'6'
    	}
    
    	/// <summary>
    	/// 报单来源
    	/// </summary>
    	public enum EnumOrderSourceType : byte
    	{
    		/// <summary>
    		/// 来自参与者
    		/// </summary>
    		Participant = (byte)'0',
    
    		/// <summary>
    		/// 来自管理员
    		/// </summary>
    		Administrator = (byte)'1'
    	}
    
    	/// <summary>
    	/// 报单状态
    	/// </summary>
    	public enum EnumOrderStatusType : byte
    	{
    		/// <summary>
    		/// 全部成交
    		/// </summary>
    		AllTraded = (byte)'0',
    
    		/// <summary>
    		/// 部分成交还在队列中
    		/// </summary>
    		PartTradedQueueing = (byte)'1',
    
    		/// <summary>
    		/// 部分成交不在队列中
    		/// </summary>
    		PartTradedNotQueueing = (byte)'2',
    
    		/// <summary>
    		/// 未成交还在队列中
    		/// </summary>
    		NoTradeQueueing = (byte)'3',
    
    		/// <summary>
    		/// 未成交不在队列中
    		/// </summary>
    		NoTradeNotQueueing = (byte)'4',
    
    		/// <summary>
    		/// 撤单
    		/// </summary>
    		Canceled = (byte)'5',
    
    		/// <summary>
    		/// 未知
    		/// </summary>
    		Unknown = (byte)'a',
    
    		/// <summary>
    		/// 尚未触发
    		/// </summary>
    		NotTouched = (byte)'b',
    
    		/// <summary>
    		/// 已触发
    		/// </summary>
    		Touched = (byte)'c'
    	}
    
    	/// <summary>
    	/// 报单类型
    	/// </summary>
    	public enum EnumOrderType : byte
    	{
    		/// <summary>
    		/// 正常
    		/// </summary>
    		Normal = (byte)'0',
    
    		/// <summary>
    		/// 报价衍生
    		/// </summary>
    		DeriveFromQuote = (byte)'1',
    
    		/// <summary>
    		/// 组合衍生
    		/// </summary>
    		DeriveFromCombination = (byte)'2',
    
    		/// <summary>
    		/// 组合报单
    		/// </summary>
    		Combination = (byte)'3',
    
    		/// <summary>
    		/// 条件单
    		/// </summary>
    		ConditionalOrder = (byte)'4',
    
    		/// <summary>
    		/// 互换单
    		/// </summary>
    		ORDT_Swap = (byte)'5'
    	}
    
    	/// <summary>
    	/// 交易角色
    	/// </summary>
    	public enum EnumTradingRoleType : byte
    	{
    		/// <summary>
    		/// 代理
    		/// </summary>
    		Broker = (byte)'1',
    
    		/// <summary>
    		/// 自营
    		/// </summary>
    		Host = (byte)'2',
    
    		/// <summary>
    		/// 做市商
    		/// </summary>
    		Maker = (byte)'3'
    	}
    
    	/// <summary>
    	/// 成交类型
    	/// </summary>
    	public enum EnumTradeType : byte
    	{
    		/// <summary>
    		/// 普通成交
    		/// </summary>
    		Common = (byte)'0',
    
    		/// <summary>
    		/// 期权执行
    		/// </summary>
    		OptionsExecution = (byte)'1',
    
    		/// <summary>
    		/// OTC成交
    		/// </summary>
    		OTC = (byte)'2',
    
    		/// <summary>
    		/// 期转现衍生成交
    		/// </summary>
    		EFPDerived = (byte)'3',
    
    		/// <summary>
    		/// 组合衍生成交
    		/// </summary>
    		CombinationDerived = (byte)'4'
    	}
    
    	/// <summary>
    	/// 成交价来源
    	/// </summary>
    	public enum EnumPriceSourceType : byte
    	{
    		/// <summary>
    		/// 前成交价
    		/// </summary>
    		LastPrice = (byte)'0',
    
    		/// <summary>
    		/// 买委托价
    		/// </summary>
    		PSRC_Buy = (byte)'1',
    
    		/// <summary>
    		/// 卖委托价
    		/// </summary>
    		PSRC_Sell = (byte)'2'
    	}
    
    	/// <summary>
    	/// 报单操作类型
    	/// </summary>
    	public enum EnumActionFlagType : byte
    	{
    		/// <summary>
    		/// 删除
    		/// </summary>
    		Delete = (byte)'0',
    
    		/// <summary>
    		/// 修改
    		/// </summary>
    		Modify = (byte)'3'
    	}
    
    	/// <summary>
    	/// 报单状态
    	/// </summary>
    	public enum EnumOrderActionStatusType : byte
    	{
    		/// <summary>
    		/// 已经提交
    		/// </summary>
    		Submitted = (byte)'a',
    
    		/// <summary>
    		/// 已经接受
    		/// </summary>
    		Accepted = (byte)'b',
    
    		/// <summary>
    		/// 已经被拒绝
    		/// </summary>
    		Rejected = (byte)'c'
    	}
    }
    
     
  13. TradeApi.cs //交易接口CS端对dll的调用
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    
    namespace CTPTradeApi
    {
    	/// <summary>
    	/// 交易接口
    	/// </summary>
    	public class TradeApi
    	{
    		const string dllName = "TradeApi.dll";
    
    		/// <summary>
    		/// TradeApi.dll与CTPTradeApi.dll 放在同一文件夹中
    		/// </summary>
    		public TradeApi() { }
    		/// <summary>
    		/// 前置地址
    		/// </summary>
    		public string FrontAddr { get; set; }
    		/// <summary>
    		/// 经纪公司代码ctp-2030;上期-4030;
    		/// </summary>
    		public string BrokerID { get; set; }
    		/// <summary>
    		/// 投资者代码 351962-申万
    		/// </summary>
    		public string InvestorID { get; set; }
    		/// <summary>
    		/// 前置编号
    		/// </summary>
    		public int FrontID { get; set; }
    		/// <summary>
    		/// 会话编号
    		/// </summary>
    		public int SessionID { get; set; }
    		/// <summary>
    		/// 最大报单引用
    		/// </summary>
    		public int MaxOrderRef { get; set; }
    
    
    		[DllImport(dllName, EntryPoint = "?Connect@@YAXPAD@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void connect(string FrontAddr);
    		/// <summary>
    		/// 连接
    		/// </summary>
    		public void Connect(string frontAddr) { this.FrontAddr = frontAddr; connect(frontAddr); }
    		/// <summary>
    		/// 断开
    		/// </summary>
    		[DllImport(dllName, EntryPoint = "?DisConnect@@YAXXZ", CallingConvention = CallingConvention.Cdecl)]
    		static extern void disConnect();
    		/// <summary>
    		/// 连接
    		/// </summary>
    		public void DisConnect() { disConnect(); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqUserLogin@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqUserLogin(string BROKER_ID, string INVESTOR_ID, string PASSWORD);
    		/// <summary>
    		/// 登入请求
    		/// </summary>
    		/// <param name="brokerID"></param>
    		/// <param name="investorID"></param>
    		/// <param name="passWord">密码</param>
    		public void UserLogin(string brokerID, string investorID, string passWord)
    		{
    			this.BrokerID = brokerID;
    			this.InvestorID = investorID;
    			ReqUserLogin(this.BrokerID, this.InvestorID, passWord);
    		}
    
    		[DllImport(dllName, EntryPoint = "?ReqUserLogout@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqUserLogout(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 发送登出请求
    		/// </summary>
    		public void UserLogout() { reqUserLogout(this.BrokerID, this.InvestorID); }
    
    		[DllImport(dllName, EntryPoint = "?ReqUserPasswordUpdate@@YAXQAD000@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqUserPasswordUpdate(string BROKER_ID, string USER_ID, string OLD_PASSWORD, string NEW_PASSWORD);
    		/// <summary>
    		/// 更新用户口令
    		/// </summary>
    		/// <param name="userID"></param>
    		/// <param name="oldPassword"></param>
    		/// <param name="newPassword"></param>
    		public void UserPasswordupdate(string userID, string oldPassword, string newPassword) { reqUserPasswordUpdate(this.BrokerID, userID, oldPassword, newPassword); }
    
    		[DllImport(dllName, EntryPoint = "?ReqTradingAccountPasswordUpdate@@YAXQAD000@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqTradingAccountPasswordUpdate(string BROKER_ID, string ACCOUNT_ID, string OLD_PASSWORD, string NEW_PASSWORD);
    		/// <summary>
    		/// 资金账户口令更新请求
    		/// </summary>
    		/// <param name="accountID"></param>
    		/// <param name="oldPassword"></param>
    		/// <param name="newPassword"></param>
    		public void TradingAccountPasswordUpdate(string accountID, string oldPassword, string newPassword) { reqTradingAccountPasswordUpdate(this.BrokerID, accountID, oldPassword, newPassword); }
    
    		[DllImport(dllName, EntryPoint = "?ReqOrderInsert@@YAXPAUCThostFtdcInputOrderField@@@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqOrderInsert(ref CThostFtdcInputOrderField req);
    		/// <summary>
    		/// 下单:录入报单
    		/// </summary>
    		/// <param name="order">输入的报单</param>
    		/// <s></s>
    		public void OrderInsert(CThostFtdcInputOrderField order) { ReqOrderInsert(ref order); }
    		/// <summary>
    		/// 开平仓
    		/// </summary>
    		/// <param name="InstrumentID">合约代码</param>
    		/// <param name="OffsetFlag">平仓:CloseToday/CloseYesterday</param>
    		/// <param name="Direction">买卖</param>
    		/// <param name="Price">价格</param>
    		/// <param name="Volume">手数</param>
    		public void OrderInsert(string InstrumentID, EnumOffsetFlagType OffsetFlag, EnumDirectionType Direction, double Price, int Volume)
    		{
    			CThostFtdcInputOrderField tmp = new CThostFtdcInputOrderField();
    			tmp.BrokerID = this.BrokerID;
    			tmp.BusinessUnit = null;
    			tmp.ContingentCondition = EnumContingentConditionType.Immediately;
    			tmp.ForceCloseReason = EnumForceCloseReasonType.NotForceClose;
    			tmp.InvestorID = this.InvestorID;
    			tmp.IsAutoSuspend = EnumIntBoolType.No;
    			tmp.MinVolume = 1;
    			tmp.OrderPriceType = EnumOrderPriceType.LimitPrice;
    			tmp.OrderRef = (++this.MaxOrderRef).ToString();
    			tmp.TimeCondition = EnumTimeConditionType.GFD;
    			tmp.UserForceClose = EnumIntBoolType.No;
    			tmp.UserID = this.InvestorID;
    			tmp.VolumeCondition = EnumVolumeConditionType.AV;
    			tmp.CombHedgeFlag1 = EnumHedgeFlagType.Speculation;
    
    			tmp.InstrumentID = InstrumentID;
    			tmp.CombOffsetFlag1 = OffsetFlag;
    			tmp.Direction = Direction;
    			tmp.LimitPrice = Price;
    			tmp.VolumeTotalOriginal = Volume;
    			OrderInsert(tmp);
    		}
    
    		[DllImport(dllName, EntryPoint = "?ReqOrderAction@@YAXPAUCThostFtdcInputOrderActionField@@@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqOrderAction(ref CThostFtdcInputOrderActionField pOrder);
    		/// <summary>
    		/// 撤/改单:报单操作请求
    		/// </summary>
    		/// <param name="order">指令单</param>
    		public void OrderAction(CThostFtdcInputOrderActionField order) { ReqOrderAction(ref order); }
    		/// <summary>
    		/// 撤单
    		/// </summary>
    		/// <param name="InstrumentID"></param>
    		/// <param name="FrontID"></param>
    		/// <param name="SessionID"></param>
    		/// <param name="OrderRef"></param>
    		public void OrderAction(string InstrumentID,int FrontID, int SessionID, string OrderRef)
    		{//
    			CThostFtdcInputOrderActionField tmp = new CThostFtdcInputOrderActionField();
    			tmp.ActionFlag = EnumActionFlagType.Delete;
    			tmp.BrokerID = this.BrokerID;
    			tmp.InvestorID = this.InvestorID;
    			//tmp.UserID = this.InvestorID;
    			tmp.InstrumentID = InstrumentID;
    			//tmp.VolumeChange = int.Parse(lvi.SubItems["VolumeTotalOriginal"].Text);
    
    			tmp.FrontID = FrontID;
    			tmp.SessionID = SessionID;
    			tmp.OrderRef = OrderRef;
    			//tmp.ExchangeID = ExchangeID;
    			//tmp.OrderSysID = new string('\0', 21 - OrderSysID.Length) + OrderSysID;	//OrderSysID右对齐
    			OrderAction(tmp);
    		}
    
    		[DllImport(dllName, EntryPoint = "?ReqQueryMaxOrderVolume@@YAXPAUCThostFtdcQueryMaxOrderVolumeField@@@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQueryMaxOrderVolume(ref CThostFtdcQueryMaxOrderVolumeField pMaxOrderVolume);
    		/// <summary>
    		/// 查询最大报单数量请求
    		/// </summary>
    		/// <param name="pMaxOrderVolume"></param>
    		public void QueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField pMaxOrderVolume) { reqQueryMaxOrderVolume(ref pMaxOrderVolume); }
    
    		[DllImport(dllName, EntryPoint = "?ReqSettlementInfoConfirm@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqSettlementInfoConfirm(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 确认结算结果
    		/// </summary>
    		/// <s></s>
    		public void SettlementInfoConfirm() { ReqSettlementInfoConfirm(this.BrokerID, this.InvestorID); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryOrder@@YAXPAUCThostFtdcQryOrderField@@@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryOrder(ref CThostFtdcQryOrderField pQryOrder);		
    		/// <summary>
    		/// 请求查询报单
    		/// </summary>
    		public void QryOrder(CThostFtdcQryOrderField pQryOrder) { reqQryOrder(ref pQryOrder); }/// <summary>
    		/// 请求查询报单_所有
    		/// </summary>
    		public void QryOrder()
    		{
    			CThostFtdcQryOrderField tmp = new CThostFtdcQryOrderField();
    			tmp.BrokerID = this.BrokerID;
    			tmp.InvestorID = this.InvestorID;
    			reqQryOrder(ref tmp);
    		}
    
    		[DllImport(dllName, EntryPoint = "?ReqQryTrade@@YAXPAUCThostFtdcQryTradeField@@@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryTrade(ref CThostFtdcQryTradeField pQryTrade);
    		/// <summary>
    		/// 请求查询成交
    		/// </summary>
    		/// <param name="qryTrade"></param>
    		public void QryTrade(CThostFtdcQryTradeField qryTrade) { reqQryTrade(ref qryTrade); }
    		/// <summary>
    		/// 请求查询成交_所有
    		/// </summary>
    		public void QryTrade()
    		{
    			CThostFtdcQryTradeField tmp = new CThostFtdcQryTradeField();
    			tmp.BrokerID = this.BrokerID;
    			tmp.InvestorID = this.InvestorID;
    			reqQryTrade(ref tmp);
    		}
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInvestorPosition@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqQryInvestorPosition(string BROKER_ID, string INVESTOR_ID, string Instrument);
    		/// <summary>
    		/// 查询投资者持仓
    		/// </summary>
    		/// <param name="instrument">合约代码</param>
    		public void QryInvestorPosition(string instrument) { ReqQryInvestorPosition(this.BrokerID, this.InvestorID, instrument); }
    		/// <summary>
    		/// 查询投资者持仓_所有
    		/// </summary>
    		public void QryInvestorPosition() { QryInvestorPosition(null); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryTradingAccount@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqQryTradingAccount(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 查询帐户资金请求
    		/// </summary>
    		public void QryTradingAccount() { ReqQryTradingAccount(this.BrokerID, this.InvestorID); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInvestor@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryInvestor(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 请求查询投资者
    		/// </summary>
    		public void QryInvestor() { reqQryInvestor(this.BrokerID, this.InvestorID); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryTradingCode@@YAXQAD000@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryTradingCode(string BROKER_ID, string INVESTOR_ID, string CLIENT_ID, string EXCHANGE_ID);
    		/// <summary>
    		/// 请求查询交易编码
    		/// </summary>
    		/// <param name="clientID"></param>
    		/// <param name="exchangeID"></param>
    		public void QryTradingCode(string clientID, string exchangeID) { reqQryTradingCode(this.BrokerID, this.InvestorID, clientID, exchangeID); }
    		/// <summary>
    		/// 请求查询交易编码_所有
    		/// </summary>
    		public void QryTradingCode() { QryTradingCode(null, null); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInstrumentMarginRate@@YAXQAD00D@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryInstrumentMarginRate(string BROKER_ID, string INVESTOR_ID, string INSTRUMENT_ID, EnumHedgeFlagType HEDGE_FLAG);
    		/// <summary>
    		/// 请求查询合约保证金率
    		/// </summary>
    		/// <param name="instrumentID"></param>
    		/// <param name="hedgeFlag"></param>
    		public void QryInstrumentMarginRate(string instrumentID, EnumHedgeFlagType hedgeFlag) { reqQryInstrumentMarginRate(this.BrokerID, this.InvestorID, instrumentID, hedgeFlag); }
    		/// <summary>
    		/// 请求查询合约保证金率_所有_投机
    		/// </summary>
    		public void QryInstrumentMarginRate() { QryInstrumentMarginRate(null, EnumHedgeFlagType.Speculation); }
    		/// <summary>
    		/// 请求查询合约保证金率_所有_套保
    		/// </summary>
    		public void QryInstrumentMarginRateHedge() { QryInstrumentMarginRate(null, EnumHedgeFlagType.Hedge); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInstrumentCommissionRate@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryInstrumentCommissionRate(string BROKER_ID, string INVESTOR_ID, string INSTRUMENT_ID);
    		/// <summary>
    		/// 请求查询合约手续费率
    		/// </summary>
    		/// <param name="instrumentID"></param>
    		public void QryInstrumentCommissionRate(string instrumentID) { reqQryInstrumentCommissionRate(this.BrokerID, this.InvestorID, instrumentID); }
    		/// <summary>
    		/// 请求查询合约手续费率_所有
    		/// </summary>
    		public void QryInstrumentCommissionRate() { QryInstrumentCommissionRate(null); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryExchange@@YAXQAD@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryExchange(string EXCHANGE_ID);
    		/// <summary>
    		/// 请求查询交易所
    		/// </summary>
    		/// <param name="exchangeID"></param>
    		public void QryExchange(string exchangeID) { reqQryExchange(exchangeID); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInstrument@@YAXQAD@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqQryInstrument(string Instrument);
    		/// <summary>
    		/// 查询合约
    		/// </summary>
    		/// <param name="instrument">合约代码</param>
    		public void QryInstrument(string instrument) { ReqQryInstrument(instrument); }
    		/// <summary>
    		/// 查询合约_所有
    		/// </summary>
    		public void QryInstrument() { QryInstrument(null); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryDepthMarketData@@YAXQAD@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqQryDepthMarketData(string Instrument);
    		/// <summary>
    		/// 查询行情
    		/// </summary>
    		/// <param name="instrument">合约代码</param>
    		public void QryDepthMarketData(string instrument) { ReqQryDepthMarketData(instrument); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQrySettlementInfo@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQrySettlementInfo(string BROKER_ID, string INVESTOR_ID, string TRADING_DAY);
    		/// <summary>
    		/// 请求查询投资者结算结果
    		/// </summary>
    		/// <param name="tradingDay"></param>
    		public void QrySettlementInfo(DateTime tradingDay) { reqQrySettlementInfo(this.BrokerID, this.InvestorID, tradingDay.ToString("yyyyMMdd")); }
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInvestorPositionDetail@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void ReqQryInvestorPositionDetail(string BROKER_ID, string INVESTOR_ID, string Instrument);
    		/// <summary>
    		/// 查询投资者持仓明细
    		/// </summary>
    		/// <param name="instrument">合约代码</param>
    		public void QryInvestorPositionDetail(string instrument) { ReqQryInvestorPositionDetail(this.BrokerID, this.InvestorID, instrument); }
    		/// <summary>
    		/// 查询投资者持仓明细_所有
    		/// </summary>
    		public void QryInvestorPositionDetail() { QryInvestorPositionDetail(null); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryNotice@@YAXQAD@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryNotice(string BROKERID);
    		/// <summary>
    		/// 请求查询客户通知
    		/// </summary>
    		public void QryNotice() { reqQryNotice(this.BrokerID); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQrySettlementInfoConfirm@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQrySettlementInfoConfirm(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 请求查询结算信息确认
    		/// </summary>
    		public void QrySettlementInfoConfirm() { reqQrySettlementInfoConfirm(this.BrokerID, this.InvestorID); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryInvestorPositionCombineDetail@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryInvestorPositionCombineDetail(string BROKER_ID, string INVESTOR_ID, string INSTRUMENT_ID);
    		/// <summary>
    		/// 请求查询**组合**持仓明细
    		/// </summary>
    		/// <param name="instrumentID"></param>
    		public void QryInvestorPositionCombinaDetail(string instrumentID) { reqQryInvestorPositionCombineDetail(this.BrokerID, this.InvestorID, instrumentID); }
    		/// <summary>
    		/// 请求查询**组合**持仓明细_所有
    		/// </summary>
    		public void QryInvestorPositionCombinaDetail() { QryInvestorPositionCombinaDetail(null); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryCFMMCTradingAccountKey@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryCFMMCTradingAccountKey(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 请求查询保证金监管系统经纪公司资金账户密钥
    		/// </summary>
    		public void QryCFMMCTradingAccountKey() { reqQryCFMMCTradingAccountKey(this.BrokerID, this.InvestorID); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryTradingNotice@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryTradingNotice(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 请求查询交易通知
    		/// </summary>
    		public void QryTradingNotice() { reqQryTradingNotice(this.BrokerID, this.InvestorID); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryBrokerTradingParams@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryBrokerTradingParams(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 请求查询经纪公司交易参数
    		/// </summary>
    		public void QryBrokerTradingParams() { reqQryBrokerTradingParams(this.BrokerID, this.InvestorID); }
    
    
    		[DllImport(dllName, EntryPoint = "?ReqQryBrokerTradingAlgos@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void reqQryBrokerTradingAlgos(string BROKER_ID, string EXCHANGE_ID, string INSTRUMENT_ID);
    		/// <summary>
    		/// 请求查询经纪公司交易算法
    		/// </summary>
    		/// <param name="instrumentID"></param>
    		public void QryBrokerTradingAlgos(string instrumentID) { reqQryBrokerTradingAlgos(this.BrokerID, this.InvestorID, instrumentID); }
    
    
    
    		//回调函数 =====================================================================================================================
    
    		[DllImport(dllName, EntryPoint = "?RegOnFrontConnected@@YGXP6GHXZ@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnFrontConnected(FrontConnect fc);
    		FrontConnect frontConnect;
    		/// <summary>
    		/// 
    		/// </summary>
    		public delegate void FrontConnect();
    		/// <summary>
    		/// 当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    		/// </summary>
    		public event FrontConnect OnFrontConnect
    		{
    			add { frontConnect += value; regOnFrontConnected(frontConnect); }
    			remove { frontConnect -= value; regOnFrontConnected(frontConnect); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnFrontDisconnected@@YGXP6GHH@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnDisConnected(DisConnected dc);
    		DisConnected disConnected;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="reason"></param>
    		public delegate void DisConnected(int reason);
    		/// <summary>
    		/// 当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
    		/// </summary>
    		public event DisConnected OnDisConnected
    		{
    			add { disConnected += value; regOnDisConnected(disConnected); }
    			remove { disConnected -= value; regOnDisConnected(disConnected); }
    		}
    
    
    		[DllImport(dllName, EntryPoint = "?RegOnHeartBeatWarning@@YGXP6GHH@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnHeartBeatWarning(HeartBeatWarning hbw);
    		HeartBeatWarning heartBeatWarning;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTimeLapes"></param>
    		public delegate void HeartBeatWarning(int pTimeLapes);
    		/// <summary>
    		/// 心跳超时警告。当长时间未收到报文时,该方法被调用。
    		/// </summary>
    		public event HeartBeatWarning OnHeartBeatWarning
    		{
    			add { heartBeatWarning += value; regOnHeartBeatWarning(heartBeatWarning); }
    			remove { heartBeatWarning -= value; regOnHeartBeatWarning(heartBeatWarning); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspUserLogin@@YGXP6GHPAUCThostFtdcRspUserLoginField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspUserLogin(RspUserLogin rul);
    		RspUserLogin rspUserLogin;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pRspUserLogin"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspUserLogin(ref CThostFtdcRspUserLoginField pRspUserLogin, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 登录请求响应
    		/// </summary>
    		public event RspUserLogin OnRspUserLogin
    		{
    			add { rspUserLogin += value; regOnRspUserLogin(rspUserLogin); }
    			remove { rspUserLogin -= value; regOnRspUserLogin(rspUserLogin); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspUserLogout@@YGXP6GHPAUCThostFtdcUserLogoutField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspUserLogout(RspUserLogout cb);
    		RspUserLogout rspUserLogout;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pUserLogout"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspUserLogout(ref CThostFtdcUserLogoutField pUserLogout, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 登出请求响应
    		/// </summary>
    		public event RspUserLogout OnRspUserLogout
    		{
    			add { rspUserLogout += value; regOnRspUserLogout(rspUserLogout); }
    			remove { rspUserLogout -= value; regOnRspUserLogout(rspUserLogout); }
    		}
    
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspUserPasswordUpdate@@YGXP6GHPAUCThostFtdcUserPasswordUpdateField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspUserPasswordUpdate(RspUserPasswordUpdate cb);
    		RspUserPasswordUpdate rspUserPasswordUpdate;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pUserPasswordUpdate"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspUserPasswordUpdate(ref CThostFtdcUserPasswordUpdateField pUserPasswordUpdate, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 用户口令更新请求响应
    		/// </summary>
    		public event RspUserPasswordUpdate OnRspUserPasswordUpdate
    		{
    			add { rspUserPasswordUpdate += value; regOnRspUserPasswordUpdate(rspUserPasswordUpdate); }
    			remove { rspUserPasswordUpdate -= value; regOnRspUserPasswordUpdate(rspUserPasswordUpdate); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspTradingAccountPasswordUpdate@@YGXP6GHPAUCThostFtdcTradingAccountPasswordUpdateField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspTradingAccountPasswordUpdate(RspTradingAccountPasswordUpdate cb);
    		RspTradingAccountPasswordUpdate rspTradingAccountPasswordUpdate;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTradingAccountPasswordUpdate"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspTradingAccountPasswordUpdate(ref CThostFtdcTradingAccountPasswordUpdateField pTradingAccountPasswordUpdate, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 资金账户口令更新请求响应
    		/// </summary>
    		public event RspTradingAccountPasswordUpdate OnRspTradingAccountPasswordUpdate
    		{
    			add { rspTradingAccountPasswordUpdate += value; regOnRspTradingAccountPasswordUpdate(rspTradingAccountPasswordUpdate); }
    			remove { rspTradingAccountPasswordUpdate -= value; regOnRspTradingAccountPasswordUpdate(rspTradingAccountPasswordUpdate); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspOrderInsert@@YGXP6GHPAUCThostFtdcInputOrderField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspOrderInsert(RspOrderInsert roi);
    		RspOrderInsert rspOrderInsert;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInputOrder"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 报单录入请求响应:有错误时才有此响应
    		/// </summary>
    		public event RspOrderInsert OnRspOrderInsert
    		{
    			add { rspOrderInsert += value; regOnRspOrderInsert(rspOrderInsert); }
    			remove { rspOrderInsert -= value; regOnRspOrderInsert(rspOrderInsert); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspOrderAction@@YGXP6GHPAUCThostFtdcInputOrderActionField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspOrderAction(RspOrderAction roa);
    		RspOrderAction rspOrderAction;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInputOrderAction"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspOrderAction(ref CThostFtdcInputOrderActionField pInputOrderAction, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 报单操作请求响应:有错误时才有此响应
    		/// </summary>
    		public event RspOrderAction OnRspOrderAction
    		{
    			add { rspOrderAction += value; regOnRspOrderAction(rspOrderAction); }
    			remove { rspOrderAction -= value; regOnRspOrderAction(rspOrderAction); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQueryMaxOrderVolume@@YGXP6GHPAUCThostFtdcQueryMaxOrderVolumeField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQueryMaxOrderVolume(RspQueryMaxOrderVolume cb);
    		RspQueryMaxOrderVolume rspQueryMaxOrderVolume;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pQueryMaxOrderVolume"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQueryMaxOrderVolume(ref CThostFtdcQueryMaxOrderVolumeField pQueryMaxOrderVolume, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 查询最大报单数量响应
    		/// </summary>
    		public event RspQueryMaxOrderVolume OnRspQueryMaxOrderVolume
    		{
    			add { rspQueryMaxOrderVolume += value; regOnRspQueryMaxOrderVolume(rspQueryMaxOrderVolume); }
    			remove { rspQueryMaxOrderVolume -= value; regOnRspQueryMaxOrderVolume(rspQueryMaxOrderVolume); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspSettlementInfoConfirm@@YGXP6GHPAUCThostFtdcSettlementInfoConfirmField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspSettlementInfoConfirm(RspSettlementInfoConfirm rsic);
    		RspSettlementInfoConfirm rspSettlementInfoConfirm;
    		/// <summary>
    		///
    		/// </summary>
    		/// <param name="pSettlementInfoConfirm"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspSettlementInfoConfirm(ref CThostFtdcSettlementInfoConfirmField pSettlementInfoConfirm, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 投资者结算结果确认响应
    		/// </summary>
    		public event RspSettlementInfoConfirm OnRspSettlementInfoConfirm
    		{
    			add { rspSettlementInfoConfirm += value; regOnRspSettlementInfoConfirm(rspSettlementInfoConfirm); }
    			remove { rspSettlementInfoConfirm -= value; regOnRspSettlementInfoConfirm(rspSettlementInfoConfirm); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryOrder@@YGXP6GHPAUCThostFtdcOrderField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryOrder(RspQryOrder cb);
    		RspQryOrder rspQryOrder;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pOrder"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryOrder(ref CThostFtdcOrderField pOrder, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询报单响应
    		/// </summary>
    		public event RspQryOrder OnRspQryOrder
    		{
    			add { rspQryOrder += value; regOnRspQryOrder(rspQryOrder); }
    			remove { rspQryOrder -= value; regOnRspQryOrder(rspQryOrder); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryTrade@@YGXP6GHPAUCThostFtdcTradeField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryTrade(RspQryTrade cb);
    		RspQryTrade rspQryTrade;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTrade"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryTrade(ref CThostFtdcTradeField pTrade, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询成交响应
    		/// </summary>
    		public event RspQryTrade OnRspQryTrade
    		{
    			add { rspQryTrade += value; regOnRspQryTrade(rspQryTrade); }
    			remove { rspQryTrade -= value; regOnRspQryTrade(rspQryTrade); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInvestorPosition@@YGXP6GHPAUCThostFtdcInvestorPositionField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInvestorPosition(RspQryInvestorPosition rqip);
    		RspQryInvestorPosition rspQryInvestorPosition;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInvestorPosition"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInvestorPosition(ref CThostFtdcInvestorPositionField pInvestorPosition, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询投资者持仓响应
    		/// </summary>
    		public event RspQryInvestorPosition OnRspQryInvestorPosition
    		{
    			add { rspQryInvestorPosition += value; regOnRspQryInvestorPosition(rspQryInvestorPosition); }
    			remove { rspQryInvestorPosition -= value; regOnRspQryInvestorPosition(rspQryInvestorPosition); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryTradingAccount@@YGXP6GHPAUCThostFtdcTradingAccountField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryTradingAccount(RspQryTradingAccount rqta);
    		RspQryTradingAccount rspQryTradingAccount;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTradingAccount"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryTradingAccount(ref CThostFtdcTradingAccountField pTradingAccount, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询资金账户响应
    		/// </summary>
    		public event RspQryTradingAccount OnRspQryTradingAccount
    		{
    			add { rspQryTradingAccount += value; regOnRspQryTradingAccount(rspQryTradingAccount); }
    			remove { rspQryTradingAccount -= value; regOnRspQryTradingAccount(rspQryTradingAccount); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInvestor@@YGXP6GHPAUCThostFtdcInvestorField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInvestor(RspQryInvestor cb);
    		RspQryInvestor rspQryInvestor;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInvestor"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInvestor(ref CThostFtdcInvestorField pInvestor, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询投资者响应
    		/// </summary>
    		public event RspQryInvestor OnRspQryInvestor
    		{
    			add { rspQryInvestor += value; regOnRspQryInvestor(rspQryInvestor); }
    			remove { rspQryInvestor -= value; regOnRspQryInvestor(rspQryInvestor); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryTradingCode@@YGXP6GHPAUCThostFtdcTradingCodeField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryTradingCode(RspQryTradingCode cb);
    		RspQryTradingCode rspQryTradingCode;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTradingCode"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryTradingCode(ref CThostFtdcTradingCodeField pTradingCode, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询交易编码响应
    		/// </summary>
    		public event RspQryTradingCode OnRspQryTradingCode
    		{
    			add { rspQryTradingCode += value; regOnRspQryTradingCode(rspQryTradingCode); }
    			remove { rspQryTradingCode -= value; regOnRspQryTradingCode(rspQryTradingCode); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInstrumentMarginRate@@YGXP6GHPAUCThostFtdcInstrumentMarginRateField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInstrumentMarginRate(RspQryInstrumentMarginRate cb);
    		RspQryInstrumentMarginRate rspQryInstrumentMarginRate;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInstrumentMarginRate"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInstrumentMarginRate(ref CThostFtdcInstrumentMarginRateField pInstrumentMarginRate, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询合约保证金率响应
    		/// </summary>
    		public event RspQryInstrumentMarginRate OnRspQryInstrumentMarginRate
    		{
    			add { rspQryInstrumentMarginRate += value; regOnRspQryInstrumentMarginRate(rspQryInstrumentMarginRate); }
    			remove { rspQryInstrumentMarginRate -= value; regOnRspQryInstrumentMarginRate(rspQryInstrumentMarginRate); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInstrumentCommissionRate@@YGXP6GHPAUCThostFtdcInstrumentCommissionRateField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInstrumentCommissionRate(RspQryInstrumentCommissionRate cb);
    		RspQryInstrumentCommissionRate rspQryInstrumentCommissionRate;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInstrumentCommissionRate"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInstrumentCommissionRate(ref CThostFtdcInstrumentCommissionRateField pInstrumentCommissionRate, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询合约手续费率响应
    		/// </summary>
    		public event RspQryInstrumentCommissionRate OnRspQryInstrumentCommissionRate
    		{
    			add { rspQryInstrumentCommissionRate += value; regOnRspQryInstrumentCommissionRate(rspQryInstrumentCommissionRate); }
    			remove { rspQryInstrumentCommissionRate -= value; regOnRspQryInstrumentCommissionRate(rspQryInstrumentCommissionRate); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryExchange@@YGXP6GHPAUCThostFtdcExchangeField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryExchange(RspQryExchange cb);
    		RspQryExchange rspQryExchange;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pExchange"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryExchange(ref CThostFtdcExchangeField pExchange, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询交易所响应
    		/// </summary>
    		public event RspQryExchange OnRspQryExchange
    		{
    			add { rspQryExchange += value; regOnRspQryExchange(rspQryExchange); }
    			remove { rspQryExchange -= value; regOnRspQryExchange(rspQryExchange); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInstrument@@YGXP6GHPAUCThostFtdcInstrumentField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInstrument(RspQryInstrument rqi);
    		RspQryInstrument rspQryInstrument;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInstrument"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInstrument(ref CThostFtdcInstrumentField pInstrument, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		///请求查询合约响应
    		/// </summary>
    		public event RspQryInstrument OnRspQryInstrument
    		{
    			add { rspQryInstrument += value; regOnRspQryInstrument(rspQryInstrument); }
    			remove { rspQryInstrument -= value; regOnRspQryInstrument(rspQryInstrument); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryDepthMarketData@@YGXP6GHPAUCThostFtdcDepthMarketDataField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryDepthMarketData(RspQryDepthMarketData rqi);
    		RspQryDepthMarketData rspQryDepthMarketData;
    		/// <summary>
    		///
    		/// </summary>
    		/// <param name="pDepthMarketData"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryDepthMarketData(ref CThostFtdcDepthMarketDataField pDepthMarketData, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询行情响应:深度行情
    		/// </summary>
    		public event RspQryDepthMarketData OnRspQryDepthMarketData
    		{
    			add { rspQryDepthMarketData += value; regOnRspQryDepthMarketData(rspQryDepthMarketData); }
    			remove { rspQryDepthMarketData -= value; regOnRspQryDepthMarketData(rspQryDepthMarketData); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQrySettlementInfo@@YGXP6GHPAUCThostFtdcSettlementInfoField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQrySettlementInfo(RspQrySettlementInfo cb);
    		RspQrySettlementInfo rspQrySettlementInfo;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pSettlementInfo"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQrySettlementInfo(ref CThostFtdcSettlementInfoField pSettlementInfo, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询投资者结算结果响应
    		/// </summary>
    		public event RspQrySettlementInfo OnRspQrySettlementInfo
    		{
    			add { rspQrySettlementInfo += value; regOnRspQrySettlementInfo(rspQrySettlementInfo); }
    			remove { rspQrySettlementInfo -= value; regOnRspQrySettlementInfo(rspQrySettlementInfo); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInvestorPositionDetail@@YGXP6GHPAUCThostFtdcInvestorPositionDetailField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInvestorPositionDetail(RspQryInvestorPositionDetail cb);
    		RspQryInvestorPositionDetail rspQryInvestorPositionDetail;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInvestorPositionDetail"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInvestorPositionDetail(ref CThostFtdcInvestorPositionDetailField pInvestorPositionDetail, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询投资者持仓明细响应
    		/// </summary>
    		public event RspQryInvestorPositionDetail OnRspQryInvestorPositionDetail
    		{
    			add { rspQryInvestorPositionDetail += value; regOnRspQryInvestorPositionDetail(rspQryInvestorPositionDetail); }
    			remove { rspQryInvestorPositionDetail -= value; regOnRspQryInvestorPositionDetail(rspQryInvestorPositionDetail); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryInvestorPositionCombineDetail@@YGXP6GHPAUCThostFtdcInvestorPositionCombineDetailField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryInvestorPositionCombineDetail(RspQryInvestorPositionCombineDetail cb);
    		RspQryInvestorPositionCombineDetail rspQryInvestorPositionCombineDetail;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInvestorPositionCombineDetail"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryInvestorPositionCombineDetail(ref CThostFtdcInvestorPositionCombineDetailField pInvestorPositionCombineDetail, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询投资者**组合**持仓明细响应
    		/// </summary>
    		public event RspQryInvestorPositionCombineDetail OnRspQryInvestorPositionCombineDetail
    		{
    			add { rspQryInvestorPositionCombineDetail += value; regOnRspQryInvestorPositionCombineDetail(rspQryInvestorPositionCombineDetail); }
    			remove { rspQryInvestorPositionCombineDetail -= value; regOnRspQryInvestorPositionCombineDetail(rspQryInvestorPositionCombineDetail); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryNotice@@YGXP6GHPAUCThostFtdcNoticeField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryNotice(RspQryNotice cb);
    		RspQryNotice rspQryNotice;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pNotice"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryNotice(ref CThostFtdcNoticeField pNotice, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询客户通知响应
    		/// </summary>
    		public event RspQryNotice OnRspQryNotice
    		{
    			add { rspQryNotice += value; regOnRspQryNotice(rspQryNotice); }
    			remove { rspQryNotice -= value; regOnRspQryNotice(rspQryNotice); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQrySettlementInfoConfirm@@YGXP6GHPAUCThostFtdcSettlementInfoConfirmField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQrySettlementInfoConfirm(RspQrySettlementInfoConfirm cb);
    		RspQrySettlementInfoConfirm rspQrySettlementInfoConfirm;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pSettlementInfoConfirm"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQrySettlementInfoConfirm(ref CThostFtdcSettlementInfoConfirmField pSettlementInfoConfirm, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询结算信息确认响应
    		/// </summary>
    		public event RspQrySettlementInfoConfirm OnRspQrySettlementInfoConfirm
    		{
    			add { rspQrySettlementInfoConfirm += value; regOnRspQrySettlementInfoConfirm(rspQrySettlementInfoConfirm); }
    			remove { rspQrySettlementInfoConfirm -= value; regOnRspQrySettlementInfoConfirm(rspQrySettlementInfoConfirm); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryCFMMCTradingAccountKey@@YGXP6GHPAUCThostFtdcCFMMCTradingAccountKeyField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryCFMMCTradingAccountKey(RspQryCFMMCTradingAccountKey cb);
    		RspQryCFMMCTradingAccountKey rspQryCFMMCTradingAccountKey;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pCFMMCTradingAccountKey"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryCFMMCTradingAccountKey(ref CThostFtdcCFMMCTradingAccountKeyField pCFMMCTradingAccountKey, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 查询保证金监管系统经纪公司资金账户密钥响应
    		/// </summary>
    		public event RspQryCFMMCTradingAccountKey OnRspQryCFMMCTradingAccountKey
    		{
    			add { rspQryCFMMCTradingAccountKey += value; regOnRspQryCFMMCTradingAccountKey(rspQryCFMMCTradingAccountKey); }
    			remove { rspQryCFMMCTradingAccountKey -= value; regOnRspQryCFMMCTradingAccountKey(rspQryCFMMCTradingAccountKey); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspError@@YGXP6GHPAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspError(RspError re);
    		RspError rspError;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspError(ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 错误应答
    		/// </summary>
    		public event RspError OnRspError
    		{
    			add { rspError += value; regOnRspError(rspError); }
    			remove { rspError -= value; regOnRspError(rspError); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRtnOrder@@YGXP6GHPAUCThostFtdcOrderField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRtnOrder(RtnOrder ro);
    		RtnOrder rtnOrder;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pOrder"></param>
    		public delegate void RtnOrder(ref CThostFtdcOrderField pOrder);
    		/// <summary>
    		/// 报单通知:Thost报单录入成功
    		/// </summary>
    		public event RtnOrder OnRtnOrder
    		{
    			add { rtnOrder += value; regOnRtnOrder(rtnOrder); }
    			remove { rtnOrder -= value; regOnRtnOrder(rtnOrder); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRtnTrade@@YGXP6GHPAUCThostFtdcTradeField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRtnTrade(RtnTrade rt);
    		RtnTrade rtnTrade;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTrade"></param>
    		public delegate void RtnTrade(ref CThostFtdcTradeField pTrade);
    		/// <summary>
    		///成交通知:交易所报单成功
    		/// </summary>
    		public event RtnTrade OnRtnTrade
    		{
    			add { rtnTrade += value; regOnRtnTrade(rtnTrade); }
    			remove { rtnTrade -= value; regOnRtnTrade(rtnTrade); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnErrRtnOrderInsert@@YGXP6GHPAUCThostFtdcInputOrderField@@PAUCThostFtdcRspInfoField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnErrRtnOrderInsert(ErrRtnOrderInsert eroi);
    		ErrRtnOrderInsert errRtnOrderInsert;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInputOrder"></param>
    		/// <param name="pRspInfo"></param>
    		public delegate void ErrRtnOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CThostFtdcRspInfoField pRspInfo);
    		/// <summary>
    		/// 报单录入错误回报:交易所-报单录入失败
    		/// </summary>
    		public event ErrRtnOrderInsert OnErrRtnOrderInsert
    		{
    			add { errRtnOrderInsert += value; regOnErrRtnOrderInsert(errRtnOrderInsert); }
    			remove { errRtnOrderInsert -= value; regOnErrRtnOrderInsert(errRtnOrderInsert); }
    		}
    
    
    		[DllImport(dllName, EntryPoint = "?RegOnErrRtnOrderAction@@YGXP6GHPAUCThostFtdcOrderActionField@@PAUCThostFtdcRspInfoField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnErrRtnOrderAction(ErrRtnOrderAction eroa);
    		ErrRtnOrderAction errRtnOrderAction;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pOrderAction"></param>
    		/// <param name="pRspInfo"></param>
    		public delegate void ErrRtnOrderAction(ref CThostFtdcOrderActionField pOrderAction, ref CThostFtdcRspInfoField pRspInfo);
    		/// <summary>
    		/// 报单操作错误回报:交易所-报单操作请求失败
    		/// </summary>
    		public event ErrRtnOrderAction OnErrRtnOrderAction
    		{
    			add { errRtnOrderAction += value; regOnErrRtnOrderAction(errRtnOrderAction); }
    			remove { errRtnOrderAction -= value; regOnErrRtnOrderAction(errRtnOrderAction); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRtnInstrumentStatus@@YGXP6GHPAUCThostFtdcInstrumentStatusField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRtnInstrumentStatus(RtnInstrumentStatus cb);
    		RtnInstrumentStatus rtnInstrumentStatus;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pInstrumentStatus"></param>
    		public delegate void RtnInstrumentStatus(ref CThostFtdcInstrumentStatusField pInstrumentStatus);
    		/// <summary>
    		/// 合约交易状态通知
    		/// </summary>
    		public event RtnInstrumentStatus OnRtnInstrumentStatus
    		{
    			add { rtnInstrumentStatus += value; regOnRtnInstrumentStatus(rtnInstrumentStatus); }
    			remove { rtnInstrumentStatus -= value; regOnRtnInstrumentStatus(rtnInstrumentStatus); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryTradingNotice@@YGXP6GHPAUCThostFtdcTradingNoticeField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryTradingNotice(RspQryTradingNotice cb);
    		RspQryTradingNotice rspQryTradingNotice;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTradingNotice"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryTradingNotice(ref CThostFtdcTradingNoticeField pTradingNotice, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询交易通知响应
    		/// </summary>
    		public event RspQryTradingNotice OnRspQryTradingNotice
    		{
    			add { rspQryTradingNotice += value; regOnRspQryTradingNotice(rspQryTradingNotice); }
    			remove { rspQryTradingNotice -= value; regOnRspQryTradingNotice(rspQryTradingNotice); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRtnTradingNotice@@YGXP6GHPAUCThostFtdcTradingNoticeInfoField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRtnTradingNotice(RtnTradingNotice cb);
    		RtnTradingNotice rtnTradingNotice;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pTradingNoticeInfo"></param>
    		public delegate void RtnTradingNotice(ref CThostFtdcTradingNoticeInfoField pTradingNoticeInfo);
    		/// <summary>
    		/// 交易通知
    		/// </summary>
    		public event RtnTradingNotice OnRtnTradingNotice
    		{
    			add { rtnTradingNotice += value; regOnRtnTradingNotice(rtnTradingNotice); }
    			remove { rtnTradingNotice -= value; regOnRtnTradingNotice(rtnTradingNotice); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRtnErrorConditionalOrder@@YGXP6GHPAUCThostFtdcErrorConditionalOrderField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRtnErrorConditionalOrder(RtnErrorConditionalOrder cb);
    		RtnErrorConditionalOrder rtnErrorConditionalOrder;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pErrorConditionalOrder"></param>
    		public delegate void RtnErrorConditionalOrder(ref CThostFtdcErrorConditionalOrderField pErrorConditionalOrder);
    		/// <summary>
    		/// 提示条件单校验错误
    		/// </summary>
    		public event RtnErrorConditionalOrder OnRtnErrorConditionalOrder
    		{
    			add { rtnErrorConditionalOrder += value; regOnRtnErrorConditionalOrder(rtnErrorConditionalOrder); }
    			remove { rtnErrorConditionalOrder -= value; regOnRtnErrorConditionalOrder(rtnErrorConditionalOrder); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryBrokerTradingParams@@YGXP6GHPAUCThostFtdcBrokerTradingParamsField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryBrokerTradingParams(RspQryBrokerTradingParams cb);
    		RspQryBrokerTradingParams rspQryBrokerTradingParams;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pBrokerTradingParams"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryBrokerTradingParams(ref CThostFtdcBrokerTradingParamsField pBrokerTradingParams, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询经纪公司交易参数响应
    		/// </summary>
    		public event RspQryBrokerTradingParams OnRspQryBrokerTradingParams
    		{
    			add { rspQryBrokerTradingParams += value; regOnRspQryBrokerTradingParams(rspQryBrokerTradingParams); }
    			remove { rspQryBrokerTradingParams -= value; regOnRspQryBrokerTradingParams(rspQryBrokerTradingParams); }
    		}
    
    		[DllImport(dllName, EntryPoint = "?RegOnRspQryBrokerTradingAlgos@@YGXP6GHPAUCThostFtdcBrokerTradingAlgosField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspQryBrokerTradingAlgos(RspQryBrokerTradingAlgos cb);
    		RspQryBrokerTradingAlgos rspQryBrokerTradingAlgos;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pBrokerTradingAlgos"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspQryBrokerTradingAlgos(ref CThostFtdcBrokerTradingAlgosField pBrokerTradingAlgos, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 请求查询经纪公司交易算法响应
    		/// </summary>
    		public event RspQryBrokerTradingAlgos OnRspQryBrokerTradingAlgos
    		{
    			add { rspQryBrokerTradingAlgos += value; regOnRspQryBrokerTradingAlgos(rspQryBrokerTradingAlgos); }
    			remove { rspQryBrokerTradingAlgos -= value; regOnRspQryBrokerTradingAlgos(rspQryBrokerTradingAlgos); }
    		}
    	}
    }
    
     
  14. MdApi.cs 行情对Dll的调用
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    
    namespace CTPMdApi
    {
    	/// <summary>
    	/// 行情接口
    	/// </summary>
    	public class MdApi
    	{
    		const string strDllFile = "MdApi.dll";
    
    		/// <summary>
    		/// MdApi.dll与CTPMdApi.dll 放在同一文件夹中
    		/// </summary>
    		public MdApi() { }
    
    		/// <summary>
    		/// 前置地址
    		/// </summary>
    		public string FrontAddr { get; set; }
    		/// <summary>
    		/// 经纪公司代码ctp-2030;上期-4030;
    		/// </summary>
    		public string BrokerID { get; set; }
    		/// <summary>
    		/// 投资者代码 351962-申万
    		/// </summary>
    		public string InvestorID { get; set; }
    
    
    		[DllImport(strDllFile, EntryPoint = "?Connect@@YAXPAD@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void connect(string pFrontAddr);
    		/// <summary>
    		/// 连接:注册前置地址
    		/// </summary>
    		/// <param name="frontAddr">前置地址</param>
    		public void Connect(string frontAddr)
    		{
    			this.FrontAddr = frontAddr;
    			connect(frontAddr);
    		}
    
    		[DllImport(strDllFile, EntryPoint = "?DisConnect@@YAXXZ", CallingConvention = CallingConvention.Cdecl)]
    		static extern void disConnect();
    		/// <summary>
    		/// 断开连接
    		/// </summary>
    		public void DisConnect() { disConnect(); }
    
    		[DllImport(strDllFile, EntryPoint = "?ReqUserLogin@@YAXQAD00@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void userLogin(string BROKER_ID, string INVESTOR_ID, string PASSWORD);
    		/// <summary>
    		/// 登录
    		/// </summary>
    		/// <param name="brokerID">经纪公司代码</param>
    		/// <param name="inverstorID">用户代码</param>
    		/// <param name="passWord">密码</param>
    		public void UserLogin(string brokerID, string inverstorID, string passWord)
    		{
    			this.BrokerID = brokerID;
    			this.InvestorID = inverstorID;
    			userLogin(brokerID, inverstorID, passWord);
    		}
    
    		[DllImport(strDllFile, EntryPoint = "?ReqUserLogout@@YAXQAD0@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void userLogout(string BROKER_ID, string INVESTOR_ID);
    		/// <summary>
    		/// 用户注销
    		/// </summary>
    		public void UserLogout() { userLogout(this.BrokerID, this.InvestorID); }
    
    		[DllImport(strDllFile, EntryPoint = "?SubMarketData@@YAXQAPADH@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void subMarketData(string[] instrumentsID, int nCount);
    		/// <summary>
    		/// 订阅行情
    		/// </summary>
    		/// <param name="instruments">合约代码:可填多个,订阅所有填null</param>
    		public void SubMarketData(params string[] instruments)
    		{
    			subMarketData(instruments, instruments == null ? 0 : instruments.Length);
    		}
    
    		[DllImport(strDllFile, EntryPoint = "?UnSubscribeMarketData@@YAXQAPADH@Z", CallingConvention = CallingConvention.Cdecl)]
    		static extern void unSubMarketData(string[] ppInstrumentID, int nCount);
    		/// <summary>
    		/// 退订行情
    		/// </summary>
    		/// <param name="instruments">合约代码:可填多个,退订所有填null</param>
    		public void UnSubMarketData(params string[] instruments) { unSubMarketData(instruments, instruments == null ? 0 : instruments.Length); }
    
    		//回调函数 ==================================================================================================================
    		#region 连接响应
    		[DllImport(strDllFile, EntryPoint = "?RegOnFrontConnected@@YGXP6GHXZ@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnFrontConnected(FrontConnected cb);
    		FrontConnected frontConnected;
    		/// <summary>
    		/// 
    		/// </summary>
    		public delegate void FrontConnected();
    		/// <summary>
    		/// 连接响应
    		/// </summary>
    		public event FrontConnected OnFrontConnected
    		{
    			add { frontConnected += value; regOnFrontConnected(frontConnected); }
    			remove { frontConnected -= value; regOnFrontConnected(frontConnected); }
    
    		}
    		#endregion
    
    		#region 断开应答
    		[DllImport(strDllFile, EntryPoint = "?RegCBOnFrontDisconnected@@YGXP6GHH@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnFrontDisconnected(FrontDisconnected cb);
    		FrontDisconnected frontDisconnected;
    		/// <summary>
    		/// 
    		/// </summary>
    		public delegate void FrontDisconnected(int nReason);
    		/// <summary>
    		/// 断开应答
    		/// </summary>
    		public event FrontDisconnected OnFrontDisconnected
    		{
    			add { frontDisconnected += value; regOnFrontDisconnected(frontDisconnected); }
    			remove { frontDisconnected -= value; regOnFrontDisconnected(frontDisconnected); }
    		}
    		#endregion
    
    		#region 登入请求应答
    		[DllImport(strDllFile, EntryPoint = "?RegOnRspUserLogin@@YGXP6GHPAUCThostFtdcRspUserLoginField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspUserLogin(RspUserLogin cb);
    		RspUserLogin rspUserLogin;
    		/// <summary>
    		/// 
    		/// </summary>
    		public delegate void RspUserLogin(ref CThostFtdcRspUserLoginField pRspUserLogin, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 登入请求应答
    		/// </summary>
    		public event RspUserLogin OnRspUserLogin
    		{
    			add { rspUserLogin += value; regOnRspUserLogin(rspUserLogin); }
    			remove { rspUserLogin -= value; regOnRspUserLogin(rspUserLogin); }
    		}
    		#endregion
    
    		#region 登出请求应答
    		[DllImport(strDllFile, EntryPoint = "?RegOnRspUserLogout@@YGXP6GHPAUCThostFtdcUserLogoutField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspUserLogout(RspUserLogout cb);
    		RspUserLogout rspUserLogout;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pUserLogout"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspUserLogout(ref CThostFtdcUserLogoutField pUserLogout, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 登出请求应答
    		/// </summary>
    		public event RspUserLogout OnRspUserLogout
    		{
    			add { rspUserLogout += value; regOnRspUserLogout(rspUserLogout); }
    			remove { rspUserLogout -= value; regOnRspUserLogout(rspUserLogout); }
    		}
    		#endregion
    
    		#region 订阅行情应答
    		[DllImport(strDllFile, EntryPoint = "?RegOnRspSubMarketData@@YGXP6GHPAUCThostFtdcSpecificInstrumentField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspSubMarketData(RspSubMarketData cb);
    		RspSubMarketData rspSubMarketData;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pSpecificInstrument"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspSubMarketData(ref CThostFtdcSpecificInstrumentField pSpecificInstrument, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 订阅行情应答
    		/// </summary>
    		public event RspSubMarketData OnRspSubMarketData
    		{
    			add { rspSubMarketData += value; regOnRspSubMarketData(rspSubMarketData); }
    			remove { rspSubMarketData -= value; regOnRspSubMarketData(rspSubMarketData); }
    		}
    		#endregion
    
    		#region 退订请求应答
    		[DllImport(strDllFile, EntryPoint = "?RegOnRspUnSubMarketData@@YGXP6GHPAUCThostFtdcSpecificInstrumentField@@PAUCThostFtdcRspInfoField@@H_N@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRspUnSubMarketData(RspUnSubMarketData cb);
    		RspUnSubMarketData rspUnSubMarketData;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pSpecificInstrument"></param>
    		/// <param name="pRspInfo"></param>
    		/// <param name="nRequestID"></param>
    		/// <param name="bIsLast"></param>
    		public delegate void RspUnSubMarketData(ref CThostFtdcSpecificInstrumentField pSpecificInstrument, ref CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast);
    		/// <summary>
    		/// 退订请求应答
    		/// </summary>
    		public event RspUnSubMarketData OnRspUnSubMarketData
    		{
    			add { rspUnSubMarketData += value; regOnRspUnSubMarketData(rspUnSubMarketData); }
    			remove { rspUnSubMarketData -= value; regOnRspUnSubMarketData(rspUnSubMarketData); }
    		}
    		#endregion
    
    		#region 深度行情通知
    		[DllImport(strDllFile, EntryPoint = "?RegOnRtnDepthMarketData@@YGXP6GHPAUCThostFtdcDepthMarketDataField@@@Z@Z", CallingConvention = CallingConvention.StdCall)]
    		static extern void regOnRtnDepthMarketData(RtnDepthMarketData cb);
    		RtnDepthMarketData rtnDepthMarketData;
    		/// <summary>
    		/// 
    		/// </summary>
    		/// <param name="pDepthMarketData"></param>
    		public delegate void RtnDepthMarketData(ref CThostFtdcDepthMarketDataField pDepthMarketData);
    		/// <summary>
    		/// 深度行情通知
    		/// </summary>
    		public event RtnDepthMarketData OnRtnDepthMarketData
    		{
    			add { rtnDepthMarketData += value; regOnRtnDepthMarketData(rtnDepthMarketData); }
    			remove { rtnDepthMarketData -= value; regOnRtnDepthMarketData(rtnDepthMarketData); }
    		}
    		#endregion
    	}
    }
    
     
  15. C#中对CTPTradeApi的调用示例
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using CTPTradeApi;
    using System.Reflection;
    using System.Xml.Linq;
    
    namespace CTPApiTest
    {
    	public partial class Form1 : Form
    	{
    		TradeApi tradeApi = new TradeApi();
    		string xmlFile = @"CTPTradeApi.XML";
    		XDocument xmlDoc = new XDocument();
    		int index = 0;
    		public Form1()
    		{
    			InitializeComponent();
    			System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;	//防止出现非主线程调用报错
    		}
    
    		private void Form1_Load(object sender, EventArgs e)
    		{
    			xmlDoc = XDocument.Load(xmlFile);		//读取注释
    			//搜出所有方法
    			MethodInfo[] methods = tradeApi.GetType().GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public);
    			foreach (MethodInfo mi in methods)
    			{
    				if (mi.Name.StartsWith("add") || mi.Name.StartsWith("remove") || mi.Name.StartsWith("get") || mi.Name.StartsWith("set"))
    					continue;
    				this.comboBoxMethod.Items.Add(mi);
    			}
    			link();
    			tradeApi.Connect("tcp://asp-sim2-front1.financial-trading-platform.com:26205");
    			tradeApi.BrokerID = "2030";
    			this.comboBoxMethod.SelectedIndex = 0;
    		}
    
    		/// <summary>
    		/// 在ListView中显示结构
    		/// </summary>
    		/// <param name="structSrc">结构</param>
    		/// <param name="lvObj">ListView</param>
    		void showStructInListView(object structSrc, ListView lvObj)
    		{
    			var heads = from n in xmlDoc.Descendants()
    						where n.Name == "member" && n.FirstAttribute.Value.StartsWith("F:" + structSrc.GetType().FullName)//CTPTradeApi.CThostFtdcInvestorPositionField")
    						select new { Name = n.FirstAttribute.Value.Split(new char[] { '.' }).LastOrDefault().ToString(), Value = n.Element(XName.Get("summary")) == null ? "" : n.Element(XName.Get("summary")).Value.Trim().Split(new char[] { ' ', '\t' })[0] };
    
    			lvObj.BeginUpdate();
    			ListViewItem lvi;
    			ListViewItem.ListViewSubItem lvsi;
    			ColumnHeader ch = null;
    
    			FieldInfo[] fis = structSrc.GetType().GetFields();
    			FieldInfo fi = fis[0];
    			//第1列标题:只做标识不显示:用类型名
    			if (lvObj.Columns.IndexOfKey(structSrc.GetType().Name) < 0)
    			{
    				lvObj.Clear();
    				ch = new ColumnHeader();
    				ch.Name = structSrc.GetType().Name;
    				//ch.Text = heads.Where(n => n.Name == fi.Name).Count() == 0 ? "" : heads.Where(n => n.Name == fi.Name).FirstOrDefault().Value;
    				//ch.TextAlign = HorizontalAlignment.Center;
    				ch.Width = 0;
    				lvObj.Columns.Add(ch);
    			}
    			//第1列内容
    			if (lvObj.Items.IndexOfKey(index.ToString()) >= 0)
    			{
    				lvi = lvObj.Items[index.ToString()];
    			}
    			else
    			{
    				lvi = new ListViewItem();
    				lvi.Name = (index++).ToString();
    			}
    			//lvi.Text = fi.GetValue(structSrc) == null ? "" : fi.GetValue(structSrc).ToString().Trim();
    
    			//其它列
    			for (int i = 0; i < fis.Count(); i++)
    			{
    				fi = fis[i];
    				ch = null;		//清空标题,以跳空不需显示的标题(如不想显示某项,将其注释清空即可)
    				//标题
    				if (lvObj.Columns.IndexOfKey(fi.Name) < 0)
    				{
    					var objCH = heads.Where(n => n.Name == fi.Name).Count() == 0 ? null : heads.Where(n => n.Name == fi.Name).FirstOrDefault();
    					if (objCH != null && objCH.Value != "")		//没有注释或注释为空
    					{
    						ch = new ColumnHeader();
    						ch.Name = fi.Name;
    						ch.Text = heads.Where(n => n.Name == fi.Name).FirstOrDefault().Value;
    						lvObj.Columns.Add(ch);
    					}
    				}
    				else
    					ch = lvObj.Columns[fi.Name];
    
    				//内容
    				if (ch != null)
    				{
    					string value = "";
    					object objValue = fi.GetValue(structSrc) == null ? "" : fi.GetValue(structSrc);
    					//获取子项
    					if (lvi.SubItems.IndexOfKey(fi.Name) < 0)
    					{
    						lvsi = new ListViewItem.ListViewSubItem();
    						lvsi.Name = fi.Name;
    						lvi.SubItems.Add(lvsi);
    					}
    					else
    						lvsi = lvi.SubItems[fi.Name];
    					//更新子项内容
    					switch (fi.FieldType.FullName)
    					{
    						case "System.String":
    							value = objValue.ToString();
    							ch.TextAlign = HorizontalAlignment.Center;
    							break;
    						case "System.Int32":
    							int intTmp = (int)objValue;
    							if (intTmp == int.MaxValue || intTmp == int.MinValue)
    								value = "";
    							else
    								value = intTmp.ToString();
    							ch.TextAlign = HorizontalAlignment.Right;
    							break;
    						case "System.Double":
    							double doubleTmp = (double)objValue;
    							if (doubleTmp == double.MaxValue || doubleTmp == double.MinValue)
    								value = "";
    							else
    							{
    								if (doubleTmp > 0 && doubleTmp < 1)			//百分比
    									value = ((double)objValue).ToString("P2");
    								else
    									value = ((double)objValue).ToString("F2");
    							}
    							ch.TextAlign = HorizontalAlignment.Right;
    							break;
    						default:
    							var enumValue = from ev in xmlDoc.Descendants()
    											where ev.Name == "member" && ev.FirstAttribute.Value.StartsWith("F:" + fi.FieldType.FullName + "." + objValue)
    											select new { EnumSummary = ev.Element(XName.Get("summary")).Value.Trim() };
    							value = enumValue.Count() == 0 ? "" : enumValue.First().EnumSummary;
    							ch.TextAlign = HorizontalAlignment.Center;
    							break;
    					}
    					lvsi.Text = value.Trim();
    				}
    			}
    			lvObj.Items.Add(lvi);
    			lvObj.EndUpdate();
    		}
    
    		private void comboBoxMethod_SelectedIndexChanged(object sender, EventArgs e)
    		{
    			MethodInfo mi = (MethodInfo)this.comboBoxMethod.SelectedItem;
    			switch (mi.Name)
    			{
    				case "Connect":
    					connect();
    					break;
    				case "OrderAction":
    					orderAction();
    					break;
    				case "OrderInsert":
    					orderInsert();
    					break;
    				case "QryBrokerTradingAlgos":
    					qryBrokerTradingAlgos();
    					break;
    				case "QryBrokerTradingParams":
    					qryBrokerTradingParams();
    					break;
    				case "QryCFMMCTradingAccountKey":
    					qryCFMMCTradingAccountKey();
    					break;
    				case "QryDepthMarketData":
    					qryDepthMarketData();
    					break;
    				case "QryExchange":
    					qryExchange();
    					break;
    				case "QryInstrument":
    					qryInstrument();
    					break;
    				case "QryInstrumentCommissionRate":
    					qryInstrumentCommissionRate();
    					break;
    				case "QryInstrumentMarginRate":
    					qryInstrumentMarginRate();
    					break;
    				case "QryInvestor":
    					qryInvestor();
    					break;
    				case "QryInvestorPosition":
    					qryInvestorPosition();
    					break;
    				case "QryInvestorPositionCombinaDetail":
    					qryInvestorPositionCombinaDetail();
    					break;
    				case "QryInvestorPositionDetail":
    					qryInvestorPositionDetail();
    					break;
    				case "QryNotice":
    					qryNotice();
    					break;
    				case "QryOrder":
    					qryOrder();
    					break;
    				case "QrySettlementInfoConfirm":
    					qrySettlementInfoConfirm();
    					break;
    				case "QryTrade":
    					qryTrade();
    					break;
    				case "QryTradingAccount":
    					qryTradingAccount();
    					break;
    				case "QryTradingCode":
    					qryTradingCode();
    					break;
    				case "QryTradingNotice":
    					qryTradingNotice();
    					break;
    				case "QueryMaxOrderVolume":
    					queryMaxOrderVolume();
    					break;
    				case "QrySettlementInfo":
    					qrySettlementInfo();
    					break;
    				case "SettlementInfoConfirm":
    					settlementInfoConfirm();
    					break;
    				case "TradingAccountPasswordUpdate":
    					tradingAccountPasswordUpdate();
    					break;
    				case "UserPasswordupdate":
    					userPasswordupdate();
    					break;
    				case "UserLogin":
    					userLogin();
    					break;
    				case "UserLogout":
    					userLogout();
    					break;
    				default:
    					MessageBox.Show("no");
    					break;
    			}
    		}
    
    		private void connect()
    		{
    			tradeApi.Connect("tcp://asp-sim2-front1.financial-trading-platform.com:26205");
    			tradeApi.BrokerID = "2030";
    		}
    		private void orderAction()
    		{
    			ListViewItem lvi;
    			if (this.lvReturn.SelectedItems != null)
    				lvi = this.lvReturn.SelectedItems[0];
    			else
    				lvi = this.lvReturn.Items[0];
    			CThostFtdcInputOrderActionField tmp = new CThostFtdcInputOrderActionField();
    			tmp.ActionFlag = EnumActionFlagType.Delete;
    			tmp.BrokerID = tradeApi.BrokerID;
    			tmp.ExchangeID = lvi.SubItems["ExchangeID"].Text;
    			tmp.FrontID = int.Parse(lvi.SubItems["FrontID"].Text);
    			tmp.InstrumentID = lvi.SubItems["InstrumentID"].Text;
    			tmp.InvestorID = lvi.SubItems["InvestorID"].Text;
    			//tmp.LimitPrice = 60000;
    			//tmp.OrderActionRef = int.Parse(lvi.SubItems["OrderActionRef"].Text) + 1;
    			tmp.OrderRef = lvi.SubItems["OrderRef"].Text;
    			tmp.OrderSysID = lvi.SubItems["OrderSysID"].Text;
    			//OrderSysID右对齐
    			tmp.OrderSysID = new string('\0', 21 - tmp.OrderSysID.Length) + tmp.OrderSysID;
    			tmp.SessionID = int.Parse(lvi.SubItems["SessionID"].Text);
    			tmp.VolumeChange = int.Parse(lvi.SubItems["VolumeTotalOriginal"].Text);
    			tmp.UserID = tradeApi.InvestorID;
    			tradeApi.OrderAction(tmp);
    		}
    		private void orderInsert()
    		{
    			CThostFtdcInputOrderField tmp = new CThostFtdcInputOrderField();
    			tmp.BrokerID = tradeApi.BrokerID;
    			tmp.BusinessUnit = null;
    			tmp.CombHedgeFlag1 = EnumHedgeFlagType.Speculation;
    			tmp.CombOffsetFlag1 = EnumOffsetFlagType.Open;
    			tmp.ContingentCondition = EnumContingentConditionType.Immediately;
    			tmp.Direction = EnumDirectionType.Buy;
    			tmp.ForceCloseReason = EnumForceCloseReasonType.NotForceClose;
    			tmp.GTDDate = null;
    			tmp.InstrumentID = "cu1005";
    			tmp.InvestorID = tradeApi.InvestorID;
    			tmp.IsAutoSuspend = EnumIntBoolType.No;
    			tmp.LimitPrice = 60000;
    			tmp.MinVolume = 1;
    			tmp.OrderPriceType = EnumOrderPriceType.LimitPrice;
    			tmp.OrderRef = (++tradeApi.MaxOrderRef).ToString();
    			tmp.RequestID = 100;
    			tmp.StopPrice = 0;
    			tmp.TimeCondition = EnumTimeConditionType.GFD;
    			tmp.UserForceClose = EnumIntBoolType.No;
    			tmp.UserID = tradeApi.InvestorID;
    			tmp.VolumeCondition = EnumVolumeConditionType.AV;
    			tmp.VolumeTotalOriginal = 1;
    
    			tradeApi.OrderInsert(tmp);
    		}
    		private void qryTrade()
    		{
    			CThostFtdcQryTradeField tmp = new CThostFtdcQryTradeField();
    			tmp.BrokerID = tradeApi.BrokerID;
    			//tmp.ExchangeID = "SHFE";
    			//tmp.InstrumentID = "cu1005";
    			tmp.InvestorID = tradeApi.InvestorID;
    			//tmp.TradeID
    			tradeApi.QryTrade(tmp);
    		}
    		private void qryOrder()
    		{
    			CThostFtdcQryOrderField tmp = new CThostFtdcQryOrderField();
    			tmp.BrokerID = tradeApi.BrokerID;
    			//tmp.ExchangeID = "SHFE";
    			//tmp.InsertTimeEnd = DateTime.Today.ToString("yyyyMMdd");
    			//tmp.InsertTimeStart = DateTime.Today.AddMonths(-1).ToString("yyyyMMdd");
    			//tmp.InstrumentID = "cu1005";
    			tmp.InvestorID = tradeApi.InvestorID;
    			//tmp.OrderSysID = "174115";	//报单编号
    			tradeApi.QryOrder(tmp);
    		}
    		private void queryMaxOrderVolume()
    		{
    			CThostFtdcQueryMaxOrderVolumeField tmp = new CThostFtdcQueryMaxOrderVolumeField();
    			tmp.BrokerID = tradeApi.BrokerID;
    			tmp.Direction = EnumDirectionType.Buy;
    			tmp.HedgeFlag = EnumHedgeFlagType.Speculation;
    			tmp.InstrumentID = "cu1005";
    			tmp.InvestorID = tradeApi.InvestorID;
    			tmp.MaxVolume = 0;
    			tmp.OffsetFlag = EnumOffsetFlagType.Open;
    			tradeApi.QueryMaxOrderVolume(tmp);
    		}
    		private void qryBrokerTradingAlgos()
    		{
    			tradeApi.QryBrokerTradingAlgos("cu1005");
    		}
    		private void qryBrokerTradingParams()
    		{
    			tradeApi.QryBrokerTradingParams();
    		}
    		private void qryCFMMCTradingAccountKey()
    		{
    			tradeApi.QryCFMMCTradingAccountKey();
    		}
    		private void qryDepthMarketData()
    		{
    			tradeApi.QryDepthMarketData("cu1005");
    		}
    		private void qryExchange()
    		{
    			tradeApi.QryExchange("SHFE");
    		}
    		private void qryInstrument()
    		{
    			tradeApi.QryInstrument("cu1005");
    		}
    		private void qryInstrumentCommissionRate()
    		{
    			tradeApi.QryInstrumentCommissionRate("cu1005");
    		}
    		private void qryInstrumentMarginRate()
    		{
    			tradeApi.QryInstrumentMarginRate("cu1005", EnumHedgeFlagType.Speculation);
    		}
    		private void qryInvestor()
    		{
    			tradeApi.QryInvestor();
    		}
    		private void qryInvestorPosition()
    		{
    			tradeApi.QryInvestorPosition(null);
    		}
    		private void qryInvestorPositionCombinaDetail()
    		{
    			tradeApi.QryInvestorPositionCombinaDetail(null);
    		}
    		private void qryInvestorPositionDetail()
    		{
    			tradeApi.QryInvestorPositionDetail(null);
    		}
    		private void qryNotice()
    		{
    			tradeApi.QryNotice();
    		}
    		private void qrySettlementInfo()
    		{
    			tradeApi.QrySettlementInfo(DateTime.Today);
    		}
    		private void qrySettlementInfoConfirm()
    		{
    			tradeApi.QrySettlementInfoConfirm();
    		}
    		private void qryTradingAccount()
    		{
    			tradeApi.QryTradingAccount();
    		}
    		private void qryTradingCode()
    		{
    			tradeApi.QryTradingCode(tradeApi.InvestorID, "SHFE");
    		}
    		private void qryTradingNotice()
    		{
    			tradeApi.QryTradingNotice();
    		}
    		private void settlementInfoConfirm()
    		{
    			tradeApi.SettlementInfoConfirm();
    		}
    		private void tradingAccountPasswordUpdate()
    		{
    			tradeApi.TradingAccountPasswordUpdate(tradeApi.InvestorID, "666666", "000000");	//交易密码
    		}
    		private void userPasswordupdate()
    		{
    			tradeApi.UserPasswordupdate(tradeApi.InvestorID, "666666", "000000");	//登录密码
    		}
    		private void userLogin()
    		{
    			tradeApi.UserLogin(tradeApi.BrokerID, "351962", "666666");
    		}
    		private void userLogout()
    		{
    			tradeApi.UserLogout();
    		}
    
    		void link()
    		{
    			tradeApi.OnDisConnected += new TradeApi.DisConnected(tradeApi_OnDisConnected);
    			tradeApi.OnErrRtnOrderAction += new TradeApi.ErrRtnOrderAction(tradeApi_OnErrRtnOrderAction);
    			tradeApi.OnFrontConnect += new TradeApi.FrontConnect(tradeApi_OnFrontConnect);
    			tradeApi.OnErrRtnOrderInsert += new TradeApi.ErrRtnOrderInsert(tradeApi_OnErrRtnOrderInsert);
    			tradeApi.OnFrontConnect += new TradeApi.FrontConnect(tradeApi_OnFrontConnect);
    			tradeApi.OnHeartBeatWarning += new TradeApi.HeartBeatWarning(tradeApi_OnHeartBeatWarning);
    			tradeApi.OnRspError += new TradeApi.RspError(tradeApi_OnRspError);
    			tradeApi.OnRspOrderAction += new TradeApi.RspOrderAction(tradeApi_OnRspOrderAction);
    			tradeApi.OnRspOrderInsert += new TradeApi.RspOrderInsert(tradeApi_OnRspOrderInsert);
    			tradeApi.OnRspQryBrokerTradingAlgos += new TradeApi.RspQryBrokerTradingAlgos(tradeApi_OnRspQryBrokerTradingAlgos);
    			tradeApi.OnRspQryBrokerTradingParams += new TradeApi.RspQryBrokerTradingParams(tradeApi_OnRspQryBrokerTradingParams);
    			tradeApi.OnRspQryCFMMCTradingAccountKey += new TradeApi.RspQryCFMMCTradingAccountKey(tradeApi_OnRspQryCFMMCTradingAccountKey);
    			tradeApi.OnRspQryDepthMarketData += new TradeApi.RspQryDepthMarketData(tradeApi_OnRspQryDepthMarketData);
    			tradeApi.OnRspQryExchange += new TradeApi.RspQryExchange(tradeApi_OnRspQryExchange);
    			tradeApi.OnRspQryInstrument += new TradeApi.RspQryInstrument(tradeApi_OnRspQryInstrument);
    			tradeApi.OnRspQryInstrumentCommissionRate += new TradeApi.RspQryInstrumentCommissionRate(tradeApi_OnRspQryInstrumentCommissionRate);
    			tradeApi.OnRspQryInstrumentMarginRate += new TradeApi.RspQryInstrumentMarginRate(tradeApi_OnRspQryInstrumentMarginRate);
    			tradeApi.OnRspQryInvestor += new TradeApi.RspQryInvestor(tradeApi_OnRspQryInvestor);
    			tradeApi.OnRspQryInvestorPosition += new TradeApi.RspQryInvestorPosition(tradeApi_OnRspQryInvestorPosition);
    			tradeApi.OnRspQryInvestorPositionCombineDetail += new TradeApi.RspQryInvestorPositionCombineDetail(tradeApi_OnRspQryInvestorPositionCombineDetail);
    			tradeApi.OnRspQryInvestorPositionDetail += new TradeApi.RspQryInvestorPositionDetail(tradeApi_OnRspQryInvestorPositionDetail);
    			tradeApi.OnRspQryNotice += new TradeApi.RspQryNotice(tradeApi_OnRspQryNotice);
    			tradeApi.OnRspQryOrder += new TradeApi.RspQryOrder(tradeApi_OnRspQryOrder);
    			tradeApi.OnRspQrySettlementInfo += new TradeApi.RspQrySettlementInfo(tradeApi_OnRspQrySettlementInfo);
    			tradeApi.OnRspQrySettlementInfoConfirm += new TradeApi.RspQrySettlementInfoConfirm(tradeApi_OnRspQrySettlementInfoConfirm);
    			tradeApi.OnRspQryTrade += new TradeApi.RspQryTrade(tradeApi_OnRspQryTrade);
    			tradeApi.OnRspQryTradingAccount += new TradeApi.RspQryTradingAccount(tradeApi_OnRspQryTradingAccount);
    			tradeApi.OnRspQryTradingCode += new TradeApi.RspQryTradingCode(tradeApi_OnRspQryTradingCode);
    			tradeApi.OnRspQryTradingNotice += new TradeApi.RspQryTradingNotice(tradeApi_OnRspQryTradingNotice);
    			tradeApi.OnRspQueryMaxOrderVolume += new TradeApi.RspQueryMaxOrderVolume(tradeApi_OnRspQueryMaxOrderVolume);
    			tradeApi.OnRspSettlementInfoConfirm += new TradeApi.RspSettlementInfoConfirm(tradeApi_OnRspSettlementInfoConfirm);
    			tradeApi.OnRspTradingAccountPasswordUpdate += new TradeApi.RspTradingAccountPasswordUpdate(tradeApi_OnRspTradingAccountPasswordUpdate);
    			tradeApi.OnRspUserLogin += new TradeApi.RspUserLogin(tradeApi_OnRspUserLogin);
    			tradeApi.OnRspUserLogout += new TradeApi.RspUserLogout(tradeApi_OnRspUserLogout);
    			tradeApi.OnRspUserPasswordUpdate += new TradeApi.RspUserPasswordUpdate(tradeApi_OnRspUserPasswordUpdate);
    			tradeApi.OnRtnErrorConditionalOrder += new TradeApi.RtnErrorConditionalOrder(tradeApi_OnRtnErrorConditionalOrder);
    			tradeApi.OnRtnInstrumentStatus += new TradeApi.RtnInstrumentStatus(tradeApi_OnRtnInstrumentStatus);
    			tradeApi.OnRtnOrder += new TradeApi.RtnOrder(tradeApi_OnRtnOrder);
    			tradeApi.OnRtnTrade += new TradeApi.RtnTrade(tradeApi_OnRtnTrade);
    			tradeApi.OnRtnTradingNotice += new TradeApi.RtnTradingNotice(tradeApi_OnRtnTradingNotice);
    		}
    
    		void tradeApi_OnRtnTradingNotice(ref CThostFtdcTradingNoticeInfoField pTradingNoticeInfo)
    		{
    			showStructInListView(pTradingNoticeInfo, this.lvReturn);
    		}
    
    		void tradeApi_OnRtnTrade(ref CThostFtdcTradeField pTrade)
    		{
    			showStructInListView(pTrade, this.lvReturn);
    		}
    
    		void tradeApi_OnRtnOrder(ref CThostFtdcOrderField pOrder)
    		{
    			showStructInListView(pOrder, this.lvReturn);
    		}
    
    		void tradeApi_OnRtnInstrumentStatus(ref CThostFtdcInstrumentStatusField pInstrumentStatus)
    		{
    			showStructInListView(pInstrumentStatus, this.lvReturn);
    		}
    
    		void tradeApi_OnRtnErrorConditionalOrder(ref CThostFtdcErrorConditionalOrderField pErrorConditionalOrder)
    		{
    			showStructInListView(pErrorConditionalOrder, this.lvReturn);
    		}
    
    		void tradeApi_OnRspUserPasswordUpdate(ref CThostFtdcUserPasswordUpdateField pUserPasswordUpdate, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pUserPasswordUpdate, this.lvReturn);
    		}
    
    		void tradeApi_OnRspUserLogout(ref CTPTradeApi.CThostFtdcUserLogoutField pUserLogout, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pUserLogout, this.lvReturn);
    		}
    
    		void tradeApi_OnRspUserLogin(ref CTPTradeApi.CThostFtdcRspUserLoginField pRspUserLogin, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pRspUserLogin, this.lvReturn);
    		}
    
    		void tradeApi_OnRspTradingAccountPasswordUpdate(ref CThostFtdcTradingAccountPasswordUpdateField pTradingAccountPasswordUpdate, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pTradingAccountPasswordUpdate, this.lvReturn);
    		}
    
    		void tradeApi_OnRspSettlementInfoConfirm(ref CThostFtdcSettlementInfoConfirmField pSettlementInfoConfirm, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pSettlementInfoConfirm, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQueryMaxOrderVolume(ref CThostFtdcQueryMaxOrderVolumeField pQueryMaxOrderVolume, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pQueryMaxOrderVolume, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryTradingNotice(ref CThostFtdcTradingNoticeField pTradingNotice, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pTradingNotice, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryTradingCode(ref CThostFtdcTradingCodeField pTradingCode, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pTradingCode, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryTradingAccount(ref CThostFtdcTradingAccountField pTradingAccount, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pTradingAccount, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryTrade(ref CThostFtdcTradeField pTrade, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pTrade, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQrySettlementInfoConfirm(ref CThostFtdcSettlementInfoConfirmField pSettlementInfoConfirm, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pSettlementInfoConfirm, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQrySettlementInfo(ref CThostFtdcSettlementInfoField pSettlementInfo, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pSettlementInfo, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryOrder(ref CThostFtdcOrderField pOrder, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pOrder, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryNotice(ref CThostFtdcNoticeField pNotice, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pNotice, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInvestorPositionDetail(ref CThostFtdcInvestorPositionDetailField pInvestorPositionDetail, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInvestorPositionDetail, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInvestorPositionCombineDetail(ref CThostFtdcInvestorPositionCombineDetailField pInvestorPositionCombineDetail, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInvestorPositionCombineDetail, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInvestorPosition(ref CThostFtdcInvestorPositionField pInvestorPosition, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInvestorPosition, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInvestor(ref CThostFtdcInvestorField pInvestor, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInvestor, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInstrumentMarginRate(ref CThostFtdcInstrumentMarginRateField pInstrumentMarginRate, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInstrumentMarginRate, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInstrumentCommissionRate(ref CThostFtdcInstrumentCommissionRateField pInstrumentCommissionRate, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInstrumentCommissionRate, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryInstrument(ref CThostFtdcInstrumentField pInstrument, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInstrument, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryExchange(ref CThostFtdcExchangeField pExchange, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pExchange, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryDepthMarketData(ref CThostFtdcDepthMarketDataField pDepthMarketData, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pDepthMarketData, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryCFMMCTradingAccountKey(ref CThostFtdcCFMMCTradingAccountKeyField pCFMMCTradingAccountKey, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pCFMMCTradingAccountKey, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryBrokerTradingParams(ref CThostFtdcBrokerTradingParamsField pBrokerTradingParams, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pBrokerTradingParams, this.lvReturn);
    		}
    
    		void tradeApi_OnRspQryBrokerTradingAlgos(ref CThostFtdcBrokerTradingAlgosField pBrokerTradingAlgos, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pBrokerTradingAlgos, this.lvReturn);
    		}
    
    		void tradeApi_OnRspOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInputOrder, this.lvReturn);
    		}
    
    		void tradeApi_OnRspOrderAction(ref CThostFtdcInputOrderActionField pInputOrderAction, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pInputOrderAction, this.lvReturn);
    		}
    
    		void tradeApi_OnRspError(ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
    		{
    			showStructInListView(pRspInfo, this.lvReturn);
    		}
    
    		void tradeApi_OnHeartBeatWarning(int pTimeLapes)
    		{
    			//showStructInListView();
    		}
    
    		void tradeApi_OnFrontConnect()
    		{
    			userLogin();
    		}
    
    		void tradeApi_OnErrRtnOrderInsert(ref CThostFtdcInputOrderField pInputOrder, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo)
    		{
    			showStructInListView(pInputOrder, this.lvReturn);
    		}
    
    		void tradeApi_OnErrRtnOrderAction(ref CThostFtdcOrderActionField pOrderAction, ref CTPTradeApi.CThostFtdcRspInfoField pRspInfo)
    		{
    			showStructInListView(pOrderAction, this.lvReturn);
    		}
    
    		void tradeApi_OnDisConnected(int reason)
    		{
    			//showStructInListView(pTradingNoticeInfo, this.lvReturn);
    		}
    	}
    }
    
     
  16. 复杂

    专业

    支持

    文科生漂过
     
  17. 专业,谢谢提供
     
  18. 群中已发布交易终端源码,感兴趣的朋友。可以到群共享里下载。