Trading Strategies Based On Digital Filters - page 71

 
mrtools:
Guess since this is fake strategy, then guess this trade not happening now, guess we are in the "Twilight Zone"

If you use SSA for this strategy and I think it is a case than not only the cycle graph but also sell signal is most likely repainted. Don't have to be but there is a great possibility for it.

So SSA is maybe strong denoiser and detrender but usage of non casulal version in real time trading is limited and improved results this is a combination of repaint impact and denoise/detrend impact.

Personally i simple don't care as I use casulal versions of SSA and HP filter.

Krzysztof

 

out of sample

Hi Richcap,

So are you able to show any proper out of sample results from your MESA system ??

From my side I can have results from strategies with following inputs

cycles measured Ehlers way

cycles measured NOXA way

cycles measured by Goertzel

SN measured Ehlers way

SN measured CB way with signal bins

that's the key components of course, it's possible to add to this whatever

like Jurik MA, VOL or RSX which I have in original versions.

Regarding Goertzel repaint issue, It repaints not only because of SSA but also from the way how it is designed i.e. every new bar it redraws original cycle curve which is different every bar because of new bar information.

I reprogrammed it for full non repainting version but haven't test in real time yet so I really don't know how it performs.

Offline is OK

Krzysztof

Files:
scr1.jpg  81 kb
scr2.jpg  90 kb
 
fajst_k:
Hi Richcap,

So are you able to show any proper out of sample results from your MESA system ??

From my side I can have results from strategies with following inputs

cycles measured Ehlers way

cycles measured NOXA way

cycles measured by Goertzel

SN measured Ehlers way

SN measured CB way with signal bins

that's the key components of course, it's possible to add to this whatever

like Jurik MA, VOL or RSX which I have in original versions.

Regarding Goertzel repaint issue, It repaints not only because of SSA but also from the way how it is designed i.e. every new bar it redraws original cycle curve which is different every bar because of new bar information.

I reprogrammed it for full non repainting version but haven't test in real time yet so I really don't know how it performs.

Offline is OK

Krzysztof

What's the meaning of your message Krzysztof? Are you selling something?

I have been waiting for something valuable but I see nothing.

I'm not asking you to share tons of code (like I did), I only would like you to give us one good idea.

Do you really think that you paid your dues with your post #582?

What's that 'PicBuf=i*MathPow(10,-1*digs);' statement?

Why do you need to MathPow(10,-1*digs) PicBuf and what the hell is PicBuf ?

If you look at the code I wrote to only count and tag peaks within MESA analysis, you can understand why I'm not happy with you

/*

* 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);

}
 

???

Strange reply. I didn't look at your code at all to be honest as I'm using NS only.

I'm also not a professional C++/MQL coder, for a lot of years i was working with software test so I think I pick up the faults pretty easy. I already told you that you are a God programmer as you had a patience to design all this.

Anyway I just offer you exchange of information on the strategy results level with clearly defined inputs, it was the intention of this mail. If you are interested let me know.

Krzysztof

 

good idea

I think this is just this good idea - create different strategies with different inputs, maybe use Genetic Optimizer to choose proper combination of inputs and compare the results.

Krzysztof

 

than I looked to your code. Obviously your method for finding important peaks is much more advanced than currently in Goertzel.

// find important peaks by measuring each peak's height and sharpness and obtain an "importance" number

// to measure sharpness we consider linear lines between peaks and valleys and measure angles

// the smaller is the angle, the sharpest is the peak. Importance for each peak is given by height/angle

In Goertzel peaks are found and sorted without any additional testing than user defined number of peaks is used to make reverse transform.

So resolution of your MESA should be much better than Goertzel. Than I just wonder if the simple cycle strategy results based on MESA cycles would be better. Unfortunatelly it is not possible to compare it at the moment due to repaint issue.

But it is possible to compare to Ehlers cycles based on the bank filter responses if you want.

Krzysztof

 

fake trading strategy?

don't have to convince anyone anything, just myself!!!!!!!!

 

hello guys,

i see the thread died but maybe i'll find somebody to help me...

i have the goertzel_cycle_v1_1 and i'm stuck with this:

1. i created a sinewave indicator to see how goertzel work. code:

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

int start()

{

int counted_bars=IndicatorCounted();

int i=Bars-counted_bars-1;

//----

while (i>=0)

{

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

i--;

}

//----

return(0);

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

2. i replaced in the goertzel code "close" with the indicator "sinewave"

3. then the result is: a clear cycle of 20 bars -ok. but the amplitude is 149.98 when the sine indicator is between -1 and 1 as expected.

squareamp is "false", i tried everything but i have no clue what's wrong.

any help will be greatly apreciated

 

FTLM_KG and STLM Indicator

forex_for_life:
Richcap,

Firstly, I'd like to thank you for sharing what you have created. I didn't realize what it was you posted until moments prior to me starting this comment. It's this kind of R&D that had this thread ablaze w/ the fire of progress, burning thru all the dross that is the daily mundane booty chatter of this and most other forums. It is mighty powerful, indeed. Those that have been following this thread would be wise to do a double take on what you've brought to the lab bench

I don't think Krzysztof was attempting to be malicious in his reply. After reading it a few times, seems a couple of words and sentence structures just gave the impression of such. Please correct me, if I'm wrong, Krzysztof.

Now, I am by no means, an authority on the topic of DSP. I've frequented this thread, as a pupil, moreso than almost any other. However, I have learned a few things that I think might be of value to you in your pursuit. You may already know everything I'm sharing w/ you and if that is, in fact, the case, please don't take it as patronizing.

1. MESA has been determined to be one of the less ideal methods of spectral analysis because of it's inability to identify frequencies in above average noisy data scenarios (which is what the price data from financial markets has been determined to be). Goertzel's Algorithm, on the other hand, might be a better choice. Please reference the Meyer's Analytics "paper's page", artictle titled "Mesa vs. GDF"

2. There is further discussion on the aforementioned topic (indicators included) in this very thread, starting @ post 225.

3. Sergey Iljuhkin, creator of the DFG software, created something very similar to the indicator you posted (which, I think, means you're on the right track ), complete w/ library and all, posted here by NewDigital. I've used it in the past. Very good, IMHO. Might be worth a look.

4. Krzysztof was accurate in his assessment of CB's thread. I know a couple of folks who've collaborated w/ CB and they confirmed that he will share only pictures and theories, nothing concrete. That being said, those on this thread, like you, clahn04, Simba, dvarrin, and fajst_k are the communal type and are willing to exchange thoughts and the resulting products openly. Please don't allow that flow of progress to be halted or else the thread will experience another lull in forward movement.

I have a setup that I've been using and it only has 2 indicators: un-optimized FTLM_KG and STLM in histogram form, both smoothed via a Jurik price proxy to remove some of the noise present, resulting from the fact the two indicators are not tuned to the pair and t.f. Nothing amazing and depending on the settings may lag a bar every now and then, but effective enough until I can digest more information and excrete something better i.e. easily tunable FTLM and STLM indicators. Screenshot attached.

Best Regards,

F_F_L

Hello forex_for_life,

thanks for your information. Your both Indi from page 49 of these thread FLM_KG and STLM are looking very nice. Would it be possible that you have posts the two Indicators? It is exactly what I'm looking for. Thanks in advance and regard from Munich.

Jim Clark

 
SIMBA:
In my experience ,one of the best non customindicators to mark the trend is STLM2..You can check the trend at h4 and h1,or D1 and H4,and when both are coincidental , look at shorter timeframes to trigger an entry with whatever suits you.

I posted a mtf stlm2 in the mtf thread,will repost here,so that you can check it,by just changing STLM2 for FTLM or FTLM_KG you will have the multiple time frame capabilities for these filters too.Additionally ,we can just modify the Ea to be able to test most strategies,including mtf of stlm2..

I would suggest that we create a menu of strategies,and then proceed to first test them historically with standard digital filters,and second,test them ,at leats the most promising ones,forward demo with custom digital filters..Any takers?

I download the #MFT_STLM2_v2 indicator posted by the great Simba, but didn't work for me on my plataform.

This version expired or something?

I'm looking for a STLM MTF to define the trend.

Thanks in advance friends.

Kindly.

Reason: