Bug e suggerimenti per migliorare CopyTicks() e CopyTicksRange() dopo la build 1485. - pagina 3
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
Grazie per il messaggio, il bug è stato risolto - ora funziona anche negli indicatori. Un aggiornamento sarà rilasciato presto.
Penso di essere venuto nel posto giusto. Cari membri del forum, sto lottando con questo problema da solo da molto tempo, ma non riesco a risolverlo. Spero che tu possa aiutare.
La situazione è la seguente: broker Finam (Whotrades), conto MMA. Lavoro con 26 titoli russi, cioè ho 26 finestre aperte e ho una copia del mio Expert Advisor appesa in ogni finestra. Usano la libreria C++ comune, che ha una finestra comune per gestire e visualizzare le informazioni di debug.
Alcuni parametri della strategia dipendono direttamente dal nastro di tick, quindi è molto importante che tutti i tick passino attraverso l'algoritmo. Naturalmente, è stata una sorpresa imparare che OnTick() non funziona su ogni tick, e non sempre, anche sul tick. Di conseguenza, sono arrivato alla necessità di usare le funzioni CopyTicks e CopyTicksRange per timer. Grazie a grandi sforzi (e non è scritto da nessuna parte) ho scoperto che datetime*1000 è esattamente il numero di millisecondi dal 1970, ma non è questo il punto.
Il risultato finale di ciò che abbiamo ora è un blocco di codice che, onTimer, dalle 10AM inizia a richiedere gli ultimi dati di tick.
Il problema è che, per qualche ragione importante, il primo giorno dopo il riavvio di metatrader, per alcuni titoli, i dati tick iniziano ad arrivare solo alle 11 del mattino (più o meno), il giorno dopo - tutto è normale, inizia alle 10 del mattino. La lista di questi titoli non è fissata in alcun modo, in alcuni primi giorni i tick potrebbero non arrivare per alcuni titoli, in alcuni giorni - per altri.
Pensavo che il problema fosse il caching dei tick. Ho pensato che fosse un problema di temporizzazione errata, ma questo si è rivelato non essere il caso. Inoltre, sembra che se CopyTicks(Range) non potesse restituire i dati, potrebbe restituire un errore (-1) e tutto avrebbe senso. Ma restituisce 0, l'array è anche zero e GetLastError restituisce ERR_SUCCESS. Cioè è come se queste spunte non esistessero, il che è strano perché sono presenti nel nastro della finestra.
Sono in perdita. Spero che tu possa dirmi cosa fare, o almeno la direzione in cui muovermi.
Se hai bisogno di fornire il codice, io, con il prossimo commento, lo ripulisco dai comandi "extra" e lo pubblico.
Grazie!
Sì, un codice è auspicabile. È un conto reale o demo? Qual è la costruzione del terminale?
Onestamente, non so se qualcuno qui lavora con il tuo broker. Se nessuno qui reagisce al tuo post - scrivi a ServiceDesk, puoi collegarti direttamente al tuo post. Dovranno anche fornire un codice.
Sì, un codice è auspicabile. È un conto reale o demo? Qual è la costruzione del terminale?
Onestamente, non so se qualcuno qui lavora con il tuo broker. Se nessuno qui reagisce al tuo post - scrivi a ServiceDesk, puoi collegarti direttamente al tuo post. Dovranno anche fornire un codice.
L'account è reale, ultima build, 1525. Ecco cosa fare. Creare il codice nudo di tick-taking senza l'algoritmo della strategia. Esegui. Se non funziona, dovreste chiamare il servizio di assistenza. Se funziona, forse si dovrebbero cercare gli errori nel proprio codice.
Grazie per aver menzionato il service desk, non sapevo fosse possibile. Ho guardato sul sito web di metaquotes, tutti i contatti sono numeri di telefono a Cipro e in Cina, non una singola e-mail.
Meglio andare direttamente al service-desk con il codice per riprodurlo.
L'account è reale, la build è l'ultima, 1525. Credo che questo sia ciò che dovremmo fare. Fate un codice di tick-taking nudo senza l'algoritmo della strategia. Esegui. Se non funziona, allora portatelo all'ufficio assistenza. Se funziona, forse si dovrebbero cercare gli errori nel proprio codice.
Grazie per aver menzionato il service desk, non sapevo fosse possibile. Ho guardato sul sito web di metaquotes, tutti i contatti sono numeri di telefono a Cipro e in Cina, non una singola e-mail.
Penso di essere venuto nel posto giusto. Cari membri del forum, ho lottato a lungo con questo problema da solo, ma non riesco a risolverlo. Spero che tu possa aiutare.
La situazione è la seguente: broker Finam (Whotrades), conto MMA. Lavoro con 26 titoli russi, cioè ho 26 finestre aperte e ho una copia del mio Expert Advisor appesa in ogni finestra. Usano la libreria C++ comune, che ha una finestra comune per gestire e visualizzare le informazioni di debug.
Alcuni parametri della strategia dipendono direttamente dal nastro di tick, quindi è molto importante che tutti i tick passino attraverso l'algoritmo. Naturalmente, è stata una sorpresa apprendere che OnTick() non funziona su ogni tick, e non sempre, anche su un tick. Di conseguenza, sono arrivato alla necessità di usare le funzioni CopyTicks e CopyTicksRange per timer. Grazie a grandi sforzi (e non è scritto da nessuna parte) ho scoperto che datetime*1000 è esattamente il numero di millisecondi dal 1970, ma non è questo il punto.
Il risultato finale di ciò che abbiamo ora è un blocco di codice che, onTimer, dalle 10AM inizia a richiedere gli ultimi dati di tick.
Il problema è che, per qualche ragione importante, il primo giorno dopo il riavvio di metatrader, per alcuni titoli, i dati tick iniziano ad arrivare solo alle 11 del mattino (più o meno), il giorno dopo - tutto è normale, inizia alle 10 del mattino. La lista di questi titoli non è fissata in alcun modo, in alcuni primi giorni i tick potrebbero non arrivare per alcuni titoli, in alcuni giorni - per altri.
Pensavo che il problema fosse il caching dei tick. Ho pensato che fosse un problema di temporizzazione errata, ma questo si è rivelato non essere il caso. Inoltre, sembra che se CopyTicks(Range) non potesse restituire i dati, potrebbe restituire un errore (-1) e tutto avrebbe senso. Ma restituisce 0, l'array è anche zero e GetLastError restituisce ERR_SUCCESS. Cioè è come se queste spunte non esistessero, il che è strano perché sono presenti nel nastro della finestra.
Sono in perdita. Spero che tu possa dirmi cosa fare, o almeno la direzione in cui muovermi.
Se hai bisogno di fornire il codice, io, con il prossimo commento, lo ripulisco dai comandi "extra" e lo pubblico.
Grazie!