Errori, bug, domande - pagina 2938

 
Dato che non ci sono citazioni nei fine settimana, significa che anche il server non dà la cronologia? A mio parere, questa è un'ipotesi improbabile, ma c'erano ragioni per pensarlo, perché nei fine settimana l'indicatore o non funziona, o dopo il tedioso e persistente cambio dei TF e la commutazione dei parametri di input dell'indicatore nella finestra delle impostazioni, si sono ottenuti i risultati tanto attesi, anche se sarebbero dovuti accadere in qualsiasi configurazione delle impostazioni.
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 
x572intraday:

Sì, me lo ricordo perfettamente: fare un falso tentativo di precaricamento della storia a OnInit. Non ha funzionato né lì né in OnCalculate, anche in un ciclo con cento ripetizioni. Non so come funziona in realtà, ma all'esterno non c'era il caricamento della storia promesso (anche se con un ritardo), il risultato è rimasto insoddisfacente fino alla fine.

Inoltre, ci sono stati altri casi in cui la risposta è stata restituita ripetutamente:

ma alla fine non c'è stata una continuazione dell'indicatore, c'era silenzio nella risposta.

Non c'è bisogno di fare cicli con ripetizioni.

Se si tratta di un indicatore, fate una singola richiesta per il giusto simbolo-periodo in OnCalculate. Se fallisce, allora return(0)

Prendi il tempo di ricezione del tick del simbolo richiesto, normalizza questo tempo all'inizio del periodo richiesto, chiedi 1 ultima barra del simbolo-periodo richiesto e controlla il suo tempo. Poi chiedere lo stato temporale della storia

A seconda della lentezza del vostro computer e del carico di risorse, possono passare più di cento OnCalculate.

Il codice a cui ti riferisci è molto vecchio. Ma è buono per illustrare. Ma non è adatto agli indicatori, perché le richieste di storia dagli indicatori vengono eseguite senza alcuna attesa (cosa che è chiaramente scritta nella documentazione) e Sleep in indicatori è inutile.

 
x572intraday:
Dato che non ci sono citazioni nei fine settimana, significa che il server non dà la cronologia? Penso che questa sia un'ipotesi improbabile, ma c'erano ragioni per pensarlo, perché nei fine settimana l'indicatore o non funziona, o dopo il tedioso e persistente cambio dei TF e la commutazione dei parametri di input dell'indicatore nella finestra delle impostazioni, si sono ottenuti i risultati tanto attesi, anche se sarebbero dovuti accadere con qualsiasi configurazione di impostazioni.

Il server dà la storia anche nei fine settimana.

Controlla la costruzione delle barre in base al tempo dell'ultimo tick del simbolo appropriato

 
Slava:

Se è un indicatore, fate una richiesta una tantum per il periodo di caratteri richiesto in OnCalculate. Se fallito, allora return(0)

Beh, return(false) in caso di fallimento è un classico. Quindi lo faccio. Tutto andrebbe bene, ma il problema è che i miei ulteriori calcoli sono legati al successo del caricamento della storia (e questa logica non può cambiare), e in caso di fallimento e ritorno dalla funzione di calcolo, semplicemente non accadono e ulteriori costruzioni grafiche non ottengono le coordinate necessarie, tutto si blocca. Come evitare questo - non hanno pensato ancora e non si aspettano di cambiare qualcosa troppo. Finora ho il seguente risultato: o tutta la storia viene caricata e tutte le serie temporali per tutti i timeframe vengono costruite e l'indicatore funziona quasi immediatamente senza perdere alcun calcolo a causa di return(false), o parte della storia manca, e il codiceritorna a una funzione di livello superiore conreturn e cerca di richiedere la storia mancante in un ciclo infinito, che non porta a nulla. Ho semplicemente rifiutato la terza variante - senza ritorno - e alcuni calcoli falliscono, il che rende il disegno della grafica incompleto.

Ancora un po' seduto nel serbatoio, sono ancora perplesso... È reale organizzare la logica MQL dell'indicatore per lavorare solo con la storia locale, senza bisogno di scaricare la storia mancante e soffrire di ritardi a causa di essa? O qualsiasi funzione di Copy... ... inevitabilmente devo contattare il server per scaricare anche quella parte della storia, che non mi serve per l'elaborazione? Semplicemente, gli indicatori standard sono disegnati istantaneamente sulla cronologia esistente sul mio PC, senza alcun download (ho cercato gli indicatori nella cartella Examples e lì usano solo CopyBuffer(), e non in tutti)... O la ripresa è nascosta agli occhi? Qual è lo scopo della ripresa?

Grazie. Penserò alle vostre raccomandazioni - probabilmente, mi saranno utili.

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

Sono stato lontano dal computer per qualche ora. Durante questo periodo, si è verificata una situazione anomala e il robot ha iniziato a cucire un sacco di stampe. Di conseguenza, il disco è completamente intasato. Questo disturba il lavoro dei terminali, perché non possono scaricare la loro storia dei prezzi sul disco.


Dobbiamo impedire tale intasamento del disco. Una delle alternative è quella di vietare la scrittura nella cartella. Cioè vivere sempre senza registri su disco. Un'altra opzione è quella di uccidere i file di log quando non c'è più abbastanza spazio libero.

Qualcuno ha risolto questo problema.

 
Slava:

Se è un indicatore, fate una richiesta una tantum per il periodo di caratteri richiesto in OnCalculate. Se fallisce, allora return(0)

E se si desidera eseguire l'indicatore nel fine settimana?

Solo la chiamata forzata di OnCalculate dal timer (con tutte le stampelle sotto forma di copiare gli array da passare per riferimento)?

 
x572intraday:

È realistico organizzare una logica MQL non ridondante dell'indicatore per lavorare solo con la storia locale, senza bisogno di scaricare quella mancante e soffrire i ritardi associati? O qualsiasi funzione di Copy... ... inevitabilmente devo accedere al server per scaricare anche quella parte della storia, che non mi serve per l'elaborazione?

Si potrebbe fare la propria cache(scrivere su file).

Quando questo mi è stato suggerito, io, ovviamente, mi sono storto la tempia, ma è davvero meglio che aspettare che MQ cambi il suo approccio alla gestione delle serie temporali.

 
fxsaber:

Sono stato lontano dal computer per qualche ora. Durante questo periodo, si è verificata una situazione anomala e il robot ha iniziato a cucire un sacco di stampe. Come risultato, il disco è completamente intasato. Questo disturba il lavoro dei terminali, perché non possono scaricare la loro storia dei prezzi sul disco.


Dobbiamo impedire tale intasamento del disco. Una delle alternative è quella di vietare la scrittura nella cartella. Cioè vivere sempre senza registri su disco. Un'altra opzione è quella di uccidere i file di log quando non c'è più abbastanza spazio libero.

Qualcuno ha mai risolto un simile problema.

Per interesse mi sono precipitato a controllare e ho battuto la mascella a terra: 183 Gb! Sono quasi 4/5 del mio SSD. Le immagini delle macchine virtuali richiedono meno tempo. Almeno avrò qualcosa da leggere nella mia vecchiaia...

Виртуальный хостинг для MetaTrader 5
Виртуальный хостинг для MetaTrader 5
  • www.mql5.com
Самый быстрый виртуальный выделенный сервер (VPS) для трейдинга на форексе от производителей терминала MetaTrader 4/5
 
x572intraday:

Solo per divertimento, mi sono affrettato a controllare la mia casa e ho colpito il pavimento con la mia mascella: 183GB! Sono quasi 4/5 del mio SSD. Le immagini delle macchine virtuali richiedono meno tempo. Almeno ho qualcosa da leggere nella mia vecchiaia...

Print e Alert sono funzioni potenzialmente pericolose.

 
Tutti i prezzi sono visualizzati fino alla quinta cifra decimale, ma uno, per qualche motivo, nella stessa lista è visualizzato così:
Price=0.7235200000000001
Perché dovrebbe farlo? È un errore o dovremmo regolare l'uscita in modo unificato? Beh, diciamo che lo pettinerò con PrintFormat o fprint, ma in linea di principio non è una rappresentazione errata del numero?