Errori, bug, domande - pagina 1157

 
marketeer:
Chiarire la domanda - il progresso dovrebbe funzionare nell'indicatore. Il tuo codice, quando viene trasferito all'indicatore, smette di visualizzare il commento a runtime.
Se metti in loop l'indicatore, puoi "sospendere" l'intero terminale, ma l'Expert Advisor ti permette di prendere in giro i fili come vuoi.
 
marketeer:
Per chiarire la domanda - il progresso dovrebbe funzionare nell'indicatore. Il tuo codice, quando viene trasferito all'indicatore, smette di visualizzare il commento a runtime.

Dalla guida di MQL4:

Programmi in esecuzione

Un breve riassunto dei programmi in MQL4 è mostrato nella tabella sottostante:

Programma

Esecuzione

Nota

Script

Nel proprio thread, tanti script quanti sono i thread di esecuzione per essi

Uno script in loop non può interrompere il lavoro di altri programmi

Esperto

Nel proprio thread, altrettanti esperti - altrettanti thread di esecuzione per loro

Un esperto in loop non può interrompere il lavoro di altri programmi

Indicatore

Un thread di esecuzione per tutti gli indicatori su un simbolo. Tanti simboli indicatori - tanti thread di esecuzione per loro

Un ciclo infinito in un indicatore fermerà tutti gli altri indicatori su questo simbolo

 
barabashkakvn:
Se l'indicatore è in loop, l'intero terminale può essere "appeso". Ma l'Expert Advisor permette di prendere in giro i flussi come si vuole.

Beh, il fatto che un indicatore possa bloccare il terminale è un difetto del terminale stesso. E i calcoli analitici, non legati al trading, dovrebbero essere nell'indicatore - soprattutto perché richiede la visualizzazione dei buffer, cioè non è nemmeno un compito per lo script.

Non c'è niente in loop nell'indicatore - nel senso che non c'è un ciclo infinito. C'è un calcolo controllato ma ci vuole tempo.

 
marketeer:

...

Nulla è in loop nel tacchino - nel senso che non c'è un ciclo infinito. C'è un calcolo controllato, ma ci vuole tempo.

In quale chiamata di funzione dell'indicatore eseguite il calcolo?
Se avete davvero bisogno di fare questi calcoli, ha senso fare il "batch calculate".

 
Порционное вычисление в индикаторе
Порционное вычисление в индикаторе
  • www.mql5.com
Индикатор производит вычисление одного значения для бара достаточно длительное время (запрос к БД, вычисление на стороне БД, возврат значения функции). - - Категория: технические индикаторы и анализ рынка форекс
 
barabashkakvn:
In quale chiamata di funzione dell'indicatore eseguite il calcolo?
Se avete davvero bisogno di eseguire tali calcoli, ha senso fare il "batch calculate".

Il codice difficile è nella parte di calcolo, non nell'inite se questa è la domanda. Il "calcolo batch" è una seccatura separata per salvare e ripristinare gli stati intermedi, e rallenta il processo stesso. Non è un'opzione.
 
joo:
Quindi, dopo tutto, come si fa a usare il compilatore di console se viene rimosso dal terminale?

Perché è nel terminale? Il terminale è tutto suo.

Basta tenere il compilatore altrove.

 
Renat:

Perché è nel terminale? Il terminale è tutto suo.

Basta tenere il compilatore altrove.

Sì, è comprensibile che la via d'uscita sia tenere il compilatore in una cartella diversa da quella del terminale. Ma i file *.ex5 freschi non saranno nemmeno creati nella cartella del terminale, il che significa che devono essere costantemente spostati nel posto giusto... Anche se potrebbe esserci una chiave di comando per specificare il percorso dei file compilati?
 
joo:
Sì, è comprensibile che la via d'uscita sia tenere il compilatore in una cartella diversa da quella del terminale. Ma i file *.ex5 freschi non saranno nemmeno creati nella cartella del terminale, il che significa che devono essere costantemente spostati nel posto giusto... Anche se potrebbe esserci una chiave di comando per specificare il percorso dei file compilati?

Sì, potete specificare una directory predefinita nella chiave /i:

E:\>mql64.exe
MQL4/MQL5 Compiler x64 build 937 (15 May 2014)
Copyright 2001-2014, MetaQuotes Software Corp.

Usage: mql64.exe [<flags>] filename.mq5
                /mql5     - compile mql5 source
                /mql4     - compile mql4 source
                /s        - syntax check only
                /i:<path> - set working directory
 
EX5 sarà creato nella posizione del file originale mq5.