Erreurs, bugs, questions - page 1669

 

https://www.mql5.com/ru/docs/basis/preprosessor/compilation

Constant

Type

Description

indicateur du testeur

chaîne de caractères

Nom de l'indicateur personnalisé au format "indicator_name.ex5".Les indicateurs nécessaires aux tests sont déterminés automatiquement à partir de l'appel de la fonctioniCustom(), si le paramètre correspondant est spécifié comme une chaîne constante. Pour les autres cas (utilisation de la fonctionIndicatorCreate() ou utilisation d'une chaîne non constante dans le paramètre spécifiant le nom de l'indicateur) cette propriété doit être

IndicatorCreate - presque (aucune restriction sur le nombre de paramètres d'entrée) rudimentaire ?

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
IndicatrorRelease renvoie par erreur true s'il est appelé après iCustom+ChartIndicatorAdd. Correct.
 
fxsaber:
Quel est le compteur ?
Nous en avons discuté hier, page 1687. :) Mais il est préférable de lire ce message à la page 1686 : https://www.mql5.com/ru/forum/1111/page1686#comment_2790746 Au fait, l'homme répondait à votre même question. Il se trouve que le schéma est le suivant. La demande d'appel de l'indicateur va au Terminal. C'est-à-dire que l'Expert Advisor ou le script n'appelle pas directement l'indicateur, le terminal sert d'intermédiaire. Le terminal vérifiera si cet indicateur existe déjà avec les paramètres spécifiés. Si c'est le cas, il renvoie au programme qui a appelé l'indicateur, un handle (lien) vers l'indicateur déjà existant. Et dans son sous-sol terminal il marque dans le compteur qu'il y a eu un autre appel de cet indicateur. C'est-à-dire qu'il enregistre combien de poignées ont été retournées pour cet indicateur. Quand quelqu'un fait l'IndicatorRelease, cela ne signifie pas que les autres qui ont appelé le même indicateur avec les mêmes paramètres n'ont plus besoin de cet indicateur. Par conséquent, le Terminal diminue le compteur de un, mais laisse l'indicateur actif, car quelqu'un d'autre l'utilise. Cela continuera jusqu'à ce que le compteur soit remis à zéro. Lorsque le compteur est remis à zéro, le terminal efface définitivement l'indicateur de la RAM.
Si vous essayez de créer un code qui contiendra IndicatorRelease, mais qui n'appellera pas l'indicateur lui-même, vous ne pourrez pas le compiler, parce que vous devez passer un handle à IndicatorRelease, mais si vous n'appelez pas l'indicateur depuis le programme, vous n'obtiendrez pas de handle.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • avis : 8
  • www.mql5.com
Форум трейдеров MQL5.community
 

BlackTomcat:
Вчера обсуждали, страница 1687. :) Но читать лучше вот с этого сообщения на 1686-й странице: https://www.mql5.com/ru/forum/1111/page1686#comment_2790746 Кстати, человек на Ваш же вопрос отвечал. Просто получается, что схема такая. Запрос на вызов индикатора попадает в Терминал. Т.е. советник или скрипт не вызывают индикатор напрямую, терминал выступает посредником. В терминале происходит проверка, существует ли уже такой индикатор с указанными параметрами. Если да, то он возвращает программе, вызвавшей индикатор, хэндл (ссылку) на уже существующий индикатор. А в своих терминальных недрах помечает в счётчике, что был ещё один вызов на данный индикатор. Т.е. он ведёт учёт, сколько хэндлов на данный индикатор вернул. Когда кто-то делает IndicatorRelease, это не значит, что остальным, кто вызвал этот же индикатор с такими же параметрами, этот индикатор больше не нужен. Поэтому Терминал уменьшает счётчик на единицу, но оставляет индикатор активным, потому-что им ещё кто-то пользуется.

Merci ! Cela s'avère être une grande économie.

Si vous essayez de créer un code, qui contiendra IndicatorRelease, mais ne contiendra pas l'appel de l'indicateur lui-même, je pense que vous ne pourrez pas le compiler, parce que vous devrez passer un handle à IndicatorRelease, et si l'indicateur n'a pas été appelé depuis le programme, vous n'obtiendrez pas le handle.

L'identifiant peut être transmis par des variables globales. Il est donc possible de l'utiliser.
 
fxsaber:


Je peux passer la poignée par des variables globales. Il est donc tout à fait possible de l'utiliser.
Vous n'êtes pas obligé de le passer. :) Ou du moins n'appelez pas IndicatorRelease() pour un handle obtenu de cette façon. Si vous le faites, ce sera votre erreur, et non un bug du langage, n'est-ce pas ?
 
Sergei Vladimirov:
Et vous ne le faites pas. :) Ou du moins, n'appelez pas IndicatorRelease() pour un handle obtenu de cette façon. Si vous le faites, ce sera votre erreur, mais pas un bug de la langue, êtes-vous d'accord ?

Et j'écrirai un mauvais onglet pour le marché libre, qui, à un moment donné, passera en revue toute la gamme des int positifs et essaiera IndicatorRelease pour chacun.

Un tel script couvrira tous les Expert Advisors et indicateurs du terminal qui utilisait iCustom sans ChartIndicatorAdd.

 

Là encore, il s'agirait d'une action délibérée de votre part, et non d'un bug de langage. Pourquoi avez-vous écrit ça ?

Au fait, cette conversation a commencé par votre question sur la façon de vérifier la poignée de l'indicateur avant de l'utiliser. Vous ne pouvez pas le vérifier, mais si vous tentez d'utiliser un handle d'un indicateur fermé, vous obtiendrez l'erreur 4807 - suivez-la après chaque appel de CopyBuffer(), si elle renvoie -1.

 
fxsaber:
Je peux passer la poignée par des variables globales. Il est donc tout à fait possible de l'utiliser.
Hum... Des variables globales pour quoi faire ? Terminal ou EA ? Je n'ai jamais travaillé avec les variables du terminal, je ne vais donc pas en parler. Quant aux variables globales d'EA, c'est le principal moyen d'y parvenir. Si les indicateurs sont initialisés dans OnInit, mais IndicatorRelease se produit dans OnDeinit, alors seulement avec les variables globales (EA) nous passerons les poignées.
 
A100:
Erreur d'exécution : 'accès au pointeur invalide' (*)
Qu'est-ce que vous avez A::a qui pointe ici ?
 
Sergei Vladimirov:
Qu'indique votre"A::a" ici ?
Un trop gros morceau découpé - je le finirai plus tard