Indice de qualité de la volatilité - page 61

 
samirmfs:

Bonjour à tous mon ami pouvez vous me donner un indicateur dont le nom est Volaritility qualtity nrs - alerts et arrows mais format mq4 pas ex4 et merci . Votre ami Samir

Samir

Est-ce que par hasard vous cherchez un de ces indicateurs : https://www.mql5.com/en/forum/general ou peut-être celui-ci : https://www.mql5.com/en/forum/general

 

Je ne savais pas que Thomas Stridsman l'avait inventé.

 

Cher Mladen,

j'espère que vous voudrez bien nous aider à résoudre le problème de l'ea vq ci-joint.

J'ai joint une image qui montre ce qui se passe. L'ea/indicateur/ensemble sont également joints dans le fichier rar. L'indicateur n'est pas la version "nrp" mais en mode "steady" je vois qu'il ne se repeint pas (si ce n'est pas le cas, merci de me le faire savoir ) et c'est une version multitimeframe. La stratégie impliquait l'utilisation de l'ea sur un 1Mtf mais avec les paramètres indi de l'ea sur un 5Mtf ; cela est possible car l'indicateur attaché permet ce mode(c'est un mtf). Je n'ai fait qu'une modification à l'ea en ajoutant le mode "steady" pour permettre à l'ea de fonctionner de cette façon selon l'indicateur. Je ne suis pas un codeur. La solution (c'est à dire permettre à l'ea de travailler en 1Mtf mais avec 5Mtf dans les paramètres de l'ea : mode "steady") semble mieux fonctionner que de laisser l'ea travailler directement en 5Mtf car cela permet de faire correspondre à l'avance les retracements et, de manière scalping sur un 1Mtf, éventuellement d'ouvrir/fermer le trade avec des résultats beaucoup plus positifs. Le problème, comme le montre l'image ci-jointe (qui se trouve également dans le fichier rar.), est que parfois l'ea ne suit pas l'indicateur (je répète en mode "steady") et il peut donc arriver que le trade soit retardé ou ne s'ouvre pas ou, de façon illogique comme dans l'image ci-jointe, ouvre le trade opposé comme le montre l'indi . Pouvez-vous nous aider à résoudre ce problème ? En mode visuel/manuel l'indicateur donne beaucoup de bons signaux (sur 1Mtf avec le paramètre 5Mtf). Merci beaucoup pour votre temps.

vq_indiea.rar

Dossiers :
 
vitoingletto:
Cher Mladen,

J'espère que vous voudrez bien nous aider à résoudre le problème de l'ea vq ci-joint.

J'ai joint une image qui montre ce qui se passe. L'ea/indicateur/ensemble sont également joints dans le fichier rar. L'indicateur n'est pas la version "nrp" mais en mode "steady" je vois qu'il ne se repeint pas (si ce n'est pas le cas, merci de me le faire savoir ) et c'est une version multitimeframe. La stratégie impliquait l'utilisation de l'ea sur un 1Mtf mais avec les paramètres indi de l'ea sur un 5Mtf ; cela est possible car l'indicateur attaché permet ce mode(c'est un mtf). Je n'ai fait qu'une modification à l'ea en ajoutant le mode "steady" pour permettre à l'ea de fonctionner de cette façon selon l'indicateur. Je ne suis pas un codeur. La solution (c'est à dire permettre à l'ea de travailler en 1Mtf mais avec 5Mtf dans les paramètres de l'ea : mode "steady") semble mieux fonctionner que de laisser l'ea travailler directement en 5Mtf car cela permet de faire correspondre à l'avance les retracements et, de manière scalping sur un 1Mtf, éventuellement d'ouvrir/fermer le trade avec des résultats beaucoup plus positifs. Le problème, comme le montre l'image ci-jointe (qui se trouve également dans le fichier rar.), est que parfois l'ea ne suit pas l'indicateur (je répète en mode "steady") et il peut donc arriver que le trade soit retardé ou ne s'ouvre pas ou, de façon illogique comme dans l'image ci-jointe, ouvre le trade opposé comme le montre l'indi . Pouvez-vous nous aider à résoudre ce problème ? En mode visuel/manuel l'indicateur donne beaucoup de bons signaux (sur 1Mtf avec le paramètre 5Mtf). Merci beaucoup pour votre temps.

vq_indiea.rar

Dans votre EA, vous recherchez le dernier signal (qui peut avoir eu lieu il y a longtemps). Tout d'abord, essayez d'utiliser seulement 2 valeurs : une pour la direction actuelle et une pour la direction précédente (buffer 6). Lorsque la valeur de la barre actuelle change par rapport à la barre précédente, alors vous avez un signal. Si la direction est 1, alors c'est un signal d'achat, si la direction est -1, alors le signal est de vente.

________________

PS : pas besoin d'une boucle dans l'EA pour trouver les valeurs de la direction. Il suffit d'utiliser l'indice 1 pour la première barre fermée et l'indice 2 pour la deuxième barre fermée (afin de travailler sur des signaux basés sur la barre fermée).

 

Cher Mladen, merci pour cette réponse rapide. Désolé mais je ne suis pas un codeur mais si vous suggérez, d'une manière plus compréhensible pour mon niveau, ce que je devrais faire sur le métaéditeur, j'essaierai de le faire moi-même. Désolé de vous le dire, mais je ne sais même pas ce que vous entendez par "tampon" . Merci encore.

mladen:
Dans votre EA, vous recherchez le dernier signal (qui peut avoir eu lieu il y a longtemps). Tout d'abord, essayez d'utiliser seulement 2 valeurs : une pour la direction actuelle et une pour la direction précédente (buffer 6). Lorsque la valeur de la barre actuelle change par rapport à la barre précédente, alors vous avez un signal. Si la direction est 1, alors c'est un signal d'achat, si la direction est -1, alors le signal est de vente.

________________

PS : pas besoin d'une boucle dans l'EA pour trouver les valeurs de la direction. Il suffit d'utiliser l'indice 1 pour la première barre fermée et l'indice 2 pour la deuxième barre fermée (afin de travailler sur des signaux basés sur la barre fermée).
 
vitoingletto:
Cher Mladen, merci pour cette réponse rapide. Désolé mais je ne suis pas un codeur mais si vous suggérez, d'une manière plus compréhensible pour mon niveau, ce que je devrais faire sur le métaéditeur, j'essaierai de le faire moi-même. Désolé de le dire, mais je ne sais même pas ce que vous entendez par "tampon" . Merci encore.

vitoingletto

Essayez de remplacer cette pièce :

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

if(VQ2>0&&VQ1<EMPTY_VALUE){if(Reverse)SV=1;else BV=1;break;}

if(VQ1>0&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}}

[/PHP]

With this :

[PHP] double VQCurrent =iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,1);

double VQPrevious=iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,2);

if (VQCurrent!=VQPrevious)

{

if (VQCurrent== 1) if (Reverse) SV=1; else BV=1;

if (VQCurrent==-1) if (Reverse) BV=1; else SV=1;

}

 

Malheureusement, cela ne fonctionne pas. Cela change complètement la logique et ne fonctionne pas dans 1Mtf comme c'était le cas dans 5Mtf mais, littéralement dans 1Mtf. Des suggestions ? merci

mladen:
vitoingletto

Essayez de remplacer cette pièce :

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i);

VQ2=iCustom(NULL,0,"VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i);

if(VQ2>0&&VQ1<EMPTY_VALUE){if(Reverse)SV=1;else BV=1;break;}

if(VQ1>0&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}}

[/PHP]

With this :

[PHP] double VQCurrent =iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,1);

double VQPrevious=iCustom(NULL,TimeFrame,"VQ",Crash,0,Length,Method,Smoothing,Filter,RealTime,Steady,6,2);

if (VQCurrent!=VQPrevious)

{

if (VQCurrent== 1) if (Reverse) SV=1; else BV=1;

if (VQCurrent==-1) if (Reverse) BV=1; else SV=1;

}

 
vitoingletto:
Malheureusement, cela ne fonctionne pas. Cela change complètement la logique et ne fonctionne pas en 1Mtf comme c'était le cas en 5Mtf mais, littéralement en 1Mtf. Des suggestions ? merci

vitoingletto

Le deuxième paramètre de l'appel iCustom() est le paramètre de la trame temporelle. Dans le cas des indicateurs multi time frame, il est préférable d'utiliser ce paramètre pour que l'indicateur fonctionne correctement. Si les valeurs lorsque le time frame est utilisé comme second paramètre de l'appel iCustom() ne sont pas les mêmes que lorsque vous le passez à l'indicateur (dans le paramètre TimeFrame de l'indicateur) alors l'indicateur ne fonctionne pas correctement en mode multi time frame (et c'est le seul cas où ils peuvent différer).

 

Aussi, dans ces deux lignes de l'EA original :

if(VQ2>0&&VQ10&&VQ2<EMPTY_VALUE){if(Reverse)BV=1;else SV=1;break;}

il y a une partie qui n'est pas nécessaire. VQ2>0 et VQ1>0 est toujours vrai(EMPTY_VALUE est une valeur positive) et ces deux-là ne sont pas du tout nécessaires pour la comparaison. Il suffit de vérifier si VQ1 ou VQ2 ne sont pas égaux à EMPTY_VALUE.

 

c'est fait !!!!

J'ai changé :

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,0, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i) ;

VQ2=iCustom(NULL,0, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i) ;

dans

for(int i=1;i<=limit;i++){

VQ1=iCustom(NULL,5, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,3,i) ;

VQ2=iCustom(NULL,5, "VQ",Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,4,i) ;

et cela fonctionne. Seulement un problème, dans le backtest une fois ouvert deux positions sur la même barre avec un 10 tp

des suggestions ? merci.

mladen:
vitoingletto Le deuxième paramètre de l'appel iCustom() est le paramètre de l'horizon temporel. Dans le cas des indicateurs multi time frame, il est préférable d'utiliser ce paramètre pour que l'indicateur fonctionne correctement. Si les valeurs lorsque le time frame est utilisé comme second paramètre de l'appel iCustom() ne sont pas les mêmes que lorsque vous le passez à l'indicateur (dans le paramètre TimeFrame de l'indicateur) alors l'indicateur ne fonctionne pas correctement en mode multi time frame (et c'est le seul cas où ils peuvent différer).
Dossiers :
2_position.jpg  243 kb
Raison: