如何绘制 highest 定义的带有 barssince 的柱数的结果
How to plot the result from highest defining the number of bars with barssince
尝试使用 barssince(cross(ema50,ema200))
绘制当前柱与 ema(50)
和 ema(200)
的最后一个交叉点之间的最高柱的值。函数 highest()
想要一个 integer
而 Barssince 给出一个 series integer
。所有变体都得到错误提示,即 pine connot compile with error:
line 4: Cannot call `highest` with arguments (series[integer]);
available overloads: highest(series, integer) => series;
highest(integer) => series Script.
//@version=3
study("My Script")
o = 0
o := highest(barssince(cross(sma(close,50),sma(close,200))))
plot(o, color = yellow)
ema 交叉只是一个例子。 highest()
函数计算的柱数 barssince
是我的目标。
如何将 barssince 的结果转换为 highest()
接受的整数?
或者有不同的解决方案吗?
该参考资料相当混乱,但在稍微尝试了一下您的函数后,我设法让它工作了:
highest()
函数有两个重载:
- highest(length)
,这个需要一个 integer
和 return 一个系列
- highest(source, length)
,这个需要一个 series
和一个 integer
函数引用中有一个提示,说 One arg version: x is a length. Algorithm uses high as a source series.
检查 barssince()
的参考,我发现它需要一个 bool
(逻辑条件)和 return 一系列 integer
。
现在很明显 highest(barssince(true))
不是正确的语法,因为 barssince()
将 return 变成 series
而不是 integer
,而 highest()
期望和整数或一系列 and and integer.
通过四处寻找和在线搜索,我得出一个结论,即在 pine 脚本中不可能同时有一个不是 series
的变量 integer
。
这让我相信 highest()
函数不能动态使用。
的帮助下,我能够使用 if
语句模仿行为
这是适合我的脚本版本,它在高点 max()
处绘制一条线,如果有新的 MA 交叉则重置。
//@version=3
study("High since SMA Cross")
fast_sma = sma(close,10)
slow_sma = sma(close,20)
high_since_cross = 0.0
resistance = if(cross(fast_sma, slow_sma))
high
else
max(nz(high_since_cross[1]), high)
plot(resistance, color=yellow)
自己实现最高的功能:
//@version=3
study("My Script", max_bars_back=5000)
highest_pine(src, len) =>
max = src[0]
for i = 1 to len
if src[i] > max
max := src[i]
max
o = 0.0
o := highest_pine(close, barssince(cross(sma(close,50),sma(close,200))))
plot(o, color = green)
尝试使用 barssince(cross(ema50,ema200))
绘制当前柱与 ema(50)
和 ema(200)
的最后一个交叉点之间的最高柱的值。函数 highest()
想要一个 integer
而 Barssince 给出一个 series integer
。所有变体都得到错误提示,即 pine connot compile with error:
line 4: Cannot call `highest` with arguments (series[integer]); available overloads: highest(series, integer) => series; highest(integer) => series Script.
//@version=3
study("My Script")
o = 0
o := highest(barssince(cross(sma(close,50),sma(close,200))))
plot(o, color = yellow)
ema 交叉只是一个例子。 highest()
函数计算的柱数 barssince
是我的目标。
如何将 barssince 的结果转换为 highest()
接受的整数?
或者有不同的解决方案吗?
该参考资料相当混乱,但在稍微尝试了一下您的函数后,我设法让它工作了:
highest()
函数有两个重载:
- highest(length)
,这个需要一个 integer
和 return 一个系列
- highest(source, length)
,这个需要一个 series
和一个 integer
函数引用中有一个提示,说 One arg version: x is a length. Algorithm uses high as a source series.
检查 barssince()
的参考,我发现它需要一个 bool
(逻辑条件)和 return 一系列 integer
。
现在很明显 highest(barssince(true))
不是正确的语法,因为 barssince()
将 return 变成 series
而不是 integer
,而 highest()
期望和整数或一系列 and and integer.
通过四处寻找和在线搜索,我得出一个结论,即在 pine 脚本中不可能同时有一个不是 series
的变量 integer
。
这让我相信 highest()
函数不能动态使用。
if
语句模仿行为
这是适合我的脚本版本,它在高点 max()
处绘制一条线,如果有新的 MA 交叉则重置。
//@version=3
study("High since SMA Cross")
fast_sma = sma(close,10)
slow_sma = sma(close,20)
high_since_cross = 0.0
resistance = if(cross(fast_sma, slow_sma))
high
else
max(nz(high_since_cross[1]), high)
plot(resistance, color=yellow)
自己实现最高的功能:
//@version=3
study("My Script", max_bars_back=5000)
highest_pine(src, len) =>
max = src[0]
for i = 1 to len
if src[i] > max
max := src[i]
max
o = 0.0
o := highest_pine(close, barssince(cross(sma(close,50),sma(close,200))))
plot(o, color = green)