我一直在编写一个TradingView研究报告,在这个问题上,我要将一个length变量传递到ema函数中,并给出了错误:
Cannot call 'ema' with arguments (series[float], series[integer]); available overloads: ema(series[float], integer) => series[float]
我已经将问题的原因缩小到循环中分配的length变量。
下面是一些复制问题的简化代码:
data_source = close
int length = 20
for i = 0 to 1
length := 20
result := ema(data_source, length)
plot(series=result ? result : na, color=color.blue, linewidth=2, transp=0, title='Baseline')上面的代码与上面的错误一起失败,但是在循环中没有分配length变量的下面的代码工作得很好:
data_source = close
int length = 20
result := ema(data_source, length)
plot(series=result ? result : na, color=color.blue, linewidth=2, transp=0, title='Baseline')我不明白为什么一个简单的integer变量在循环中被赋值时会变成series[integer]。
有人能告诉我如何在循环中分配变量而不让它们变成series吗?
耽误您时间,实在对不起
更新:为了节省一些时间,下面是我对这个问题的调查结果:
我添加了一个特性请求,以添加对将系列转换为简单类型的松树脚本语言的支持。你可以在这里看到它:https://trello.com/c/QA6bcL7l
发布于 2021-01-08 17:06:07
for循环产生系列。您可以使用接受一系列句点的alexgrover's Ema() function:
//@version=4
study("")
Ema(src,p) =>
ema = 0.
sf = 2/(p+1)
ema := nz(ema[1] + sf*(src - ema[1]),src)
data_source = close
int length = 20
for i = 0 to 1
length := 20
result = Ema(data_source, length)
plot(series=result ? result : na, color=color.blue, linewidth=2, transp=0, title='Baseline')https://stackoverflow.com/questions/65624718
复制相似问题