Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1374
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
Qualcuno ti ha insegnato male. La variabile _LastError memorizzerà il valore fino al prossimo errore.
Bene, guarda, all'inizio del codice principale si verifica il seguente errore
ERR_INVALID_DATETIME
4010
Valore errato della data e/o dell'ora
E poi un oggetto viene creato dal codice e _LastError viene riscritto in
ERRARE_OGGETTO_NON_TROVATO
4202
Oggetto grafico non trovato
Se il controllo _LastError è alla fine del codice, come faccio di solito, otterrò 4202 e lo ignorerò. Cioè, l'errore 4010 rimarrà inosservato. Dove mi sbaglio?
È un requisito del mercato che nessun errore di esecuzione venga ricevuto dal server\dc del broker.
Grazie, non lo sapevo, pensavo che tutti gli errori fossero vietati.
Guardate, all'inizio del codice principale, per esempio, si verifica il seguente errore:
ERR_INVALID_DATETIME
4010
Valore errato della data e/o dell'ora
E poi un oggetto viene creato dal codice e _LastError viene riscritto in
ERRARE_OGGETTO_NON_TROVATO
4202
Oggetto grafico non trovato
Se il controllo _LastError è alla fine del codice, come faccio di solito, otterrò 4202 e lo ignorerò. Cioè, l'errore 4010 rimarrà inosservato. Dove sto sbagliando?
Grazie, non lo sapevo, pensavo che tutti gli errori fossero vietati.
Esattamente. Non hai torto...
Ciao, qualcuno può darmi un suggerimento.
Sto scrivendo i valori temporali di ogni barra specificamente in un array. C'è un limite di 3000 barre sul grafico.
Il compito:
- Per spostare l'array di valori ad ogni nuova barra.
Non riesco a regolarla per farla funzionare correttamente.
Sto spostando correttamente l'array su una nuova barra se (this.m_rt-this.m_pc)=1?
Ciao, qualcuno può darmi un suggerimento.
Sto scrivendo i valori temporali di ogni barra specificamente in un array. C'è un limite di 3000 barre sul grafico.
Il compito:
- Per spostare l'array di valori ad ogni nuova barra.
Non riesco a regolarla per farla funzionare correttamente.
Ho ragione a spostare l'array su una nuova barra se (this.m_rt-this.m_pc)=1?
Cioè la dimensione dell'array deve essere esattamente 3000 e alla formazione di una nuova barra l'indice zero dovrebbe essere sovrascritto prima ......... e alla fine scrivere il nuovo valore?
Se ho capito bene, qual è lo scopo del ciclo? Basta copiare l'array stesso nell'indice nullo partendo dal primo, e poi scrivere il nuovo valore nell'ultimo indice.
Se non viene trovato nessun oggetto, questo è l'errore di ricerca dell'oggetto...
ERRARE_OGGETTO_NON_TROVATO
4202
Oggetto grafico non trovato
Non c'è bisogno di allertare...
Ho fatto un paio di test... Ecco cosa ho in mente. In MQL5, non è necessario usare ObjectFind() quando si creano oggetti.
L'oggetto può essere creato senza alcun controllo preliminare della sua esistenza (semplicemente usando ObjectCreate). Anche all'interno dell'OnTick tale codice non causerà alcun errore _LastError.
Non so come sia implementato nelle profondità del codice di sistema MQL5, forse c'è qualche controllo già caricato lì che l'oggetto sarà creato solo se non è ancora presente. Ma si scopre che almeno quando si crea un oggetto in MQL5, ObjectFind() non è necessario. E tutte le sue proprietà sono invariabilmente aggiornate ad ogni tick.
Questo non si può dire di MQL4. La creazione di un oggetto sopra uno esistente causerà un errore 4200 ("L'oggetto esiste già"). Significa che l'uso diObjectFind() è obbligatorio per la sua creazione.Questo mi lascia una semplice possibilità di chiudere le sue proprietà da aggiornamenti costanti senza generare errori _LastError.
Per favore, confermate le mie conclusioni.
Cioè la dimensione dell'array dovrebbe essere esattamente 3000 e quando si forma una nuova barra, l'indice zero dovrebbe essere sovrascritto prima ......... e il nuovo valore dovrebbe essere aggiunto alla fine?
Se ho capito bene, perché ho bisogno di un ciclo? Semplicemente, l'array stesso dovrebbe essere copiato nell'indice nullo a partire dal primo, e poi il nuovo valore dovrebbe essere aggiunto all'ultimo indice.
Beh, sì, è chiaro, ma se c'è una pausa, per esempio, un ritardo, sono apparse due battute, le scrivo.
Grazie mille, ho capito, proverò attraverso CopyTime.
Ho fatto un paio di test... Ecco cosa succede. In MQL5, non è necessario usare ObjectFind() quando si creano oggetti.
L'oggetto può essere creato senza alcun controllo preliminare della sua esistenza (semplicemente usando ObjectCreate). Anche all'interno del codice OnTick questo codice non causerà alcun errore _LastError.
Non so come sia implementato nelle profondità del codice di sistema MQL5, forse c'è qualche controllo già caricato lì che l'oggetto sarà creato solo se non è ancora presente. Ma si scopre che almeno quando si crea un oggetto in MQL5, ObjectFind() non è necessario. E tutte le sue proprietà sono invariabilmente aggiornate ad ogni tick.
Questo non si può dire di MQL4. La creazione di un oggetto sopra uno esistente causerà un errore 4200 ("L'oggetto esiste già"). Significa che l'uso diObjectFind() è obbligatorio per la sua creazione.Questo mi lascia una semplice possibilità di chiudere le sue proprietà da aggiornamenti costanti senza generare errori _LastError.
Per favore, confermate le mie conclusioni.
Beh sì, sembra chiaro, ma se c'è un'interruzione, per esempio un ritardo, sono apparse due battute, le scrivo.
Grazie, capisco, proverò attraverso CopyTime.
Beh, se lo fate tramite CopyTime, non c'è nessun problema. Basta copiare dalle attuali 3000 barre e il gioco è fatto.
Come posso impostare il livello del trailing stop regolare nel codice del programma quando piazzo un ordine pendente o apro una posizione dal mercato?
Come questo sia fatto manualmente è chiaro. I programmi per i trailing stop non standard non sono interessanti.
Grazie in anticipo.
Perché un tale disegno non funziona? Dov'è l'errore... (il registro è vuoto)
E il registro è vuoto.