将 Pine 脚本 v1 或 v2 转换为 v4
Convert Pine Script v1 or v2 to v4
请看下面我在 Trading View 上找到的一个指标。我的目标是将其与其他指标或震荡指标结合起来制定交易策略。
由于其他指标是使用 Pine Script 版本 4 制作的,我需要确保该指标与版本 4 兼容。当我在顶部添加 //@version=4 时,它会报错。看起来 vswitch21 部分有问题。有人可以帮我解决这个问题吗?
非常感谢
//@version=4
study(title="Volatility Switch [LazyBear]", shorttitle="VOLSWITCH_LB")
dr= roc(close,1)/sma(close,2)
dummy=input(false, title="------- Choose lengths below ----"), il21=input(true, title="21"), il14=input(false, title="14")
vola21=stdev(dr, 21)
vswitch21=((vola21[1] <= vola21 ) + (vola21[2] <= vola21 ) + (vola21[3] <= vola21 ) +
(vola21[4] <= vola21 ) + (vola21[5] <= vola21 ) + (vola21[6] <= vola21 ) +
(vola21[7] <= vola21 ) + (vola21[8] <= vola21 ) + (vola21[9] <= vola21 ) +
(vola21[10] <= vola21 ) + (vola21[11] <= vola21 ) + (vola21[12] <= vola21 ) +
(vola21[13] <= vola21 ) + (vola21[14] <= vola21 ) + (vola21[15] <= vola21 ) +
(vola21[16] <= vola21 ) + (vola21[17] <= vola21 ) + (vola21[18] <= vola21 ) +
(vola21[19] <= vola21 ) + (vola21[20] <= vola21 ) + 1) / 21
vola14=stdev(dr, 14)
vswitch14=((vola14[1] <= vola14 ) + (vola14[2] <= vola14 ) + (vola14[3] <= vola14 ) +
(vola14[4] <= vola14 ) + (vola14[5] <= vola14 ) + (vola14[6] <= vola14 ) +
(vola14[7] <= vola14 ) + (vola14[8] <= vola14 ) + (vola14[9] <= vola14 ) +
(vola14[10] <= vola14 ) + (vola14[11] <= vola14 ) + (vola14[12] <= vola14 ) +
(vola14[13] <= vola14 ) + 1) / 14
hline(0.5, title="Median")
plot(il21?vswitch21:na, color=red, linewidth=2, title="VOLSWITCH_21")
plot(il14?vswitch14:na, color=green, linewidth=2, title="VOLSWITCH_14")
有几处需要修改:
- 在 v1 中,函数外的任何缩进都被视为一行的延续。在 v4 中,只有不能被 4 整除的缩进被认为是行继续。
vswitch21
和 vswitch14
都是单行,因此您需要使用不是 4 的倍数的缩进。
- 两个变量都包含
bool
值的附加值。在 v4 中,不再可能对 bool
值进行加法运算,因此您需要将它们转换为 int
.
- 颜色常量
red
和 green
已重命名为 color.red
和 color.green
。
工作代码:
//@version=4
study(title="Volatility Switch [LazyBear]", shorttitle="VOLSWITCH_LB")
dr= roc(close,1)/sma(close,2)
dummy=input(false, title="------- Choose lengths below ----"), il21=input(true, title="21"), il14=input(false, title="14")
// bool to int
b2i(_bool) =>
_bool ? 1 : 0
vola21=stdev(dr, 21)
vswitch21=(b2i(vola21[1] <= vola21 ) + b2i(vola21[2] <= vola21 ) + b2i(vola21[3] <= vola21 ) +
b2i(vola21[4] <= vola21 ) + b2i(vola21[5] <= vola21 ) + b2i(vola21[6] <= vola21 ) +
b2i(vola21[7] <= vola21 ) + b2i(vola21[8] <= vola21 ) + b2i(vola21[9] <= vola21 ) +
b2i(vola21[10] <= vola21 ) + b2i(vola21[11] <= vola21 ) + b2i(vola21[12] <= vola21 ) +
b2i(vola21[13] <= vola21 ) + b2i(vola21[14] <= vola21 ) + b2i(vola21[15] <= vola21 ) +
b2i(vola21[16] <= vola21 ) + b2i(vola21[17] <= vola21 ) + b2i(vola21[18] <= vola21 ) +
b2i(vola21[19] <= vola21 ) + b2i(vola21[20] <= vola21 ) + 1) / 21
vola14=stdev(dr, 14)
vswitch14=(b2i(vola14[1] <= vola14) + b2i(vola14[2] <= vola14 ) + b2i(vola14[3] <= vola14 ) +
b2i(vola14[4] <= vola14 ) + b2i(vola14[5] <= vola14 ) + b2i(vola14[6] <= vola14 ) +
b2i(vola14[7] <= vola14 ) + b2i(vola14[8] <= vola14 ) + b2i(vola14[9] <= vola14 ) +
b2i(vola14[10] <= vola14 ) + b2i(vola14[11] <= vola14 ) + b2i(vola14[12] <= vola14 ) +
b2i(vola14[13] <= vola14 ) + 1) / 14
hline(0.5, title="Median")
plot(il21?vswitch21:na, color=color.red, linewidth=2, title="VOLSWITCH_21")
plot(il14?vswitch14:na, color=color.green, linewidth=2, title="VOLSWITCH_14")
请看下面我在 Trading View 上找到的一个指标。我的目标是将其与其他指标或震荡指标结合起来制定交易策略。
由于其他指标是使用 Pine Script 版本 4 制作的,我需要确保该指标与版本 4 兼容。当我在顶部添加 //@version=4 时,它会报错。看起来 vswitch21 部分有问题。有人可以帮我解决这个问题吗?
非常感谢
//@version=4
study(title="Volatility Switch [LazyBear]", shorttitle="VOLSWITCH_LB")
dr= roc(close,1)/sma(close,2)
dummy=input(false, title="------- Choose lengths below ----"), il21=input(true, title="21"), il14=input(false, title="14")
vola21=stdev(dr, 21)
vswitch21=((vola21[1] <= vola21 ) + (vola21[2] <= vola21 ) + (vola21[3] <= vola21 ) +
(vola21[4] <= vola21 ) + (vola21[5] <= vola21 ) + (vola21[6] <= vola21 ) +
(vola21[7] <= vola21 ) + (vola21[8] <= vola21 ) + (vola21[9] <= vola21 ) +
(vola21[10] <= vola21 ) + (vola21[11] <= vola21 ) + (vola21[12] <= vola21 ) +
(vola21[13] <= vola21 ) + (vola21[14] <= vola21 ) + (vola21[15] <= vola21 ) +
(vola21[16] <= vola21 ) + (vola21[17] <= vola21 ) + (vola21[18] <= vola21 ) +
(vola21[19] <= vola21 ) + (vola21[20] <= vola21 ) + 1) / 21
vola14=stdev(dr, 14)
vswitch14=((vola14[1] <= vola14 ) + (vola14[2] <= vola14 ) + (vola14[3] <= vola14 ) +
(vola14[4] <= vola14 ) + (vola14[5] <= vola14 ) + (vola14[6] <= vola14 ) +
(vola14[7] <= vola14 ) + (vola14[8] <= vola14 ) + (vola14[9] <= vola14 ) +
(vola14[10] <= vola14 ) + (vola14[11] <= vola14 ) + (vola14[12] <= vola14 ) +
(vola14[13] <= vola14 ) + 1) / 14
hline(0.5, title="Median")
plot(il21?vswitch21:na, color=red, linewidth=2, title="VOLSWITCH_21")
plot(il14?vswitch14:na, color=green, linewidth=2, title="VOLSWITCH_14")
有几处需要修改:
- 在 v1 中,函数外的任何缩进都被视为一行的延续。在 v4 中,只有不能被 4 整除的缩进被认为是行继续。
vswitch21
和vswitch14
都是单行,因此您需要使用不是 4 的倍数的缩进。 - 两个变量都包含
bool
值的附加值。在 v4 中,不再可能对bool
值进行加法运算,因此您需要将它们转换为int
. - 颜色常量
red
和green
已重命名为color.red
和color.green
。
工作代码:
//@version=4
study(title="Volatility Switch [LazyBear]", shorttitle="VOLSWITCH_LB")
dr= roc(close,1)/sma(close,2)
dummy=input(false, title="------- Choose lengths below ----"), il21=input(true, title="21"), il14=input(false, title="14")
// bool to int
b2i(_bool) =>
_bool ? 1 : 0
vola21=stdev(dr, 21)
vswitch21=(b2i(vola21[1] <= vola21 ) + b2i(vola21[2] <= vola21 ) + b2i(vola21[3] <= vola21 ) +
b2i(vola21[4] <= vola21 ) + b2i(vola21[5] <= vola21 ) + b2i(vola21[6] <= vola21 ) +
b2i(vola21[7] <= vola21 ) + b2i(vola21[8] <= vola21 ) + b2i(vola21[9] <= vola21 ) +
b2i(vola21[10] <= vola21 ) + b2i(vola21[11] <= vola21 ) + b2i(vola21[12] <= vola21 ) +
b2i(vola21[13] <= vola21 ) + b2i(vola21[14] <= vola21 ) + b2i(vola21[15] <= vola21 ) +
b2i(vola21[16] <= vola21 ) + b2i(vola21[17] <= vola21 ) + b2i(vola21[18] <= vola21 ) +
b2i(vola21[19] <= vola21 ) + b2i(vola21[20] <= vola21 ) + 1) / 21
vola14=stdev(dr, 14)
vswitch14=(b2i(vola14[1] <= vola14) + b2i(vola14[2] <= vola14 ) + b2i(vola14[3] <= vola14 ) +
b2i(vola14[4] <= vola14 ) + b2i(vola14[5] <= vola14 ) + b2i(vola14[6] <= vola14 ) +
b2i(vola14[7] <= vola14 ) + b2i(vola14[8] <= vola14 ) + b2i(vola14[9] <= vola14 ) +
b2i(vola14[10] <= vola14 ) + b2i(vola14[11] <= vola14 ) + b2i(vola14[12] <= vola14 ) +
b2i(vola14[13] <= vola14 ) + 1) / 14
hline(0.5, title="Median")
plot(il21?vswitch21:na, color=color.red, linewidth=2, title="VOLSWITCH_21")
plot(il14?vswitch14:na, color=color.green, linewidth=2, title="VOLSWITCH_14")