作者的对话。亚历山大-斯米尔诺夫。 - 页 14

 
Yurixx:
私下 的。

VBAG 先是发布了1个指标,然后用另一个指标代替(我都看到了:-)),又发布了第三个指标,但已经是一个专家了。我仍然看不到移动的画面,这将使我相信数学家是正确的。 顽固的军人是如此的 "愚蠢":-)对盲目的信仰不采取:-)


我不知道,谢尔盖,你为什么需要移动图片,但我可以给你做一个有两行的指标。一个是LRMA,另一个是3*LWMA-2*MA。它们将完全重叠,也就是说,其中一个将不会因为另一个而被看到。你把另一个人的颜色关掉,你就看到了第一个人。你把颜色打开 - 你只看到另一个。

我也会给你寄一份等价证明,它很短,只有十几行。但它依赖于通过分析得出的公式来实现线性回归。好吧,不要用数字来计算一切,如果可能的话,使用有限的公式--周期越少,计算得越快。 但这是一个相当长的计算过程,我不想在Word中乱来。


谢谢。我自己会试着去做。我需要分散注意力。我终于完成了卡尔曼滤波器。但我已经有一个星期没能在测试器上运行它了。我很害怕,如果它的工作:-(。我正在寻找错误,试图更好地准备其数据,使预测更加准确。它在Matkadec中工作,但我不敢在测试器中运行它。

 
VBAG:
如果你有更精简的算法来计算破折号或回归,那将是非常有趣的事情。

算法的声音太大,不能称之为算法,但我可以给你一个概念。原则很简单:你赢在速度,你输在记忆。由于第一种情况需要更多,所以我们加载内存。

例如,一个简单的SMA。内置的算法必须是通用的,在任何地方都能计算,不受环境影响。而且你可以在你自己的程序中使用以前的计算结果。为了计算新的SMA值,应取前N个价格值的总和,从中减去第一个价格值,再加上新的、当前的价格值。然后将这个总和除以N。因此,我们应该拖住前N个价格的变量总和和这N个价格的数组,并在每个柱子上更新总和和数组。因此,为了计算每个条形的SMA,我们需要执行3个操作:更新总和、更新数组元素 和计算SMA值。没有循环。

 
Prival:

但我已经有一个星期没能在测试器上运行它了。我担心它可能会起作用:-( 。


是的,这也会发生。:-))
 
LeoV 写道。
例如,这里是JMA和SSA,周期为50。但我有基于SSA的CSSA,但没有重划。非常快。我推荐这个算法.....

当然,离题了,但还是很有意思 -LeoV,你能给我看一张同一开发商的CSSA Cycles 指标的图片吗(在股票上看起来非常好)?我想看看它在外汇牌价上的表现如何。
 
Yurixx:
这样的方法也许是有意义的,但前提是时间很短。 而记忆并不是主要原因。重启将失去我们身后拖着的东西。这很好,不过,谢谢你的回答。
 
Prival:

卡尔曼滤波器终于完成了。

我听说你在推崇卡尔曼主题。由于某种原因,我错过了那次讨论。我在哪里可以看到它?

P.S. 我附上了一个关于这个问题的文件--也许有人会感兴趣。
附加的文件:
 
是的,如果你说自己是个懦夫,你就会被关进盒子里。好吧,谢尔盖,这里有一个证明(反正我需要它,为了我自己的信心)。

让我们有时间样本--t=1,2,...。N.在MQL4中,编号是相反的,即N是当前的酒吧,"零"。这些读数对应于条款Сlose(1), Сlose(2), ...Сlose(N)。让我们尝试通过MNC构建一条通过斗篷的直线y=A*t+B。然后我们计算A*N+B,即在当前栏位的LRMA。

我们计算误差平方的总和。

Delta^2 = Sum( ( y(i) - Close(i) )^2; i = 1...N ) = Sum( ( A*i + B - Close(i) ) ^2; i = 1...N )

我们用A和B对这些东西进行微分,得到一个最佳A和B商数的方程组。

总和( ( ( A*i + B - Close(i) )*i ); i = 1...N ) = 0
Sum( A*i + B - Close(i) ); i = 1...N ) = 0

展开总和,我们得到(我省略了索引范围,以简化符号的表达)。

A*Sum( i^2 ) + B*Sum( i ) = Sum( i*Close( i ) )
A*Sum( i ) + B*Sum( 1 ) = Sum( Close(i) )

私人的,现在看看右边的。第一个方程式中右边的和几乎是LWMA,只是没有归一化因素。在第二种情况下,是SMA,也没有它。以下是这些尺度的确切公式。

lwma = 2/(n*(n+1))* Sum( i*Close(i) )
SMA = 1/N * Sum( Close(i))

现在回忆一下自然数1到N的平方之和等于什么(是N*(N+1)*(2*N+1)/6),把它代入我们的系统,我们就得到了。

a * n*(n+1)*(2*n+1)/6 + c * n*(n+1)/2 = lwma * n*(n+1)/2
a * n*(n+1)/2 + c * n = sma * n

简化。

a * (2*n+1)/3 + c = lwma
a * (n+1)/2 + c = sma

我不打算解决这个系统,我太懒了(这里已经很清楚了)。我只需将第一个方程式乘以3,第二个方程式乘以2,然后用第一个方程式减去第二个方程式。

a * (2*n+1) + 3 * c - a * (n+1) - 2 * c = 3 * lwma - 2 * sma

在左边,经过简化后,A*N+B仍然存在,也就是说,正是我们在N点的回归。
 
阿列克谢!再次表示敬意。我一直在想,我的LRMA公式(或者我应该说是Omega公式)中的"/6 "是怎么来的?
 
VBAG:
这种方法可能是有意义的,但只有在周期较小的情况下。 而且内存不是主要原因。重新启动时,我们拖在身后的东西就会丢失。但很好,谢谢你的回答。


这种方法适合于任何时期。当你重启时,一切当然会丢失。然而,在启动时,我们总是可以先在整个图表中运行这个不成熟的算法,创建必要的信息。或者可以不在整个图上运行,而只在其中足够大的一块上运行。

这种方法只有一个缺点--你必须用自己的手写一些行代码,而不是一个iMA。:-)

 

阿列克谢,谢谢你。我拿着铅笔坐着。A和B的导数是这样的


我仔细检查了答案,确实是A*N+B=3*LWMA-2*SMA

尽管这位数学家在求导数时错过了一个两点。

我有一些疑问,他们不应该在N点匹配,而应该在(N-1)/2点匹配。Bulashev p.156。似乎是这样。下面是一张在N点重合的图片。所以我是相当错误的。