Questo perché IndBuff non è assegnato a rates_total + 1 E ArrayResize non è applicabile ad esso. Hanno rotto il per costruire. Dobbiamo usare if-arses ora?
Sai qual è la cosa più fastidiosa? Che qualsiasi comportamento viene tradito in silenzio, senza preavviso. E poi la gente si fa male. Sono stufo di questo metatrader.
Sai qual è la cosa più fastidiosa? Che qualsiasi comportamento viene tradito in silenzio, senza preavviso. E poi la gente si fa male. Sono stufo di questo metatrader.
Tutto è come prima.
Colpa tua.
Suggerimento - imparate a usare il debugger e non dovrete fare la correzione di bozze, vedrete tutti i vostri difetti in una volta sola.
Sai qual è la cosa più fastidiosa? Che qualsiasi comportamento viene tradito in silenzio, senza preavviso. E poi la gente si fa male. Sono stufo di questo metatrader.
Non ho notato alcun cambiamento nel calcolo degli indicatori. Come avete visto sopra, Nikolay ha giustamente spiegato cosa significano i valori limite calcolati come rates_total-prev_calculated.
Nikolai Semko #: Qui è dove hai bisogno del meno uno :))
La stampa mostra che le dimensioni sono OK.
Usare la logica:
Se limite = 0, allora un nuovo tick
Se limite = 1, significa una nuova barra (l'ultimo elemento del buffer rates_total è -1, e avete rates_total, quindi l'overflow)
Se il limite > 1, allora è meglio ricalcolare l'intero indicatore
Nikolay conosco le costruzioni se e per uno, ma ho sempre lavorato con per, mi sono appena abituato, è più conveniente. Ma ho notato alcune cose strane con per molto tempo e ho rimandato cercando di capire. Prima funzionava bene
Passo 2: scrivete correttamente 'limit' e USATE l'array close - NON la chiamata iClose!!!
Risultato:
e non ci sono errori.
Grazie per l'esempio diretto i++ naturalmente. Ma il fatto che io abbia un ciclo inverso, non l'hai notato. E se iClose è citato come esempio, deve essere usato per mostrare che l'indice i sarà usato successivamente in altre funzioni.
Se limite = 1, significa una nuova barra (l'ultimo elemento del buffer rates_total è -1, e avete rates_total, quindi l'overflow)
Se il limite > 1, allora è meglio ricalcolare l'intero indicatore
Qui è dove è sbagliato - meglio usare se limit != 1
Quindi l'intera logica è più o meno quella che è:
limit = rates_total - prev_calculated;
if (limit == 0) {..} // новый тикelseif ( limit == 1) {..} // новый барelse {..} // полный пересчет всего индикатора
Capisco che alcune persone saranno indignate e diranno perché dovrei ricalcolare tutto se limit == 2, ma quando limit non è uguale a 1 e non è uguale a 0, significa che questa è la prima inizializzazione dell'indicatore o qualcosa è andato storto (per esempio, fallimento della connessione o del server) Inoltre, molte volte ho incontrato situazioni in cui prev_calculated era superiore a rates_total. Probabilmente, è stato qualche problema tecnico prima ed è stato risolto ora, ma da allora uso questo design come precauzione di sicurezza.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Questo perché IndBuff non è assegnato a rates_total + 1
E ArrayResize non è applicabile ad esso.
Hanno rotto il per costruire. Dobbiamo usare if-arses ora?
for(int i=limit - 1;....
almeno...
Questo perché l'IndBuff non è assegnato a rates_total + 1
e ArrayResize non è applicabile ad esso.
for(int i=limit - 1;....
come minimo...
Sai qual è la cosa più fastidiosa? Che qualsiasi comportamento viene tradito in silenzio, senza preavviso.
E poi la gente si fa male. Sono stufo di questo metatrader.
Sai qual è la cosa più fastidiosa? Che qualsiasi comportamento viene tradito in silenzio, senza preavviso.
E poi la gente si fa male. Sono stufo di questo metatrader.
Sai qual è la cosa più fastidiosa? Che qualsiasi comportamento viene tradito in silenzio, senza preavviso.
E poi la gente si fa male. Sono stufo di questo metatrader.
Non ho notato alcun cambiamento nel calcolo degli indicatori. Come avete visto sopra, Nikolay ha giustamente spiegato cosa significano i valori limite calcolati come rates_total-prev_calculated.
E funziona da anni - dal quarto terminale.
Qui è dove hai bisogno del meno uno :))
Nikolay conosco le costruzioni se e per uno,
ma ho sempre lavorato con per, mi sono appena abituato, è più conveniente.
Ma ho notato alcune cose strane con per molto tempo e ho rimandato cercando di capire.
Prima funzionava bene
per i>=0 ticks
per i>0 barre
E non c'era bisogno di se.
Passo 1: Creare un modello usando 'MQL5 Wizard':
Passo 2: scrivete correttamente 'limit' e USATE l'array close - NON la chiamata iClose!!!
Risultato:
E non ci sono errori.
Passo 1: Creare un modello usando 'MQL5 Wizard':
Passo 2: scrivete correttamente 'limit' e USATE l'array close - NON la chiamata iClose!!!
Risultato:
e non ci sono errori.
Grazie per l'esempio diretto i++ naturalmente.
Ma il fatto che io abbia un ciclo inverso, non l'hai notato.
E se iClose è citato come esempio, deve essere usato per mostrare che l'indice i sarà usato successivamente in altre funzioni.
Nikolai conosco le costruzioni di se e per uno,
altrimenti se
Qui è dove
è sbagliato - meglio usare
se limit != 1
Quindi l'intera logica è più o meno quella che è:
Capisco che alcune persone saranno indignate e diranno perché dovrei ricalcolare tutto se limit == 2,ma quando limit non è uguale a 1 e non è uguale a 0, significa che questa è la prima inizializzazione dell'indicatore o qualcosa è andato storto (per esempio, fallimento della connessione o del server)
Inoltre, molte volte ho incontrato situazioni in cui prev_calculated era superiore a rates_total. Probabilmente, è stato qualche problema tecnico prima ed è stato risolto ora, ma da allora uso questo design come precauzione di sicurezza.
se limite != 1