Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1738
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
Il tuo codice stampa 0, non -1...
Forse -1 è stampato da qualche altra parte, più probabilmente l'intero codice è nelle stampanti...
Sì, hai ragione, ogni passo è prestampato per vedere dove si è "bloccato".
L'esempio non è corretto, scusa, il codice stesso è grande.
Ma, la soluzione di Konstantin ha risolto il problema! Ho davvero scambiato i-- e il controllo dello zero ovunque, e ora la logica funziona come dovrebbe, invece di -1 emette 0 o 1. (prima di 0 o -1, con quest'ultimo un errore immediato).
Il tuo codice stampa 0, non -1...
È possibile che -1 sia stampato da qualche altra parte, molto probabilmente l'intero codice è nelle stampanti...
Prima di cercare di risolvere il problema, è necessario identificarlo... Assicurati che ci sia e localizzalo prima di risolverlo...
Prendi una penna e un pezzo di carta. E scrivi come conta il ciclo. In questo codice.
controllare
non funzionerà mai in questo codice. A meno che non si imposti inizialmente
un valore dispari. Se è pari, allora questo codice
a
avrà un valore dispari.
Prima di cercare di risolvere un problema, bisogna identificarlo... Assicurati che ci sia e localizzalo, e poi risolvilo...
Capisco cosa intendi.
Prendi una penna e un pezzo di carta. E scrivi come si conta il ciclo. In questo codice.
Perché dovrei prendere carta e penna se la condizione dice stampa =-1, ma in realtà (ho controllato) stampa come 0, cioè l'esempio è dato in modo errato. Ed è impossibile dare una risposta corretta ad un esempio errato...
Perché dovrei prendere carta e penna se la condizione dice stampa =-1, ma in realtà (ho controllato) stampa come 0, quindi l'esempio non è corretto. Ed è impossibile dare una risposta corretta ad un esempio errato...
Lo zero viene stampato da questa linea
e non dall'uscita di controllo e rottura.
In generale, è più corretto scrivere
perché gli array iniziano con un indice zero
Lo zero viene stampato da questa linea
non dal controllo delle pause e dall'uscita.
0 viene stampato da questa linea, per quel codice che è stato dato...
Print(i);
La domanda non era perché break non funziona, la domanda era perché la stampante ha stampato -1... tutto qui. E non importa se l'inizio i è pari o dispari, non stampa mai -1...
Prova Close[], ma l'indice non dà più di 5000.
Potete dirmi per favore come calcolare i tick o le candele su un lungo periodo di tempo? (Un anno, per esempio).
Ho provato Close[], ma l'indice non dà più di 5000.
Le zecche o le candele fanno una così grande differenza, è spaventoso a dir poco...
C'è così tanta differenza tra le zecche e le candele che è spaventoso da dire...
Per esempio, un EA, se si specifica un qualsiasi periodo per esso, nel tester andrà per ticks o per barre M1, tutti ne terranno conto.
Ma se si prende un EA che va alla storia lunga in tempo reale e prende i dati da lì, non capisco come organizzarlo. Il terminale non dà più di 5000 candele.
UPD
Proverò a usare questa cosa, il codice è in rete
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Strange. Tutto d'un tratto funziona. Anche la milionesima barra è controllata. Non ha fatto nulla, ha letto la documentazione e ha bevuto il tè. L'ho appena eseguito di nuovo e ha funzionato. Ha avuto un errore per tutto il giorno, anche se avevo scaricato la cronologia e cambiato le impostazioni ieri.
Quindi, non c'era nemmeno bisogno di controllare il codice aggiuntivo (sopra).
MT4 è un po' capriccioso. O forse forex chif ha una tale funzione. Dovrò mettere quello standard invece di quello del broker.
Per esempio, un Expert Advisor, se gli si specifica un periodo qualsiasi, passerà attraverso il tester per ticks o per barre M1, tutti ne terranno conto.
Ma se si prende un Expert Advisor, che in modalità tempo reale va alla storia lunga e prende i dati da lì, non capisco come organizzarlo. Il terminale non dà più di 5000 candele.
UPD
Proverò a usare questa cosa, il codice è in rete
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Strange. Tutto d'un tratto funziona. Anche la milionesima barra è controllata. Non ha fatto nulla, ha letto la documentazione e ha bevuto il tè. L'ho appena eseguito di nuovo e ha funzionato. Ho avuto errori per tutto il giorno, anche se avevo scaricato la cronologia e cambiato le impostazioni ieri.
Quindi, non c'era nemmeno bisogno di controllare il codice aggiuntivo (sopra).
MT4 è un po' capriccioso. O forse forex chif ha una tale funzione. Dovrò mettere quello standard, non quello di intermediazione.
La prima chiamata a CopyRates() ha avviato il pompaggio dei dati storici (non eseguitelo per una settimana e otterrete di nuovo la stessa cosa, beh, forse non una settimana, ma qualche tempo).
Devi solo controllare quanti dati ci sono sul server e confrontare la quantità disponibile per l'Expert Advisor. Se è meno di quello che è richiesto - lascia l'EA fino alla prossima spunta. Alla prossima spunta, controlla di nuovo. Se per un certo numero di tentativi non si ottiene la storia richiesta - allora questo errore dovrebbe essere trattato come richiesto.