J 中的指数移动平均线
Exponential moving average in J
我目前正在研究 J 的一些示例,并且正在尝试计算指数移动平均线。
对于简单移动平均线,我做了如下操作:
sma =: +/%[
给出以下内容:
5 sma 1 2 3 4 5
1.2 1.4 1.6 1.8 2
经过更多挖掘,我发现了 q 中指数移动平均线的示例。
.q.ema:{first[y]("f"-x)\x*y}
我尝试使用以下代码将其移植到 J:
ema =: ({. y (1 - x)/x*y)
但是这会导致以下错误:
domain error
| ema=:({.y(1-x) /x*y)
这是 x = 20
和 y
20 个随机数的数组。
我注意到的一些事情可能会对您有所帮助。
1) 当你显式声明一个动词时,你需要使用 :
显式连词,在这种情况下,因为你有一个二元动词,正确的形式是 4 : 'x contents of verb y'
你对 [ 的第一个定义=14=] 是默认的,因为没有显示 x
或 y
变量。
ema =: 4 : '({. y (1 - x)/x*y)'
2) 我不知道 q,但在 J 中,您似乎在尝试将 /
一个名词 1 - x
插入到整数列表 x * y
中。我猜你真的想除 %
。您可以使用动名词作为 Insert 的参数,但它们是表示动词的特殊名词,1 - x
不表示动词。
ema =: 4 : '({. y (1 - x)%x*y)'
3) 下一个问题是,您本来可以用 (1 - x) % x * y
创建一个数字列表,但此时 y
是一个与数字列表相邻的数字,中间没有动词将是一个错误。也许您打算使用 y * (1 - x)%x*y
?
此时我不确定您希望指数移动平均线做什么,希望我提供的线索能为您提供所需的动力。
我目前正在研究 J 的一些示例,并且正在尝试计算指数移动平均线。
对于简单移动平均线,我做了如下操作:
sma =: +/%[
给出以下内容:
5 sma 1 2 3 4 5
1.2 1.4 1.6 1.8 2
经过更多挖掘,我发现了 q 中指数移动平均线的示例。
.q.ema:{first[y]("f"-x)\x*y}
我尝试使用以下代码将其移植到 J:
ema =: ({. y (1 - x)/x*y)
但是这会导致以下错误:
domain error
| ema=:({.y(1-x) /x*y)
这是 x = 20
和 y
20 个随机数的数组。
我注意到的一些事情可能会对您有所帮助。
1) 当你显式声明一个动词时,你需要使用 :
显式连词,在这种情况下,因为你有一个二元动词,正确的形式是 4 : 'x contents of verb y'
你对 [ 的第一个定义=14=] 是默认的,因为没有显示 x
或 y
变量。
ema =: 4 : '({. y (1 - x)/x*y)'
2) 我不知道 q,但在 J 中,您似乎在尝试将 /
一个名词 1 - x
插入到整数列表 x * y
中。我猜你真的想除 %
。您可以使用动名词作为 Insert 的参数,但它们是表示动词的特殊名词,1 - x
不表示动词。
ema =: 4 : '({. y (1 - x)%x*y)'
3) 下一个问题是,您本来可以用 (1 - x) % x * y
创建一个数字列表,但此时 y
是一个与数字列表相邻的数字,中间没有动词将是一个错误。也许您打算使用 y * (1 - x)%x*y
?
此时我不确定您希望指数移动平均线做什么,希望我提供的线索能为您提供所需的动力。