Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 623
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
No, non ne ho bisogno nel tester, ma quando il terminale funziona davvero su un grafico - funziona solo se la storia contiene meno del numero massimo di barre, o mi sbaglio?
E in tempo reale rates_total e Bars() saranno incrementati quando l'indicatore è in esecuzione. In OnInit() non sarete in grado di ottenere rates_total, perché il parametro non è passato alla funzione. Dovete controllare la storia in ogni caso in OnCalculate().
E in tempo reale rates_total e Bars() saranno incrementati quando l'indicatore è in esecuzione. In OnInit() non sarete in grado di ottenere rates_total, perché il parametro non è passato alla funzione. La storia dovrebbe essere controllata in ogni caso in OnCalculate().
Cioè dobbiamo fare un indicatore separato, dove controlliamo il numero di barre e se tutto è OK, allora riempiamo il buffer del grafico con una, e poi aspettiamo nell'EA fino a quando non ne otteniamo una dall'indicatore, e solo allora continuiamo a lavorare, giusto?
Certo che no... Perché renderlo così complicato... Facciamolo di nuovo. Qual è l'obiettivo? Per avere tutta la storia disponibile per il calcolo?
La situazione è che perché l'EA funzioni correttamente, ha bisogno di calcolare la storia una volta. Così, succede che quando si accende il terminale con questo EA, c'è la storia e, di conseguenza, vengono eseguiti l'inizializzazione e il calcolo, ma questa storia potrebbe non essere tutta e ne verrà caricata una nuova dopo la connessione al terminale.
Penso che possiamo tracciare la connessione con il terminale e poi, se è disponibile, controllare i cambiamenti dell'ultima barra in HLCO e se è disponibile, aspettiamo, e se non è disponibile entro x secondi, eseguiamo il calcolo.
La situazione è che perché l'EA funzioni correttamente, ha bisogno di calcolare la storia una volta. Così, succede che quando si accende il terminale con questo EA, c'è la storia e, di conseguenza, vengono eseguiti l'inizializzazione e il calcolo, ma questa storia potrebbe non essere tutta, e una nuova sarà caricata dopo la connessione al terminale.
Penso che possiamo rintracciare la connessione con il terminale e poi, se è disponibile, controllare i cambiamenti dell'ultima barra di HLCO e se è disponibile, aspettiamo, ma se non è disponibile entro x secondi, eseguiamo il calcolo.
L'Expert Advisor usa qualche indicatore personalizzato?
Per esempio, potete fare quanto segue: controllate la dimensione della storia attraverso Bars(). Poi vedi se Bars() > prev_bars+1 (la dimensione della storia sul tick precedente) - poi resetti tutti i dati salvati e fai un ricalcolo completo dell'Expert Advisor da zero. Questa costruzione dovrebbe essere inserita prima in OnTick().
Non c'è bisogno di preoccuparsi della connessione al terminale, delle pause, ecc. L'opzione più semplice è spesso la migliore.
L'Expert Advisor usa qualche indicatore personalizzato?
Per esempio, potete fare così: controllare la dimensione della storia tramite Bars(). Poi vedi se Bars() > prev_bars+1 (la dimensione della storia sul tick precedente) - poi resetti tutti i dati salvati e fai un ricalcolo completo dell'Expert Advisor da zero. Questa costruzione dovrebbe essere inserita prima in OnTick().
Non c'è bisogno di preoccuparsi della connessione al terminale, delle pause, ecc. La variante più semplice è spesso la migliore.
L'Expert Advisor usa molte cose, compresi gli indicatori.
Ho capito che la variante suggerita ricalcola su ogni barra, o mi sbaglio?
L'Expert Advisor usa molte cose, compresi gli indicatori.
Ho capito che questa variante sarà ricalcolata su ogni barra, o mi sbaglio?
No, perché su ogni bar? L'Expert Advisor sarà ricalcolato completamente solo se viene aggiunta più di 1 barra alla storia! Se viene aggiunta 1 barra (si forma una nuova barra), il ricalcolo completo non viene eseguito.
Se usate degli indicatori, e questi hanno delle variabili globali, allora devono essere azzerati quando li eseguite per la prima volta. In caso contrario, potrebbero apparire artefatti sul grafico / gli indicatori potrebbero essere visualizzati in modo errato.
No, perché su ciascuno? Un ricalcolo completo dell'EA avverrà solo se è stata aggiunta più di 1 barra alla storia! Se viene aggiunta 1 barra (si forma una nuova barra), non ci sarà un ricalcolo completo.
Se usate degli indicatori, e questi hanno delle variabili globali, allora devono essere azzerati quando li eseguite per la prima volta. In caso contrario, potrebbero apparire artefatti sul grafico / gli indicatori potrebbero essere visualizzati in modo errato.
doppio A;
int x, y;
x=100; y=3; A=x/y=33.000