Regardez la capture d'écran de Comment après avoir fermé le terminal et l'avoir ouvert après 1 minute.
Nombre d'éléments initialisés et que le premier, deuxième, troisième et quatrième élément du tampon est vide.
L'indicateur ne compte que le 0e tampon. Alors pourquoi 2 bougies ?
Parce que lorsque vous analysez pour une nouvelle barre, vous ne vérifiez pas le nombre de barres, mais seulement le temps. Lorsque vous démarrez le terminal ou que vous rompez la connexion avec le serveur pendant l'opération, avant que les barres manquantes (à l'historique complet) n'arrivent, un tic arrive. À ce tick, une nouvelle bougie est créée, mais il y a un écart (historique manquant) entre celle-ci et l'historique dans le terminal, qui sera téléchargé du serveur et inséré dans le système, et comme vous n'analysez pas le nombre de barres, vous penserez qu'il n'y a pas de nouvelle barre dans le prochain calcul, et c'est à ce moment-là que la deuxième bougie apparaît. Après l'ouverture d'un nouveau bar, il disparaîtra.
mql5: Car lorsque vous analysez pour une nouvelle barre, vous ne vérifiez pas le nombre de barres, mais vous vous limitez à vérifier le temps. Lorsque vous démarrez le terminal ou que vous rompez la connexion avec le serveur pendant l'opération, un tick vient avant l'arrivée des barres manquantes (à l'historique complet). À ce moment-là, une nouvelle bougie est créée, mais il y a un écart (historique manquant) entre elle et l'historique du terminal, qui sera téléchargé du serveur et inséré à sa place. Après l'ouverture d'un nouveau bar, il disparaîtra.
Et cela n'a pas d'importance que dans deinit la mise à zéro se produise lorsque le terminal est fermé?
022:52:04.765 Custom indicator Test\test EURUSD.z,M1: loaded successfully
022:52:04.795 test EURUSD.z,M1: initialized
022:52:04.795 test EURUSD.z,M1: rates_total = 75183022:52:11.902 test EURUSD.z,M1: rates_total = 75184022:52:28.712 test EURUSD.z,M1: uninit reason 9022:52:28.712 test EURUSD.z,M1: OnDeinit сработал 75184022:52:28.832 Custom indicator test EURUSD.z,M1: removed
022:57:10.366 Custom indicator Test\test EURUSD.z,M1: loaded successfully
022:57:10.396 test EURUSD.z,M1: initialized
022:57:10.396 test EURUSD.z,M1: rates_total = 75184022:57:14.972 test EURUSD.z,M1: rates_total = 75185022:57:59.167 test EURUSD.z,M1: rates_total = 75190
// Локальное время наверное отстаёт от серверного на несколько секунд. На сервере было уже 58 минут.
022:58:34.237 test EURUSD.z,M1: uninit reason 1022:58:34.237 test EURUSD.z,M1: OnDeinit сработал 75190022:58:34.247 Custom indicator test EURUSD.z,M1: removed
Peut-être que cela vous dira d'où vient le problème...
Veuillez demander aux développeurs une réponse simple.
Lorsque le terminal est fermé, la fonction DeInit() est-elle exécutée dans les programmes attachés à la carte ?
A proprement parler, non.
OnDeinit est exécuté. DeInit ne sera exécuté que si vous l'appelez explicitement depuis OnDeinit.
Si vous faites référence à l'ancienne fonction deinit, n'oubliez pas que les noms de fonction sont sensibles à la casse. C'est-à-dire que deInit est une fonction inconnue, deinit est un point d'entrée standard sur la désinitialisation (comme OnDeinit).
Et cela n'a pas d'importance que dans deinit la mise à zéro a lieu lorsque le terminal est fermé ?
Qui s'en soucie ? Lorsque vous fermez le terminal, ces tampons ne sont plus nécessaires, car ils sont immédiatement libérés lorsque le programme est déchargé, ce qui se produit immédiatement après OnDeinit.
Essayez simplement de changer la période de temps. OnDeinit fonctionnera, les tampons resteront (car le programme n'est pas déchargé dans ce cas), mais personne ne garantit leur contenu de la "vie antérieure".
Lisez enfin la documentation ! https://docs.mql4.com/ru/runtime/running et https://docs.mql4.com/ru/runtime/event _fire#deinit
Qui s'en soucie ? Lorsque vous fermez le terminal, ces tampons ne sont plus nécessaires, car ils sont immédiatement libérés lorsque le programme est déchargé, ce qui se produit immédiatement après OnDeinit.
Essayez simplement de changer la période de temps. OnDeinit fonctionnera, les tampons resteront (puisque le déchargement du programme n'a pas lieu dans ce cas), mais personne ne garantit leur contenu de la "vie antérieure".
Lisez enfin la documentation ! https://docs.mql4.com/ru/runtime/running et https://docs.mql4.com/ru/runtime/event _fire#deinit
Donc, dans mon cas, les tampons sont déjà divisés lorsque le graphique est rouvert ?
eevviill: Donc dans mon cas, les tampons sont bifurqués lorsque le graphique est rouvert ?
Vous n'avez pas de bifurcation de tampon.
C'est ainsi que vous remplissez vous-même votre tampon. La première fois, lorsque vous le dessinez ; la deuxième fois, lorsque vous obtenez une partie des données. Les deux fois, vous opérez avec la même valeur Time[0].
C'est ainsi que vous remplissez vous-même votre tampon. La première fois au moment du rendu et la seconde à l'arrivée des données. Les deux fois, vous opérez avec la même valeur Time[0].
OK.
Veuillez corriger l'aide en anglais et c'est tout.
L'aide en anglais indique également queArrayInitialize ne renvoie rien.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Développeurs, vous avez une erreur quelque part.
Regardez la capture d'écran de Comment après avoir fermé le terminal et l'avoir ouvert après 1 minute.
Nombre d'éléments initialisés et que le premier, deuxième, troisième et quatrième élément du tampon est vide.
L'indicateur ne compte que le 0e tampon. Alors pourquoi 2 bougies ?
Développeurs, vous avez une erreur quelque part.
Regardez la capture d'écran de Comment après avoir fermé le terminal et l'avoir ouvert après 1 minute.
Nombre d'éléments initialisés et que le premier, deuxième, troisième et quatrième élément du tampon est vide.
L'indicateur ne compte que le 0e tampon. Alors pourquoi 2 bougies ?
Car lorsque vous analysez pour une nouvelle barre, vous ne vérifiez pas le nombre de barres, mais vous vous limitez à vérifier le temps. Lorsque vous démarrez le terminal ou que vous rompez la connexion avec le serveur pendant l'opération, un tick vient avant l'arrivée des barres manquantes (à l'historique complet). À ce moment-là, une nouvelle bougie est créée, mais il y a un écart (historique manquant) entre elle et l'historique du terminal, qui sera téléchargé du serveur et inséré à sa place. Après l'ouverture d'un nouveau bar, il disparaîtra.
Et cela n'a pas d'importance que dans deinit la mise à zéro se produise lorsque le terminal est fermé?
Vasily, exécutez un indicateur de test qui imprime le nombre de barres.
Voici ce qu'il imprime dans le journal.
Peut-être que cela vous dira d'où vient le problème...
Veuillez demander aux développeurs une réponse simple.
Lorsque le terminal est fermé, la fonction DeInit() est-elle exécutée dans les programmes attachés à la carte ?
A proprement parler, non.
OnDeinit est exécuté. DeInit ne sera exécuté que si vous l'appelez explicitement depuis OnDeinit.
Si vous faites référence à l'ancienne fonction deinit, n'oubliez pas que les noms de fonction sont sensibles à la casse. C'est-à-dire que deInit est une fonction inconnue, deinit est un point d'entrée standard sur la désinitialisation (comme OnDeinit).
Et cela n'a pas d'importance que dans deinit la mise à zéro a lieu lorsque le terminal est fermé ?
Qui s'en soucie ? Lorsque vous fermez le terminal, ces tampons ne sont plus nécessaires, car ils sont immédiatement libérés lorsque le programme est déchargé, ce qui se produit immédiatement après OnDeinit.
Essayez simplement de changer la période de temps. OnDeinit fonctionnera, les tampons resteront (car le programme n'est pas déchargé dans ce cas), mais personne ne garantit leur contenu de la "vie antérieure".
Lisez enfin la documentation ! https://docs.mql4.com/ru/runtime/running et https://docs.mql4.com/ru/runtime/event _fire#deinit
Qui s'en soucie ? Lorsque vous fermez le terminal, ces tampons ne sont plus nécessaires, car ils sont immédiatement libérés lorsque le programme est déchargé, ce qui se produit immédiatement après OnDeinit.
Essayez simplement de changer la période de temps. OnDeinit fonctionnera, les tampons resteront (puisque le déchargement du programme n'a pas lieu dans ce cas), mais personne ne garantit leur contenu de la "vie antérieure".
Lisez enfin la documentation ! https://docs.mql4.com/ru/runtime/running et https://docs.mql4.com/ru/runtime/event _fire#deinit
Donc dans mon cas, les tampons sont bifurqués lorsque le graphique est rouvert ?
Vous n'avez pas de bifurcation de tampon.
C'est ainsi que vous remplissez vous-même votre tampon. La première fois, lorsque vous le dessinez ; la deuxième fois, lorsque vous obtenez une partie des données. Les deux fois, vous opérez avec la même valeur Time[0].
Il n'y a pas de partage de la mémoire tampon.
C'est ainsi que vous remplissez vous-même votre tampon. La première fois au moment du rendu et la seconde à l'arrivée des données. Les deux fois, vous opérez avec la même valeur Time[0].
OK.
Veuillez corriger l'aide en anglais et c'est tout.
L'aide en anglais indique également queArrayInitialize ne renvoie rien.