Errori, bug, domande - pagina 1669
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Il programma MQ5 esegue sempre automaticamente IndicatorRelease di tutti gli handle che ha creato al termine dell'esecuzione?
O è possibile eseguire l'indicatore tramite IndicatorCreate da uno script, poi passare il suo handle attraverso le variabili globali per lavorare ulteriormente con l'indicatore?
https://www.mql5.com/ru/docs/basis/preprosessor/compilation
Costante
Tipo
Descrizione
indicatore del tester
stringa
Nome dell'indicatore personalizzato nel formato "nome_indicatore.ex5". Gliindicatori necessari per i test sono determinati automaticamente dalla chiamata della funzioneiCustom(), se il parametro corrispondente è specificato come una stringa costante. Per gli altri casi (uso della funzioneIndicatorCreate() o uso di una stringa non costante nel parametro che specifica il nome dell'indicatore) questa proprietà dovrebbe essere
IndicatorCreate - quasi (nessuna restrizione sul numero di parametri di input) rudimento?
Qual è il contatore?
Se provate a creare un codice che conterrà IndicatorRelease, ma non chiamerà l'indicatore stesso, non lo compilerete, perché dovete passare un handle a IndicatorRelease, ma se non chiamate l'indicatore dal programma, non avrete l'handle.
BlackTomcat:
Вчера обсуждали, страница 1687. :) Но читать лучше вот с этого сообщения на 1686-й странице: https://www.mql5.com/ru/forum/1111/page1686#comment_2790746 Кстати, человек на Ваш же вопрос отвечал. Просто получается, что схема такая. Запрос на вызов индикатора попадает в Терминал. Т.е. советник или скрипт не вызывают индикатор напрямую, терминал выступает посредником. В терминале происходит проверка, существует ли уже такой индикатор с указанными параметрами. Если да, то он возвращает программе, вызвавшей индикатор, хэндл (ссылку) на уже существующий индикатор. А в своих терминальных недрах помечает в счётчике, что был ещё один вызов на данный индикатор. Т.е. он ведёт учёт, сколько хэндлов на данный индикатор вернул. Когда кто-то делает IndicatorRelease, это не значит, что остальным, кто вызвал этот же индикатор с такими же параметрами, этот индикатор больше не нужен. Поэтому Терминал уменьшает счётчик на единицу, но оставляет индикатор активным, потому-что им ещё кто-то пользуется.
Grazie! Questo risulta essere un grande risparmio.
Se provate a creare del codice, che conterrà IndicatorRelease, ma non conterrà la chiamata dell'indicatore stesso, penso che non lo compilerete, perché dovrete passare un handle a IndicatorRelease, e se l'indicatore non è stato chiamato dal programma, non avrete l'handle.
Posso passare l'handle attraverso le variabili globali. Pertanto, è abbastanza possibile utilizzarlo.E voi non lo fate. :) O almeno non chiamate IndicatorRelease() per un handle ottenuto in questo modo. Se lo fai, sarà un tuo errore, ma non un bug della lingua, sei d'accordo?
E scriverò una scheda cattiva per il mercato libero, che a un certo punto passerà semplicemente attraverso l'intera gamma di int positivi e proverà IndicatorRelease per ognuno.
Un tale script coprirà tutti gli Expert Advisors e gli indicatori del terminale che ha usato iCustom senza ChartIndicatorAdd.
Di nuovo, questa sarebbe una vostra azione deliberata, non un bug della lingua. Perché l'hai scritto?
A proposito, questa conversazione è iniziata con la tua domanda su come controllare la maniglia dell'indicatore prima di usarla. Beh, non si può controllare, ma ad un tentativo di usare un handle di un indicatore chiuso, si otterrà l'errore 4807 - basta rintracciarlo dopo ogni chiamata di CopyBuffer(), se restituisce -1.
Posso passare l'handle attraverso le variabili globali. Quindi è abbastanza possibile usarlo.
Errore di esecuzione: 'accesso al puntatore non valido' (*)