You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pine Script中创建与Total线反向运动的对应线条?

在Pine Script中创建与Total线反向运动的线条

要实现和Total线运动方向完全相反的线条(而非简单取负值),核心是让新线条的变动幅度与Total一致,但方向相反,且从图表第一根K线开始生效,以下是两种常用实现方式:

方式一:固定基准总和的反向线

这种方式让Total线与反向线的总和保持固定值,适合你示例中「Total从0到100,反向线从100到0」的场景:

//@version=5
indicator("反向线示例", overlay=false)

// 模拟用户原有的Total线(替换为你实际的Total计算逻辑)
Total = ta.cum(close - open)

// 记录第一根K线的Total初始值
var float total_initial = na
if bar_index == 0
    total_initial := Total

// 设置反向线的初始值(可根据需求自定义,示例中设为100)
var float reverse_initial = 100

// 计算反向线:保证Total每涨X,反向线就跌X
ReverseTotal = reverse_initial - (Total - total_initial)

// 绘制两条线
plot(Total, color=color.blue, title="Total线")
plot(ReverseTotal, color=color.red, title="反向线")

逻辑说明:

  • 先捕获第一根K线的Total值作为基准
  • 通过反向线初始值 - (当前Total - Total初始值)的计算,确保两条线的变动幅度完全对等、方向完全相反

方式二:基于历史波动范围的动态反向线

如果Total的波动范围不固定,希望反向线始终对应Total在当前历史区间内的反向位置,可以用这种方式:

//@version=5
indicator("动态反向线示例", overlay=false)

// 模拟用户原有的Total线
Total = ta.cum(close - open)

// 记录从第一根K线到当前的Total最小值和最大值
var float min_total = na
var float max_total = na
if bar_index == 0
    min_total := Total
    max_total := Total
else
    min_total := math.min(min_total, Total)
    max_total := math.max(max_total, Total)

// 计算动态反向线:区间两端之和减去当前Total,实现对称反向
ReverseTotal = min_total + max_total - Total

// 绘制线条
plot(Total, color=color.blue, title="Total线")
plot(ReverseTotal, color=color.red, title="动态反向线")

逻辑说明:

  • 实时维护从第一根K线开始的Total最小值和最大值
  • 反向线始终处于Total在当前历史区间内的对称位置,Total上涨时反向线同步下跌,Total下跌时反向线同步上涨

两种方式都能从图表第一根K线开始生效,你可以根据自己的实际需求选择适配的方案。

内容的提问来源于stack exchange,提问作者A.G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:42:15