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

如何将Pine Script指标转为筛选器?实现箭头信号股票批量扫描

方案可行性与实现方案

一、批量扫描方案完全可行

TradingView的**筛选器(Scanner)**支持基于Pine Script指标的条件进行全市场/自定义股票池批量扫描,只需将你的信号逻辑转化为筛选器可识别的布尔输出,就能实现对最新K线触发向上箭头信号股票的预警。

二、适配筛选器+表格输出的修改后代码

下面是修改后的指标,既保留原图表箭头绘制功能,又支持筛选器批量扫描,同时新增预定义股票列表的结果表格输出:

//@version=4
study("AO Histogram Track 扫描版", overlay=true, shorttitle="AO Track Scan")

// 预定义股票列表(可自行修改添加)
var string[] watchlist = array.new_string(0, "AAPL")
array.push(watchlist, "MSFT")
array.push(watchlist, "GOOGL")
array.push(watchlist, "AMZN")
array.push(watchlist, "TSLA")

// --- 原指标核心逻辑 ---
var float prevAO = 0
var bool track = false

var float trackedOpen = na
var float trackedHigh = na
var float trackedLow = na
var float trackedClose = na
var int trackedHighBarIndex = na

ao = sma(hl2, 5) - sma(hl2, 34)

if (ao > 0)
    prevAO := ao
    track := true

if (track)
    trackedOpen := open
    if high > trackedHigh or na(trackedHigh)
        trackedHigh := high
        trackedHighBarIndex := bar_index
        trackedLow := low
    trackedClose := close

if (prevAO > 0 and ao < 0)
    track := false

var float yellowLinePrice = na

if not track and not na(trackedHigh)
    if bar_index - trackedHighBarIndex >= 10 
        linePrice = trackedLow
        if abs(high[1] - low[1]) * 2 < abs(trackedHigh - trackedLow) or abs(high[2] - low[2]) * 2 < abs(trackedHigh - trackedLow)
            linePrice := (trackedHigh + trackedLow) / 2
        line.new(trackedHighBarIndex, linePrice, trackedHighBarIndex + 20, linePrice, xloc=xloc.bar_index, color=color.purple, width=4)
        yellowLinePrice := linePrice
    trackedHigh := na

// 定义信号:最新K线是否触发向上箭头
signal = crossover(close, yellowLinePrice)
// 筛选器输出:将信号暴露给TradingView筛选器
plot(signal ? 1 : 0, title="扫描信号", display=display.data_window)

// --- 预定义股票列表结果表格 ---
var table resultTable = table.new(position.top_right, 2, 1, title="信号触发股票")
// 初始化表头
if bar_index == 0
    table.cell(resultTable, 0, 0, "股票代码", text_color=color.white, bg_color=color.blue)
    table.cell(resultTable, 1, 0, "信号状态", text_color=color.white, bg_color=color.blue)

// 遍历预定义列表,更新表格
var int row = 1
for i = 0 to array.size(watchlist)-1
    ticker = array.get(watchlist, i)
    // 获取对应股票的信号状态(需在多时间框架/多品种环境下生效)
    tickerSignal = request.security(ticker, timeframe.period, signal)
    // 更新表格行
    table.cell(resultTable, 0, row, ticker)
    table.cell(resultTable, 1, row, tickerSignal ? "触发信号" : "未触发", text_color=tickerSignal ? color.green : color.gray)
    row := row + 1

// 原图表箭头绘制
plotchar(signal, char='↑', location=location.belowbar, color=color.green, size=size.tiny)

三、使用说明

  1. 筛选器扫描设置:
    • 打开TradingView筛选器,选择「自定义指标」,找到你导入的该指标
    • 设置筛选条件为「扫描信号 = 1」,即可批量找出所有最新K线触发向上箭头的股票
  2. 预定义表格功能:
    • 代码中watchlist数组可自行添加/删除股票代码,指标会自动遍历这些股票,在图表右上角显示实时信号状态表格
    • 表格中绿色文字代表对应股票已触发信号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:47:48