Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1884
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
Je ne discute pas. " Les gris sont présentés sur la photo de ce post.
Sans le matériel source, ce sont ceux
Eh bien, je parlais de "ces". Lorsque j'ai eu un débordement et que les indicateurs ne s'affichaient pas, je n'ai pas regardé ce qui était affiché dans le menu présenté dans la capture d'écran du post que vous avez mentionné. Je ne peux rien dire de sûr ici.
Mais si les indicateurs ne sont pas dans le navigateur, mais qu'ils sont dans le dossier, cela signifie que les nouveaux indicateurs n'apparaîtront pas dans le navigateur tant que certains des anciens indicateurs n'auront pas été supprimés du dossier.
Je suis passé par là, j'ai fait ça. Je ne suis pas le seul.
Je voulais contourner la nécessité de redimensionner manuellement un tableau dynamique en l'assignant simplement comme tampon indicateur. Mais je n'arrive pas à me débarrasser de ArrayResize() comme s'il s'agissait d'un tableau dynamique de tampon indicateur dont la taille doit être surveillée par le terminal lui-même et qui ne doit pas être redimensionné manuellement :
https://www.mql5.com/ru/docs/series/bufferdirection:
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
Nous allons sur https://www.mql5.com/ru/docs/array/arrayisdynamic, exécutons le code et découvrons soudainement que :
2022.01.24 21:25:27.543 t (NZDUSD,D1) 3. Vérification du tampon de l'indicateur :
2022.01.24 21:25:27.543 t (NZDUSD,D1) Taille avant libération de la mémoire = 7278
2022.01.24 21:25:27.543 t (NZDUSD,D1) C'est un tableau dynamique = Aucun
2022.01.24 21:25:27.543 t (NZDUSD,D1) Taille après libération de la mémoire = 0
en même temps :
Je regarde dans le livre - je vois une figue. Ou avons-nous été trompés pendant tout ce temps ?
Ou peut-être est-ce dynamique une fois (à la première initialisation) et puis c'est tout ?
Je n'arrive pas à me débarrasser de ArrayResize(), qui est censé être un tableau dynamique de tampons indicateurs dont la taille doit être contrôlée par le terminal lui-même et qui ne doit pas être redimensionné manuellement :
https://www.mql5.com/ru/docs/series/bufferdirection:
Nous allons sur https://www.mql5.com/ru/docs/array/arrayisdynamic, exécutons le code et découvrons soudainement que :
En même temps, il :
Je regarde dans le livre - je vois une figue. Ou avons-nous été trompés pendant tout ce temps ?
Ou peut-être est-ce dynamique une fois (à la première initialisation) et puis c'est tout ?
22:23:17.002 Dynamic EURCAD,H1 : +============================+
0 22:23:17.002 Dynamic EURCAD,H1 : 1. Vérification d'un tableau dynamique :
0 22:23:17.002 Dynamic EURCAD,H1 : Taille avant libération de la mémoire = 100
0 22:23:17.002 Dynamic EURCAD,H1 : C'est un tableau dynamique = Oui
0 22:23:17.002 Dynamic EURCAD,H1 : Taille après libération de la mémoire = 0
0 22:23:17.002 Dynamic EURCAD,H1 : 2. Vérification des tableaux statiques :
0 22:23:17.002 Dynamic EURCAD,H1 : Taille avant libération de la mémoire = 100
0 22:23:17.002 Dynamic EURCAD,H1 : C'est un tableau dynamique = Aucun
0 22:23:17.002 Dynamic EURCAD,H1 : Taille après libération de la mémoire = 0
0 22:23:17.002 Dynamic EURCAD,H1 : 3. Vérifiez le tampon de l'indicateur :
0 22:23:17.002 Dynamic EURCAD,H1 : Taille avant libération de la mémoire = 2725
0 22:23:17.002 Dynamic EURCAD,H1 : C'est un tableau dynamique = Oui
0 22:23:17.002 Dynamic EURCAD,H1 : Taille après libération de la mémoire = 0
0 22:23:24.754 Dynamic EURCAD,H1 : raison de désinit 1
0 22:23:24.758 Indicateur personnalisé Dynamic EURCAD,H1 : supprimé
C'est à 4.
Je voulais contourner la nécessité de redimensionner manuellement un tableau dynamique en l'assignant simplement comme tampon indicateur. Mais je n'arrive pas à me débarrasser de ArrayResize() comme s'il s'agissait d'un tableau dynamique de tampon indicateur dont la taille doit être surveillée par le terminal lui-même et qui ne doit pas être redimensionné manuellement :
https://www.mql5.com/ru/docs/series/bufferdirection:
Nous allons sur https://www.mql5.com/ru/docs/array/arrayisdynamic, exécutons le code et découvrons soudainement que :
En même temps, il :
Je regarde dans le livre - je vois une figue. Ou avons-nous été trompés pendant tout ce temps ?
Ou peut-être est-ce une dynamique ponctuelle (à la première initialisation) et c'est tout ?
oui, alors c'est ça :-)
...après SetIndexBuffer il est impossible d'utiliser ArrayResize et du point de vue du programme, le tableau est statique, avec une taille prédéfinie (contrôlée par l'extérieur).
22:23:17.002 Dynamic EURCAD,H1 : +============================+
0 22:23:17.002 Dynamic EURCAD,H1 : 1. Vérification d'un tableau dynamique :
0 22:23:17.002 Dynamic EURCAD,H1 : Taille avant libération de la mémoire = 100
0 22:23:17.002 Dynamic EURCAD,H1 : C'est un tableau dynamique = Oui
0 22:23:17.002 Dynamic EURCAD,H1 : Taille après libération de la mémoire = 0
0 22:23:17.002 Dynamic EURCAD,H1 : 2. Vérification des tableaux statiques :
0 22:23:17.002 Dynamic EURCAD,H1 : Taille avant libération de la mémoire = 100
0 22:23:17.002 Dynamic EURCAD,H1 : C'est un tableau dynamique = Aucun
0 22:23:17.002 Dynamic EURCAD,H1 : Taille après libération de la mémoire = 0
0 22:23:17.002 Dynamic EURCAD,H1 : 3. Vérifiez le tampon de l'indicateur :
0 22:23:17.002 Dynamic EURCAD,H1 : Taille avant libération de la mémoire = 2725
0 22:23:17.002 Dynamic EURCAD,H1 : C'est un tableau dynamique = Oui
0 22:23:17.002 Dynamic EURCAD,H1 : Taille après libération de la mémoire = 0
0 22:23:24.754 Dynamic EURCAD,H1 : raison de désinit 1
0 22:23:24.758 Indicateur personnalisé Dynamic EURCAD,H1 : supprimé
C'est à 4.
Fantastique ! Quelle est cette magie ? Je viens de vérifier sur EURCAD,H1 - encore non.
Et qu'est-ce que le 4 ? Il n'y a que trois points dans l'exemple.
Fantastique ! Quelle est cette magie ? Je viens de vérifier sur EURCAD,H1 - "Non" encore.
Et c'est quoi le 4? Il n'y a que trois points dans l'exemple.
Terminal MT4
Fantastique ! Quelle est la magie ? Je viens de vérifier sur EURCAD,H1 - "Non" encore.
Et c'est quoi le 4 ? Il n'y a que trois points dans l'exemple.
0 23:33:06.088 test (EURUSD,D1) +============================+
0 23:33:06.088 test (EURUSD,D1) 1. Vérification du tableau dynamique :
0 23:33:06.088 test (EURUSD,D1) Taille avant libération de la mémoire = 100
0 23:33:06.088 test (EURUSD,D1) Ceci est un tableau dynamique = Oui
0 23:33:06.088 test (EURUSD,D1) Taille après libération de la mémoire = 0
0 23:33:06.088 test (EURUSD,D1) 2. Test de réseau statique :
0 23:33:06.088 test (EURUSD,D1) Taille avant libération de la mémoire = 100
0 23:33:06.088 test (EURUSD,D1) Ceci est un tableau dynamique = None
0 23:33:06.088 test (EURUSD,D1) Taille après libération de la mémoire = 100
0 23:33:06.088 test (EURUSD,D1) 3. Vérifiez le tampon de l'indicateur :
0 23:33:06.088 test (EURUSD,D1) Taille avant libération de la mémoire = 1054
0 23:33:06.088 test (EURUSD,D1) Ceci est un tableau dynamique = Aucun
0 23:33:06.088 test (EURUSD,D1) Taille après libération de la mémoire = 0
Terminal MT5, aucune idée.
Je voulais contourner la nécessité de redimensionner manuellement un tableau dynamique en l'assignant simplement comme tampon indicateur. Mais je n'arrive pas à me débarrasser de ArrayResize() comme s'il s'agissait d'un tableau dynamique de tampon indicateur dont la taille doit être surveillée par le terminal lui-même et qui ne doit pas être redimensionné manuellement :
https://www.mql5.com/ru/docs/series/bufferdirection:
Nous allons sur https://www.mql5.com/ru/docs/array/arrayisdynamic, exécutons le code et découvrons soudainement que :
En même temps, il :
Je regarde dans le livre - je vois une figue. Ou avons-nous été trompés pendant tout ce temps ?
Ou peut-être est-il dynamique une fois (à la première initialisation) et ensuite c'est tout ?
Le tableau de la mémoire tampon est dynamique. Dans MQL, les tableaux dynamiques ont des signes d'objets, pour autant que j'ai compris en travaillant avec eux (comme dans les langages de très haut niveau). Mais si vous déclarez un tableau dynamique comme un tampon (en utilisant SetIndexBuffer), cette zone de mémoire deviendra réservée. C'est pourquoi la plupart des fonctions standard ne peuvent pas modifier sa taille. J'utilise parfois des tableaux d'objets comme tampons d'indicateurs. Et si je le fais, la mémoire de ces tableaux est libérée dans le destructeur de l'objet. Ainsi, la libération de la mémoire tampon des indicateurs par l'application(ou l'objet) elle-même est autorisée. Mais cela ne signifie pas que le tableau peut être libéré pendant le fonctionnement de l'indicateur. Tout doit être fait avec sagesse.
Après-midi
Pouvez-vous me conseiller, j'essaie d'écrire un conseiller expert, et quand je le teste, une chose étrange se produit...
J'ai une fonction
Quelle est la situation, je lance une instance de l'EA fonctionnant sur un graphique, et j'exécute la seconde en mode débogage sur le même graphique avec MT4
Les données d'entrée pour la fonction sont les mêmes, mais les données de sortie sont différentes ! !!? Il y a quelque chose que je ne comprends pas, il me semble...(
me conseiller sur le chemin à suivre pour trouver des informations !!!
PS : a calculé la différence d'exactement 2,5 fois le rendementJ'ai une fonction
Quelle est la situation, j'exécute une instance de l'EA sur un graphique, et j'exécute la seconde en mode débogage sur le même graphique avec MT4
Les données d'entrée pour la fonction sont les mêmes, mais les données de sortie sont différentes ! !!? Il y a quelque chose que je ne comprends pas, il me semble...(
pouvez-vous me dire dans quel sens il faut creuser pour trouver des informations ? !
PS : a calculé la différence d'exactement 2,5 fois le rendementIl s'agit de la formule de calcul de l'angle. Dans le code, on peut voir que pour son calcul, on utilise une seule coordonnée et un certain coefficient, dont le but n'est pas clair. Qu'est-ce que c'est ? Veuillez préciser les données que vous utilisez pour calculer l'angle.