Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 623

 
-Aleks-:
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().

 
Buon giorno a tutti, per favore aiutatemi a trovare un Expert Advisor. Ho bisogno di una scatola (box) con impostazione del tempo di sessione, suddivisione in tre ordini in ogni direzione, funzioni di trailing e stop loss. Sono già annegato nella mia ricerca sugli spazi aperti. Sono quasi sull'orlo di un precipizio, ancora un po' e comincerò a imparare la lingua e l'editor per scrivere me stesso!!!! AIUTO!!!
 
Alexey Kozitsyn:

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().

In altre parole, dovremmo creare un indicatore, 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 ne otteniamo una dall'indicatore, e solo allora continuiamo a lavorare, giusto?
 
-Aleks-:
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é dovrebbe essere così complicato... Proviamo di nuovo. Qual è l'obiettivo? Per avere tutta la storia disponibile per i calcoli?
 
Alexey Kozitsyn:
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.

 
-Aleks-:

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.

 
Alexey Kozitsyn:

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?

 
-Aleks-:

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.

 
Alexey Kozitsyn:

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.

Non ho prestato attenzione al +1, grazie, penso che non sia una cattiva opzione.
 
Può dirmi perché questo potrebbe accadere?

doppio A;
int x, y;

x=100; y=3; A=x/y=33.000
Motivazione: