基于数字滤波器的交易策略 - 页 71

 
mrtools:
我想既然这是假的策略,那么我想这个交易现在不会发生,我想我们是在 "暮光之城 "

如果你在这个策略中使用了SSA,而且我认为这是一种情况,不仅是周期图,而且卖出信号 也很可能被重新绘制。不一定是这样,但有很大的可能性。

因此,SSA可能是强大的去噪器和解读器,但在实时交易中使用非现金版本是有限的,改进的结果是重绘影响和去噪/趋势影响的结合。

就我个人而言,我根本不在乎,因为我使用的是CASULAL版本的SSA和HP过滤器。

克里斯托夫

 

缺少样本

嗨,Richcap。

你能从你的MESA系统中显示任何适当的样本外结果吗?

在我看来,我可以从具有以下输入的策略中获得结果

以Ehlers方式测量的周期

以NOXA方式测量的周期

Goertzel测量的周期

以Ehlers方式测量的SN

CB方式测量的SN,有信号仓

这就是关键的组成部分,当然也可以在此基础上添加任何东西

像Jurik MA, VOL或RSX,我有原始版本。

关于Goertzel重绘的问题,它重绘不仅是因为SSA,还因为它的设计方式,即每一个新的条形图都会重绘原始的周期曲线,由于新的条形图信息,每条曲线都是不同的。

我把它重新编程为完全不重绘的版本,但还没有进行实时测试,所以我真的不知道它的表现如何。

离线是可以的

克里斯托夫

附加的文件:
scr1.jpg  81 kb
scr2.jpg  90 kb
 
fajst_k:
嗨,Richcap。

那么,你能从你的MESA系统中展示任何适当的样本外结果吗?

在我看来,我可以从具有以下输入的策略中获得结果

Ehlers方式测量的周期

以NOXA方式测量的周期

Goertzel测量的周期

以Ehlers方式测量的SN

CB方式测量的SN,有信号仓

这就是关键的组成部分,当然也可以在此基础上添加任何东西

像Jurik MA, VOL或RSX,我有原始版本。

关于Goertzel重绘的问题,它重绘不仅是因为SSA,还因为它的设计方式,即每一个新的条形图都会重绘原始的周期曲线,由于新的条形图信息,每条曲线都是不同的。

我把它重新编程为完全不重绘的版本,但还没有进行实时测试,所以我真的不知道它的表现如何。

离线是可以的

冯志强

你的信息是什么意思,Krzysztof?你在卖东西吗?

我一直在等待有价值的东西,但我什么也没看到。

我不要求你分享大量的代码(就像我做的那样),我只希望你能给我们一个 好主意。

你真的认为你在第582号帖子中付出了你的代价吗?

那个'PicBuf=i*MathPow(10,-1*digs);'语句是什么?

为什么要用MathPow(10,-1*digs)PicBuf,PicBuf是什么鬼?

如果你看看我写的在MESA分析中只计算和标记峰的代码,你就能理解为什么我对你不满意了

/*

* This function fills an array with 'amplitude' and 'frequency' (0 < f < Fn=0.5, Nyquist normalized freq) values

* of the peaks (and following valleys) under f_max and above f_min frequency by finding local maxima

* with a bisection equivalent algorithm.

* It returns the number of calculated peaks

*/

int peaksVector (

double& peaks[], // this vector must be dimensioned to 4*degree

double f_max, // the frequency under which to search peaks (f_max < Fn)

double f_min, // the frequency above which to search peaks (f_max > 0 )

double& aa[], // autoregression coefficients

int degree) // order of autoregression

{

double frequency, Qn, delta_f, delta_f2;

double s1, s2;

double f1, f2, fm, d1, d2, dm;

double tolerance=0.01; // zero (maximum) finding tolerance (we don't need a very high precision

double fine_stepping = 1.0 / 10.0; // 2nd level stepping for local minimum/maximum search

int count=0, i;

bool growing=true;

// check for Nyquist

if (f_max > 0.5) f_max=0.5;

// First evaluate Qn to set proper resolution delta_f... (see (II-70) formula in Burg's PhD thesis)

/*

Qn=1.0;

for (i=0; i<degree; i++)

{

Qn=Qn*(1.0+MathAbs(aa))/(1.0-MathAbs(aa));

}*/

Qn=50; // above formula gives too high Qn, to be verified

delta_f=1.0/(degree*Qn);

// ...then starts to find peaks (and valleys)

s1=spectrumValue(f_min+delta_f,aa,degree);

peaks[0]= s1; // include first point ...

peaks[1]= f_min+delta_f; // ... and frequency

i=2;

d1=spectrumValue(f_min+delta_f*(1.0+fine_stepping),aa,degree) - s1 ;

if (d1 < 0)

growing=false; // set initial slope direcion

for (frequency=f_min+2*delta_f; frequency = f_max && !growing); frequency+=delta_f)

{

s2=spectrumValue (frequency,aa,degree);

if (s2>s1 && growing)

{

s1=s2; // updates new maximum

}

else if (s2<=s1 && growing) // found an interval in which there is a local maximum??

{

// search for a local maximum in the interval [ frequency-delta_f,frequency + delta_f ]

f1=frequency-2.0*delta_f;

f2=frequency;

delta_f2=delta_f*fine_stepping; // delta_f2 (adaptive) is used to evaluate funcion's slope

d1=spectrumValue(f1+delta_f2,aa,degree) - spectrumValue(f1,aa,degree);

d2=spectrumValue(f2+delta_f2,aa,degree) - spectrumValue(f2,aa,degree);

while (true)

{

// try to find maximum value by evaluating central point's slope

fm = (f1+f2)/2.0;

dm=spectrumValue(fm+delta_f2,aa,degree) - spectrumValue(fm,aa,degree);

if ( MathAbs(dm) < tolerance)

break;

if (dm < 0.0) f2=fm;

else f1=fm;

delta_f2=(f2-f1)*fine_stepping; // adapt delta_f2

d1=spectrumValue(f1+delta_f2,aa,degree) - spectrumValue(f1,aa,degree);

d2=spectrumValue(f2+delta_f2,aa,degree) - spectrumValue(f2,aa,degree);

}

peaks= spectrumValue (fm,aa,degree);

peaks=fm;

i+=2;

count++; // increments number of peaks

growing=false; // after a peak there must be a valley, so the funcion starts to decrease

}

else if (s2<s1 && !growing)

{

s1=s2; // updates new minimum

}

else if (s2>=s1 && !growing) // found an interval in which there is a local minimum??

{

// search for a local maximum in the interval [ frequency-delta_f,frequency + delta_f ]

f1=frequency-2.0*delta_f;

f2=frequency;

delta_f2=delta_f*fine_stepping; // delta_f2 (adaptive) is used to evaluate funcion's slope

d1=spectrumValue(f1+delta_f2,aa,degree) - spectrumValue(f1,aa,degree);

d2=spectrumValue(f2+delta_f2,aa,degree) - spectrumValue(f2,aa,degree);

while (true)

{

// try to find maximum value by evaluating central point's slope

fm = (f1+f2)/2.0;

dm=spectrumValue(fm+delta_f2,aa,degree) - spectrumValue(fm,aa,degree);

if ( MathAbs(dm) < tolerance)

break;

if (dm > 0.0) f2=fm;

else f1=fm;

delta_f2=(f2-f1)*fine_stepping; // adapt delta_f2

d1=spectrumValue(f1+delta_f2,aa,degree) - spectrumValue(f1,aa,degree);

d2=spectrumValue(f2+delta_f2,aa,degree) - spectrumValue(f2,aa,degree);

}

peaks= spectrumValue (fm,aa,degree);

peaks=fm;

i+=2;

growing=true;

}

}

return(count);

}
 

???

奇怪的回答。说实话,我根本没有看你的代码,因为我只使用NS。

我也不是一个专业的C++/MQL程序员,多年来我一直在从事软件测试工作,所以我想我很容易就能发现错误的地方。我已经告诉过你,你是一个上帝般的程序员,因为你有耐心设计这一切。

无论如何,我只是提供给你关于战略结果层面的信息交流,并明确定义输入,这就是这封邮件的目的。如果你有兴趣,请告诉我。

克日什托夫

 

好主意

我认为这只是这个好主意--用不同的输入创建不同的策略,也许用遗传优化器来选择适当的输入组合并比较结果。

Krzysztof

 

比我看了你的代码。很明显,你寻找重要 峰的方法比目前Goertzel的方法要先进得多。

//通过测量每个峰的高度和锐度来寻找重要的山峰,并得到一个 "重要性 "数字

// 为了测量尖锐度,我们考虑在山峰和谷底之间的线性线并测量角度

// 角度越小,山峰就越尖锐。每个山峰的重要性由高度/角度决定。

在Goertzel中,不需要任何额外的测试就可以找到和排序山峰,而用户定义的山峰数量则用于进行反向转换。

所以你的MESA的分辨率应该比Goertzel好得多。我只是想知道,基于MESA周期的简单周期策略的结果是否会更好。不幸的是,由于重绘的问题,目前不可能对其进行比较。

但如果你想的话,可以与基于银行滤波器响应的Ehlers周期进行比较。

Krzysztof

 

假的交易策略

不需要说服任何人,只是自己!!!!!!!!。

 

大家好。

我看到这个主题已经死了,但也许我可以找到人帮助我......

我有goertzel_cycle_v1_1,但我被这个问题困扰了。

1.我创建了一个正弦波指标,看看goertzel是如何工作的。

------------------------------------

我创建了一个正弦波指标,看看goertzel是如何工作的。

{

int counted_bars=IndicatorCounted()。

int i=Bars-counted_bars-1;

//----

while (i>=0)

{

indybuffer= MathSin(2*PI*i/20)。

i--;

}

//----

return(0);

-------------------------------

2.我把goertzel代码中的 "close "换成了 "sinewave "指标。

3.然后结果是:一个20条的清晰周期--好的。但是当正弦指标在-1和1之间时,振幅是149.98,正如预期的那样。

squareamp是 "false",我尝试了所有的方法,但我不知道哪里出了问题。

如果有任何帮助,我将非常感激。

[删除]  

FTLM_KG和STLM指标

forex_for_life:
丰富的帽子。

首先,我想感谢你分享你所创造的东西。我没有意识到你发布的是什么,直到我开始这个评论的前一刻。正是这样的研发,让这个线程燃起了进步的火焰,烧掉了这个论坛和其他大多数论坛中每天都在进行的世俗的闲聊的所有渣滓。这确实是强大的力量。那些一直在关注这个话题的人,对你给实验室带来的东西做两手准备是明智的。

我不认为Krzysztof在他的答复中试图进行恶意的攻击。在读了几遍之后,似乎有几个词和句子结构给人以这种印象。如果我错了,请纠正我,Krzysztof。

现在,我决不是DSP主题的权威。作为一个学生,我经常光顾这个话题,几乎比其他任何话题都要多。然而,我学到了一些东西,我认为这些东西对你的追求可能有价值。你可能已经知道我和你分享的一切,如果是这样的话,请不要把它当作是一种恩赐。

1.1.MESA被认为是一种不太理想的频谱分析方法,因为它无法识别高于平均水平的噪声数据情况下的频率(金融市场的价格数据被认为是这样)。另一方面,Goertzel的算法可能是一个更好的选择。请参考Meyer's Analytics "paper's page", artictle titled "Mesa vs. GDF"

2.2.在这个主题(包括指标)上有进一步的讨论,从第225帖 开始。

3.谢尔盖-伊尔朱金,DFG软件的创造者,创造了与你发布的指标非常相似的东西(我想,这意味着你在正确的轨道上 ),完整的W/库和所有,由NewDigital在这里 发布。我过去曾使用过它。非常好,IMHO。可能值得一看。

4.Krzysztof对CB线的评估是准确的。我认识几个与CB合作的人,他们证实他只分享图片和理论,没有具体内容。也就是说,在这个主题上的人,像你、clahn04、Simba、dvarrin和fajst_k是公共类型的,愿意公开交流思想和由此产生的产品。请不要让这种进步的流动停止,否则这个主题将经历另一个向前发展的停顿。

我有一个设置,我一直在使用,它只有两个指标:未经优化的FTLM_KG和直方图形式的STLM,两者都通过Jurik价格代理平滑,以消除一些噪音,由于这两个指标没有调整到对和T.F。屏幕截图附后。

最好的问候。

F_F_L

你好,forex_for_life。

感谢你提供的信息。你的这两个Indi从第49页的线程FLM_KG和STLM看起来都非常好。您是否有可能将这两个指标张贴出来?这正是我在寻找的。谢谢你,来自慕尼黑的关心。

吉姆-克拉克

 
SIMBA:
根据我的经验,最好的非自定义指标之一是STLM2。你可以在h4和h1,或D1和H4检查趋势,当两者重合时,在较短的时间段寻找适合你的方法来触发进入。

我在mtf主题中发布了一个mtf stlm2,将在这里重新发布,以便你可以检查它,只需将STLM2改为FTLM或FTLM_KG,你也将拥有这些过滤器的多时间框架功能。此外,我们可以只修改Ea,以便能够测试大多数策略,包括stlm2的mtf。

我建议我们创建一个策略菜单,然后首先用标准数字过滤器对它们进行历史测试,其次,用自定义数字过滤器对它们进行测试,至少是最有希望的那些,向前演示。

我下载了伟大的Simba发布的#MFT_STLM2_v2指标,但在我的平台上并不工作。

这个版本过期了还是什么?

我正在寻找一个STLM MTF来定义趋势。

谢谢你,朋友们。

恳请。