Errori, bug, domande - pagina 2934

 
Vitaly Muzichenko:

Quindi fare un'uscita se i dati non vengono copiati

Al prossimo tick tutto sarà caricato e il codice funzionerà correttamente

No, nel mio caso, il codice funzionerà terribilmente male, gli oggetti scivoleranno dalle loro posizioni nell'indicatore. Mi occuperò di caricare la storia...

 
Евгений Баженов:

Ciao, sto testando il mio robot, dopo aver finito il test ho visto un sacco di campi con requotes nel Log, cosa significano queste pile di messaggi e cosa posso aggiungere al codice per evitare che appaiano? Grazie, felice anno nuovo!

Presumo che la sessione di trading nel simbolo sia più piccola della sessione di quotazione. Poi le quotazioni vanno nel Tester, ma il trading su di esse è proibito durante questi periodi.

 
x572intraday:

La follia è chehttps://www.mql5.com/ru/docs/series/timeseries_access menziona Sleep() nell'articolo sul caricamento della storia nel codice, ma l'aiuto per Sleep() dice: "La funzione Sleep() non può essere chiamata dagli indicatori personalizzati, perché gli indicatori sono eseguiti nel thread dell'interfaccia e non deve rallentarlo". Si scopre che ho bisogno di caricare la storia in un indicatore.

L'idiozia di chi?

Quando si richiedono dati all'indicatore (non all'EA), questi stessi dati vengono ricevuti senza ritardo. Vitaly ha detto bene.

Richiedere il periodo di simbolo richiesto in OnInit per iniziare la creazione della storia richiesta

 
Slava:

L'idiozia di chi?

Quando si richiedono dati da un indicatore (e non da un Expert Advisor), questi dati vengono forniti immediatamente così come sono, senza alcun ritardo. Vitaly ha detto correttamente.

Richiedere il periodo di simbolo richiesto in OnInit per avviare la creazione della storia richiesta

1. Se ho capito bene, suggerite di fare la richiesta una volta all'inizio dell'indicatore . Qui https://www.mql5.com/ru/docs/runtime/event_fire l'evento Init è circondato da molte condizioni: "Questo evento viene generato anche dopo un cambio di simbolo e/o periodo del grafico, dopo aver ricompilato il programma in MetaEditor, dopo un cambio di parametri di input da un EA o un indicatore personalizzato. Anche l'Expert Advisor viene inizializzato dopo il cambio del conto."Ma l'utente non deve generare questi eventi, può sedersi comodamente sull'unico TF corrente e guardare l'indicatore, quindi la reinizializzazione e il ricaricamento della storia più di una volta non accadrà. Tuttavia, la mancanza di storia non si verifica necessariamente all'inizio del lavoro, l'errore appare improvvisamente e ripetutamente in momenti casuali durante il lavoro (inoltre, durante il lavoro a lungo termine dell'indicatore può non apparire affatto; spesso non c'è errore all'inizio del lavoro). Allora la parte mancante della storia dovrebbe essere scaricata non solo in OnInit, ma anche inOnCalculate, per evitare l'errore ricorrente?

O con"iniziare a costruire la storia giusta" intendevi dire che è sufficiente farlo una volta inOnInit e poi non avrai più bisogno di farlo? Ma da un lato, un errore si verifica anche quando tutta la storia dello strumento è caricata e tutti i timeframe sono sintonizzati, perché l'indicatore è multitime e ryllime; d'altra parte, nelle stesse condizioni un errore può non verificarsi.

2. Cosa significa "mancanza di parte della storia"? Quando si esegue il terminale per la prima volta dopo l'installazione, scarica la cronologia mancante - letteralmente quella a sinistra, prima nel tempo. Ma copia il CopyTime(_Symbol,tf,0,1,Arr), cioè copia l'ultima barra sul lato destro, non la barra della storia. Il nuovo bar potrebbe in qualche modo riferirsi alla storia e alla sua mancanza?

3. Ammetto che le mie vaghe spiegazioni potrebbero non essere sufficienti per capire il problema; non voglio essere mandato ahttps://www.mql5.com/ru/forum/133408, quindi sono pronto a condividere il codice con commenti con gli sviluppatori e altri che vorrebbero debuggarlo insieme, perché voglio rendere l'indicatore disponibile gratuitamente tramite CodeBase. A proposito, se questo è il caso, è accettabile rilasciare codice libero non rilasciato?

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
События клиентского терминала - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

1. Se ho capito bene, suggerite di fare una richiesta una volta all'inizio del lavoro dell'indicatore, a OnInit. Qui https://www.mql5.com/ru/docs/runti me/event_fire L'evento Init è circondato da un sacco di condizioni di accompagnamento: "Questo evento viene generato anche dopo un cambio di simbolo e/o periodo del grafico, dopo aver ricompilato il programma in MetaEditor, dopo un cambio di parametri di input da un EA o un indicatore personalizzato. Anche l'Expert Advisor viene inizializzato dopo il cambio del conto."Ma l'utente non deve generare questi eventi, può sedersi comodamente sull'unico TF corrente e guardare l'indicatore, quindi la reinizializzazione e il ricaricamento della storia più di una volta non accadrà. Tuttavia, la mancanza di storia non si verifica necessariamente all'inizio del lavoro, l'errore appare improvvisamente e ripetutamente in momenti casuali durante il lavoro (inoltre, durante il lavoro a lungo termine dell'indicatore può non apparire affatto; spesso non c'è errore all'inizio del lavoro). Allora la parte mancante della storia dovrebbe essere scaricata non solo in OnInit, ma anche inOnCalculate, per evitare l'errore ricorrente?

O con"iniziare a costruire la storia giusta" intendevi dire che è sufficiente farlo una volta inOnInit e poi non avrai più bisogno di farlo? Ma da un lato, si verifica un errore anche quando viene caricata l'intera storia del simbolo e tutti i timeframe sono completati, perché l'indicatore è multitemporale e rylltime; dall'altro lato, nelle stesse condizioni può non verificarsi un errore.

2. Cosa significa la nozione stessa di "perdere un pezzo di storia"? Quando si esegue il terminale per la prima volta dopo l'installazione, scarica la cronologia mancante - letteralmente quella a sinistra, prima nel tempo. Ma copia il CopyTime(_Symbol,tf,0,1,Arr), cioè copia l'ultima barra sul lato destro, non la barra della storia. Il nuovo bar potrebbe in qualche modo collegarsi alla storia e alla sua mancanza?
Negli indicatori, nessuno vi garantirà l'uscita dei dati richiesti se non sono pronti.

Gli script e gli Expert Advisors hanno una garanzia sufficiente.

Pertanto, negli indicatori attendere il ciclo di disponibilità dei dati.

Per aumentare la probabilità di ottenere i dati giusti, fate delle false richieste di dati nell'indicatore. Questo provocherà il caricamento in background dei dati.
 
Renat Fatkhullin:
Negli indicatori, nessuno garantisce che i dati richiesti vengano rilasciati se non sono pronti.

Mi sembra, dal mio basso campanile, che i dati richiesti siano pronti, perché è l'ultima barra disponibile al momento. Come può non essere pronto? Se appare sul grafico, è pronto.

 
Renat Fatkhullin:
Negli indicatori, nessuno vi garantirà il rilascio dei dati richiesti se non sono pronti.

Nei copioni e negli esperti c'è sufficiente garanzia.

Così negli indicatori aspettano ciclo dopo ciclo la disponibilità dei dati.

Fico... Anche nel nuovo anno nel post. Buon anno. !!!!!!!

 
x572intraday:

Mi sembra, dal mio basso campanile, che i dati richiesti siano pronti, perché è l'ultima barra disponibile al momento. Come può non essere pronto? Se appare sul grafico, è pronto.

Leggete attentamente la mia risposta.
 
Renat Fatkhullin:
Leggete attentamente la mia risposta.

Dobbiamo definire la nozione di disponibilità dei dati. Se vedo una barra nel terminale, è già disponibile o ci sono altre opzioni? E sì, Renat, e il punto 3 del mio post precedente?

 
x572intraday:

Dobbiamo definire la nozione di disponibilità dei dati. Se vedo una barra nel terminale, è già disponibile o ci sono altre opzioni? E sì, Renat, e il punto 3 del mio post precedente?

Se si ottiene una risposta di funzione, allora i dati non sono disponibili.

Se avete prove del contrario, dovreste fornirle in modo pienamente coerente e tecnicamente riproducibile.