Errori, bug, domande - pagina 2859
![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
In generale, quali sono i vostri pensieri su una possibile implementazione?
Ci sono molte possibili implementazioni
ma tutto si riduce al compito di scambio di dati tra gli EA
il modo più semplice è controllare il permesso per l'inizializzazione ed eseguire l'inizializzazione stessa in OnTick() - permetterebbe di evitare di ripristinare i grafici e poi eseguire l'EA su di essi, e il salvataggio dell'EA prima della chiusura sarebbe possibile farlo in OnDeinit()
nonè importante chi gestirà questo zoo - o l'EA principale o un servizio
Nel registro del tester
Cosa significa?
Nel registro del tester
Cosa significa?
Significa che quando si riceve il prossimo valore di m1 ohlc (o lo stato della barra quando si verifica con i prezzi aperti), il campo del tempo contiene 0
funzione non definita significa che il problema si è verificato al di fuori delle funzioni predefinite (OnTick, OnTimer ecc.), cioè nel ciclo principale del tester
Significa che quando si ottiene il prossimo valore m1 ohlc (o lo stato della barra quando si prova con i prezzi aperti) il campo del tempo contiene 0
funzione indefinita significa che il problema si è verificato al di fuori delle funzioni predefinite (OnTick, OnTimer ecc.), cioè nel ciclo principale del tester
Tutto funzionava bene per tutto il giorno e poi è iniziato. Cosa posso fare come utente?
Significa che quando si ottiene il prossimo valore m1 ohlc (o lo stato della barra quando si prova con i prezzi aperti) il campo del tempo contiene 0
funzione non definita significa che il problema si è verificato al di fuori delle funzioni predefinite (OnTick, OnTimer ecc.), cioè nel ciclo principale del tester
Non capisco, c'è un errore nel mio codice o è un errore nel terminale? Ho cancellato tutta la cronologia - non è servito.
Aggiunto:
Ho trovato una funzione nel mio codice, disabilitandola si evita l'errore, ma in un altro EA questa funzione funziona correttamente! Come mai? Posso lasciarlo nel mio messaggio privato.
Anche quando questa funzione buggata è abilitata, OnTick() gira completamente sulla prima barra e poi quell'errore.
Su diversi terminali l'errore è confermato.
L'ho eseguito per zecche - nessun errore...
Ma la stranezza è nel registro:
Sui ticks se guardare lo strumento, il primo tick era esattamente alle 10:00, e la sessione di trading è ancora chiuso in questo momento. Questo è in modalità visiva, senza tick la prima stampa arriva a ore 10.
Il modo più semplice è controllare il permesso di inizializzazione all'inizio di ogni EA in OnTick()
Questo è il problema principale del compito.
Cerca di prestare attenzione agli ID dei grafici e corri per anzianità. Ma questo non annulla l'interazione degli EA. O fare un file o forse un database SQLite con gli ID dei grafici nella sequenza di lancio.
Qualcosa come, alla prima inizializzazione, se non c'è nessun Chart_ID() nella lista, allora viene inserito nella lista. Se non è chiuso a causa della chiusura del terminale, allora viene rimosso dalla lista. In questo modo sarà possibile configurare l'interazione degli EA.
Questo è il principale punto critico del problema.
abbozzando come la vedo io... ha creato 2 EA con questo codice:
e un controllo EA, che funziona in timer (5 secondi)
Controllato, tutto funziona, l'unica cosa, o non ha funzionato con GlobalVariableSetOnCondition() per fare un record nelle variabili globali
Questo è il problema principale del compito.
GlobalVariableSetOnCondition è tutto ciò che serve per risolvere il problema.
L'operazione è consentita solo quando GlobalVariableSetOnCondition ha restituito true.
Dopo l'inizializzazione riuscita e il rilascio delle risorse, riporta la variabile principale al suo stato originale e inizia un altro EA.
In DeInit - cancellazione incondizionata della variabile, per non incorrere nel terminale senza EAs (se il caricamento precedente non è stato completato correttamente).
Grazie per le raccomandazioni. Guarderò GlobalVariableSetOnCondition.