You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复Pine Script自定义筛选器:极端成交量预警指标故障

修复后的极端成交量筛选指示器代码

问题修复说明

原代码存在多个导致运行异常或不符合需求的问题,修复点如下:

  • 将指标改为面板显示(overlay=false),匹配"图表下方指示器"的要求
  • 统一EMA逻辑:输入标注为EMA,代码替换为ta.ema而非原SMA
  • 固定时间框架为30分钟,不受当前图表时间影响
  • 新增除以0防护,避免计算错误
  • 仅当有符合条件的股票时才显示标签,避免空提示
  • 删除未使用的冗余计数代码
  • 调整标签位置适配面板显示

修复后完整代码

//@version=5
indicator('Extreme Volume Alert-1Apr24', overlay=false, shorttitle="ExtVolAlert")

// 输入参数
MAlength = input.int(title="EMA周期", defval=200, tooltip="成交量EMA回溯周期")
Trigger = input.float(title="极端成交量触发倍数", defval=5, step=0.1, tooltip="当前成交量需达到EMA的X倍以上")

// 成交量计算(含除以0防护)
Vol = volume
MA = ta.ema(Vol, MAlength)

// 筛选条件函数
screen() =>
    // 避免MA为0时除以0错误
    MA > 0 ? (Vol / MA) >= Trigger : false

// 固定使用30分钟时间框架检查条件
target_tf = "30"

// 待筛选股票列表
s1 = input.symbol('NSE:NIFTY 50 Index', '标的1', inline='1', group='待筛选标的')
s2 = input.symbol('NSE:NIFTY Bank Index', '标的2', inline='1', group='待筛选标的')
s3 = input.symbol('NSE:Abcapital', '标的3', inline='1', group='待筛选标的')  
s4 = input.symbol('NSE:Adanient', '标的4', inline='1', group='待筛选标的')
s5 = input.symbol('NSE:Adaniports', '标的5', inline='1', group='待筛选标的')
s6 = input.symbol('NSE:BEL', '标的6', inline='1', group='待筛选标的')
s7 = input.symbol('NSE:BHEL', '标的7', inline='1', group='待筛选标的')
s8 = input.symbol('NSE:BPCL', '标的8', inline='1', group='待筛选标的')
s9 = input.symbol('NSE:Coalindia', '标的9', inline='1', group='待筛选标的')
s10 = input.symbol('NSE:GAIL', '标的10', inline='1', group='待筛选标的')    

// 批量请求各标的30分钟时间框架的筛选结果
[c1] = request.security(s1, target_tf, screen())
[c2] = request.security(s2, target_tf, screen())
[c3] = request.security(s3, target_tf, screen())
[c4] = request.security(s4, target_tf, screen())
[c5] = request.security(s5, target_tf, screen())
[c6] = request.security(s6, target_tf, screen())
[c7] = request.security(s7, target_tf, screen())
[c8] = request.security(s8, target_tf, screen())
[c9] = request.security(s9, target_tf, screen())
[c10] = request.security(s10, target_tf, screen())

// 构建符合条件的标的列表
entry_list = ""
entry_list := c1 ? entry_list + str.tostring(s1) + "\n" : entry_list
entry_list := c2 ? entry_list + str.tostring(s2) + "\n" : entry_list
entry_list := c3 ? entry_list + str.tostring(s3) + "\n" : entry_list
entry_list := c4 ? entry_list + str.tostring(s4) + "\n" : entry_list
entry_list := c5 ? entry_list + str.tostring(s5) + "\n" : entry_list
entry_list := c6 ? entry_list + str.tostring(s6) + "\n" : entry_list
entry_list := c7 ? entry_list + str.tostring(s7) + "\n" : entry_list
entry_list := c8 ? entry_list + str.tostring(s8) + "\n" : entry_list
entry_list := c9 ? entry_list + str.tostring(s9) + "\n" : entry_list
entry_list := c10 ? entry_list + str.tostring(s10) + "\n" : entry_list

// 仅当有符合条件的标的时显示标签
if entry_list != ""
    lab_entry = label.new(bar_index, high, "符合入场条件的标的:\n" + entry_list, 
                         color=color.new(color.lime, 70), textcolor=color.black, 
                         style=label.style_label_down, yloc=yloc.abovebar, textalign=text.align_left)
    label.delete(lab_entry[1])

内容的提问来源于stack exchange,提问作者Rajkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:20:42