更新穿透式gateway

This commit is contained in:
msincenselee 2019-05-24 13:41:26 +08:00
parent 8b69d4dd94
commit 674c9f04fe
11 changed files with 464 additions and 141 deletions

View File

@ -6,5 +6,5 @@
"userID": "10000061",
"authCode":"YHQHYHQHYHQHYHQH",
"appID": "client_huafu_2.0.0",
"userProductInfo":"client_huafu_2.0.0"
"userProductInfo":""
}

View File

@ -245,6 +245,10 @@ defineDict["THOST_FTDC_ICT_BusinessRegistration"] = 'H'
defineDict["THOST_FTDC_ICT_HKMCIDCard"] = 'I'
#人行开户许可证
defineDict["THOST_FTDC_ICT_AccountsPermits"] = 'J'
#外国人永久居留证
defineDict["THOST_FTDC_ICT_FrgPrmtRdCard"] = 'K'
#资管产品备案函
defineDict["THOST_FTDC_ICT_CptMngPrdLetter"] = 'L'
#其他证件
defineDict["THOST_FTDC_ICT_OtherCard"] = 'x'
@ -489,6 +493,28 @@ defineDict["THOST_FTDC_BFC_DeleteOrder"] = 'J'
defineDict["THOST_FTDC_BFC_ParkedOrderInsert"] = 'K'
#预埋报单操作
defineDict["THOST_FTDC_BFC_ParkedOrderAction"] = 'L'
#资金不够仍允许行权
defineDict["THOST_FTDC_BFC_ExecOrderNoCheck"] = 'M'
#指定
defineDict["THOST_FTDC_BFC_Designate"] = 'N'
#证券处置
defineDict["THOST_FTDC_BFC_StockDisposal"] = 'O'
#席位资金预警
defineDict["THOST_FTDC_BFC_BrokerDepositWarn"] = 'Q'
#备兑不足预警
defineDict["THOST_FTDC_BFC_CoverWarn"] = 'S'
#行权试算
defineDict["THOST_FTDC_BFC_PreExecOrder"] = 'T'
#行权交收风险
defineDict["THOST_FTDC_BFC_ExecOrderRisk"] = 'P'
#持仓限额预警
defineDict["THOST_FTDC_BFC_PosiLimitWarn"] = 'U'
#持仓限额查询
defineDict["THOST_FTDC_BFC_QryPosiLimit"] = 'V'
#银期签到签退
defineDict["THOST_FTDC_BFC_FBSign"] = 'W'
#银期签约解约
defineDict["THOST_FTDC_BFC_FBAccount"] = 'X'
typedefDict["TThostFtdcBrokerFunctionCodeType"] = "char"
@ -686,6 +712,13 @@ defineDict["THOST_FTDC_HF_Hedge"] = '3'
#备兑
defineDict["THOST_FTDC_HF_Covered"] = '4'
#做市商
defineDict["THOST_FTDC_HF_MarketMaker"] = '5'
#第一腿投机第二腿套保 大商所专用
defineDict["THOST_FTDC_HF_SpecHedge"] = '6'
#第一腿套保第二腿投机 大商所专用
defineDict["THOST_FTDC_HF_HedgeSpec"] = '7'
typedefDict["TThostFtdcHedgeFlagType"] = "char"
#//////////////////////////////////////////////////////////////////////
@ -709,6 +742,8 @@ defineDict["THOST_FTDC_CIDT_Speculation"] = '1'
defineDict["THOST_FTDC_CIDT_Arbitrage"] = '2'
#套保
defineDict["THOST_FTDC_CIDT_Hedge"] = '3'
#做市商
defineDict["THOST_FTDC_CIDT_MarketMaker"] = '5'
typedefDict["TThostFtdcClientIDTypeType"] = "char"
@ -809,6 +844,10 @@ defineDict["THOST_FTDC_ORDT_Combination"] = '3'
defineDict["THOST_FTDC_ORDT_ConditionalOrder"] = '4'
#互换单
defineDict["THOST_FTDC_ORDT_Swap"] = '5'
#大宗交易成交衍生
defineDict["THOST_FTDC_ORDT_DeriveFromBlockTrade"] = '6'
#期转现成交衍生
defineDict["THOST_FTDC_ORDT_DeriveFromEFPTrade"] = '7'
typedefDict["TThostFtdcOrderTypeType"] = "char"
@ -927,6 +966,8 @@ defineDict["THOST_FTDC_TRDT_OTC"] = '2'
defineDict["THOST_FTDC_TRDT_EFPDerived"] = '3'
#组合衍生成交
defineDict["THOST_FTDC_TRDT_CombinationDerived"] = '4'
#大宗交易成交
defineDict["THOST_FTDC_TRDT_BlockTrade"] = '5'
typedefDict["TThostFtdcTradeTypeType"] = "char"
@ -939,6 +980,8 @@ defineDict["THOST_FTDC_PSRC_LastPrice"] = '0'
defineDict["THOST_FTDC_PSRC_Buy"] = '1'
#卖委托价
defineDict["THOST_FTDC_PSRC_Sell"] = '2'
#场外成交价
defineDict["THOST_FTDC_PSRC_OTC"] = '3'
typedefDict["TThostFtdcPriceSourceType"] = "char"
@ -1412,6 +1455,26 @@ defineDict["THOST_FTDC_TPID_IsPosiFreeze"] = 'F'
defineDict["THOST_FTDC_TPID_IsPosiLimit"] = 'M'
#郑商所询价时间间隔
defineDict["THOST_FTDC_TPID_ForQuoteTimeInterval"] = 'Q'
#是否期货限仓
defineDict["THOST_FTDC_TPID_IsFuturePosiLimit"] = 'B'
#是否期货下单频率限制
defineDict["THOST_FTDC_TPID_IsFutureOrderFreq"] = 'C'
#行权冻结是否计算盈利
defineDict["THOST_FTDC_TPID_IsExecOrderProfit"] = 'H'
#银期开户是否验证开户银行卡号是否是预留银行账户
defineDict["THOST_FTDC_TPID_IsCheckBankAcc"] = 'I'
#弱密码最后修改日期
defineDict["THOST_FTDC_TPID_PasswordDeadLine"] = 'J'
#强密码校验
defineDict["THOST_FTDC_TPID_IsStrongPassword"] = 'K'
#自有资金质押比
defineDict["THOST_FTDC_TPID_BalanceMorgage"] = 'a'
#最小密码长度
defineDict["THOST_FTDC_TPID_MinPwdLen"] = 'O'
#IP当日最大登陆失败次数
defineDict["THOST_FTDC_TPID_LoginFailMaxNumForIP"] = 'U'
#密码有效期
defineDict["THOST_FTDC_TPID_PasswordPeriod"] = 'V'
typedefDict["TThostFtdcTradeParamIDType"] = "char"
@ -3694,6 +3757,12 @@ defineDict["THOST_FTDC_FBTUET_QueryFutureAccount"] = '9'
defineDict["THOST_FTDC_FBTUET_SignOut"] = 'A'
#密钥同步
defineDict["THOST_FTDC_FBTUET_SyncKey"] = 'B'
#预约开户
defineDict["THOST_FTDC_FBTUET_ReserveOpenAccount"] = 'C'
#撤销预约开户
defineDict["THOST_FTDC_FBTUET_CancelReserveOpenAccount"] = 'D'
#预约开户确认
defineDict["THOST_FTDC_FBTUET_ReserveOpenAccountConfirm"] = 'E'
#其他
defineDict["THOST_FTDC_FBTUET_Other"] = 'Z'
@ -5389,6 +5458,8 @@ defineDict["THOST_FTDC_MFUR_None"] = '0'
defineDict["THOST_FTDC_MFUR_Margin"] = '1'
#用于手续费、盈亏、保证金
defineDict["THOST_FTDC_MFUR_All"] = '2'
#人民币方案3
defineDict["THOST_FTDC_MFUR_CNY3"] = '3'
typedefDict["TThostFtdcMortgageFundUseRangeType"] = "char"
@ -6159,6 +6230,34 @@ defineDict["THOST_FTDC_COMBT_CLD"] = '6'
typedefDict["TThostFtdcCombinationTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcDceCombinationTypeType是一个组合类型类型
#//////////////////////////////////////////////////////////////////////
#期货对锁组合
defineDict["THOST_FTDC_DCECOMBT_SPL"] = '0'
#期权对锁组合
defineDict["THOST_FTDC_DCECOMBT_OPL"] = '1'
#期货跨期组合
defineDict["THOST_FTDC_DCECOMBT_SP"] = '2'
#期货跨品种组合
defineDict["THOST_FTDC_DCECOMBT_SPC"] = '3'
#买入期权垂直价差组合
defineDict["THOST_FTDC_DCECOMBT_BLS"] = '4'
#卖出期权垂直价差组合
defineDict["THOST_FTDC_DCECOMBT_BES"] = '5'
#期权日历价差组合
defineDict["THOST_FTDC_DCECOMBT_CAS"] = '6'
#期权跨式组合
defineDict["THOST_FTDC_DCECOMBT_STD"] = '7'
#期权宽跨式组合
defineDict["THOST_FTDC_DCECOMBT_STG"] = '8'
#买入期货期权组合
defineDict["THOST_FTDC_DCECOMBT_BFO"] = '9'
#卖出期货期权组合
defineDict["THOST_FTDC_DCECOMBT_SFO"] = 'a'
typedefDict["TThostFtdcDceCombinationTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcOptionRoyaltyPriceTypeType是一个期权权利金价格类型类型
#//////////////////////////////////////////////////////////////////////
@ -6166,6 +6265,8 @@ typedefDict["TThostFtdcCombinationTypeType"] = "char"
defineDict["THOST_FTDC_ORPT_PreSettlementPrice"] = '1'
#开仓价
defineDict["THOST_FTDC_ORPT_OpenPrice"] = '4'
#最新价与昨结算价较大值
defineDict["THOST_FTDC_ORPT_MaxPreSettlementPrice"] = '5'
typedefDict["TThostFtdcOptionRoyaltyPriceTypeType"] = "char"
@ -6324,14 +6425,116 @@ defineDict["THOST_FTDC_CMDR_UnComb"] = '1'
typedefDict["TThostFtdcCombDirectionType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcLockTypeType是一个锁定方向类型
#TFtdcStrikeOffsetTypeType是一个行权偏移类型类型
#//////////////////////////////////////////////////////////////////////
#锁定
defineDict["THOST_FTDC_LCKT_Lock"] = '1'
#解锁
defineDict["THOST_FTDC_LCKT_Unlock"] = '2'
#实值额
defineDict["THOST_FTDC_STOV_RealValue"] = '1'
#盈利额
defineDict["THOST_FTDC_STOV_ProfitValue"] = '2'
#实值比例
defineDict["THOST_FTDC_STOV_RealRatio"] = '3'
#盈利比例
defineDict["THOST_FTDC_STOV_ProfitRatio"] = '4'
typedefDict["TThostFtdcLockTypeType"] = "char"
typedefDict["TThostFtdcStrikeOffsetTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcReserveOpenAccStasType是一个预约开户状态类型
#//////////////////////////////////////////////////////////////////////
#等待处理中
defineDict["THOST_FTDC_ROAST_Processing"] = '0'
#已撤销
defineDict["THOST_FTDC_ROAST_Cancelled"] = '1'
#已开户
defineDict["THOST_FTDC_ROAST_Opened"] = '2'
#无效请求
defineDict["THOST_FTDC_ROAST_Invalid"] = '3'
typedefDict["TThostFtdcReserveOpenAccStasType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcLoginRemarkType是一个登录备注类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcLoginRemarkType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcInvestUnitIDType是一个投资单元代码类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcInvestUnitIDType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcBulletinIDType是一个公告编号类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcBulletinIDType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcNewsTypeType是一个公告类型类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcNewsTypeType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcNewsUrgencyType是一个紧急程度类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcNewsUrgencyType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcAbstractType是一个消息摘要类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcAbstractType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcComeFromType是一个消息来源类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcComeFromType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcURLLinkType是一个WEB地址类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcURLLinkType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcLongIndividualNameType是一个长个人姓名类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcLongIndividualNameType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcLongFBEBankAccountNameType是一个长换汇银行账户名类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcLongFBEBankAccountNameType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcDateTimeType是一个日期时间类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcDateTimeType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcWeakPasswordSourceType是一个弱密码来源类型
#//////////////////////////////////////////////////////////////////////
#弱密码库
defineDict["THOST_FTDC_WPSR_Lib"] = '1'
#手工录入
defineDict["THOST_FTDC_WPSR_Manual"] = '2'
typedefDict["TThostFtdcWeakPasswordSourceType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcRandomStringType是一个随机串类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcRandomStringType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcOptSelfCloseFlagType是一个期权行权的头寸是否自对冲类型
#//////////////////////////////////////////////////////////////////////
#自对冲期权仓位
defineDict["THOST_FTDC_OSCF_CloseSelfOptionPosition"] = '1'
#保留期权仓位
defineDict["THOST_FTDC_OSCF_ReserveOptionPosition"] = '2'
#自对冲卖方履约后的期货仓位
defineDict["THOST_FTDC_OSCF_SellCloseSelfFuturePosition"] = '3'
#保留卖方履约后的期货仓位
defineDict["THOST_FTDC_OSCF_ReserveFuturePosition"] = '4'
typedefDict["TThostFtdcOptSelfCloseFlagType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcBizTypeType是一个业务类型类型
@ -6344,113 +6547,151 @@ defineDict["THOST_FTDC_BZTP_Stock"] = '2'
typedefDict["TThostFtdcBizTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcDesignateTypeType是一个指定类型类型
#TFtdcAppTypeType是一个用户App类型类型
#//////////////////////////////////////////////////////////////////////
#指定登记
defineDict["THOST_FTDC_DSTP_Register"] = '1'
#指定撤销
defineDict["THOST_FTDC_DSTP_Cancel"] = '2'
#直连的投资者
defineDict["THOST_FTDC_APP_TYPE_Investor"] = '1'
#为每个投资者都创建连接的中继
defineDict["THOST_FTDC_APP_TYPE_InvestorRelay"] = '2'
#所有投资者共享一个操作员连接的中继
defineDict["THOST_FTDC_APP_TYPE_OperatorRelay"] = '3'
#未知
defineDict["THOST_FTDC_APP_TYPE_UnKnown"] = '4'
typedefDict["TThostFtdcDesignateTypeType"] = "char"
typedefDict["TThostFtdcAppTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcFreezeReasonTypeType是一个冻结原因类型
#TFtdcAppIDType是一个App代码类型
#//////////////////////////////////////////////////////////////////////
#初始化
defineDict["THOST_FTDC_FRTP_Init"] = '1'
#锁定
defineDict["THOST_FTDC_FRTP_Lock"] = '2'
#执行
defineDict["THOST_FTDC_FRTP_Exec"] = '3'
#仓位校验
defineDict["THOST_FTDC_FRTP_Check"] = '4'
#E+1日执行冻结
defineDict["THOST_FTDC_FRTP_ExecFreeze"] = '5'
typedefDict["TThostFtdcFreezeReasonTypeType"] = "char"
typedefDict["TThostFtdcAppIDType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcFreezeTypeType是一个冻结类型类型
#TFtdcSystemInfoLenType是一个系统信息长度类型
#//////////////////////////////////////////////////////////////////////
#冻结
defineDict["THOST_FTDC_FZTP_Freeze"] = '1'
#解冻
defineDict["THOST_FTDC_FZTP_Unfreeze"] = '2'
#强制执行
defineDict["THOST_FTDC_FZTP_Force"] = '3'
typedefDict["TThostFtdcFreezeTypeType"] = "char"
typedefDict["TThostFtdcSystemInfoLenType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcTradeSystemTypeType是一个交易系统类型类型
#TFtdcAdditionalInfoLenType是一个补充信息长度类型
#//////////////////////////////////////////////////////////////////////
#未知系统
defineDict["THOST_FTDC_TSTP_Unknow"] = '0'
#期货系统
defineDict["THOST_FTDC_TSTP_Future"] = '1'
#个股系统
defineDict["THOST_FTDC_TSTP_IShare"] = '2'
typedefDict["TThostFtdcTradeSystemTypeType"] = "char"
typedefDict["TThostFtdcAdditionalInfoLenType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcStockDisposalTypeType是一个证券处置方向类型
#TFtdcClientSystemInfoType是一个交易终端系统信息类型
#//////////////////////////////////////////////////////////////////////
#划入经纪公司账户
defineDict["THOST_FTDC_STPT_ToBroker"] = '1'
#划入投资者账户
defineDict["THOST_FTDC_STPT_ToInvestor"] = '2'
typedefDict["TThostFtdcStockDisposalTypeType"] = "char"
typedefDict["TThostFtdcClientSystemInfoType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcStockDisposalSysIDType是一个证券处置编号类型
#TFtdcAdditionalInfoType是一个系统外部信息类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcStockDisposalSysIDType"] = "string"
typedefDict["TThostFtdcAdditionalInfoType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcStockDisposalStatusType是一个证券处置状态类型
#TFtdcBase64ClientSystemInfoType是一个base64交易终端系统信息类型
#//////////////////////////////////////////////////////////////////////
#已经提交
defineDict["THOST_FTDC_SDPS_Submitted"] = 'a'
#已经接受
defineDict["THOST_FTDC_SDPS_Accepted"] = 'b'
#已经被拒绝
defineDict["THOST_FTDC_SDPS_Rejected"] = 'c'
#已经被撤销
defineDict["THOST_FTDC_SDPS_Cancelled"] = 'd'
typedefDict["TThostFtdcStockDisposalStatusType"] = "char"
typedefDict["TThostFtdcBase64ClientSystemInfoType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcInstructionRightTypeType是一个指令权限类型类型
#TFtdcBase64AdditionalInfoType是一个base64系统外部信息类型
#//////////////////////////////////////////////////////////////////////
#限价单
defineDict["THOST_FTDC_ISTR_Limit"] = '1'
#限价全额成交否则取消
defineDict["THOST_FTDC_ISTR_Limit_FOK"] = '2'
#市价订单剩余转限价
defineDict["THOST_FTDC_ISTR_Market_RemainLimit"] = '3'
#市价订单剩余撤销
defineDict["THOST_FTDC_ISTR_Market_FAK"] = '4'
#市价全额成交否则取消
defineDict["THOST_FTDC_ISTR_Market_FOK"] = '5'
#证券锁定
defineDict["THOST_FTDC_ISTR_Lock"] = '6'
#证券解锁
defineDict["THOST_FTDC_ISTR_Unlock"] = '7'
typedefDict["TThostFtdcInstructionRightTypeType"] = "char"
typedefDict["TThostFtdcBase64AdditionalInfoType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcLevelTypeType是一个投资者分级类型类型
#TFtdcCurrentAuthMethodType是一个当前可用的认证模式0代表无需认证模式 A从低位开始最后一位代表图片验证码倒数第二位代表动态口令倒数第三位代表短信验证码类型
#//////////////////////////////////////////////////////////////////////
#一级投资者
defineDict["THOST_FTDC_IVLV_FirstLevel"] = '1'
#二级投资者
defineDict["THOST_FTDC_IVLV_SecondLevel"] = '2'
#三级投资者
defineDict["THOST_FTDC_IVLV_ThirdLevel"] = '3'
typedefDict["TThostFtdcCurrentAuthMethodType"] = "int"
typedefDict["TThostFtdcLevelTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcCaptchaInfoLenType是一个图片验证信息长度类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcCaptchaInfoLenType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcCaptchaInfoType是一个图片验证信息类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcCaptchaInfoType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcUserTextSeqType是一个用户短信验证码的编号类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcUserTextSeqType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcHandshakeDataType是一个握手数据内容类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcHandshakeDataType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcHandshakeDataLenType是一个握手数据内容长度类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcHandshakeDataLenType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcCryptoKeyVersionType是一个api与front通信密钥版本号类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcCryptoKeyVersionType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcRsaKeyVersionType是一个公钥版本号类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcRsaKeyVersionType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcSoftwareProviderIDType是一个交易软件商ID类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcSoftwareProviderIDType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcCollectTimeType是一个信息采集时间类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcCollectTimeType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcQueryFreqType是一个查询频率类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcQueryFreqType"] = "int"
#//////////////////////////////////////////////////////////////////////
#TFtdcResponseValueType是一个应答类型类型
#//////////////////////////////////////////////////////////////////////
#检查成功
defineDict["THOST_FTDC_RV_Right"] = '0'
#检查失败
defineDict["THOST_FTDC_RV_Refuse"] = '1'
typedefDict["TThostFtdcResponseValueType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcOTCTradeTypeType是一个OTC成交类型类型
#//////////////////////////////////////////////////////////////////////
#大宗交易
defineDict["THOST_FTDC_OTC_TRDT_Block"] = '0'
#期转现
defineDict["THOST_FTDC_OTC_TRDT_EFP"] = '1'
typedefDict["TThostFtdcOTCTradeTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcMatchTypeType是一个期现风险匹配方式类型
#//////////////////////////////////////////////////////////////////////
#基点价值
defineDict["THOST_FTDC_OTC_MT_DV01"] = '1'
#面值
defineDict["THOST_FTDC_OTC_MT_ParValue"] = '2'
typedefDict["TThostFtdcMatchTypeType"] = "char"
#//////////////////////////////////////////////////////////////////////
#TFtdcOTCTraderIDType是一个OTC交易员代码类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcOTCTraderIDType"] = "string"
#//////////////////////////////////////////////////////////////////////
#TFtdcRiskValueType是一个期货风险值类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcRiskValueType"] = "float"
#//////////////////////////////////////////////////////////////////////
#TFtdcIDBNameType是一个握手数据内容类型
#//////////////////////////////////////////////////////////////////////
typedefDict["TThostFtdcIDBNameType"] = "string"

View File

@ -122,6 +122,7 @@ class CtpseGateway(VtGateway):
self.requireAuthentication = False
self.debug_tick = False
self.debug = False
self.tdx_pool_count = 2 # 通达信连接池内连接数
@ -171,7 +172,7 @@ class CtpseGateway(VtGateway):
if 'authCode' in setting:
authCode = str(setting['authCode'])
appID = str(setting['appID'])
userProductInfo = str(setting['userProductInfo'])
userProductInfo = setting.get('userProductInfo',"")
self.tdApi.requireAuthentication = True
self.writeLog(u'使用授权码验证')
else:
@ -477,7 +478,8 @@ class CtpMdApi(MdApi):
self.writeLog(text.DATA_SERVER_CONNECTED)
self.login()
if not self.loginStatus:
self.login()
#----------------------------------------------------------------------
def onFrontDisconnected(self, n):
@ -492,7 +494,8 @@ class CtpMdApi(MdApi):
def onHeartBeatWarning(self, n):
"""心跳报警"""
# 因为API的心跳报警比较常被触发且与API工作关系不大因此选择忽略
pass
if getattr(self.gateway,'debug',False):
print('onHeartBeatWarning')
#----------------------------------------------------------------------
def onRspError(self, error, n, last):
@ -506,6 +509,9 @@ class CtpMdApi(MdApi):
#----------------------------------------------------------------------
def onRspUserLogin(self, data, error, n, last):
"""登陆回报"""
if getattr(self.gateway,'debug',False):
print('onRspUserLogin')
# 如果登录成功,推送日志信息
if error['ErrorID'] == 0:
self.loginStatus = True
@ -527,6 +533,8 @@ class CtpMdApi(MdApi):
#----------------------------------------------------------------------
def onRspUserLogout(self, data, error, n, last):
"""登出回报"""
if getattr(self.gateway,'debug',False):
print('onRspUserLogout')
# 如果登出成功,推送日志信息
if error['ErrorID'] == 0:
self.loginStatus = False
@ -546,13 +554,15 @@ class CtpMdApi(MdApi):
def onRspSubMarketData(self, data, error, n, last):
"""订阅合约回报"""
# 通常不在乎订阅错误,选择忽略
pass
if getattr(self.gateway, 'debug', False):
print('onRspSubMarketData')
#----------------------------------------------------------------------
def onRspUnSubMarketData(self, data, error, n, last):
"""退订合约回报"""
# 同上
pass
if getattr(self.gateway, 'debug', False):
print('onRspUnSubMarketData')
#----------------------------------------------------------------------
def onRtnDepthMarketData(self, data):
@ -562,6 +572,8 @@ class CtpMdApi(MdApi):
# self.writeLog(u'忽略成交量为0的无效单合约tick数据:')
# self.writeLog(data)
# return
if getattr(self.gateway, 'debug', False):
print('onRtnDepthMarketData')
if not self.connectionStatus:
self.connectionStatus = True
@ -674,21 +686,26 @@ class CtpMdApi(MdApi):
#----------------------------------------------------------------------
def onRspSubForQuoteRsp(self, data, error, n, last):
"""订阅期权询价"""
pass
#----------------------------------------------------------------------
if getattr(self.gateway, 'debug', False):
print('onRspSubForQuoteRsp')
#----------------------------------------------------------------------
def onRspUnSubForQuoteRsp(self, data, error, n, last):
"""退订期权询价"""
pass
if getattr(self.gateway, 'debug', False):
print('onRspUnSubForQuoteRsp')
#----------------------------------------------------------------------
def onRtnForQuoteRsp(self, data):
"""期权询价推送"""
pass
if getattr(self.gateway, 'debug', False):
print('onRtnForQuoteRsp')
#----------------------------------------------------------------------
def connect(self, userID, password, brokerID, address):
"""初始化连接"""
if getattr(self.gateway, 'debug', False):
print('connect')
self.userID = userID # 账号
self.password = password # 密码
self.brokerID = brokerID # 经纪商代码
@ -707,6 +724,8 @@ class CtpMdApi(MdApi):
# 初始化连接成功会调用onFrontConnected
self.init()
self.login()
# 若已经连接但尚未登录,则进行登录
else:
@ -718,6 +737,8 @@ class CtpMdApi(MdApi):
"""订阅合约"""
# 这里的设计是,如果尚未登录就调用了订阅方法
# 则先保存订阅请求,登录完成后会自动订阅
if getattr(self.gateway, 'debug', False):
print('subscribe')
# 订阅传统合约
self.subscribeMarketData(str(subscribeReq.symbol))
@ -788,8 +809,9 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onFrontConnected(self):
"""服务器连接"""
if getattr(self.gateway, 'debug', False):
print('onFrontConnected')
self.connectionStatus = True
self.writeLog(text.TRADING_SERVER_CONNECTED)
if self.requireAuthentication:
@ -800,6 +822,8 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onFrontDisconnected(self, n):
"""服务器断开"""
if getattr(self.gateway, 'debug', False):
print('onFrontDisconnected')
self.connectionStatus = False
self.loginStatus = False
self.gateway.tdConnected = False
@ -809,11 +833,15 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onHeartBeatWarning(self, n):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onHeartBeatWarning')
#----------------------------------------------------------------------
def onRspAuthenticate(self, data, error, n, last):
"""验证客户端回报"""
if getattr(self.gateway, 'debug', False):
print('onRspAuthenticate')
if error['ErrorID'] == 0:
self.authStatus = True
self.writeLog(text.TRADING_SERVER_AUTHENTICATED)
@ -824,6 +852,8 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspUserLogin(self, data, error, n, last):
"""登陆回报"""
if getattr(self.gateway, 'debug', False):
print('onRspUserLogin')
# 如果登录成功,推送日志信息
if error['ErrorID'] == 0:
self.tradingDay = str(data['TradingDay'])
@ -857,12 +887,16 @@ class CtpTdApi(TdApi):
def resentReqQryInstrument(self):
# 查询合约代码
if getattr(self.gateway, 'debug', False):
print('resentReqQryInstrument')
self.reqID += 1
self.reqQryInstrument({}, self.reqID)
#----------------------------------------------------------------------
def onRspUserLogout(self, data, error, n, last):
"""登出回报"""
if getattr(self.gateway, 'debug', False):
print('onRspUserLogout')
# 如果登出成功,推送日志信息
if error['ErrorID'] == 0:
self.loginStatus = False
@ -881,16 +915,20 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspUserPasswordUpdate(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspUserPasswordUpdate')
#----------------------------------------------------------------------
def onRspTradingAccountPasswordUpdate(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspTradingAccountPasswordUpdate')
#----------------------------------------------------------------------
def onRspOrderInsert(self, data, error, n, last):
"""发单错误(柜台)"""
if getattr(self.gateway, 'debug', False):
print('onRspOrderInsert')
# 推送委托信息
order = VtOrderData()
order.gatewayName = self.gatewayName
@ -918,16 +956,20 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspParkedOrderInsert(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspParkedOrderInsert')
#----------------------------------------------------------------------
def onRspParkedOrderAction(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspParkedOrderAction')
#----------------------------------------------------------------------
def onRspOrderAction(self, data, error, n, last):
"""撤单错误(柜台)"""
if getattr(self.gateway, 'debug', False):
print('onRspOrderAction')
try:
symbol = data['InstrumentID']
except KeyError:
@ -943,73 +985,90 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspQueryMaxOrderVolume(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQueryMaxOrderVolume')
#----------------------------------------------------------------------
def onRspSettlementInfoConfirm(self, data, error, n, last):
"""确认结算信息回报"""
if getattr(self.gateway, 'debug', False):
print('onRspSettlementInfoConfirm')
self.writeLog(text.SETTLEMENT_INFO_CONFIRMED)
#----------------------------------------------------------------------
def onRspRemoveParkedOrder(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspSettlementInfoConfirm')
#----------------------------------------------------------------------
def onRspRemoveParkedOrderAction(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspRemoveParkedOrderAction')
#----------------------------------------------------------------------
def onRspExecOrderInsert(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspExecOrderInsert')
#----------------------------------------------------------------------
def onRspExecOrderAction(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspExecOrderAction')
#----------------------------------------------------------------------
def onRspForQuoteInsert(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspForQuoteInsert')
#----------------------------------------------------------------------
def onRspQuoteInsert(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQuoteInsert')
#----------------------------------------------------------------------
def onRspQuoteAction(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQuoteAction')
#----------------------------------------------------------------------
def onRspLockInsert(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspLockInsert')
#----------------------------------------------------------------------
def onRspCombActionInsert(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspCombActionInsert')
#----------------------------------------------------------------------
def onRspQryOrder(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspCombActionInsert')
#----------------------------------------------------------------------
def onRspQryTrade(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryTrade')
#----------------------------------------------------------------------
def onRspQryInvestorPosition(self, data, error, n, last):
"""持仓查询回报"""
if getattr(self.gateway, 'debug', False):
print('onRspQryInvestorPosition')
if not data['InstrumentID']:
return
@ -1072,6 +1131,8 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspQryTradingAccount(self, data, error, n, last):
"""资金账户查询回报"""
if getattr(self.gateway, 'debug', False):
print('onRspQryTradingAccount')
self.gateway.mdConnected = True
account = VtAccountData()
@ -1101,12 +1162,14 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspQryInvestor(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInvestor')
#----------------------------------------------------------------------
def onRspQryTradingCode(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryTradingCode')
#----------------------------------------------------------------------
def onRspQryInstrumentMarginRate(self, data, error, n, last):
@ -1118,26 +1181,32 @@ class CtpTdApi(TdApi):
:param last:
:return:
"""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInstrumentMarginRate')
#----------------------------------------------------------------------
def onRspQryInstrumentCommissionRate(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInstrumentCommissionRate')
#----------------------------------------------------------------------
def onRspQryExchange(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryExchange')
#----------------------------------------------------------------------
def onRspQryProduct(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryProduct')
#----------------------------------------------------------------------
def onRspQryInstrument(self, data, error, n, last):
"""合约查询回报"""
if getattr(self.gateway, 'debug', False):
print('onRspQryInstrument')
self.gateway.mdConnected = True
contract = VtContractData()
@ -1191,62 +1260,74 @@ class CtpTdApi(TdApi):
#----------------------------------------------------------------------
def onRspQryDepthMarketData(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryDepthMarketData')
#----------------------------------------------------------------------
def onRspQrySettlementInfo(self, data, error, n, last):
"""查询结算信息回报"""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryDepthMarketData')
#----------------------------------------------------------------------
def onRspQryTransferBank(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryTransferBank')
#----------------------------------------------------------------------
def onRspQryInvestorPositionDetail(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInvestorPositionDetail')
#----------------------------------------------------------------------
def onRspQryNotice(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInvestorPositionDetail')
#----------------------------------------------------------------------
def onRspQrySettlementInfoConfirm(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQrySettlementInfoConfirm')
#----------------------------------------------------------------------
def onRspQryInvestorPositionCombineDetail(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInvestorPositionCombineDetail')
#----------------------------------------------------------------------
def onRspQryCFMMCTradingAccountKey(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryCFMMCTradingAccountKey')
#----------------------------------------------------------------------
def onRspQryEWarrantOffset(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryEWarrantOffset')
#----------------------------------------------------------------------
def onRspQryInvestorProductGroupMargin(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryInvestorProductGroupMargin')
#----------------------------------------------------------------------
def onRspQryExchangeMarginRate(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryExchangeMarginRate')
#----------------------------------------------------------------------
def onRspQryExchangeMarginRateAdjust(self, data, error, n, last):
""""""
pass
if getattr(self.gateway, 'debug', False):
print('onRspQryExchangeMarginRateAdjust')
#----------------------------------------------------------------------
def onRspQryExchangeRate(self, data, error, n, last):
@ -1733,12 +1814,13 @@ class CtpTdApi(TdApi):
def authenticate(self):
"""申请验证"""
self.writeLog(u'申请授权码验证')
if self.userID and self.brokerID and self.authCode and self.userProductInfo:
if self.userID and self.brokerID and self.authCode:
req = {}
req['UserID'] = self.userID
req['BrokerID'] = self.brokerID
req['AuthCode'] = self.authCode
req['UserProductInfo'] = self.userProductInfo
if len(self.userProductInfo) > 0:
req['UserProductInfo'] = self.userProductInfo
req['AppID'] = self.appID
self.reqID +=1
self.writeLog(u'提交验证...')