Questions des débutants MQL5 MT5 MetaTrader 5 - page 578
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
DataCandles est une structure. Le tableau dans lequel nous écrivons les chandeliers de l'historique est array[]. Nous devons donc en faire une série temporelle pour que son indexation coïncide avec l'indexation des bougies sur le graphique. C'est-à-dire que la cellule zéro du tableau[] correspondra aux chandeliers les plus proches de la date actuelle.
C'est-à-dire que 1. nous copions les chandeliers dans le tableau array[], 2. nous en faisons une série temporelle, puis nous lisons les valeurs de celle-ci dans la structure.
Vous pouvez faire sans array[] - juste écrire les données directement du graphique dans la structure, mais j'ai suggéré ceci pour la compatibilité avec Five - il permet de copier directement seulement dans l'indicateur en utilisant high[i], low[i] et d'autres données, mais dans le script ou Expert Advisor, nous devrons d'abord copier l'intervalle historique nécessaire dans le tableau, ce que j'ai fait.
Alerte (série) ;
comme ça ?
Les deux alertes retournent toujours faux
Alerte (série) ;
comme ça ?
Les deux alertes retournent toujours faux
Il s'agit donc d'un bogue qui doit être signalé à la rubrique "Erreurs, bogues, questions".
Voici un script de vérification, il montre le temps des chandeliers copiés dans les cellules zéro et dernière du tableau[] :
Il s'agit donc d'un bogue qui doit être signalé à la rubrique "Erreurs, bogues, questions".
Voici un script de vérification, il montre le temps des chandeliers copiés dans les cellules zéro et dernière du tableau[] :
Ça donne ça :
Le tableau est une série : false
time array[0] : 2016.05.12 21:00
time array[9] : 2016.05.12 12:00
Il en ressort ceci :
Le tableau est une série : false
time array[0] : 2016.05.12 21:00
time array[9] : 2016.05.12 12:00
Je l'ai vérifié - toujours faux, mais le temps est correct : si au début du script sélectionner Array array comme série temporelle "Oui", alors :
Si vous sélectionnez "Non", alors :
les temps des chandeliers écrits dans le tableau sont inversés, ce qui signifie que ArraySetAsSeriess() fonctionne correctement, mais pas ArrayIsSeries(), qui sort toujours false, ce que j'ai déjà écrit dans le fil de discussion sur les bugs ci-dessus.
Oh, cette programmation. Plus on avance dans les bois....
Comprenez que vous n'avez pas besoin de connaître la direction du réseau. L'algorithme recherche les répétitions. L'ordre dans lequel les barres sont traitées importe donc peu.
vous avez besoin. Parce qu'alors je dois trouver quelles bougies ont formé une correspondance et prendre le prix bas de la plus proche du prix actuel.
Il existe pour cela une heure de bougie dans la structure, grâce à laquelle vous pouvez trouver la bougie la plus proche de l'heure dont vous avez besoin.
Et vous n'avez pas besoin de sortir les numéros des chandeliers - ils ne coïncident pas avec les numéros des barres réelles. Parce que nous remplissons le tableau, et les index dans le tableau n'appartiennent qu'au numéro du chandelier dans le tableau, pas sur le graphique.
J'ai vérifié ce qu'il produit - toujours faux, mais le temps est correct : si vous sélectionnez Array array comme série temporelle "Oui" lors de l'exécution du script, alors :
Si vous sélectionnez "Non", alors :
Les temps des chandeliers écrits dans le tableau sont inversés, ce qui signifie que ArraySetAsSeriess() fonctionne correctement, mais pas ArrayIsSeries(), qui sort toujours false, ce que j'ai déjà écrit dans le fil de discussion sur les bugs ci-dessus.
J'ai légèrement modifié le code :
ArraySetAsSeries(array,true) ; //là, il suffit de mettre true
et a ensuite ajouté des nombres de chandeliers pour l'auto-vérification :
Alert("Array is series : ",ArrayIsSeries(array),
"\nCandle "+IntegerToString(0,2, '0')+" time array[0] : ",TimeToString(array[0].time,TIME_DATE|TIME_MINUTES),
"\NSwitch "+IntegerToString(searchperiod-1,2, '0')+" time array[",string(searchperiod-1),"] :",TimeToString(array[ArraySize(array)-1].time,TIME_DATE|TIME_MINUTES)) ;
Il donne le résultat suivant :
Le tableau est une série : false
Candle 00 time array[0] : 2016.05.12 22:00
Bougie 09 time array[9] : 2016.05.12 13:00
Pour ce faire, il existe une heure de bougie dans la structure, grâce à laquelle vous pouvez trouver la bougie la plus proche de l'heure dont vous avez besoin.
J'ai changé le code un peu :
ArraySetAsSeries(array,true) ; //là, il suffit de mettre true
et a ensuite ajouté des nombres de chandeliers pour l'auto-vérification :
Alert("Array is series : ",ArrayIsSeries(array),
"\nCandle "+IntegerToString(0,2, '0')+" time array[0] : ",TimeToString(array[0].time,TIME_DATE|TIME_MINUTES),
"\NSwitch "+IntegerToString(searchperiod-1,2, '0')+" time array[",string(searchperiod-1),"] :",TimeToString(array[ArraySize(array)-1].time,TIME_DATE|TIME_MINUTES)) ;
Il donne le résultat suivant :
Le tableau est une série : false
Candle 00 time array[0] : 2016.05.12 22:00
Bougie 09 time array[9] : 2016.05.12 13:00