我怎样才能把这个 PineScript 输入变成一个可用的函数?
How could I turn this PineScript input into a usable function?
我已经编写了一个输入变量来定义我想在策略中使用的移动平均线类型。我在脚本中有大量其他代码,因此我尝试只选择相关的代码。输入变量:
MA1Type = input(title="MA1 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA", "VWMA"])
我尝试使用输入的函数是此处的 "sma" 函数:
MovAv1 = sma(close, MA1Period)
下面是我的 MA 函数
ma(MAType, MASource, MAPeriod) =>
if MAType == "SMA"
sma(MASource, MAPeriod)
else
if MAType == "EMA"
ema(MASource, MAPeriod)
else
if MAType == "WMA"
wma(MASource, MAPeriod)
else
if MAType == "RMA"
rma(MASource, MAPeriod)
else
if MAType == "HMA"
wma(2*wma(MASource, MAPeriod/2)-wma(MASource, MAPeriod), round(sqrt(MAPeriod)))
else
if MAType == "DEMA"
e = ema(MASource, MAPeriod)
2 * e - ema(e, MAPeriod)
else
if MAType == "TEMA"
e = ema(MASource, MAPeriod)
3 * (e - ema(e, MAPeriod)) + ema(ema(e, MAPeriod), MAPeriod)
else
if MAType == "VWMA"
vwma(MASource, MAPeriod)
当我尝试使用我的 ma 函数而不是其中一个内置函数时收到的错误消息;在这里:
cannot call 'anonym_function_0' with arguments (series[float], input integer);
参见 Moving Averages, input with options sample 脚本。
它包含您正在查找的示例。
Soooooo......我正在调用额外的参数来抵消我分配给函数的参数。我应该写的是函数的参数;我在函数声明中提供的。例如:
MovAv1 = sma(close, MA1Period)
应该写成:
MovAv1 = (ma(MA1Type, MA1Source, MA1Period))
MA1Source 和 MA1Period 是我之前在脚本中创建的输入变量,后来忘记了其含义。
非常简单的答案就在我面前,但我是 PineScript 的新手,所以我很容易感到困惑。
我已经编写了一个输入变量来定义我想在策略中使用的移动平均线类型。我在脚本中有大量其他代码,因此我尝试只选择相关的代码。输入变量:
MA1Type = input(title="MA1 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA", "VWMA"])
我尝试使用输入的函数是此处的 "sma" 函数:
MovAv1 = sma(close, MA1Period)
下面是我的 MA 函数
ma(MAType, MASource, MAPeriod) =>
if MAType == "SMA"
sma(MASource, MAPeriod)
else
if MAType == "EMA"
ema(MASource, MAPeriod)
else
if MAType == "WMA"
wma(MASource, MAPeriod)
else
if MAType == "RMA"
rma(MASource, MAPeriod)
else
if MAType == "HMA"
wma(2*wma(MASource, MAPeriod/2)-wma(MASource, MAPeriod), round(sqrt(MAPeriod)))
else
if MAType == "DEMA"
e = ema(MASource, MAPeriod)
2 * e - ema(e, MAPeriod)
else
if MAType == "TEMA"
e = ema(MASource, MAPeriod)
3 * (e - ema(e, MAPeriod)) + ema(ema(e, MAPeriod), MAPeriod)
else
if MAType == "VWMA"
vwma(MASource, MAPeriod)
当我尝试使用我的 ma 函数而不是其中一个内置函数时收到的错误消息;在这里:
cannot call 'anonym_function_0' with arguments (series[float], input integer);
参见 Moving Averages, input with options sample 脚本。
它包含您正在查找的示例。
Soooooo......我正在调用额外的参数来抵消我分配给函数的参数。我应该写的是函数的参数;我在函数声明中提供的。例如:
MovAv1 = sma(close, MA1Period)
应该写成:
MovAv1 = (ma(MA1Type, MA1Source, MA1Period))
MA1Source 和 MA1Period 是我之前在脚本中创建的输入变量,后来忘记了其含义。
非常简单的答案就在我面前,但我是 PineScript 的新手,所以我很容易感到困惑。