3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在QMT量化交易平台中,虽然没有直接命名为“星空图”的内置UI组件,但我们可以通过强大的Python API完全实现**“星空图”背后的核心逻辑**:即实时监控板块与个股异动、捕捉龙头、并实现极速的联动下单。以下是具体的实现思路与代码框架:
要实现星空图般的全局视野,我们需要获取全市场或特定板块的实时行情,并计算涨跌幅、量比等异动指标。
ContextInfo.get_stock_list_in_sector(sectorname, realtime) 获取目标板块(如“沪深300”或自定义概念板块)的股票列表。ContextInfo.subscribe_quote() 或在 handlebar 中使用 ContextInfo.get_full_tick() 获取最新的分笔数据(包含最新价、买卖五档、成交量等)。龙头的特征通常是涨幅大、封板早、成交量异动或经常上龙虎榜。
ContextInfo.get_longhubang() 获取历史龙虎榜数据,辅助判断资金关注度。一旦监控到异动信号,量化程序的优势在于可以毫秒级触发下单,无需人工切盘。
passorder() 函数,设置 quickTrade=1 或 2,实现信号触发即刻下单。smart_algo_passorder() 采用TWAP或VWAP算法拆单,减少冲击成本。以下是一个简化的策略框架,演示如何监控特定板块,当某只个股发生异动(如瞬间涨幅突破阈值)时,自动触发联动下单:
#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
ContextInfo.paint() 或 ContextInfo.draw_text() 在主图/副图上标记异动点,或者将异动日志输出到外部文件,配合自编的Python GUI(如PyQt)实现真正的“星空图”视觉效果。ContextInfo.get_market_data_ex 获取Level2大单数据(如 l2transactioncount),监控主力资金的净流入,这样抓到的龙头胜率更高。