Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Bien sûr qu'il devrait, ce sont tous des entiers, pas un type séparé.
Un petit conseil.
Bien entendu, il est souhaitable de ne pas réécrire la stratégie pour le testeur. Une fois écrite, la stratégie doit fonctionner dans le testeur et sans lui (dans le monde réel).
Cela peut être fait avec l'aide des bibliothèques.
1. Toutes les fonctions liées au commerce, changer un peu leurs noms (mon... - pas très bon, peut-être mieux _....).
2. Créez 2 bibliothèques. Le premier contient du code pour les tests (sans envoyer réellement des ordres), le second ne fait que dupliquer les paramètres dans les appels de fonctions standard. Le changement de travail/essai se fait simplement en remplaçant la bibliothèque.
Bien sûr, nous pourrions tout mettre dans une seule bibliothèque et introduire un paramètre global pour le changement, mais c'est probablement inutile.
Et il serait merveilleux d'introduire dans MT une fonction supplémentaire, qui, à mon avis, simplifierait radicalement l'écriture d'un tel testeur - la fonction de réglage de la dernière barre actuelle.
Supposons que nous ayons 1000 barres dans l'historique sur lequel nous effectuons le test.
Définissons la barre 200 comme la dernière et utilisons Close[200] au lieu de Close[0]. Cette fonctionnalité devrait fonctionner dans toutes les fonctions intégrées.
Le testeur ressemblera alors à une boucle sur le numéro de la barre dans laquelle cette valeur est définie (la dernière barre du test) et l'appel de la fonction start dans la stratégie.
En fait, ce n'est pas si simple :))
J'ai besoin de plus de points ...
L'expression "code pour le test" est-elle un code pour le testeur ou pour l'EA ? Soyez plus précis.
Cela aussi
Nous définissons 200 barres comme la dernière, alors au lieu de Close[0] Close[200] est utilisé partout.
Et cette fic devrait fonctionner (affecter) dans toutes les fonctions en ligne.
Tout code EA est facilement converti en code pour un indicateur :
Nous prenons le bloc start() de l'EA, ajoutons une construction for (testerconter=Bars;testerconter>=0;testerconter--)
{
le fermer avec une parenthèse à la fin
}
Remplacez tous les endroits qui utilisent des références par [testerconter+reference].
Voici un exemple tiré de l'Expert Advisor MACD_sample.mq4 intégré.
Code source :
Modifié
Comme vous pouvez le constater, il n'y a aucun problème. Si vous le souhaitez, vous pouvez toujours redéfinir testerconter=0 si
est exécuté dans le corps de l'Expert Advisor, et non dans le corps de l'Expert Advisor .
Dans la première bibliothèque, la fonction
émule l'exécution de l'ordre dans le testeur, c'est-à-dire qu'il l'ajoute à la liste des ordres dans le testeur et n'envoie pas l'ordre au serveur.
Dans la deuxième bibliothèque, cette fonction appelle simplement la fonction embarquée
Nous prenons le bloc start() de l'EA, ajoutons une construction for(testerconter=Bars;testerconter>=0;testerconter--)
{
le fermer avec une parenthèse à la fin
}
Remplacer tous les endroits qui utilisent des références par [testerconter+reference].
C'est ce que je veux dire.
Il serait plus facile d'appeler la fonction qui fixe la valeur de la variable testerconter dans MT (0 par défaut) au lieu de la remplacer et cette substitution ([testerconter+référence]) serait faite dans MT elle-même.
Nous n'aurions alors pas à effectuer ces substitutions dans la stratégie elle-même.
Veuillez remplacer pre par. pré à citer dans "i.e. disons que nous avons 1000 barres dans ...".
sinon la page disparaît à nouveau.
à propos de
Ma conclusion : il semble que nous parlions de la même chose. Nous pouvons oublier la demande actuelle de la dernière barre pour l'instant -
Je dois essayer de le faire de cette façon.
Pour l'instant, il suffit de redéfinir les fonctions commerciales standard, avec le préfixe _. c'est encore plus respectable :)
Je soupçonne que vous avez testé "avec beaucoup de sang", c'est-à-dire que vous n'avez pas redéfini les fonctions commerciales. Et chaque nouveau test
Chaque nouveau test nécessite l'écriture d'un nouvel indicateur de test. Mais vous ne devez le faire qu'une seule fois - et aucun problème par la suite.
Si je me trompe - affichez les fonctions - ne soyez pas avare.
Il semble que l'on ne puisse pasappeler directement lafonction de démarrage depuis le Conseiller Expert.
Par conséquent, il serait préférable d'écrire le code de l'Expert Advisor dans une bibliothèque et d'y avoir les fonctions _init, _deinit et _start.
Dans le conseiller expert, nous allons écrire
Les paramètres ne sont pas très clairs, cependant.
Comme cela se fait dans Omega :
Ce n'est pas très joli, mais ça va marcher.
En général, un système de traitement des événements fait maison fonctionnera :))
Il traite ce code - insère toutes sortes d'inclusions, de tableaux de travail pour le solde, les capitaux propres, etc,
renomme les variables Lots en _Lots (et autres). En général, il fait le gros du travail.
Je n'aurai qu'à classer la sortie et partir. :)
Méthode de convoyage simple.
Je soupçonne que vous avez testé "avec beaucoup de sang", c'est-à-dire que vous n'avez pas redéfini les fonctions commerciales. Et chaque nouveau test vous obligeait à écrire un nouvel indicateur de test. Mais vous ne devez le faire qu'une fois - et pas de problème. Si je me trompe, vous pouvez poster des fonctions - ne soyez pas avare.
Tout à fait exact. "Gros sang." Il n'y a pas eu de remplacements. J'ai déjà réalisé de tels testeurs dans MT3.x. Le MQL4 est aussi différent du MQL2 que le ciel l'est de la terre. Cependant, je n'ai pas profité de MQL4. Je suis mentalement stupéfait. J'aurais dû réfléchir d'abord, et travailler ensuite.
La femme a reçu le conseil suivant : "Pensez d'abord, parlez ensuite". La femme a répondu : "Comment puis-je penser à ce que je n'ai pas encore dit".