Gogetter EA - page 14

 

Voici les fichiers .gif qui vont avec les fichiers .htm du post précédent...

On m'a également demandé un fichier d'installation de la version 188 plus tôt dans la journée...

J'ai cherché ce numéro de build mais je ne le vois pas... Je ne me rappelle pas avoir fait un build 188, peut-être l'ai-je fait mais je dois creuser pour le trouver... Je ne sais pas ce qu'il y a de si spécial pour que quelqu'un me demande ce build particulier.....qui aurait été une version très précoce de ceux-ci si j'en ai fait un....

Je vais continuer à chercher...

Dossiers :
ggl3-01.gif  6 kb
ggs3wrsi.gif  9 kb
 

J'ai oublié de mentionner que j'utilise le GGS3 dans le graphique 1H et le GGL3.01 dans le graphique 30M.

Quelqu'un s'est porté volontaire pour me fournir un fichier .exe d'installation pour la version 188 du terminal Metatrader 4. J'ai fait mes tests dans la build 195 et je n'ai pas de build 188 pour le terminal... Est-ce que quelqu'un d'autre en a une que vous voudriez partager ?

 

Devinez quelle est la différence entre ces deux tests ?

Paramètres ? non

EA ? non

Dépôt de départ ? non

Plages de dates ? non

Paire de devises? non

Avez-vous cliqué sur "recalculer" avant chaque opération ? oui.

La seule différence est que celui qui est rentable a été fait juste après la réouverture du marché le dimanche. Et celui qui n'était pas rentable a été fait juste après la fermeture du marché vendredi.

Alors quelqu'un peut-il me dire pourquoi le back tester devrait se soucier du fait que le marché soit ouvert ou non lorsqu'il teste une plage de dates qui est entièrement stockée dans le centre d'historique ?

Dossiers :
 
Maji:
Essayez ce qui suit :

int handle;

int init()

{

handle=FileOpen(EAName+"_"+Symbol()+".txt", FILE_CSV|FILE_WRITE, ';');

return(0);

}

int deinit()

{

FileClose(handle);

return(0);

}

Start()

{

.....

FileWrite(handle, TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS), iOpen... ); //declare them as variables and then insert them in the file write routine

[/PHP]

Also, remember to put the routine where it is updated once every bar not every tick. Now you got enough ammo, and figure out the rest

Good luck.

Ok, j'ai obtenu ceci : ....

[PHP]int handle ; //imprimer dans le fichier

//+------------------------------------------------------------------+

//| fonction d'initialisation de l'expert |

//+------------------------------------------------------------------+

int init()

{

BarCount = Bars ;

if (EachTickMode) Current = 0 ; sinon Current = 1 ;

handle=FileOpen(EAName+"_"+Symbol()+".txt", FILE_CSV|FILE_WRITE, ';');//imprime dans le fichier

return(0) ;

}

//+------------------------------------------------------------------+

//| fonction de désinitialisation experte |

//+------------------------------------------------------------------+

int deinit()

{

FileClose(handle);//imprime dans le fichier

return(0) ;

}

//+------------------------------------------------------------------+

//| fonction de démarrage expert |

//+------------------------------------------------------------------+

int start()

{

Je ne sais pas comment/où compléter cette direction...

...." FileWrite(handle, TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS), iOpen... ) ; //déclarez-les comme variables et insérez-les ensuite dans la routine d'écriture du fichier"

 

Maji a dit, ...mettez la routine où elle est mise à jour une fois par barre et non par tick.

Quelqu'un peut-il me montrer où cela se trouve ? Malgré mes illusions occasionnelles de compétence, je n'ai vraiment aucune idée sur ce sujet.

 

Je suis désolé, mais je n'ai pas le temps de m'occuper de votre code pour le moment. Vous devriez insérer la ligne qui écrit l'heure, l'ouverture etc. juste à l'endroit où votre système se met à jour sur la nouvelle barre. Pour l'instant, pourquoi ne pas simplement insérer cette ligne avant return(0) sur votre boucle de démarrage. Quant à la façon de construire la commande filewrite, vous devrez la trouver vous-même, je vous ai donné suffisamment d'éléments pour le faire.

Pourquoi ne pas commencer à tester votre système, et de cette façon vous pouvez le comparer à votre backtest chaque jour et voir comment il fonctionne ?

Bonne chance.

 
Maji:
Je suis désolé, mais je n'ai pas le temps de m'occuper de votre code pour le moment. Vous devriez insérer la ligne qui écrit l'heure, l'ouverture etc. juste là où votre système se met à jour sur la nouvelle barre. Pour l'instant, pourquoi ne pas simplement insérer cette ligne avant return(0) sur votre boucle de démarrage. Quant à la façon de construire la commande filewrite, vous devrez la découvrir vous-même, je vous ai donné assez de munitions pour le faire .

Pourquoi ne pas commencer à tester votre système, et de cette façon vous pouvez le comparer à votre backtest chaque jour et voir comment il fonctionne ?

Bonne chance.

Je reconnais que vous avez d'autres priorités, c'est pourquoi je ne vous le demandais pas, mais l'indice aide au moins à placer la ligne. Merci

Je fais des tests en avant. C'est ce que je faisais jusqu'à ce que mon compte de démonstration explose pendant le week-end de la fête du travail, il n'a pas expiré, il a juste été clôturé avec tous mes autres comptes de démonstration. Ce matin, j'ai dû en recommencer un nouveau... je ne sais pas pourquoi ils ont tous été supprimés. Ce n'est pas moi qui l'ai fait. Une anamolie interbancaire, je suppose.

 

Supposons, à titre d'exemple, que j'y parvienne et que je prouve qu'il n'utilise pas les mêmes données à chaque fois, malgré ce qu'on lui dit, ou qu'il ne traite pas les données de la même manière, ou quoi que ce soit d'autre, alors que faire ?

J'ai d'autres tests de stratégie qui ne semblent pas utiliser les mêmes plages de dates ou les plages de dates entières lorsque je le leur demande. Je pense que l'on peut supposer que d'autres personnes ont des irrégularités similaires, mais que peut-on y faire ?

Cela ne me semble pas vraiment être un testeur de stratégie à ce stade. Il s'agit plutôt d'une stratégie d'accroche, car je ne vois aucun moyen de contrôler ou de stabiliser sa compilation/son traitement. Il ne traite que des plages de dates partielles lorsque des fichiers de données complets existent pour traiter la totalité de la plage spécifiée. Il ne semble pas être cohérent à 100%. Je ne saurais pas quoi faire pour le réparer même si je pouvais prouver ses incohérences. Il se comporte plus comme une roulette que comme un outil de test de précision.

 

poste inutile

 

voici mon skitoma...je ne vois pas pourquoi dans le fichier include ci-dessus https://www.mql5.com/en/forum/general

le compilateur peut trouver ces fonctions...(lorsque j'ajoute ce fichier include dans une EA et avant d'appeler ces fonctions.... j'obtiens ces erreurs me disant qu'au moins le compilateur VOIT ces 5 fonctions....

La fonction "StoreHighsAndLows" n'est pas référencée et sera supprimée du fichier exp.

La fonction "GetPastEquity" n'est pas référencée et sera supprimée du fichier exp.

La fonction "StoreAccountEquity" n'est pas référencée et sera supprimée du fichier exp-file.

La fonction "CountTrades" n'est pas référencée et sera supprimée du fichier exp.

La fonction "CloseOrder" n'est pas référencée et sera supprimée du fichier exp.

mais il ne voit pas du tout la fonction "IncreaseLots()".

C'est comme s'il n'existait pas....

En quoi la structure de IncreaseLots() est-elle différente de celle des autres fonctions qu'il peut voir ?

Il déclare la fonction, puis il y a

{

blah

blah

blah

return() ;

}

que doit avoir de plus une fonction ? C'est tout ce que les autres ont !!!!

Vous voyez, quand j'appelle IncreaseLots() depuis l'EA, j'obtiens l'erreur... fonction non définie... comme si elle n'était pas là... mais elle est là, juste là... ! !!! Pourquoi tout cela est invisible pour le compilateur ? ???