Pine Script开发TradingView多周期K线形态扫描器技术咨询
TradingView多周期K线形态扫描表格能力说明
TradingView原生支持你需要的、以指定时间周期为列的形态识别结果展示,通过Pine Script内置的多周期数据接口和表格组件即可实现,不需要第三方工具。
核心能力对应说明
- 多周期数据拉取:使用内置
request.security()函数,可以同时获取周线、日线、小时线、分钟线等任意指定周期的K线开、高、低、收数据,所有计算可以在当前图表窗口完成,不需要手动切换周期。 - 自定义表格渲染:使用
table.new()、table.cell()系列函数可以自由定制表格结构,你可以把需要扫描的各个时间周期设为独立列,每列对应展示该周期下是否命中目标形态、形态类型等信息,表格支持固定在图表任意位置,随行情实时更新。 - 全市场扫描支持:如果需要扫描全市场标的而不仅是当前图表品种,可以把脚本部署到TradingView的选股器(Screener)模块运行,直接批量筛选所有符合形态条件的标的。
规则实现注意事项
你给出的规则里有两处表述偏差,实现时需要注意:
- Rally candle定义:你列的两条规则实际是指有明确方向的趋势K线均为Rally candle,即收盘价高于开盘价的绿色上涨K、收盘价低于开盘价的红色下跌K都属于Rally candle范畴。
- Doji candle定义:按Investopedia标准,Doji的核心特征是实体极短(开盘价与收盘价差值极小,通常实体长度占整根K线振幅的比例低于5%~10%),并非“带有明显实体”,判定时和K线涨跌颜色无关。
对应两类形态的判定逻辑可以按如下规则逐周期独立计算:
- 第一类形态
- 看跌信号:前一根K线为绿色上涨Rally candle,当前K线符合Doji判定标准
- 看涨信号:前一根K线为红色下跌Rally candle,当前K线符合Doji判定标准
- 第二类形态
- 看跌信号:前一根K线为绿色上涨Rally candle,当前K线为红色下跌回调(pull back)candle,且当前K线开盘价未超过前一根绿色Rally candle的50%回撤位(即前一根Rally的开盘价+波幅*0.5位置)
- 看涨信号:前一根K线为红色下跌Rally candle,当前K线为绿色上涨回调(pull back)candle,且当前K线收盘价未超过前一根红色Rally candle的50%回撤位(即前一根Rally的收盘价+波幅*0.5位置)
核心实现代码片段
// 定义需要扫描的目标周期,可自行增删 target_tfs = array.new_string("W", "D", "240", "60", "15", "5") // 初始化结果表格:固定在右上角,列数=周期数+1列说明列,行数=表头+2类形态共3行 res_table = table.new(position.top_right, array.size(target_tfs)+1, 3, border_width=1, bg_color=color.new(color.gray, 90)) if barstate.islast // 填充首列表头 table.cell(res_table, 0, 0, "周期", text_color=color.white) table.cell(res_table, 0, 1, "第一类形态", text_color=color.white) table.cell(res_table, 0, 2, "第二类形态", text_color=color.white) // 遍历每个周期计算形态结果并填充表格 for i = 0 to array.size(target_tfs)-1 tf = array.get(target_tfs, i) // 拉取对应周期的K线数据、形态判定布尔值 [tf_o, tf_h, tf_l, tf_c, p1_hit, p2_hit] = request.security(syminfo.tickerid, tf, [open, high, low, close, pattern1_flag, pattern2_flag]) // 填充周期表头 table.cell(res_table, i+1, 0, tf, text_color=color.white) // 填充形态结果,命中标对应颜色,未命中标灰色 table.cell(res_table, i+1, 1, p1_hit ? "命中" : "无", text_color = p1_hit ? color.yellow : color.gray) table.cell(res_table, i+1, 2, p2_hit ? "命中" : "无", text_color = p2_hit ? color.orange : color.gray)
使用限制说明
免费版TradingView对单脚本内request.security()的调用次数有上限,如果需要同时扫描的周期数量超过6个,建议升级到基础版及以上订阅,避免触发调用次数限制报错。
内容的提问来源于stack exchange,提问作者tradechoice88
相关产品推荐
相关产品推荐

