Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1177
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
Ciao!
Potete per favore consigliarmi come impostare l'indicatore per lavorare solo sulle aperture delle barre, e non su ogni tick, e come non farlo funzionare ogni volta (su ogni nuova barra) attraverso tutta la storia?
Vorrei utilizzare l'indicatore come indicatore di apertura delle barre, e vi ringrazio in anticipo.
Rostislav
Innanzitutto, riguardo alle barre. Quando si forma una nuova barra, un nuovo valore viene scritto in Time[0] - il tempo in cui la barra si apre.
OnCalculate(...)
{
if(Time[0] == t) return(0); // Se questa barra è elaborata --> exit
t = Time[0];
Ora per tutta la storia: rallenterà
datetime t;
Prima di tutto, riguardo alle barre. Quando formiamo una nuova barra, scriviamo un nuovo valore in Time[0] - il tempo di apertura della barra.
OnCalculate(...)
{
if(Time[0] == t) return(0); // se questa barra è elaborata --> exit
t = Tempo[0];
Ora per tutta la storia: rallenterà
Grazie per la risposta rapida. Quello che sto chiedendo è come fare in modo che NON rallenti e scorra attraverso la storia quando appare una nuova barra, ma solo processare la nuova barra...
Ora è organizzato come segue: for(int i=limit-1; i>=0; i--) e per come lo capisco, significa che ad ogni apertura di una barra, tutti i valori su tutta la storia saranno ricalcolati di nuovo, mentre si dovrebbe lavorare solo con l'ultima barra...
Ecco come si calcola l'ultima barra:
Guardiamo prima la linea
Per renderlo più chiaro, l'ho riscritto in questo modo.
Aha!!! Ora comincio a capire... Nel ciclo, la variabile a cambia da 1 a 6. Con valori di questa variabile 1, 5 e 6 non c'è azione. Poi solo
O nel tuo stile.
Il risultato sarà lo stesso ma sarà più veloce!
Ora dovete sbarazzarvi della funzione Statistic, scrivere il suo corpo tre volte di seguito, sostituire i parametri formali in ciascuna delle tre parti con parametri reali e rimuovere le dichiarazioni di variabili duplicate. Il codice totale sarà un po' più lungo ma l'esecuzione sarà più veloce. Ha senso buttare fuori print() - chi esattamente in questo momento guarderà il registro dei messaggi? - O sostituirlo con Alert() per visualizzarlo sullo schermo. Inoltre, c'è una variabile namZz2 - il suo valore cambia?
Ho bisogno di usare stats() invece di stats(). Stupidamente, so che posso riscrivere tre volte, come hai detto tu, ma il problema è che molto probabilmente il risultato della raccolta delle statistiche dovrà aggiungere altri array e prima o poi tornerò a quelli originali. È per questo che vi offro dei modi semplici, che già conosco, e che purtroppo mi porteranno all'inizio. Ecco perché guardo avanti, per non doverci tornare in futuro!
come mettere questo codice nello statistico? per essere una singola procedura si all'inizio come ho detto la domanda si prega di guardare!
Ecco come viene calcolato sull'ultima barra:
Ecco un estratto del codice di lavoro! Come raccoglierlo in un void Statistic senza void Stat intermedio! Dovrei rielaborare tutto il codice per riunire tutti gli array in uno solo e provare a grattarlo via da lì!
L'estratto che hai citato dal tuo codice di lavoro è sbagliato o la tua funzione Statistic() non fa altro che stampare quando viene chiamata da Stat().
Comunque, si fermerà subito dopo il ritorno;.
Per favore, dateci tutto il codice per capire cosa volete.
Per la cronaca. Troppi thread sul forum per aiutare i neofiti di MQL4.
Questo thread non è più supportato ed è chiuso.
Si prega di indirizzare tutte le domande a uno dei seguenti thread attivi:
https://www.mql5.com/ru/forum/160683
https://www.mql5.com/ru/forum/160587
Tutti gli altri post in questo thread saranno cancellati.