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

 

基础指标

Pava:
如何改变外推器的基础指标?

帕瓦。

把你想使用的基础指标贴在这里,我会为你做修改,如果是你不想贴出的 "秘密指标",只需按照以前的帖子中的建议改变代码行。

例如,如果你想做RSI的Fourier Extr,你应该在输入参数 中加入以下内容...

extern int RSIPeriod = 14;

然后,改变这一行的代码。

in=0.5+iWPR(NULL,0,50,i+lb)/100.0; //改变这里的指标

对于这一行

in=0.5+iRSI(NULL, 0, RSIPeriod,0,i+lb)/100.0; //改变这里的指标

注意事项

S

 

对不起

我想通过我在这个线程中的行为向辛巴公开道歉,如果我冒犯了你,对不起....。

 

问题

确实要做傅里叶变换rsi给我看吗?: 'in' - 全局范围内的表达不允许 C: \ Program Files \ WHC Trader 4 \ experts \ indicators \ RSI.mq4 (16, 1)

有人知道为什么吗?

 

FFT问题

现在,在每个人都相信这是HG之前,我想指出,它不是。

见所附图片......这里有一个很大的问题,如果你盲目地相信WPR的FFT信号,你就会在必要的时候提前得到空头。

那么,这是否意味着FFT指标没有用呢?不是......如果你知道如何交易,它可以非常有用,基本上有两种方法......第一种是寻找趋势线突破的确认,在FFT的颜色变化之后,避免进入交易,直到价格(最好是收盘价)穿越趋势线......第二种方法我将在下一篇文章中解释。

谢谢

S

附加的文件:
fftproblem.gif  70 kb
 

和...

请原谅我的打断,那么,FFT能不能像图片中那样轮番上阵? 重绘?

附加的文件:
gbpjpyh4.jpg  266 kb
 

FFTSolution

还有更多的方法来使用这些指标,但趋势线和我现在要解释的是使用这些工具进行交易的基础,你可以把两者结合起来,或者增加MTF确认......但是,基础是这两种方法。

第二种方法。

1-趋势过滤器。见图FTTSolution1......使用一个FFT,其基本指标周期在200到300条之间,在这种情况下,我使用250周期的RSI...谐波=1...这将是你的趋势过滤器,重绘效果可以忽略不计...所以,一旦它变成红色,你只能进行短线交易。

2-触发器进入。见图片FFTSolution2......在图表上添加第二个FFT指标,其周期为正常周期(本例中RSI=14),谐波在5和25之间(本例中我使用了25)。如果趋势过滤器发出下降趋势的信号,你也要在Trigger发出下降趋势的信号时进入。见我在图表上标记的蓝色区域。你可以通过TP退出,或者,强制性的,通过改变颜色....。在本例中,有5笔进入,其中3笔略有盈利,2笔非常好的交易....。

这也不是HG,但这是一个非常好的策略,可以安全地进行交易并获得利润。

建议。

1-不要贪心,使用趋势线,或这个方法,或两者都使用......不要预测趋势变化。总是使用基于至少H1的>200期的趋势过滤器。

2-我对较低时间段的评论......在H1以上使用它。如果你真的必须在M1、M5、M15使用它,那么只有在M15和H1的TRENDFILTERS(>200期)都在向同一方向发出信号的情况下才可以。

3-如果你非常有耐心,并等待正确的设置,就可以完成最好的进入......见第二个图表中的最后一次进入(蓝色区域)......趋势是向下的,有一个ABCD类型的回撤,回撤了之前下行的50%以上(大约80%),然后是一个触发进入。

4-高次谐波(25次)速度较快,但可以重新绘制,通常是在逆势方向,如果你在趋势方向交易,你可以使用它们作为触发器,但是,最好只使用5次谐波......你会有较少的交易,但你会捕捉到盈利的交易。

5-用Visual Tester 练习你的设置和触发器,在几个时间段和几个货币对中获得感觉。

谢谢

S

附加的文件:
 

好的

learntrader:
我想通过我在这个线程中的行为向simba公开道歉,如果我冒犯了你,对不起....。
learntrader:
确实要做傅里叶变换rsi给我看吗: 'in' - 全局范围的表达式不允许 C: \ Program Files \ WHC Trader 4 \ experts \ indicators \ RSI.mq4 (16, 1) 有人知道为什么?
learntrader:
请原谅我的打扰,那么,fft不能像图片中那样轮流使用吗? 重新绘制?

Dario,

1-我接受你的歉意。

2-请看本帖所附的RSI的FFT,我修改了Leledc指标,因为它有所有的功能和特点。

3-FFT可以转弯,最重要的 问题是你使用的基础指标......FFT可以疯狂地重绘,也可以非常稳定,如果你像我在上一篇文章中解释的那样使用它,你将结合一个稳定的方向性过滤器和一个快速(容易重绘或重绘)的 "转弯器"...关键是通过结合它们,你将重绘的危险降到最低,从快速方向性入场中获益。

Leledc

感谢你对指标的修改。

谢谢

S

 
SIMBA:
达里奥。

1-我接受你的歉意。

2-请看本帖所附的RSI的FFT,我修改了Leledc指标,因为它有所有的功能和口哨。

3-FFT可以转弯,最重要的问题是你使用的基础指标......FFT可以疯狂地重绘,也可以非常稳定,如果你像我在上一篇文章中解释的那样使用它,你将结合一个稳定的方向性过滤器和一个快速(容易重绘或重绘)的 "转弯器"...关键是,通过结合它们,你将重绘的危险降到最低,并从快速方向性入场中获益。

Leledc

感谢你对指标的修改。

鸣谢

S

我很高兴从你那里听到这个消息!!!!

 

高斯过滤器

我有一个tradestation fucntion:我想把它转换为mql(在mt4中移植tradestation indi).下面是mql中的原始和我的函数 版本.它不能很好地工作,所以我想在这里得到一些专家的帮助。

易语言

{Gaussian Filter}

Inputs: Price(NumericSeries), iptPeriod(NumericSimple), iptPoles(NumericSimple);

variables: aa(0), b(0), w(0), x(0), y(0), y1(0), y2(0), y3(0), y4(0),

a_1(0), a_12(0), a_13(0), a_14(0), a2(0), a3(0), a4(0), Pi(3.141592654),

sqrtOf2(1.414213562), Period(2), poles(0);

if (iptPeriod < 2) then

Period = 2

else

Period = iptPeriod;

// Number of filter poles must be between 1 and 4, inclusive

if iptPoles < 1 then

poles = 1

else if iptPoles > 4 then

poles = 4

else

poles = iptPoles;

// initialization - performed only for first bar

if CurrentBar = 1 then

begin

w = 2 * Pi / Period; // omega

w = 180 * w / Pi; // in degrees

b = (1 - cosine(w)) / (power(sqrtOf2, 2.0/poles) - 1.0);

aa = -b + squareroot(b*b + 2*b);

a_1 = 1.0 - aa;

a_12 = a_1 * a_1;

a_13 = a_1 * a_1 * a_1;

a_14 = a_12 * a_12;

a2 = aa * aa;

a3 = aa * aa * aa;

a4 = a2 * a2;

y1 = Price;

y2 = y1;

y3 = y2;

y4 = y3;

end;

{ Calculate your indicator value here }

x = Price;

if (poles = 1) then

y = aa * x + a_1 * y1

else if (poles = 2) then

y = a2 * x + 2 * a_1 * y1 - a_12 * y2

else if (poles = 3) then

y = a3 * x + 3 * a_1 * y1 - 3 * a_12 * y2 + a_13 * y3

else if (poles = 4) then

y = a4 * x + 4 * a_1 * y1 - 6 * a_12 * y2 + 4 * a_13 * y3 - a_14 * y4;

y4 = y3; // delayed by four bars

y3 = y2; // delayed by three bars

y2 = y1; // delayed by two bars

y1 = y; // delayed by one bar

Gauss = y;

[/php]Mql

[php]

double Gauss(double Price, double iptPeriod,double iptPoles){

double aa, b, w, x, y, y1, y2, y3, y4,a_1, a_12, a_13, a_14, a2, a3, a4;

double Pi=3.141592654;

double period=21, poles;

if (iptPeriod < 2)

period = 2;

else

period = iptPeriod;

if (iptPoles < 1){

poles = 1;

}

else if (iptPoles > 4){

poles = 4;

}

else{

poles = iptPoles;

}

// initialization - performed only for first bar

for(int i = Price; i >= 0; i--){

w = 2 * Pi / period; // omega

w = 180 * w / Pi; // in degrees

b = (1 - MathCos(w)) / (MathPow(MathSqrt(2.0),2.0/poles) - 1.0);

aa = -b + MathSqrt(b*b + 2*b);

a_1 = 1.0 - aa;

a_12 = a_1 * a_1;

a_13 = a_1 * a_1 * a_1;

a_14 = a_12 * a_12;

a2 = aa * aa;

a3 = aa * aa * aa;

a4 = a2 * a2;

y1 = Price;

y2 = y1;

y3 = y2;

y4 = y3;

}

for(i = Price; i >= 0; i--){

x = Price;

y = a4 * x + 4 * a_1 * y1 - 6 * a_12 * y2 + 4 * a_13 * y3 - a_14 * y4;//we don't need y1 y2 y3 y4

}

return (y);

}

 

!!!!!!!!!!