Ema Cross ! - page 20

 

Testeur croisé EMA

Bonjour Codersguru !

Je veux tout d'abord commencer par vous remercier pour les cours d'apprentissage MT géniaux. Sans eux, je ne sais pas comment j'aurais pu apprendre mql aussi rapidement. Vous êtes l'HOMME !

Récemment, j'ai programmé des ea's pour pouvoir trader de plusieurs façons différentes afin de pouvoir tester les ea's sur un compte réel tout en ayant plusieurs paramètres en cours sur la même paire et la même TF. J'aime l'idée de l'EMA, et j'ai codé un EA qui utilise vos critères. Cette version sera capable de trader un nombre presque illimité d'instances de l'EA avec différents paramètres sur la même TF/PAIR ou toute combinaison. Le programme définit une GlobalVariable dans MT et l'utilise pour créer un ID unique qui est ensuite inséré dans le commentaire des trades ouverts. L'EA traite ensuite les ordres sur la base de cet ID unique.

En outre, j'ai ajouté une fonction permettant d'écrire un fichier csv qui ressemble à un relevé de transaction incluant les paramètres qui étaient en place au moment du test (dossier expert/files). Après avoir négocié de cette façon, il y aura beaucoup de transactions de tous les différents EA, donc c'est essentiellement là que vous allez pour obtenir les stmnts de transaction précis.

Le logiciel devrait fonctionner comme la V2. Il y a quelques fonctionnalités supplémentaires que j'ai ajoutées au cas où quelqu'un voudrait passer en direct.

J'apprécie tout ce que vous avez fait, et je suis curieux de voir ce que vous pensez de ce projet !

Nic

 
hellkas:
Salut Hendrick

Pourriez-vous me dire quels sont vos paramètres et votre TF...

Merci

Bonjour Hellkas,

Voici mes paires (Timeframe pour toutes les paires est Day)

USDJPY, EURCHF, AUDUSD, EURAUD, USDCAD, USDCHF, AUDCAD, EURCHF.

Paramètres : par défaut ; sauf Reversal=True et Lots=0,1

Salutations !

 
Nicholishen:
Salut Codersguru !

Le programme définit une GlobalVariable dans MT et l'utilise pour créer un ID unique qui est ensuite inséré dans le commentaire des transactions ouvertes. L'EA traite ensuite les ordres sur la base de cet ID unique.

Nic

Nic

C'est un excellent moyen de suivre vos ordres et tous les fichiers séparés que votre EA peut créer, ce qui montre encore une fois votre capacité à voir des choses que d'autres ne voient pas. La raison pour laquelle j'écris est que j'ai fait la même chose, en utilisant OrderComment() pour étiqueter les transactions et j'ai trouvé que cela posait un problème futur. En effet ;

1) le champ commentaire est un paramètre de type chaîne de caractères, auquel votre courtier peut ajouter ses propres commentaires. Lorsque votre ordre est clôturé avec un take profit ou un stop loss atteint par exemple, le courtier ajoutera un message à votre champ commentaire. Si vous n'êtes pas conscient de cela, cela peut provoquer des erreurs à l'avenir si vous accédez à l'historique des transactions de votre compte en utilisant votre commentaire original sans savoir qu'il a été ajouté.

2) La fonction GlobalVariable() est de type double nombre. qui est converti en type chaîne lorsqu'il est utilisé comme entrée de votre OrderComment. Mélanger les types de variables n'est pas une bonne habitude de programmation, car cela pourrait provoquer des erreurs de mélange de variables si vous revenez en arrière pour modifier votre code.

Pour éviter ce problème, j'ai utilisé le champ MagicNumber de la fonction OrderSend(). Le code ci-dessous est l'appel de fonction que j'utilise pour générer un numéro unique qui est utilisé comme vous l'avez décrit, pour le suivi des commandes et la tenue des registres. Il génère un numéro compris entre 100 et 999. Une fois le numéro utilisé, le nouveau numéro est incrémenté d'une unité pour être utilisé par l'EA suivante. Si vous placez l'appel à cette fonction dans la zone de fonction init() de votre code, elle ne sera vue qu'une seule fois au démarrage et restera avec votre EA jusqu'à ce qu'elle soit désactivée.

Exemple ;

int OrderID = 0 ;

int init() {

OrderID = GetTagNumber()

...

...

...

return( 0 ) ;

} // Fin de la fonction init :

Vous pouvez ensuite utiliser l'OrderID où bon vous semble pour étiqueter vos transactions, vos entrées de fichiers, etc.

//«« <<<>>> »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

int

GetTagNumber() { // Sets the SystemTag To....

int PullNumber = 0;

if( GlobalVariableCheck( "PullTag ( Do Not Delete )" ) ) {

PullNumber = GlobalVariableGet( "PullTag ( Do Not Delete )" );

} else {

PullNumber = 100;

} // End If, GlobalVariableCheck:

GlobalVariableSet( "PullTag ( Do Not Delete )", PullNumber + 1 );

if( GlobalVariableGet( "PullTag ( Do Not Delete )" ) > 999 ) {

GlobalVariableSet( "PullTag ( Do Not Delete )", 100 );

} // End If, GlobalVariableSet:

return( PullNumber );

} // End Function, GetTagNumber:

La variable OrderID doit être déclarée en dehors de la fonction init() afin que le reste de votre programme puisse voir sa valeur.

Vous pouvez modifier les limites inférieure et supérieure (100 - 999) comme vous le souhaitez ou supprimer la limite supérieure et elle continuera à augmenter sans être réinitialisée.

La raison du nom de la variable ... "PullTag ( Do Not Delete )" ... est que vous pouvez maintenant visualiser et supprimer les variables globales en dehors de l'EA. La mention "Ne pas supprimer" est un message d'avertissement qui s'affiche lorsque vous visualisez vos variables globales. Si vous supprimez la variable PullTag, elle redémarrera à 100 au prochain démarrage de l'EA. Les variables globales conservent leur valeur même lorsque vous éteignez votre poste de travail.

Le CockeyedCowboy

Comme toujours, j'en dis trop.

 

...juste au moment où je me demandais pourquoi les SL/TP n'apparaissaient pas dans l'historique. Merci de votre perspicacité ! Je vais l'intégrer dans mon code. Merci beaucoup d'être une ressource si précieuse !

 

Nic

Si vous ouvrez la fenêtre de votre terminal de trading et que vous cliquez sur l'onglet Historique du compte,> cliquez avec le bouton droit de la souris sur n'importe quelle zone du terminal,> cliquez sur l'intitulé du menu> Commentaires. Vous serez en mesure de voir vos commentaires et tous les commentaires ajoutés par votre courtier (ils sont généralement dans [ .... ] ) dans la fenêtre de votre terminal.

Le CockeyedCowboy

 

Oui... J'ai remarqué que tous les TP/SL sont ajoutés comme [tp][sl]. J'aime mieux votre code.

 

Que s'est-il passé avec le gourou des codeurs ? Que s'est-il passé ? J'ai téléchargé votre dernière version de l'ea ema cross au post 369 ,vous voyez ce qui se passe avec le test grv mais dites-moi pourquoi

Dossiers :
1_4.gif  8 kb
 

Les gars, s'il vous plaît,

aidez-moi sur un point. Pourquoi l'option REVERSAL est incluse dans cet EA ? Je ne comprends pas pourquoi trader contre le point de croisement des deux EMA...

Merci...

Jusqu'à présent avec REVERSAL true = j'ai gagné plus de 100 pips mais c'est fou. Je veux dire que lorsque le point de croisement des EMA apparaît, cet EA ouvrira un trade absolument opposé et vous perdrez de l'argent...

 

pro-trend vs contre-trend

glader:
Les gars, s'il vous plaît,

aidez-moi sur un point. Pourquoi l'option REVERSAL est incluse dans cet EA ? Je ne comprends pas pourquoi trader contre le point de croisement des deux EMA...

Merci...

Jusqu'à présent avec REVERSAL true = j'ai gagné plus de 100 pips mais c'est fou. Je veux dire que lorsque le point de croisement de l'EMA apparaît, cet EA ouvrira un trade absolument opposé et vous perdrez de l'argent...

Eh bien, vous pouvez choisir de travailler en pro-trend.

IMHO, dans la contre-tendance nous ouvrons la position au meilleur prix et supportons quelques pertes au début puis nous gagnons le montant maximum que nous pouvons gagner !

 

données insuffisantes !

Audio:
Que s'est-il passé avec le gourou des codeurs ? Que s'est-il passé ? J'ai téléchargé votre dernière version de l'ea ema cross au poste 369, vous avez vu ce qui s'est passé avec le test grv mais dites-moi pourquoi.

Audio,

S'il vous plaît ne pleurez pas .

Je pense que vous n'avez pas assez de données historiques.

Jetez un coup d'oeil à mon test arrière et mon test avant !

Dossiers :