
图片
{jz:field.toptypename/}
[正文]大家好,我是业余选手。今天我们学习一下Trend Range Detector【趋势区间探测器】指标。图片
目的:该指标通过在价格图表上绘制矩形框和线条,识别价格在一定范围内的波动区域。它基于加权移动平均线(WMA)和平均真实波幅(ATR)来定义这些范围,并可以显示价格突破或跌破范围的情况。
建站客服QQ:88888888
1.参数定义
length = input.int(50, minval=1, step=1, title='Minimum Range Length', tooltip=t1)mult = input.float(2.0, minval=0.1, step=0.1, title='Range Width Multiplier', tooltip=t2)highlightBreak = input.bool(true, 'Highlight Box Breaks', tooltip=t3)2.计算逻辑atr = ta.atr(2000) * multsumWeightedClose = 0.0sumWeights = 0.0for i = 0 to length - 1 delta = math.abs(close[i] - close[i+1]) w = delta / close[i+1] sumWeightedClose := sumWeightedClose + close[i] * w sumWeights := sumWeights + wma = sumWeights != 0 ? sumWeightedClose / sumWeights : na计算加权移动平均线(WMA):delta:计算相邻两根 K 线收盘价的绝对差值。w:根据 delta 和下一根 K 线的收盘价计算权重。sumWeightedClose:累加收盘价与权重的乘积。sumWeights:累加权重。ma:加权平均值(sumWeightedClose / sumWeights),庄闲和若 sumWeights 为 0,则返回 na(无值)。3.判断价格范围distances = array.new_float()for i = 0 to length - 1 distances.push(math.abs(close[i] - ma))maxDist = distances.max()inRange = maxDist <= atr判断价格是否在范围内:创建一个浮点数数组 distances,存储 length 根 K 线收盘价与 WMA 的绝对差值。maxDist:计算数组中的最大差值。inRange:如果 maxDist 小于或等于基于 ATR 的范围(atr),则价格在范围内,返回 true。 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。