Elite-Indikatoren :) - Seite 199

 

Digitale Filter EA info

Mladen, MrTools,

Die in #1987 bis #1989 gezeigten Digitalfilter sind sehr beeindruckend.

Ich würde gerne einen EA mit diesen Filtern ausprobieren. Können Sie mir erklären, wie man iCustom einrichtet, um die Werte zu extrahieren?

Eine gute Wahl könnten die Digitalfilter auf Chart Smoothed sein - Modus 1 (SATL) und Modus 0 (FATL).

Die EA-Logik könnte einfach sein - Kaufen, wenn FATL > SATL und die Steigung beider Werte positiv ist; umgekehrt für Verkaufen; Schließen, wenn FATL-Steigung = 0.

Irgendwelche Empfehlungen, wie man die Steigung hier am besten berechnet?

Vielen Dank!

Rex

 
mladen:
Rex

Um die Steigungen in der nicht geglätteten Version herauszufinden, kann man so etwas verwenden

int price = PRICE_CLOSE;

int filterType;

filterType = 0;

double fatlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double fatlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

filterType = 1;

double satlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double satlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

filterType = 2;

double rftlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double rftlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

filterType = 3;

double rstlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double rstlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

//

//

// slope of any of the values, fatl in this case

//

//

bool slopeUp = false;

bool slopeDown = false;

if (fatlCurrent>fatlPrevious) slopeUp = true;

if (fatlCurrent<fatlPrevious) slopeUp = true;

[/php]to find it out in the smoothed version use something like this (additional parameters needed in iCustom() call)

int length = 5;

int phase = 0

int price = PRICE_CLOSE;

int filterType;

filterType = 0;

double fatlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double fatlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

filterType = 1;

double satlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double satlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

filterType = 2;

double rftlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double rftlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

filterType = 3;

double rstlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double rstlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

//

//

// slope of any of the values, fatl in this case

//

//

bool slopeUp = false;

bool slopeDown = false;

if (fatlCurrent>fatlPrevious) slopeUp = true;

if (fatlCurrent<fatlPrevious) slopeUp = true;

[/php]Both examples are using current (open) bar value. To avoid it change the last parameter from 0 and 1 to 1 and 2. Also, included even unnecessary values calculations (as you can see all the digital filters types are calculated) in order to show how to retreive every value

To compare values of different filters simply compare (for example) if (fatlCurrent>rftlCurrent) or if (fatlCurrent<rftlCurrent) but that just shows their relative values. It does not show if they just crossed one above/bellow the other

______________________

To find crossings of a different filters, it gets a bit more complicated and the best way is to write a new indicator. It is more complicated because it depends how do you treat eventual equal values of two indicators. I prefer to treat them as a trend continuation and not as a possible trend reversal. Attaching an indicator that will show you "trends" (a simple "bigger"/ "smaller" relation) of 2 digital filters. To use it all you need is to check the value that is even not going to be displayed anywhere on chart, like this

[php] int price = PRICE_CLOSE;

int filterType1 = 0; // fatl

int filterType2 = 2; // rftl

int filtersTrendCurrent = iCustom(NULL,0,"Digital filters - on chart trend","",filterType1,FilterType2,price,5,0); // retrieve value from trend buffer

int filtersTrendPrevious = iCustom(NULL,0,"Digital filters - on chart trend","",filterType1,FilterType2,price,5,1); //

if (filterTrendCurrent!= filterTrendPrevious) // trend just changed

{

if (filtersTrendCurrent== 1) ....// trend changed to up

if (filtersTrendCurrent==-1) ....// trend changed to down

}

Also, the remark for a opened bar stands for this example too, so change the last parameter to desired value (1 for closed bar, for example) if you do not want to use opened bar signals. The target indicator is the histogram down on the picture (fatl / rftl crosses in this case on a 5 minute chart)
And in the end, you could do something like this :

[php] if (filterTrendCurrent!= filterTrendPrevious) // trend just changed

{

if ( fatlCurrent>fatlPrevious && rftlCurrent>rftlPrevious && filtersTrendCurrent== 1) Buy...

if ( fatlCurrent<fatlPrevious && eftlCurrent<rftlPrevious && filtersTrendCurrent==-1) Sell....

}

//

// the danger is that the slope and the crosses are not going to change in the same

// moment and buying or selling on every bar when slopes are equal would cause an

// EA to "overtrade"

//

Meiner Meinung nach reicht es aber aus, die Kreuze zu überprüfen und eine völlig andere Steigung für die Filterung zu verwenden (in diesem Beispiel werden schnelle digitale Filter verwendet, dann könnten langsame digitale Filter (satl oder rstl) als "Steigungs"-Filter verwendet werden)

______________________

PS: wenn es um EA geht, könnte man sogar in Erwägung ziehen, einen Indikator zu schreiben, der keine Werte anzeigt (in diesem Fall würde man 2 Puffer in dieser Histo-Version sparen), aber in diesem Fall muss man 101% sicher sein, was man mit dem Code macht (keine "visuelle Kontrolle")

Mit freundlichen Grüßen

Mladen

Rex,

Ich möchte nur sagen, dass diese digitalen Indikatoren von Mladen eine sehr gute Wahl für Ea sind. Ich habe schon bemerkt, wie wenig Rechenleistung sie im Vergleich zu den anderen alten Versionen benötigen. Haben eine Reihe von Ea; s mit den älteren digitalen Versionen vor allem mit STLM Hang auf mehrere timeframes Mann war der Computer leiden, diese scheinen genauso gut oder besser, aber viel leichter.

Mit freundlichen Grüßen

Werkzeuge

 

Mladen, Mrtools,

Das ist genau das, was ich mir erhofft habe!

Das ist eine große Hilfe.

Nochmals vielen Dank.

Rex

 

Rex

Um die Steigungen in der nicht geglätteten Version herauszufinden, kann man so etwas verwenden

int price = PRICE_CLOSE;

int filterType;

filterType = 0;

double fatlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double fatlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

filterType = 1;

double satlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double satlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

filterType = 2;

double rftlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double rftlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

filterType = 3;

double rstlCurrent = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,0);

double rstlPrevious = iCustom(NULL,0,"Digital filters - on chart","",filterType,price,0,1);

//

//

// slope of any of the values, fatl in this case

//

//

bool slopeUp = false;

bool slopeDown = false;

if (fatlCurrent>fatlPrevious) slopeUp = true;

if (fatlCurrent<fatlPrevious) slopeUp = true;

[/php]to find it out in the smoothed version use something like this (additional parameters needed in iCustom() call)

int length = 5;

int phase = 0

int price = PRICE_CLOSE;

int filterType;

filterType = 0;

double fatlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double fatlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

filterType = 1;

double satlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double satlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

filterType = 2;

double rftlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double rftlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

filterType = 3;

double rstlCurrent = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,0);

double rstlPrevious = iCustom(NULL,0,"Digital filters smoothed - on chart","",filterType,price,length,phase,0,1);

//

//

// slope of any of the values, fatl in this case

//

//

bool slopeUp = false;

bool slopeDown = false;

if (fatlCurrent>fatlPrevious) slopeUp = true;

if (fatlCurrent<fatlPrevious) slopeUp = true;

[/php]Both examples are using current (open) bar value. To avoid it change the last parameter from 0 and 1 to 1 and 2. Also, included even unnecessary values calculations (as you can see all the digital filters types are calculated) in order to show how to retreive every value

To compare values of different filters simply compare (for example) if (fatlCurrent>rftlCurrent) or if (fatlCurrent<rftlCurrent) but that just shows their relative values. It does not show if they just crossed one above/bellow the other

______________________

To find crossings of a different filters, it gets a bit more complicated and the best way is to write a new indicator. It is more complicated because it depends how do you treat eventual equal values of two indicators. I prefer to treat them as a trend continuation and not as a possible trend reversal. Attaching an indicator that will show you "trends" (a simple "bigger"/ "smaller" relation) of 2 digital filters. To use it all you need is to check the value that is even not going to be displayed anywhere on chart, like this

[php] int price = PRICE_CLOSE;

int filterType1 = 0; // fatl

int filterType2 = 2; // rftl

int filtersTrendCurrent = iCustom(NULL,0,"Digital filters - on chart trend","",filterType1,FilterType2,price,5,0); // retrieve value from trend buffer

int filtersTrendPrevious = iCustom(NULL,0,"Digital filters - on chart trend","",filterType1,FilterType2,price,5,1); //

if (filterTrendCurrent!= filterTrendPrevious) // trend just changed

{

if (filtersTrendCurrent== 1) ....// trend changed to up

if (filtersTrendCurrent==-1) ....// trend changed to down

}

Also, the remark for a opened bar stands for this example too, so change the last parameter to desired value (1 for closed bar, for example) if you do not want to use opened bar signals. The target indicator is the histogram down on the picture (fatl / rftl crosses in this case on a 5 minute chart)
And in the end, you could do something like this :

[php] if (filterTrendCurrent!= filterTrendPrevious) // trend just changed

{

if ( fatlCurrent>fatlPrevious && rftlCurrent>rftlPrevious && filtersTrendCurrent== 1) Buy...

if ( fatlCurrent<fatlPrevious && eftlCurrent<rftlPrevious && filtersTrendCurrent==-1) Sell....

}

//

// the danger is that the slope and the crosses are not going to change in the same

// moment and buying or selling on every bar when slopes are equal would cause an

// EA to "overtrade"

//

Aber meiner Meinung nach reicht es aus, die Kreuze zu überprüfen und eine völlig andere Steigung für die Filterung zu verwenden (in diesem Beispiel werden schnelle digitale Filter verwendet, dann könnten langsame digitale Filter (satl oder rstl) als "Steigungs"-Filter verwendet werden)

______________________

PS: wenn es um EA geht, könnte man sogar in Erwägung ziehen, einen Indikator zu schreiben, der keine Werte anzeigt (in diesem Fall würde man 2 Puffer in dieser Histo-Version sparen), aber in diesem Fall muss man sich 101%ig sicher sein, was man mit dem Code macht (keine "visuelle Kontrolle")

______________________

PPS: der korrekte "digital filters - on chart trends" Indikator ist in diesem Beitrag zu finden https://www.mql5.com/en/forum/general

Mit freundlichen Grüßen

Mladen

rdoane:
Mladen, MrTools,

Die in #1987 bis #1989 gezeigten Digitalfilter sind sehr beeindruckend.

Ich würde gerne einen EA ausprobieren, der diese verwendet - können Sie mir erklären, wie man iCustom einrichtet, um die Werte zu extrahieren?

Eine gute Wahl könnten die Digitalfilter auf Chart Smoothed sein - Modus 1 (SATL) und Modus 0 (FATL).

Die EA-Logik könnte einfach sein - Kaufen, wenn FATL > SATL und die Steigung beider Werte positiv ist; umgekehrt für Verkaufen; Schließen, wenn FATL-Steigung = 0.

Irgendwelche Empfehlungen, wie man die Steigung hier am besten berechnet?

Vielen Dank!

Rex
Dateien:
 

In den "Digitalen Filtern - zu den Chart-Trends", die ursprünglich unter diesem Posting veröffentlicht wurden: https: //www.mql5.com/en/forum/general gab es einen Fehler. Dies ist die korrigierte Version, bitte verwenden Sie diese

Mit freundlichen Grüßen

Mladen

 

Mladen,

Können Sie diesem Indikator eine nicht wiederholende Färbung und eine mtf-Option hinzufügen?Danke.

Dateien:
rsi_ma.mq4  4 kb
 

Pc-Breakout

Mladen,

Ich benutze einen EA auf einem virtuellen privaten Server. Ich habe manchmal die Meldung "PC-Breakout", wenn ich mit der Maus auf die Ticketnummer fahre.

Was hat das zu bedeuten? Ist es ein Verbindungsverlust oder kann es ein Server-Neustart sein?

Danke

Mit freundlichen Grüßen,

 
casaliss:
Hallo mladen

Bitte fügen Sie Null-Linien-Kreuzungspfeile im aktuellen Chart hinzu.

danke

Hallo Mladen

Beitrag 1997

Danke

 

Tradefx1

Ich vermute, dass es sich um den Kommentar handelt, den Ihr EA zu der Bestellung abgibt (versuchen Sie auch, "Kommentare" zu überprüfen, wenn Sie mit der rechten Maustaste auf die Liste der Bestellungen klicken, und sehen Sie dann, ob der Kommentar mit dem Pop-up-Text übereinstimmt, den Sie erhalten)

Viele Grüße

Mladen

Tradefx1:
Mladen,

Ich verwende einen EA auf einem virtuellen privaten Server. Ich habe manchmal die Meldung "PC-Breakout", wenn ich mit der Maus auf die Ticketnummer fahre.

Was hat das zu bedeuten? Ist es ein Verbindungsverlust oder kann es ein Server-Neustart sein?

Danke

Grüße,
 

biddick

Hier ist er:
PS: Ich habe den "mtf"-Teil übersehen. Ich habe auch eine mtf-Version beigefügt

Grüße

Mladen

biddick:
Mladen, können Sie diesen Indikator um die Option "nonrepainting coloring" und "mtf" erweitern?Danke.
Dateien:
Grund der Beschwerde: