🚀 AI 一键生成 qmt 策略代码

如何在QMT中实现星空图异动监控与联动快速下单?

qmt | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

怎样用星空图实时监控异动板块、个股;

抓住异动板块、个股龙头、 星空图再次快人一步; 星空图实时监控异动板块、个股; 交易机会异动相关分析, 挖掘更多交易机会; 联动下单与下单板关联快速下单

以上操作如何实现

解决方案

在QMT量化交易平台中,虽然没有直接命名为“星空图”的内置UI组件,但我们可以通过强大的Python API完全实现**“星空图”背后的核心逻辑**:即实时监控板块与个股异动、捕捉龙头、并实现极速的联动下单。以下是具体的实现思路与代码框架:

1. 实时监控异动板块与个股

要实现星空图般的全局视野,我们需要获取全市场或特定板块的实时行情,并计算涨跌幅、量比等异动指标。

  • 获取板块成分股:使用 ContextInfo.get_stock_list_in_sector(sectorname, realtime) 获取目标板块(如“沪深300”或自定义概念板块)的股票列表。
  • 实时行情订阅:使用 ContextInfo.subscribe_quote() 或在 handlebar 中使用 ContextInfo.get_full_tick() 获取最新的分笔数据(包含最新价、买卖五档、成交量等)。

2. 抓住异动板块与个股龙头

龙头的特征通常是涨幅大、封板早、成交量异动或经常上龙虎榜。

  • 异动算法:在代码中实时计算个股的涨速(如1分钟内涨幅超过3%)或量比。
  • 龙虎榜数据:结合 ContextInfo.get_longhubang() 获取历史龙虎榜数据,辅助判断资金关注度。

3. 联动下单与快速下单

一旦监控到异动信号,量化程序的优势在于可以毫秒级触发下单,无需人工切盘。

  • 极速下单:使用 passorder() 函数,设置 quickTrade=12,实现信号触发即刻下单。
  • 智能算法:如果资金量大,可以使用 smart_algo_passorder() 采用TWAP或VWAP算法拆单,减少冲击成本。

💡 QMT Python 策略实现示例

以下是一个简化的策略框架,演示如何监控特定板块,当某只个股发生异动(如瞬间涨幅突破阈值)时,自动触发联动下单:

#coding:gbk

def init(ContextInfo):
    # 设置交易账号
    ContextInfo.account = '6000000248'
    ContextInfo.set_account(ContextInfo.account)
    
    # 设定要监控的“星空图”板块,例如某个热门概念或自选股池
    ContextInfo.sector_name = '沪深300'
    
    # 记录上一分钟的价格,用于计算涨速
    ContextInfo.last_prices = {}
    
    # 异动阈值:例如单根Bar涨幅超过 2%
    ContextInfo.abnormal_threshold = 0.02 

def handlebar(ContextInfo):
    # 获取当前时间戳
    realtime = ContextInfo.get_bar_timetag(ContextInfo.barpos)
    
    # 1. 获取监控板块的成分股
    stock_list = ContextInfo.get_stock_list_in_sector(ContextInfo.sector_name, realtime)
    if not stock_list:
        return
        
    # 2. 获取这些股票的实时Tick数据
    ticks = ContextInfo.get_full_tick(stock_list)
    
    # 3. 异动分析与龙头挖掘
    for stock in stock_list:
        if stock in ticks:
            current_price = ticks[stock]['lastPrice']
            pre_close = ticks[stock]['lastClose']
            
            # 计算日内总涨幅
            if pre_close > 0:
                pct_change = (current_price - pre_close) / pre_close
            else:
                pct_change = 0
                
            # 计算短线异动(与上次记录价格对比)
            last_price = ContextInfo.last_prices.get(stock, current_price)
            if last_price > 0:
                speed = (current_price - last_price) / last_price
                
                # 发现异动:涨速极快,可能是龙头启动
                if speed >= ContextInfo.abnormal_threshold:
                    print(f"【星空图异动警报】{stock} 发生异动!当前涨幅: {pct_change*100:.2f}%, 瞬间涨速: {speed*100:.2f}%")
                    
                    # 4. 联动快速下单:市价(最新价)买入1手(100股)
                    # opType=23(股票买入), orderType=1101(单股单账号普通股/手), prType=5(最新价)
                    passorder(23, 1101, ContextInfo.account, stock, 5, -1, 100, '星空图异动追涨', 1, 'StarMapOrder', ContextInfo)
            
            # 更新价格记录
            ContextInfo.last_prices[stock] = current_price

进阶建议

  1. 可视化输出:虽然QMT主界面是K线图,但你可以利用 ContextInfo.paint()ContextInfo.draw_text() 在主图/副图上标记异动点,或者将异动日志输出到外部文件,配合自编的Python GUI(如PyQt)实现真正的“星空图”视觉效果。
  2. 多维度共振:不要仅依赖价格,应结合 ContextInfo.get_market_data_ex 获取Level2大单数据(如 l2transactioncount),监控主力资金的净流入,这样抓到的龙头胜率更高。