J中的指数移动平均线

问题描述 投票:2回答:1

我目前正在研究J的一些示例,并正在尝试进行指数移动平均。

对于简单的移动平均线,我做了如下操作:

sma =: +/%[

给出以下内容:

5 sma 1 2 3 4 5
1.2 1.4 1.6 1.8 2

经过更多的挖掘,我找到了q中指数移动平均线的一个例子。

.q.ema:{first[y]("f"$1-x)\x*y}

我尝试使用以下代码将此移植到J:

ema =: ({. y (1 - x)/x*y)

但是这会导致以下错误:

domain error
|   ema=:({.y(1-x)    /x*y)

这是x = 20y是由20个随机数组成的数组。

moving-average j exp
1个回答
2
投票

我注意到的一些事情可能会对您有所帮助。

1]当您明确声明动词时,您需要使用:显式连词,在这种情况下,由于您有二元动词,因此正确的形式为4 : 'x contents of verb y'您对sma =: +/%[的第一个定义是默认的,因为没有显示xy变量。

ema =: 4 : '({. y (1 - x)/x*y)'

2)我不知道q,但是在J中,好像您要在整数/列表中插入1 - x一个名词x * y。我猜您真的要除以%。您可以使用gerunds作为Insert的参数,但是它们是表示动词的特殊名词,1 - x不表示动词。

ema =: 4 : '({. y (1 - x)%x*y)'

3)下一个问题是,您将创建一个带有(1 - x) % x * y的数字列表,但是此时y是一个与数字列表相邻的数字,而没有动词之间将是一个错误。也许您打算使用y * (1 - x)%x*y

目前,我不确定您想要指数移动平均线做什么,希望我提供的线索能为您提供所需的推动力。

© www.soinside.com 2019 - 2024. All rights reserved.