Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 848
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
Quels calculs ?
Compris, question supprimée, j'ai entendu votre message et réalisé que déclarer une variable dans la zone OnTick() est mauvais, et que les calculs peuvent être effectués à l'intérieur de la boucle également.
Fait, tout fonctionne merci, maintenant je dois juste obtenir les prix. Merci beaucoup.
Compris, question supprimée, j'ai entendu votre message et réalisé que déclarer une variable dans la zone OnTick() est mauvais, et que les calculs peuvent être effectués à l'intérieur de la boucle également.
Fait, tout fonctionne merci, maintenant je dois juste obtenir les prix. Merci beaucoup.
Il ne s'agit pas de calculs à l'intérieur de la boucle, mais de l'obtention des données nécessaires, ce pour quoi cette boucle est conçue.
Mais les calculs à l'intérieur de la boucle doivent être évités.
En fait, vous devez reconsidérer votre approche dès maintenant. Vous obtenez des données dans la boucle. Vous interrompez la boucle après la première donnée rencontrée. Tout cela s'inscrit dans le cadre du concept de fonction, qui consiste à renvoyer le résultat demandé.
Faites de toute la boucle une fonction et renvoyez le numéro de la barre si elle est trouvée ou WRONG_VALUE - si elle n'est pas trouvée.
puis : n=Func();
et ensuite utiliser n pour son usage prévu s'il n'est pas égal à WRONG_VALUE. Nommez la fonction avec un nom "parlant". Et le code dans OnTick() sera plus court et la logique sera plus claire - il ne sera pas surchargé avec quelque chose d'inutile.
Formez toute la boucle dans une fonction, et renvoyez le numéro de barre si vous le trouvez, ou WRONG_VALUE si vous ne le trouvez pas.
Ensuite : n=Func();
et ensuite utiliser n comme prévu, s'il n'est pas égal à WRONG_VALUE. Donnez à la fonction un nom "parlant". Et le code dans OnTick() sera plus court et la logique sera plus claire - il ne sera pas surchargé de choses inutiles.
On vit et on apprend. Très intéressant, je vais l'essayer dans la soirée. Entre-temps, à titre de rapport et avec une grande gratitude envers vous, j'ai obtenu les prix de...... C'était une bonne journée :-))
Les gars qui peuvent aider avec cette question https://www.mql5.com/ru/forum/160683/page845#comment_11741857 - est-ce que le commentaire est déjà allé loin ? Il y a aussi une question : comment créer une boucle qui peut fonctionner dans les deux sens, si vous avez besoin d'une exécution incrémentale, si vous avez besoin d'une exécution décrémentale ? Voici un exemple de fonctionnement.
Si (quelque chose s'est produit) {assignation de valeurs aux variables} alors la boucle sera appelée et elle contiendra un corps, dont les calculs dépendront des valeurs de la boucle
for( selon les variables ci-dessus incrémenter ou décrémenter)
{ corps }
Il n'y a aucun moyen de dupliquer la condition, elle doit être spécifiée une fois dans la boucle. Est-il possible de le faire ?
Encore une fois, bonsoir. Je n'en ai pas encore fait une fonction, mais j'ai une nouvelle question. Dans l'image ci-jointe vous pouvez voir qu'il y a un nouveau signal (Flèche), mais dans les commentaires vous pouvez voir que l'EA ne l'accepte pas, il considère toujours celui d'il y a 11 bougies comme la Flèche Ultime à la hausse.
https://www.mql5.com/ru/charts/10181812/eurusd-h1-alpari-international
Il y a 11 bougies.
Il s'avère que l'indicateur a déjà donné un nouveau signal (il fonctionne parallèlement à l'EA sur le graphique), il n'y a pas d'événements dans l'EA autres que OnTick, et l'EA ne voit pas le signal.
Encore une fois, bonsoir. Je n'en ai pas encore fait une fonction, mais j'ai une nouvelle question. Dans l'image ci-jointe vous pouvez voir qu'il y a un nouveau signal (Flèche), mais dans les commentaires vous pouvez voir que l'EA ne l'accepte pas, il considère toujours celui d'il y a 11 bougies comme la Flèche Ultime à la hausse.
https://www.mql5.com/ru/charts/10181812/eurusd-h1-alpari-international
Lorsque vous trouvez une valeur tampon non vide, imprimez dans le journal le temps correspondant à la barre n. Vous verrez quelle barre il trouve. Il se pourrait bien que vous lisiez le tampon à l'envers.
Veuillez indiquer pourquoi l'EA ne voit pas la flèche, elle est déjà dans le tampon de l'indicateur, à en juger par la fenêtre de données, l'EA interroge OnTick, de quoi d'autre a-t-il besoin ? Code complet ci-dessus.
Lorsque vous trouvez une valeur tampon non vide, imprimez dans le journal le temps correspondant à la barre n. Il indiquera la barre qu'il a trouvée. Il se pourrait bien que vous lisiez le tampon à l'envers.
OK, c'est fait, l'heure indique l'heure correcte, l'heure d'ouverture de la bougie sur laquelle la flèche est placée. Code joint, image jointe.
si vous ne pouvez pas voir le journal dans l'image, voici quelques entrées extrêmes
2019.05.20 21:42:52.601 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:42:53.824 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:42:53.824 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:00.819 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:00.819 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.021 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.021 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.621 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:03.622 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:10.696 Test_iCustom (EURUSD,H1) Last_Arrow_Buy_volume = 1.11544, Last_Arrow_Buy_index = 11.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00
2019.05.20 21:43:10.696 Test_iCustom (EURUSD,H1) Last_Arrow_Sell_volume = 1.12112, Last_Arrow_Sell_index = 56.0, Last_Arrow_Buy_time = 2019.05.20 10:00:00