问题描述
抓住异动板块、个股龙头、 星空图再次快人一步; 星空图实时监控异动板块、个股; 交易机会异动相关分析, 挖掘更多交易机会; 联动下单与下单板关联快速下单
以上操作如何实现
解决方案
在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=1或2,实现信号触发即刻下单。 - 智能算法:如果资金量大,可以使用
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
进阶建议
- 可视化输出:虽然QMT主界面是K线图,但你可以利用
ContextInfo.paint()或ContextInfo.draw_text()在主图/副图上标记异动点,或者将异动日志输出到外部文件,配合自编的Python GUI(如PyQt)实现真正的“星空图”视觉效果。 - 多维度共振:不要仅依赖价格,应结合
ContextInfo.get_market_data_ex获取Level2大单数据(如l2transactioncount),监控主力资金的净流入,这样抓到的龙头胜率更高。