为什么此代码不能在Pine Script 4中运行? “未声明的标识符”

时间:2019-09-18 19:24:46

标签: algorithmic-trading pine-script

资源仍然是Pine Script 3的重担,所以我想我正在混淆一些东西:

我尝试创建一个平均每日范围指标,该指标基本上是无论当前图表的时间范围如何,都需要输入“ D”的ATR。我的代码在Pine Script 3上运行正常,但是Pine Script 4抛出以下错误:

line 4: Undeclared identifier `resolution`;
line 6: Undeclared identifier `tickerid`;
line 6: Undeclared identifier `dRange`;
line 8: Undeclared identifier `adRange`

文档表明resolution仍然是input()的论点,我不确定为什么其他任何东西都被称为“未声明”。

我的完整代码是:

//@version=4
study(title="Average Daily Range", shorttitle="ADR", overlay=false)

dRange = input(defval="D", title="Daily Range", type=resolution)

adRange = security(tickerid, dRange, rma(tr, 5))

plot(adRange, title = "ADR", color=#000000, transp=0)

这些“未声明的标识符”是什么?为了使我得到相同的结果,我必须在Pine Script 4中做些什么改变?

谢谢。

2 个答案:

答案 0 :(得分:0)

我解决了它,但仍然不知道什么是“未声明的标识符”。我认为这只是Pine的一种说法,即dRange的变量resolution违反了新规则,而adRange正在为未使用的tickerid造成问题,在PineScript 4中被syminfo.tickerid取代了。

//@version=4
study(title="Average Daily Range", shorttitle="ADR", overlay=false)

adRange = security(syminfo.tickerid, "D", rma(tr, 5))

plot(adRange, title="ADR", color=#000000, transp=0)

答案 1 :(得分:0)

v4 RefMan在这里:https://www.tradingview.com/pine-script-reference/v4/

v4 UserMan在这里:https://www.tradingview.com/pine-script-docs/en/v4/index.html

由于编译器在使用input()的第4行返回错误,因此在refman中查找该函数很有意义,在这里您会发现type=参数的合适参数是您想要的现在input.resolution。由于该错误而无法初始化变量dRange,编译器还将对该变量给出错误。已修复的adRange也是如此。