Indicateurs d'élite :) - page 199

 

Filtres numériques EA info

Mladen, MrTools,

Les filtres numériques montrés dans les numéros 1987 à 1989 sont très impressionnants.

J'aimerais essayer un EA qui les utilise - pouvez-vous m'expliquer comment configurer iCustom pour extraire les valeurs ?

Un bon choix pourrait être les filtres numériques sur le graphique lissé - Mode 1 (SATL) et Mode 0 (FATL).

La logique de l'EA pourrait être simple - Acheter lorsque FATL > SATL et que la pente des deux est positive ; l'inverse pour vendre ; fermer lorsque la pente de FATL = 0.

Avez-vous des recommandations sur la meilleure façon de calculer la pente ici ?

Merci !

Rex

 
mladen:
Rex

Pour trouver les pentes dans la version non lissée, vous pouvez utiliser quelque chose comme ceci

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"

//

Mais à mon avis, il suffit de vérifier les croix et d'utiliser une pente complètement différente pour le filtrage (dans cet exemple, des filtres numériques rapides sont utilisés, alors des filtres numériques lents (satl ou rstl) pourraient être utilisés comme filtres de "pente").

______________________

PS : quand il s'agit d'EA, vous pouvez même envisager d'écrire un indicateur qui n'affiche aucune valeur (cela économiserait 2 buffers dans cette version histo dans ce cas) mais dans ce cas vous devez être 101% sûr de ce que vous faites avec le code (pas de "contrôle visuel").

salutations

Mladen

Rex,

Je veux juste dire que ces indicateurs numériques de Mladen sont un très bon choix pour Ea. J'ai déjà remarqué à quel point ils sont légers en Cpu par rapport aux autres anciennes versions. J'ai fait un certain nombre d'Ea;s avec les anciennes versions numériques, en particulier en utilisant la pente STLM sur plusieurs horizons temporels, l'ordinateur souffrait, ceux-ci semblent aussi bons ou meilleurs mais beaucoup plus légers.

Salutations

outils

 

Mladen, Mrtools,

C'est exactement ce que j'espérais !

C'est d'une grande aide.

Merci encore.

Rex

 

Rex

Pour trouver les pentes dans la version non lissée, vous pouvez utiliser quelque chose comme ceci

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"

//

Mais à mon avis, il suffit de vérifier les croix et d'utiliser une pente complètement différente pour le filtrage (dans cet exemple, des filtres numériques rapides sont utilisés, alors des filtres numériques lents (satl ou rstl) pourraient être utilisés comme filtres de "pente").

______________________

PS : quand il s'agit d'EA, vous pouvez même envisager d'écrire un indicateur qui n'affiche aucune valeur (cela économiserait 2 buffers dans cette version histo dans ce cas) mais dans ce cas vous devez être sûr à 101% de ce que vous faites avec le code (pas de "contrôle visuel").

______________________

PPS : le bon indicateur "digital filters - on chart trends" se trouve sur ce post https://www.mql5.com/en/forum/general

Salutations

Mladen

rdoane:
Mladen, MrTools,

Les filtres numériques montrés dans #1987 à #1989 sont très impressionnants.

J'aimerais essayer un EA qui les utilise - pouvez-vous m'expliquer comment configurer iCustom pour extraire les valeurs ?

Un bon choix pourrait être les filtres numériques sur le graphique lissé - Mode 1 (SATL) et Mode 0 (FATL).

La logique de l'EA pourrait être simple - Acheter lorsque FATL > SATL et que la pente des deux est positive ; l'inverse pour vendre ; fermer lorsque la pente de FATL = 0.

Avez-vous des recommandations sur la meilleure façon de calculer la pente ici ?

Merci !

Rex
Dossiers :
 

Dans le "filtres numériques - sur les tendances des graphiques" initialement posté à ce poste : https://www.mql5.com/en/forum/general il y avait une erreur. Celle-ci est la corrigée, veuillez donc l'utiliser.

salutations

Mladen

 

Mladen,

Pouvez-vous ajouter la coloration sans repeinture et l'option mtf à cet indicateur ? Merci.

Dossiers :
rsi_ma.mq4  4 kb
 

Pc-breakout

Mladen,

J'utilise un EA sur un serveur privé virtuel. J'ai parfois le message "PC-Breakout", lorsque je mets la souris sur le numéro de ticket.

Qu'est-ce que cela signifie ? S'agit-il d'une perte de connexion ou d'un redémarrage du serveur ?

Merci

salutations,

 
casaliss:
Bonjour mladen

Veuillez ajouter des flèches de croisement de ligne zéro sur le graphique actuel.

Merci

Bonjour Mladen

Poste 1997

Merci

 

Tradefx1

Je pense qu'il s'agit du commentaire que votre EA place sur l'ordre (essayez également de cocher la case "commentaires" lorsque vous cliquez avec le bouton droit de la souris dans la liste des ordres et voyez ensuite si le commentaire correspond au texte que vous obtenez).

Salutations

Mladen

Tradefx1:
Mladen,

J'utilise un EA sur un serveur privé virtuel. J'ai parfois le message "PC-Breakout", lorsque je mets la souris sur le numéro de ticket.

Qu'est-ce que cela signifie ? S'agit-il d'une perte de connexion ou d'un redémarrage du serveur ?

Merci

salutations,
 

biddick

Voici
PS : j'ai oublié la partie "mtf". Ci-joint une version mtf aussi

salutations

Mladen

biddick:
Mladen, pouvez-vous ajouter la coloration sans repeinture et l'option mtf à cet indicateur ? merci.
Dossiers :