Errori, bug, domande - pagina 342

 
Urain:

La soluzione più semplice per MQ sarebbe quella di dare i parametri della funzione

invece delle variabili, che esistono come parametri ora. La soluzione naturalmente è unilaterale perché non saremo in grado di trasferire i dati tra gli EAs in ogni caso, ma è sempre meglio di niente.

Ancora meglio sarebbe qualcosa come questo

void SendData(const int handle,const long &lparam[],const double &dparam[],const string &sparam[])
void GetData(const int handle,const long &lparam[],const double &dparam[],const string &sparam[])

Essere in grado di inviare a un destinatario specifico e ricevere da un mittente specifico. E non solo inviare per qualche grafico e rendere pubblico il manico. Beh, qualcosa del genere.

 

C'è un compito simile: la finestra dell'indicatore deve essere rimossa e ripristinata da Expert Advisor. Ma i dati calcolati rimangono costanti.

Una soluzione semplice è quella di creare un indicatore per calcolare i dati (chiamiamolo "Calculate") e un indicatore per visualizzare i dati in una finestra separata, chiamiamolo "Plot". L'indicatore "Plot" è chiamato da iCustom("Calculate"), ma anche l'Expert Advisor è chiamato prima da iCustom("Calculate"). Sono chiamati con gli stessi parametri. Ho detto da qualche parte che due indicatori con gli stessi parametri non vengono creati in un grafico, ma creano un handle aggiuntivo che si riferisce all'handle principale del processo dell'indicatore già avviato.

Da qui la domanda: dopo aver cancellato Plot dall'EA e averlo aggiunto di nuovo, l'indicatore Calculate lanciato in Plot sarà calcolato di nuovo o prenderà solo i dati calcolati dell'indicatore Calculate lanciato nell'EA?

 
Urain:

Ho detto da qualche parte che due indicatori con gli stessi parametri non vengono creati in un grafico, ma viene creato solo un handle aggiuntivo che si riferisce all'handle principale di un processo indicatore già in esecuzione.

Guida di riferimento MQL5 / Indicatori tecnici / Funzioni per lavorare con gli indicatori tecnici:

"Tutte le funzioni come iMA, iAC, iMACD, iIchimoku, ecc., creano una copia dell'indicatore tecnico appropriato nella cache globale del terminale client. Se esiste già una copia dell'indicatore con questi parametri, non viene creata una nuova copia, ma viene incrementato il contatore dei riferimenti a questa copia.

Queste funzioni restituiscono l'handle della copia dell'indicatore corrispondente. Usando questa maniglia, potete successivamente recuperare i dati calcolati dall'indicatore corrispondente..."

"Nota. Più chiamate della funzione indicatore con gli stessi parametri all'interno di un programma mql5 non aumenteranno il contatore di riferimento molte volte, il contatore sarà aumentato solo una volta di 1. . ..".

 
Yedelkin:

Guida di riferimento MQL5 / Indicatori tecnici / Funzioni per lavorare con gli indicatori tecnici:

...

"Nota. L'accesso multiplo alla funzione indicatore con gli stessi parametri all'interno di un programma mql5 non porta all'aumento multiplo del contatore dell'indicatore, il contatore sarà aumentato solo una volta di 1. ...".

Sì, è esattamente questo. Grazie per il suggerimento.

Non capisco esattamente questa linea. È possibile considerare l'indicatore lanciato nell'Expert Advisor come un unico programma o si tratta di due programmi?

Se la prima ipotesi è fatta, allora tutto è a posto. Ma se il compilatore li tratta come programmi diversi, allora c'è un problema.

 
Urain:

L'indicatore in esecuzione nell'EA può essere considerato come un unico programma o si tratta di due programmi?

1. Il manuale dice:"Tutte le funzioni come iMA, iAC, iMACD, iIchimoku, ecc, creano una copia dell' indicatore tecnico corrispondente nella cache globale del terminale client".

Lo leggo come (riferito alla tua domanda):"Tutte le funzioni, come iMA, iAC, iMACD, iIchimoku , ecc.sono chiamate da un particolare programma mql5 ecreano una copia dell'indicatore tecnico appropriato nella cache globale del terminale client". Pertanto, la frase comune"EA E esegue l'indicatore I" significa che EA E chiama la funzione I, che crea una copia dell'indicatore nella cache globale del terminale client e fa sì che EA E riceva l'handle di quella copia.

2. se "EA E chiama la funzione indicatore I", allora significa che chiama la funzione indicatore "all'interno di un programma mql5".

 
Ho scaricato 420 build da quihttps://www.mql5.com/ru/forum/23/page11 ma in realtà si installa 412. Ho un problema o si sono dimenticati di cambiare il filemetaquotes.net?
Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:.
 
Yedelkin:

1. Il manuale di riferimento dice:"Tutte le funzioni come iMA, iAC, iMACD, iIchimoku, ecc, creano una copia dell' indicatore tecnico pertinente nella cache globale del terminale client".

Lo leggo come (riferito alla tua domanda):"Tutte le funzioni, come iMA, iAC, iMACD, iIchimoku, ecc. sono chiamate da un particolare programma mql5 e creano una copia dell'indicatore tecnico appropriato nella cache globale del terminale client". Pertanto, la frase comune"EA E esegue l'indicatore I" significa che EA E chiama la funzione I nella cache globale del terminale client, che crea una copia dell'indicatore, e EA E ottiene l'handle di quella copia.

2) Se "EA E chiama la funzione indicatore I", allora stiamo parlando di chiamare la funzione indicatore "all'interno di un singolo programma mql5".

Ho capito. La frase chiave qui è"nella cache globale del terminale client".

Se è così, allora è tutto a posto. Un'altra domanda è stata chiarita.

 
a483483:
Ho scaricato la build 420 da quihttps://www.mql5.com/ru/forum/23/page11 ma in realtà installa la 412. Ho un problema o nel filemetaquotes.net ho dimenticato di cambiare?

Quindi aspettate e dovrebbe aggiornarsi all'ultima versione.

SZS lasciate il terminale in funzione e fatevi gli affari vostri, dopo un po' vedrete nel terminale il messaggio che ha scaricato tale e tale versione e chiedete di riavviare il terminale.

 

Buon pomeriggio!

Dopo l'aggiornamento alla versione 420 ho iniziato a testare il mio EA e ho notato che ha iniziato a "perdere" per qualche motivo. Ho analizzato i miei trade e ho notato che lo stop loss viene attivato a prezzi inesistenti. Per esempio, ho impostato lo stop loss a 1,06520 su EURUSD, ma funziona, anche se il prezzo massimo è 1,05920. Quando guardo oltre, vedo un sacco di questi affari. Il Take Profit è attivato dallo stesso principio (a prezzi non esistenti) - il delta è lo stesso - 600 punti. Nel tester sul grafico le frecce su e giù "pendono" in aria, lontano dalle barre.

Uno screenshot è allegato.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
File:
eurusd.jpg  235 kb
 
Kairoser:

Buon pomeriggio!

Dopo l'aggiornamento alla versione 420 ho iniziato a testare il mio EA e ho notato che ha iniziato a "perdere" per qualche motivo. Ho analizzato i miei trade e ho notato che lo stop loss viene attivato a prezzi inesistenti. Per esempio, ho impostato lo stop loss a 1,06520 su EURUSD, ma funziona, anche se il prezzo massimo è 1,05920. Quando guardo oltre, vedo molti di questi affari. Il Take Profit è attivato dallo stesso principio (a prezzi non esistenti) - il delta è lo stesso - 600 punti. Nel tester sul grafico le frecce su e giù "pendono" in aria, lontano dalle barre.

Uno screenshot è allegato.

Provate a testare il vostro EA sul server MQ. Alpari potrebbe avere ancora il vecchio problema dei dati storici errati.