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

量化软件 2025-01-19 2979
量化软件:迅投QMT使用指南 9.【QMT使用指南】- 成交回报实时主推函数  第1张
9.【QMT使用指南】- 成交回报实时主推函数  第2张

实时主推函数

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

为什么我劝所有股民都备一本《看盘方法与技巧一本通》?
« 上一篇 2025-01-18
Python自动化炒股:使用Dash和Plotly构建交互式股票数据可视化应用的详细指南
下一篇 » 2025-01-19