我想在TradingView Pine Script语言中找到最近200条的价格趋势。
我想画一条线,从最新的柱线(关闭)到较旧的200条柱线。
然后,我想以度为单位计算线的角度,以查看趋势的多头或多头。
我可以通过TradingView绘图屏幕中的回归趋势工具轻松完成此操作。我想通过编程来做同样的事情。
我想可以通过以下公式(Java)找到角度:
double rads = Math.Atan((line.Y2 - line.Y1) / (line.X2 - line.X1));
double degrees = rads * (180f / Math.PI);
你能举个例子吗?
谢谢
最佳答案
您可以使用历史记录引用运算符 []
来访问系列类型的历史值。因此,例如; close[1]
将给您昨天的收盘价,这也是一个系列。
您找到角度的公式是正确的。您的y2 - y1
是close - close[200]
,而x2 - x1
是200 - 0
。因此,您需要计算的是atan((close - close[200]) / 200)
。
这是一个根据弧度的角度值为背景着色的指示器。您可以使用输入来尝试不同的范围。
//@version=3
study(title="Angle Bg", overlay=true)
x = input(title="Range", minval=1, defval=5)
y = close - nz(close[x])
angle = atan(y/x) // radians
color = angle < 0 ? green : red
bgcolor(color, transp=70)
下面的代码用于调试目的。它以弧度为单位绘制角度。
//@version=3
study(title="Angle", overlay=false)
x = input(title="Range", minval=1, defval=5)
y = close - nz(close[x])
angle = atan(y/x) // radians
plot(angle, title="Angle", linewidth=4)
hline(0, color=gray, linestyle=dotted, linewidth=3)
下面的代码也用于调试目的。它绘制当前收盘价和close [x]。因此,您无需在手动计算角度时来回移动:)
//@version=3
study("Close")
range = input(title="Range", type=integer, minval=1, defval=5)
plot(close, title="close", linewidth=4, color=orange)
plot(nz(close[range]), title="close[]", linewidth=4, color=green)
注意:我发现使用弧度比度更有用。但是,如果要在指标中使用度,则最好将公式应用于
angle
变量。请注意,pine-script
没有pi
的任何内置变量。因此,您将不得不手动键入该内容。如果将这三个指标添加到图表中,则应获得类似于以下内容的信息:
关于pine-script - 松本中的线角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52650047/