3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在实盘量化交易中,资金账号的断连、掉线或登录状态异常可能导致策略无法下单或无法风控。QMT 提供了 交易回报实时主推机制,通过 account_callback 回调函数,可以在账号状态发生变化时(如从正常连接变为断开连接)第一时间触发逻辑,实现风险预警与应急处理。
init(ContextInfo) 中通过 ContextInfo.set_account(account_id) 显式绑定账号,系统才会向策略推送该账号的状态变动。def account_callback(ContextInfo, accountInfo):
pass
account),内含多种账户状态与资金属性。| 属性名 | 说明 |
|---|---|
m_strAccountID |
资金账号 ID |
m_strStatus |
资金账号当前状态(如连接状态等字符串) |
m_nBrokerType |
账号类型(1-期货, 2-股票, 3-信用等) |
m_dAvailable |
可用金额 |
m_dBalance |
动态权益/总资产 |
以下是一个完整的 QMT 策略示例,展示了如何注册账号并在状态发生变化时进行监控与打印逻辑:
#encoding:gbk
def init(ContextInfo):
# 1. 设置需要监听的资金账号(必填,否则无法接收主推消息)
ContextInfo.account_id = '6000000058'
ContextInfo.set_account(ContextInfo.account_id)
print(f"[Init] 策略启动,已绑定账号: {ContextInfo.account_id}")
def handlebar(ContextInfo):
# 主逻辑执行,例如打单或风控指标计算
pass
def account_callback(ContextInfo, accountInfo):
"""
资金账号状态变动实时主推回调
"""
acc_id = accountInfo.m_strAccountID
status = accountInfo.m_strStatus
avail = accountInfo.m_dAvailable
balance = accountInfo.m_dBalance
print(f"[账号监控] 账号: {acc_id} | 状态变更: {status} | 可用资金: {avail:.2f} | 动态权益: {balance:.2f}")
# 异常状态判断与风控处理逻辑
if status != "正常" and status != "已登录": # 具体状态字符串需结合柜台返回值
print(f"[警告] 资金账号 {acc_id} 状态异常 ({status})!触发风控预警逻辑!")
# 可以在此添加微信/钉钉机器人通知,或暂停策略任务
order_callback(委托主推)、deal_callback(成交主推)和 orderError_callback(下单异常主推)构建完整的实盘实时监控体系。