QMT平台专用技能。触发词:QMT、实盘、QMT策略、QMT回测、QMT开发。提供API规范、核心函数、止损监控、实盘注意事项。用于量化策略开发。
QMT平台开发技能是一项面向实际任务的技能,主要用于版本:1.0.0;适用平台:迅投QMT量化交易平台;
策略启动时;加载信号、设置参数、设置股票池;handlebar();主要逻辑,买入/卖出/止损;2. ⚠️ 重要:is_last_bar() 机制;is_last_bar() 返回值;每根K线都返回True;✅ 每天检查;
只在特定时刻返回True。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
版本:1.0.0 适用平台:迅投QMT量化交易平台
| 函数 | 用途 | 触发时机 | 说明 |
|---|---|---|---|
init() |
初始化 | 策略启动时 | 加载信号、设置参数、设置股票池 |
handlebar() |
K线处理 | 每根K线 | 主要逻辑,买入/卖出/止损 |
| 场景 | is_last_bar() 返回值 | 止损检查 |
|---|---|---|
| 回测 | 每根K线都返回True | ✅ 每天检查 |
| 实盘 | 只在特定时刻返回True | ❌ 盘中可能不检查 |
关键理解:
is_last_bar()都返回Trueis_last_bar()只在特定时刻返回True(可能是收盘时)结论:
is_last_bar()控制止损/止盈检查def handlebar(ContextInfo):
"""每根K线都会触发"""
# 止损监控(每5分钟检查一次)
now = datetime.now()
if G.last_check_time:
elapsed = (now - G.last_check_time).total_seconds() / 60
if elapsed >= 5: # 每5分钟检查
check_stop_loss(ContextInfo)
G.last_check_time = now
# 买入逻辑(可以保留is_last_bar()限制)
if not ContextInfo.is_last_bar():
return
# 买入逻辑...
def handlebar(ContextInfo):
"""每根K线都会触发"""
# 每5根K线检查一次止损
if ContextInfo.bar_count % 5 == 0:
check_stop_loss(ContextInfo)
# 全局状态对象
class GlobalState:
pass
G = GlobalState()
def init(ContextInfo):
"""初始化"""
# 全局状态
G.waiting_list = []
G.sent_orders = set()
G.buy_prices = {} # 记录买入价格
G.last_check_time = None
# 加载信号
with open('trading_signals/alphagbm_signals_qmt.json') as f:
data = json.load(f)
G.signals = [s['code'] for s in data['signals']]
# 设置股票池
ContextInfo.set_universe(G.signals)
def handlebar(ContextInfo):
"""每根K线触发"""
# 1. 止损监控(每5分钟)
now = datetime.now()
if G.last_check_time:
elapsed = (now - G.last_check_time).total_seconds() / 60
if elapsed >= 5:
check_stop_loss(ContextInfo)
G.last_check_time = now
# 2. 检查waiting_list
if check_waiting_orders(ContextInfo):
return
# 3. 买入逻辑(只在最后一根K线)
if not ContextInfo.is_last_bar():
return
# 买入...
# ❌ 错误 passorder(23, 1101, accID, code, -1, ...) # prType=-1(价格不可控) # ✅ 正确 passorder(23, 1101, accID, code, 14, ...) # prType=14(对手价)
# 初始化
G.waiting_list = []
G.sent_orders = set()
# 买入时记录
if code not in G.sent_orders:
passorder(...)
G.sent_orders.add(code)
G.waiting_list.append(msg)
# 检查waiting_list
def check_waiting_orders(ContextInfo):
for msg in G.waiting_list[:]:
order_result = get_trade_detail_data(...)
if order_result:
G.waiting_list.remove(msg)
QMT层面:
代码层面:
is_last_bar()控制止损检查技能版本:1.0.0
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章