提供源码下载. 此处权限不够没法上传文件,需要的朋友可以加群65164336.共享里有下,使用此接口设计的交易终端也在共享里. 有关使用中遇到的问题请在群里提出或在论坛里发贴. 共同学习,为推广CTP贡献自己的一点力量.
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) ;
// 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); }
// 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; }
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);
// 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)); //}
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; }
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' } }
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); } } } }
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 } }
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); } } }