PineScript技术问题:计算枢轴点趋势线与区间最远价格的距离
解决PineScript趋势线与区间最远价格点距离计算问题
你的代码存在几个关键问题,导致计算结果不正确:
- 循环中直接使用
low获取的是当前K线的最低价,而非循环索引i对应的K线最低价,应该用low[i] - 未对距离取绝对值,若价格位于趋势线上方,计算出的距离为负数,无法被判定为最大值
- 未在每次计算新区间前重置
L1H_maxDistance,会保留上一个区间的最大值
修正后的代码示例
// 确保在新的枢轴区间开始时重置最大值 if barstate.islast and not na(L1_lastPivotHighIndex1) and not na(L1_lastPivotHighIndex2) L1H_maxDistance := na // 遍历两个枢轴点之间的所有K线 for i = L1_lastPivotHighIndex1 to L1_lastPivotHighIndex2 // 跳过无效的K线索引 if i < 0 or i > bar_index continue // 获取趋势线在当前索引K线的价格 trendlineValue_L1H = line.get_price(L1_highLine, i) // 计算趋势线与当前K线最低价的绝对距离(若要找上方最远点则用high[i]) distance_L1H = math.abs(trendlineValue_L1H - low[i]) // 更新最大距离 if na(L1H_maxDistance) or distance_L1H > L1H_maxDistance L1H_maxDistance := distance_L1H
额外说明
- 若你需要计算的是趋势线与区间内最高价的最远距离,只需将
low[i]替换为high[i] - 加入
i < 0 or i > bar_index的判断,避免因无效索引导致的错误 - 放在
barstate.islast中执行,仅在最后一根K线计算,避免重复计算消耗性能
内容的提问来源于stack exchange,提问作者DoctorGremlin
相关产品推荐
相关产品推荐

