请求解释一段TradingView Pine Script止损计算代码
TradingView Pine Script 代码段解释
先明确Pine Script核心概念:**Series(序列)**是随K线周期变化的数值集合(比如每根K线的收盘价就是series float),普通float是单个固定值。下面逐行解释代码:
atr = mult * ta.atr(length)ta.atr(length)返回的是series float,会计算每根K线对应的ATR(平均真实波幅),乘以参数mult后,atr同样是series float,用来放大ATR的幅度。longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atrlongStop是series float:- 三元表达式中,
ta.highest(close, length)取length周期内收盘价的最大值,ta.highest(length)取length周期内K线最高价的最大值,两者都是series float; - 减去同为
series float的atr后,结果是随每根K线变化的止损基准值序列。
- 三元表达式中,
longStopPrev = nz(longStop[1], longStop)longStop确实是序列类型,longStop[1]代表上一根K线的止损值。nz()函数用来把空值(na)替换为默认值:如果是指标启动的第一根K线(此时longStop[1]为空),就用当前K线的longStop替代,最终longStopPrev也是series float。longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
这是用:=对序列变量重赋值,核心逻辑是锁定多单盈利,只允许止损线上移:- 当一根K线的收盘价大于上一根K线的止损值时,取当前计算的止损值和上一根止损值的较大值作为新止损(抬高止损线);
- 否则保持当前计算的止损值不变,避免止损线回落。
内容的提问来源于stack exchange,提问作者nobjta_9x_tq
相关产品推荐
相关产品推荐

