Aide au codage - page 407

 

Bonjour les gars, j'ai besoin de votre aide sur un indicateur que j'ai fait. A la base, c'est un testeur qui est censé être utilisé uniquement pour optimiser les paramètres d'une stratégie (et aussi tester ses performances). En mode test (Optimize turned to False), il fonctionne très bien et donne le taux de gain et la balance pour les paramètres par défaut. Mais j'ai du mal à faire fonctionner la fonction d'optimisation. Le résultat pour les meilleurs paramètres finit toujours par être la valeur la plus basse (PeriodMin). Je me demande si ce n'est pas la façon dont j'utilise les tampons déclarés dans la double fonction Optimisation (voir les lignes 616 et 617, et les lignes 746 et 747 utilisées pour libérer les tampons). Je suppose que ce n'est pas seulement cela, car si je n'utilise pas ces tampons (en mettant AllowMultipleOpenTrades à False), cela donne toujours des résultats non cohérents. Si quelqu'un peut jeter un coup d'œil et m'aider, je lui en serai reconnaissant. Merci beaucoup.

Dossiers :
 
airquest:
Je ne suis pas sûr de ce que vous essayez de faire. Peut-être ceci ?

Non, j'ai bien peur que non. Laissez-moi vous illustrer avec une capture d'écran. Sur la flèche rose supérieure, vous pouvez clairement voir que la barre rouge du BAS est beaucoup plus grande que la barre bleue du HAUT. Pourtant, la sortie correspondante dans l'indicateur Linear Bar Diff est supérieure à zéro ! (voir la flèche rose inférieure). Lorsque la barre rouge du BAS est plus grande que la barre bleue du HAUT, la différence des deux barres devrait être négative, et non positive. Les flèches vertes montrent un autre exemple du même problème.

Bien à vous

Dossiers :
example.png  25 kb
 
mrcodix:
Non, j'ai bien peur que non. Permettez-moi d'illustrer avec une capture d'écran. Sur la flèche rose supérieure, vous pouvez clairement voir que la barre rouge du BAS est beaucoup plus grande que la barre bleue du HAUT. Pourtant, la sortie correspondante dans l'indicateur Linear Bar Diff est supérieure à zéro ! (voir la flèche rose inférieure). Lorsque la barre rouge du BAS est plus grande que la barre bleue du HAUT, la différence des deux barres devrait être négative, et non positive. Les flèches vertes montrent un autre exemple du même problème. Amicalement.

Alors peut-être ceci ? Vous devez voir que les tampons 3 et 4 ne sont pas liés au High VS Open et au Low VS Open, mais au Close VS Open.

Dossiers :
 
mrcodix:
Non, je crains que non. Permettez-moi d'illustrer avec une capture d'écran. Sur la flèche rose supérieure, vous pouvez clairement voir que la barre rouge du BAS est beaucoup plus grande que la barre bleue du HAUT. Pourtant, la sortie correspondante dans l'indicateur Linear Bar Diff est supérieure à zéro ! (voir la flèche rose inférieure). Lorsque la barre rouge du BAS est plus grande que la barre bleue du HAUT, la différence des deux barres devrait être négative, et non positive. Les flèches vertes montrent un autre exemple du même problème. Amicalement.

Ou c'est avec le choix d'utiliser High/Low VS Open ou Close VS Open.

Dossiers :
 
airquest:
Bonjour les gars, j'ai besoin de votre aide sur un indicateur que j'ai fait. A la base, c'est un testeur qui est censé être utilisé uniquement pour optimiser les paramètres d'une stratégie (et aussi tester ses performances). En mode test (Optimize turned to False), il fonctionne très bien et donne le taux de gain et la balance pour les paramètres par défaut. Mais j'ai du mal à faire fonctionner la fonction d'optimisation. Le résultat pour les meilleurs paramètres finit toujours par être la valeur la plus basse (PeriodMin). Je me demande si ce n'est pas la façon dont j'utilise les tampons déclarés dans la double fonction Optimisation (voir les lignes 616 et 617, et les lignes 746 et 747 utilisées pour libérer les tampons). Je suppose que ce n'est pas seulement cela, car si je n'utilise pas ces tampons (en mettant AllowMultipleOpenTrades à False), cela donne toujours des résultats non cohérents. Si quelqu'un peut jeter un coup d'œil et m'aider, je lui en serai reconnaissant. Merci beaucoup.

airquest

Vos tableaux recTP[] et recSL[] à la ligne 602 ne sont pas redimensionnés (ils sont de taille 0, de la façon dont ils sont déclarés au début de la boucle), essayez de les redimensionner avant la boucle for().

 
airquest:
Ou bien c'est avec le choix d'utiliser High/Low VS Open ou Close VS Open.

Non, c'est ce que je voulais dire.

int start()

{

int counted_bars=IndicatorCounted() ;

int i ;

//int UpDays, DownDays, NeutralDays ;

double BarH, BarL, BarC ;

//----

for(i=0 ; i<Bars ; i++)

{

BarH = High - Open ;

BarL = Open - Low ;

BarC = Close - Open ;

//si(BarC>0) UpDays +=1 ;

//seulement si(BarC<0) DownDays +=1 ;

//seulement si(BarC==0) NeutralDays +=1 ;

ExtMapBuffer1 = BarH ;

ExtMapBuffer2 = BarL ;

ExtMapBuffer5 = BarH - BarL ;

}

//----

return(0) ;

}

J'ai trouvé la solution tout seul, mais merci quand même pour votre effort.

Quelqu'un peut-il me dire pourquoi cet indicateur : Candles Ratio " Metatrader Files n'affiche pas la sortie des derniers chandeliers ? Il ne semble pas le faire dans l'image qui est montrée.

 
mladen:
airquest Vos tableaux recTP[] et recSL[] à la ligne 602 ne sont pas redimensionnés (ils sont de taille 0, de la façon dont ils sont déclarés au début de la boucle), Essayez de les redimensionner avant la boucle for().

Merci Mladen, je l'ai fait, mais l'optimisation ne donne toujours pas de résultats corrects. Si je mets l'optimisation sur True, il donne la valeur la plus basse comme le meilleur réglage (période de bande = 5), alors que sur False et BandsPeriod par défaut sur 40, par exemple, il montre un meilleur taux de gain qu'avec 5. en fait l'idée de l'optimisation est de trouver quels réglages donnent le meilleur taux de gain. J'ai relu le code des centaines de fois et je n'arrive pas à trouver ce qui ne va pas. Si vous avez une idée, sinon c'est peut-être une cause perdue lol.

C'est avec l'ArrayResize ajouté. J'ai également corrigé quelques bugs, mais je n'ai toujours pas obtenu les mêmes résultats que sans optimisation :

Dossiers :
 
airquest:
Merci Mladen, je l'ai fait, mais l'optimisation ne donne toujours pas de résultats corrects. Si je mets l'optimisation sur True, elle donne la valeur la plus basse comme le meilleur réglage (période de bande = 5), alors que sur False et BandsPeriod par défaut sur 40, par exemple, elle montre un meilleur taux de gain qu'avec 5. En fait, l'idée de l'optimisation est de trouver quels réglages donnent le meilleur taux de gain. J'ai relu le code des centaines de fois et je n'arrive pas à trouver ce qui ne va pas. Si vous avez une idée, sinon c'est peut-être une cause perdue lol. C'est avec le ArrayResize ajouté. J'ai également corrigé quelques bugs, mais je n'obtiens toujours pas les mêmes résultats que sans optimisation :

Je ne sais pas pourquoi, mais lorsque je vérifie les résultats en écrivant un fichier CSV, le total des transactions, des gains et du solde est multiplié par un facteur de 10 : http://clip2net.com/s/38YHODl...

 
airquest:
Je ne sais pas pourquoi, mais lorsque je vérifie les résultats en écrivant un fichier CSV, le total des transactions, des gains et du solde est multiplié par un facteur de 10 : Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

airquest

D'après ce que je vois, le total des transactions et des gains est correct (sinon, il devrait se terminer par 0).

 
mladen:
airquest D'après ce que je vois, le total des transactions et des gains est correct (sinon, il devrait se terminer par 0).

Enfin, quand même... Voici quelques tests :

- Paramètres par défaut (pas d'optimisation, WriteCSV à True) : http://clip2net.com/s/38YSV53

- Optimisation réglée sur True, PeriodMin sur 20 et PeriodMax sur 20 : http://clip2net.com/s/38YT2hN

Le premier test donne des valeurs cohérentes (le fichier CSV et les résultats à l'écran correspondent). C'est normal, car les deux proviennent des mêmes variables. Mais dans le second, les résultats opti sont multipliés par 10 par rapport aux résultats à l'écran. Pourtant, ils devraient aboutir aux mêmes résultats...

Quoi qu'il en soit, rien ne presse, peut-être qu'avec le temps je trouverai ce qui ne va pas. Merci pour votre aide Mladen.