9.【QMT使用指南】- 成交回报实时主推函数

实时主推函数
account_callback - 资金账号状态变化主推
用法: account_callback(ContextInfo, accountInfo)
释义: 当资金账号状态有变化时,这个函数被客户端调用。
参数:
-
ContextInfo:特定对象
-
accountInfo:
-
账号对象
-
信用账号对象
返回: 无
示例:
#coding:gbkdef show_data(data): tdata = {} for ar in dir(data): if ar[:2] != 'm_': continue try: tdata[ar] = data.__getattribute__(ar) except: tdata[ar] = '<CanNotConvert>' return tdatadef init(ContextInfo): # 设置对应的资金账号 # 示例需要在策略交易界面运行 ContextInfo.set_account(account)def after_init(ContextInfo): # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值 # 编译器界面里执行的下单函数不会产生实际委托 passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注", ContextInfo) passdef account_callback(ContextInfo, accountInfo): print(show_data(accountInfo))
返回值示例:
{ "m_Enable": true, "m_dAssetBalance": 9975010.001775814, "m_dAssureAsset": 9975010.001775814, "m_dAvAIlable": 9555238.805375814, "m_dBalance": 9975010.001775814, "m_dBuyWaitMoney": 0.0, "m_dCashIn": 0.0, "m_dCloseProfit": 0.0, "m_dCommission": 14.284000000000006, "m_dCredit": 0.0, "m_dCurrMargin": 0.0, "m_dDeposit": 0.0, "m_dEntrustAsset": 0.0, "m_dFetchBalance": 9556221.001775814, "m_dFrozenCash": 982.1964, "m_dFrozenCommission": 0.0, "m_dFrozenMargin": 9555238.805375814, "m_dFrozenRoyalty": 0.0, "m_dFundValue": 0.0, "m_dGoldFrozen": 0.0, "m_dGoldValue": 0.0, "m_dInitBalance": 0.0, "m_dInitCloseMoney": -4249.283999999998, "m_dInstrumentValue": 418789.0, "m_dInstrumentValueRMB": 0.0, "m_dIntradayBalance": 0.0, "m_dIntradayFreedBalance": 0.0, "m_dLoanValue": 0.0, "m_dLongValue": 0.0, "m_dMargin": 0.0, "m_dMaxMarginRate": 0.0, "m_dMortgage": 0.0, "m_dNav": 0.0, "m_dNetValue": 0.0, "m_dOccupiedBalance": 0.0, "m_dPositionProfit": -3441.6657800000025, "m_dPreBalance": 9556221.001775814, "m_dPreCredit": 0.0, "m_dPreMortgage": 0.0, "m_dPurchasingPower": 0.0, "m_dRawMargin": 0.0, "m_dRealRiskDegree": 0.0, "m_dRealUsedMargin": 0.0, "m_dReceiveInterestTotal": 0.0, "m_dRepurchaseValue": 0.0, "m_dRisk": 0.0, "m_dRoyalty": 0.0, "m_dSellWaitMoney": 0.0, "m_dShortValue": 0.0, "m_dStockValue": 418789.0, "m_dSubscribeFee": 0.0, "m_dTotalDebit": 0.0, "m_dWithdraw": 0.0, "m_nBrokerType": 2, "m_nDirection": 48, "m_strAccountID": "2000567", "m_strAccountKey": "2____11194____114911____49____2000567____", "m_strAccountRemark": "", "m_strBrokerName": "", "m_strMoneyType": "", "m_strOpenDate": "", "m_strStatus": "准备登录", "m_strTradingDate": "20240220"}
task_callback - 账号任务状态变化主推
用法: task_callback(ContextInfo, taskInfo)
释义: 当账号任务状态有变化时,这个函数被客户端调用。
参数:
-
ContextInfo:特定对象
-
taskInfo:
-
任务对象
返回: 无
示例:
#coding:gbkdef show_data(data): tdata = {} for ar in dir(data): if ar[:2] != 'm_': continue try: tdata[ar] = data.__getattribute__(ar) except: tdata[ar] = '<CanNotConvert>' return tdatadef init(ContextInfo): # 设置对应的资金账号 # 示例需要在策略交易界面运行 ContextInfo.set_account(account)def after_init(ContextInfo): # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值 # 编译器界面里执行的下单函数不会产生实际委托 passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注", ContextInfo) passdef task_callback(ContextInfo, taskInfo): print(show_data(taskInfo))
返回值示例:
{ "m_3rdPartyTradeParam": "", "m_cancelTime": 2147483647, "m_dFixPrice": 9.82, "m_eOperationType": 18, "m_eOrderType": 0, "m_ePriceType": 5, "m_eStatus": 3, "m_endTime": 2147483647, "m_nBusinessNum": 0, "m_nGroupId": 11, "m_nNum": 100, "m_nTaskId": "11", "m_script": "", "m_startTime": 1708420476, "m_stockCode": "000001.SZ", "m_strAccountID": "2000567", "m_strAccountKey": "2____11194____114911____49____2000567____", "m_strAccountRemark": "", "m_strBrokerName": "", "m_strMoneyType": "", "m_strOpenDate": "", "m_strStatus": "准备登录", "m_strTradingDate": "20240220"}
order_callback - 账号委托状态变化主推
用法: order_callback(ContextInfo, orderInfo)
释义: 当账号委托状态有变化时,这个函数被客户端调用。
参数:
-
ContextInfo:特定对象
-
orderInfo:
-
委托对象
返回: 无
示例:
#coding:gbkdef show_data(data): tdata = {} for ar in dir(data): if ar[:2] != 'm_': continue try: tdata[ar] = data.__getattribute__(ar) except: tdata[ar] = '<CanNotConvert>' return tdatadef init(ContextInfo): # 设置对应的资金账号 # 示例需要在策略交易界面运行 ContextInfo.set_account(account)def after_init(ContextInfo): # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值 # 编译器界面里执行的下单函数不会产生实际委托 passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注", ContextInfo) passdef order_callback(ContextInfo, orderInfo): print(show_data(orderInfo))
返回值示例:
{ "m_bEnable": true, "m_dCancelAmount": 0.0, "m_dFrozenCommission": 0.21600000000000003, "m_dFrozenMargin": 1080.0, "m_dLimitPrice": 10.8, "m_dOrderPriceRMB": 0.0, "m_dReferenceRate": 0.0, "m_dShortOccupedMargin": 1.7976931348623157e+308, "m_dTradeAmount": 982.0, "m_dTradeAmountRMB": 0.0, "m_dTradedPrice": 0.0, "m_eCashgroupProp": 48, "m_eCoveredFlag": 0, "m_eEntrustType": 48, "m_nDirection": 48, "m_nErrorID": 2147483647, "m_nFrontID": -1, "m_nGroupId": 2147483647, "m_nHedgeFlag": 49, "m_nOffsetFlag": 48, "m_nOpType": 23, "m_nOrderPriceType": 50, "m_nOrderStatus": 50, "m_nOrderStrategyType": 0, "m_nRealOffsetFlag": -1, "m_nRef": 1209008141, "m_nStrategyID": 0, "m_nTaskId": 14, "m_nVolumeTotal": 100, "m_nVolumeTotalOriginal": 100, "m_nVolumeTraded": 0, "m_strAccountID": "2000567", "m_strAccountKey": "2____11194____114911____49____2000567____", "m_strAccountRemark": "", "m_strCompactNo": "", "m_strExchangeID": "SZ", "m_strExchangeName": "深交所", "m_strInstrumentID": "000001", "m_strInstrumentName": "平安银行", "m_strLocalInfo": "", "m_strOptName": "限价买入", "m_strOrderParam": "", "m_strOrderRef": "8875341038780443523", "m_strOrderStrategyType": "函数下单", "m_strOrderSysID": "24500", "m_strProductID": "", "m_strProductName": "", "m_strRemark": "投资备注", "m_strSource": "新建策略文件15", "m_strUnderCode": "", "m_strXTTrade": "本终端", "m_xtTag": "<CanNotConvert>"}
deal_callback - 账号成交状态变化主推
用法: deal_callback(ContextInfo, dealInfo)
释义: 当账号成交状态有变化时,这个函数被客户端调用。
参数:
-
ContextInfo:特定对象
-
dealInfo:
-
成交对象
返回: 无
示例:
#coding:gbkdef show_data(data): tdata = {} for ar in dir(data): if ar[:2] != 'm_': continue try: tdata[ar] = data.__getattribute__(ar) except: tdata[ar] = '<CanNotConvert>' return tdatadef init(ContextInfo): # 设置对应的资金账号 # 示例需要在策略交易界面运行 ContextInfo.set_account(account)def after_init(ContextInfo): # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值 # 编译器界面里执行的下单函数不会产生实际委托 passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注", ContextInfo) passdef deal_callback(ContextInfo, dealInfo): print(show_data(dealInfo))
返回值示例:
{ "m_dCloseProfit": 0.0, "m_dComssion": 0.19640000000000002, "m_dOrderPriceRMB": 0.0, "m_dPrice": 9.82, "m_dPriceRMB": 0.0, "m_dReferenceRate": 0.0, "m_dTradeAmount": 982.0, "m_dTradeAmountRMB": 0.0, "m_eCoveredFlag": 48, "m_eEntrustType": 48, "m_eFutureTradeType": 48, "m_nCloseTodayVolume": 0, "m_nDirection": 48, "m_nGroupId": 2147483647, "m_nHedgeFlag": 49, "m_nOffsetFlag": 48, "m_nOrderPriceType": 50, "m_nOrderStrategyType": 0, "m_nRealOffsetFlag": -1, "m_nRef": 1209008141, "m_nStrategyID": 0, "m_nTaskId": 14, "m_nVolume": 100, "m_strAccountID": "2000567", "m_strAccountKey": "2____11194____114911____49____2000567____", "m_strAccountRemark": "", "m_strCompactNo": "", "m_strExchangeID": "SZ", "m_strExchangeName": "深交所", "m_strInstrumentID": "000001", "m_strInstrumentName": "平安银行", "m_strLocalInfo": "", "m_strOperation": "", "m_strOptName": "限价买入", "m_strOrderRef": "8875341038780443523", "m_strOrderStrategyType": "函数下单", "m_strOrderSysID": "24500", "m_strProductID": "", "m_strProductName": "", "m_strRemark": "投资备注", "m_strSource": "新建策略文件15", "m_strTradeDate": "20240220", "m_strTradeID": "13", "m_strTradeTime": "172341", "m_strXTTrade": "本终端", "m_xtTag": "<CanNotConvert>"}
position_callback - 账号持仓状态变化主推
用法: position_callback(ContextInfo, positionInfo)
释义: 当账号持仓状态有变化时,这个函数被客户端调用。
参数:
-
ContextInfo:特定对象
-
positionInfo:
-
持仓对象
返回: 无
示例:
#coding:gbkdef show_data(data): tdata = {} for ar in dir(data): if ar[:2] != 'm_': continue try: tdata[ar] = data.__getattribute__(ar) except: tdata[ar] = '<CanNotConvert>' return tdatadef init(ContextInfo): # 设置对应的资金账号 # 示例需要在策略交易界面运行 ContextInfo.set_account(account)def after_init(ContextInfo): # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值 # 编译器界面里执行的下单函数不会产生实际委托 passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注", ContextInfo) passdef position_callback(ContextInfo, positionInfo): print(show_data(positionInfo))
返回值示例:
{ "m_bIsToday": true, "m_dAvgOpenPrice": 9.417861115, "m_dCloseAmount": 0.0, "m_dCloseProfit": 0.0, "m_dFloatProfit": 11.999999999999744, "m_dInstrumentValue": 19640.0, "m_dLastPrice": 9.82, "m_dLastSettlementPrice": 0.0, "m_dMargin": 0.0, "m_dMarketValue": 19640.0, "m_dOpenCost": 18835.72223, "m_dOpenPrice": 9.417861115, "m_dPositionCost": 18835.72223, "m_dPositionProfit": 804.2777700000006, "m_dProfitRate": 0.04269959814543308, "m_dRealUsedMargin": 0.0, "m_dRedemptionVolume": 0, "m_dReferenceRate": 0.0, "m_dRoyalty": 0.0, "m_dSettlementPrice": 9.82, "m_dSingleCost": 2.946, "m_dStaticHoldMargin": 1.7976931348623157e+308, "m_dStockLastPrice": 1.7976931348623157e+308, "m_dStructFundVol": 0, "m_dTotalCost": 5892.0, "m_eFutureTradeType": 48, "m_eSideFlag": 48, "m_nCanUseVolume": 1200, "m_nCidIncrease": 1953394499, "m_nCidIsDelist": 678126433, "m_nCidRateOfCurrentLine": 1667199589, "m_nCidRateOfTotalValue": 1651272801, "m_nCloseVolume": 0, "m_nCoveredVolume": 0, "m_nDirection": 48, "m_nEnableExerciseVolume": -1, "m_nFrozenVolume": 0, "m_nHedgeFlag": 49, "m_nLegId": 0, "m_nOnRoadVolume": 800, "m_nOptCombUsedVolume": 0, "m_nPREnableVolume": 2000, "m_nSettledAmt": 0, "m_nStrategyID": 0, "m_nVolume": 2000, "m_nYesterdayVolume": 1200, "m_strAccountID": "2000567", "m_strAccountKey": "2____11194____114911____49____2000567____", "m_strComTradeID": "", "m_strExchangeID": "SZ", "m_strExchangeName": "深交所", "m_strExpireDate": "", "m_strInstrumentID": "000001", "m_strInstrumentName": "平安银行", "m_strOpenDate": "", "m_strProductID": "", "m_strProductName": "", "m_strStockHolder": "", "m_strTradeID": "", "m_strTradingDay": "20240220", "m_xtTag": null}
orderError_callback - 账号异常下单主推
用法: orderError_callback(ContextInfo, orderArgs, errMsg)
释义: 当账号下单异常时,这个函数被客户端调用。
参数:
-
ContextInfo:特定对象
-
orderArgs:
-
下单参数
-
errMsg:错误信息
返回: 无
示例:
#coding:gbkdef show_data(data): tdata = {} for ar in dir(data): if ar[:2] != 'm_': continue try: tdata[ar] = data.__getattribute__(ar) except: tdata[ar] = '<CanNotConvert>' return tdatadef init(ContextInfo): # 设置对应的资金账号 # 示例需要在策略交易界面运行 ContextInfo.set_account(account)def after_init(ContextInfo): # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值 # 编译器界面里执行的下单函数不会产生实际委托 passorder(23, 1101, account, "000001.SZ", 11, 0, 100, "示例", 2, "投资备注", ContextInfo) passdef orderError_callback(ContextInfo, orderArgs, errMsg): print(show_data(orderArgs)) print(errMsg)
返回值示例:
{ "accountID": "2000567", "currentTime": 0, "formulaName": "", "modelPrice": 0.0, "modelVolume": 100.0, "opType": 23, "orderCode": "SZ000001", "orderType": 1101, "prType": 11, "strategyName": "示例_&&&投资备注"}
错误信息示例:
[函数交易] 函数: passorder, 证券 [SZ000001] 指定价无效, 无法下单!
其他主推函数
credit_account_callback - 查询信用账户明细回调
用法: credit_account_callback(ContextInfo, seq, result)
释义: 查询信用账户明细回调。
参数:
-
ContextInfo:策略模型全局对象
-
seq:
query_credit_account
时输入的查询 seq -
result:
-
信用账户明细
credit_opvolume_callback - 查询两融最大可下单量的回调
用法: credit_opvolume_callback(ContextInfo, accid, seq, ret, result)
释义: 查询两融最大可下单量的回调。
参数:
-
ContextInfo:策略模型全局对象
-
accid:查询的账号
-
seq:
query_credit_opvolume
时输入的查询 seq -
ret:查询结果状态。正常返回:
1
,正在查询中:-1
,输入账号非法:-2
,输入查询参数非法:-3
,超时等服务器返回报错:-4
-
result:查询到的结果
示例 见 query_credit_opvolume。
