如何正确使用request.security在低周期显示1D级别的pivotlow信号?
问题分析
你用request.security直接跨周期请求ta.pivotlow(1,1)的核心问题有两个:
- 跨周期值的重复渲染:1D周期的pivotlow结果是针对单根1D K线的,但低周期图表会把这个布尔值重复显示在所有属于该1D周期的低周期K线上,导致一堆三角形重复出现,完全偏离实际低点位置。
- 偏移逻辑不匹配:原代码里的
offset=-1是基于当前低周期K线的偏移,但1D周期的pivotlow对应的是1D K线的位置,直接套用低周期的偏移会导致显示位置完全错误。
解决方法
要在低周期显示1D周期的pivotlow,需要在1D周期中记录低点的价格和时间戳,然后在低周期中匹配对应时间点,只在对应位置显示形状。
修正后的代码:
//@version=5 indicator("1D PivotLow on Lower Timeframe", overlay=true) // 输入目标周期 CustomTimeFrame = input.timeframe("1D", title="Target Timeframe") // 在目标周期中计算pivotlow,同时记录低点价格和时间 [isPivotLow, pivotLowPrice] = request.security(syminfo.tickerid, CustomTimeFrame, [ta.pivotlow(1, 1), low]) pivotLowTime = request.security(syminfo.tickerid, CustomTimeFrame, time) // 只在低周期K线时间与1D周期低点时间匹配时显示形状 plotshape(pivotLowTime == time, title="1D Pivot Low", style=shape.triangleup, location=location.belowbar, color=color.new(color.red, 50), offset=0, size=size.small, text="1D Low")
代码说明
- 用
request.security同时获取1D周期的pivotlow布尔值、低点价格和时间戳,确保能精准定位低点的时间位置。 - 通过
pivotLowTime == time判断当前低周期K线是否正好对应1D周期的低点K线,只在这个位置显示形状,避免重复渲染。 - 去掉了原代码中错误的
offset=-1,改为offset=0,确保形状显示在对应时间的K线下方。
内容的提问来源于stack exchange,提问作者sey eeet
相关产品推荐
相关产品推荐

