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
Existe-t-il un lien permettant d'utiliser correctement la fonction iCustom() en tenant compte de ces nuances ? Parce que je suis fatigué de le vérifier et de chercher ce qui ne va pas.
Consultez l'article Indicateur par indicateur dans MQL5:
Est-il nécessaire d'initialiser les tampons indicateurs ?
Les tableaux dans MQL5 ne sont pas initialisés par défaut avec une valeur quelconque, et cela s'applique certainement aux tableaux qui sont assignés aux tampons d'indicateurs en utilisant SetIndexBuffer(). Si un tableau est un tampon indicateur, sa taille dépendra du paramètre rates_total du gestionnaire OnCalculate().
On peut être tenté d'initialiser tous les tampons d'indicateurs avec la valeur vide EMPTY_VALUE en utilisant la fonction ArrayInitialize(), par exemple, une fois au début de OnCalculate().
...
Cher Rosh - J'ai lu cet article, mais je n'ai pas pu l'appliquer, car j'utilise la deuxième forme de l'appel OnCalculate, parce que j'ai besoin du temps de chaque barre, et pas seulement du prix.
La raison en est qu'il y a des déchets dans le tampon de l'indicateur. Et l'initialisation du tampon avec des valeurs vides ne donne rien, car dans le testeur, lorsque de nouvelles données apparaissent, le tampon de l'indicateur grandit automatiquement et au début il contient vraiment des déchets, et si le tampon n'est pas rempli à chaque barre, les déchets restent là.
Mon EA fonctionne sur le timer - il est beaucoup plus rapide que OnTick() pour une raison quelconque. Et je peux le tester le week-end.
J'essaie de savoir ce qui se trouve dans chaque tampon d'indicateur. La complexité réside dans le fait qu'un indicateur en appelle un autre en fonction de ses valeurs.
J'essaierai de sélectionner une période claire et de définir la taille des tampons. Je vais déterminer la cause des faux positifs dans le testeur. Eh - c'est dommage que le testeur ne dispose pas d'un débogueur - tout le monde l'attendait.
J'ai un EA qui fonctionne sur un timer - il est beaucoup plus rapide que OnTick() pour une raison quelconque. Vous pouvez également le tester le week-end.
Il y a un article testeur de base dans MetaTrader 5 où il est montré :
Nous avons mesuré le temps de test pour différentes valeurs du paramètre de la minuterie (la période de l'événement de la minuterie). Un graphique montrant la dépendance du temps d'essai T par rapport à la valeur de périodicité a été tracé sur les données obtenues.
Il est clair que plus le paramètre du timer est petit lors de l'initialisation du timer par la fonction EventSetTimer(timer), plus la période entre les appels du handler OnTimer() est courte et plus le temps de test T dans les mêmes conditions est long.Si de véritables déchets apparaissent dans iCustom(), le problème se situe certainement dans l'initialisation.
Initialiser le tampon avec zéro plutôt que Empty_Value. Lorsque chaque nouvelle barre apparaît, n'oubliez pas de mettre à zéro la cellule tampon correspondante.
Si de véritables déchets apparaissent dans iCustom(), le problème se situe certainement dans l'initialisation.
Initialiser le tampon avec zéro au lieu de Empty_Value. Lorsque chaque nouvelle barre apparaît, n'oubliez pas de mettre à zéro la cellule tampon correspondante.
Oui, je l'ai fait. Dans chaque indicateur, je m'assure d'abord de remettre les valeurs à zéro - ce qui permet de se débarrasser des déchets.
for(i=first;i<rates_total-1 && !IsStopped();i++)
{EnterBuffer[i]=0 ;
EditBuffer[i]=0 ;
ExitBuffer[i]=0 ;
....
}
Maintenant, je le teste sur le graphique en minutes. Sur le graphique horaire, tout fonctionne comme sur des roulettes. )))) J'ai quelques questions concernant l'EA sur le graphique 1 minute.
Comme prévu - pas d'initialisation. Dans l'indicateur FB.
Tout d'abord, au début de la fonction OnCalculate nous devons ajouter l'initialisation des tableaux
Parce que l'initialisation que vous avez, ne fonctionne pas toujours...
Deuxièmement, dans le cycle de calcul principal, au tout début du cycle, ajouter l'initialisation des éléments nuls des tableaux (car lorsqu'une nouvelle barre est ajoutée au graphique, les tableaux d'indicateurs sont automatiquement augmentés, et ces nouveaux éléments ne sont initialisés d'aucune manière, ni explicitement parce que prev_calculated>0, ni implicitement).
En outre, dans CustomOptimisation.mqh, dans la classe TBalanceSlopeCriterion, un destructeur doit être ajouté (cela n'affecte pas le résultat, mais entraîne une fuite de mémoire pendant les tests).
J'ai eu un miracle avec le testeur aussi.
Je teste un EA avec un seul nom : le testeur dessine des objets.
...j'ai sauvegardé et compilé l'EA sous un autre nom::pas d'objets
Mais j'ai remarqué que j'ai déplacé le terminal sur un autre disque.