TradingView Pine Script 多固定交易对枢轴点筛选器实现求助
问题根因
- 原有代码的日枢轴点计算在全局上下文执行,依赖
syminfo.tickerid(当前打开的图表对应交易对),所有交易对的判断都复用了当前图表的枢轴点数值,而非对应交易对自身的日线数据 - 原有代码对
request.security返回值额外加了[1]偏移,相当于取了前日的前一日数据,不符合「前一日枢轴点」的计算规则
修正方案
把枢轴点计算逻辑封装到security请求的表达式内,这样计算时会自动取当前请求的交易对的日线数据,无需手动指定tickerid,即可实现每个交易对独立计算自身枢轴点。
修正后完整代码
//@version=5 indicator("多交易对枢轴点筛选器", overlay=false, shorttitle="PivotScreener") // 输入参数设置 higher_tf = input.timeframe("D", title="枢轴点计算周期") target_tf = input.timeframe("15", title="筛选K线周期") // 封装单交易对的条件判断逻辑,直接在函数内计算对应标的的枢轴点 is_above_pivot() => // 取当前请求标的的前一日高低收 prev_high = request.security(syminfo.tickerid, higher_tf, high[1], lookahead=barmerge.lookahead_off) prev_low = request.security(syminfo.tickerid, higher_tf, low[1], lookahead=barmerge.lookahead_off) prev_close = request.security(syminfo.tickerid, higher_tf, close[1], lookahead=barmerge.lookahead_off) pivot = (prev_high + prev_low + prev_close) / 3 // 当前周期收盘价高于枢轴点 request.security(syminfo.tickerid, target_tf, close) > pivot // 逐个请求交易对的判断结果,可按需求扩展到25个 s1 = request.security("BTCUSD", target_tf, is_above_pivot()) s2 = request.security("ETHUSD", target_tf, is_above_pivot()) s3 = request.security("XRPUSD", target_tf, is_above_pivot()) s4 = request.security("LTCUSD", target_tf, is_above_pivot()) s5 = request.security("USDTUSD", target_tf, is_above_pivot()) // 组装筛选结果 scr_label = "枢轴点筛选结果: \n##########\n" scr_label := s1 ? scr_label + "BTCUSD\n" : scr_label scr_label := s2 ? scr_label + "ETHUSD\n" : scr_label scr_label := s3 ? scr_label + "XRPUSD\n" : scr_label scr_label := s4 ? scr_label + "LTCUSD\n" : scr_label scr_label := s5 ? scr_label + "USDTUSD\n" : scr_label // 显示结果标签 var label res_label = label.new(bar_index, high, style=label.style_label_left_up, size=size.small) label.set_text(res_label, scr_label) label.set_xy(res_label, bar_index, ta.highest(high, 20)) // 警报配置 alert_message = "以下交易对15分钟收盘价高于日枢轴点:\n" + scr_label alert(alert_message, freq = alert.freq_once_per_bar_close)
扩展说明
- 如需添加更多交易对,只需仿照
s1到s5的格式新增对应的request.security请求,同时在结果组装部分添加对应标的的输出即可 lookahead参数设置为barmerge.lookahead_off可避免引入未来函数导致信号失真- 把脚本添加到任意交易对的15分钟图表即可运行,无需匹配当前图表的交易对,所有标的的计算都是独立的
内容的提问来源于stack exchange,提问作者avinashraju11
相关产品推荐
相关产品推荐

