Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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
Rex
Um die Steigungen in der nicht geglätteten Version herauszufinden, kann man so etwas verwenden
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 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
}
[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
MladenRex,
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 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 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
}
[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
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!
RexIn 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.
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,
Hallo mladen
Bitte fügen Sie Null-Linien-Kreuzungspfeile im aktuellen Chart hinzu.
dankeHallo 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
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ügtGrüße
Mladen
Mladen, können Sie diesen Indikator um die Option "nonrepainting coloring" und "mtf" erweitern?Danke.