Questions des débutants MQL5 MT5 MetaTrader 5 - page 534
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
Vladimir, merci pour la réponse à la première question, ces fonctionnalités me manquaient.
J'ai mis un seul et même indicateur dans MT4 et dans MT5 (bien sûr, le code est adapté à chaque plateforme).
Jusqu'à la barre de zéro, leurs valeurs sont les mêmes, donc apparemment d'une extrémité ... :)
Et lorsque l'on désactive le calcul sur la barre actuelle dans MT4, rien n'est dessiné sous la barre actuelle, dans MT5 - valeurs erronées.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Questions des débutants
Karputov Vladimir, 2016.03.08 15:13
... Pour le débogage, il faut vérifier quelle valeur est contenue dans le tableau de la série temporelle time[i] - afin de comprendre à quelle extrémité vous commencez le calcul des barres et où vous avez une barre "zéro".
Et comment effectuer un tel contrôle ?
Dans MetaEditore, ajoutez un point d'arrêt et commencez à déboguer. Lorsque le point d'arrêt est arrêté, ajoutez time[0] à l'observation :
Dans MetaEditore, ajoutez un point d'arrêt et commencez à déboguer. Lorsque le point d'arrêt est arrêté, ajoutez time[0] à l'observation :
MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1 : time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00:00
MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00
Inséré dans le code MT5ArraySetAsSeries(time,true) ;
Sortie maintenant :
MT5 2016.03.08 18:45:05.402 mvt_Vlt (EURUSD,H1) time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 2010.01.04 00:00:00
Et les tableaux de prix aussi ?
J'ai déjà mis la sortie dans le code
MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1 : time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00
Que dois-je faire maintenant ?
Dans les deux versions de l'indicateur, ajoutezArraySetAsSeries- pour les tableaux que vous utilisez pour vos calculs : high[], low[] et temporairement pour le tableau time[] - cela vous aidera à comprendre où se trouve la barre "zéro". Ainsi, la barre "zéro" dans les deux versions sera du même côté du graphique (droite ou gauche - selon ce que vous avez défini dans ArraySetAsSeries), et vous obtiendrez la même partie de calcul de l'indicateur.
Ajouté : pendant que je tapais, vous avez tâtonné dans le bon sens :)
Ajouté : pendant que je tapais, vous avez trouvé le bon chemin :)
Je l'ai collé dans le code MT5 :
C'est en train de sortir :
Il nesort queExtCalcVlBuffer, mais la moyenne et la déviation ne comptent pas...
Et ça sort toujours sur la barre actuelle, alors que ça ne devrait pas.
...
Et il s'affiche toujours sur la barre actuelle, alors qu'il ne devrait pas.
Pourquoi ne le ferait-elle pas ?
Je l'ai désactivé i<rates_total-1
POURQUOI ? !
Vous n'avez pas besoin d'utiliser la valeur actuelle, cela ne fera que charger le processeur en vain et vous n'avez tout simplement pas besoin de cette valeur.
Vous devez le préciser tout de suite :) .
La situation est la suivante : s'il y a une barre dans le graphique, elle correspond à une cellule dans le tampon de l'indicateur. Tant que vous n'écrivez pas quelque chose dans cette cellule, cette cellule stockera des déchets.