如何将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)
三、使用说明
- 筛选器扫描设置:
- 打开TradingView筛选器,选择「自定义指标」,找到你导入的该指标
- 设置筛选条件为「扫描信号 = 1」,即可批量找出所有最新K线触发向上箭头的股票
- 预定义表格功能:
- 代码中
watchlist数组可自行添加/删除股票代码,指标会自动遍历这些股票,在图表右上角显示实时信号状态表格 - 表格中绿色文字代表对应股票已触发信号
- 代码中
内容的提问来源于stack exchange,提问作者Tapovan Vashisht
相关产品推荐
相关产品推荐

