Errori, bug, domande - pagina 2904

 
suncrypto:

Ciao!

Messaggio agli sviluppatori.

Sto continuando a testare Python - MT5. C'è un'altra cosa interessante, forse è un bug.
L'essenza.

Ogni tanto comincio a selezionare strumenti finanziari tra tutti quelli che sono disponibili nel terminale (circa 4000k).
Mi collego al terminale da un'applicazione esterna, cioè gli script non vengono avviati all'interno del terminale.

Ottengo barre giornaliere e minuti per ogni simbolo e poi uso "pandas" per eseguire i calcoli e la selezione iniziale degli strumenti.
Ho notato che il terminale inizia gradualmente a caricare il processore fino al 70-80% dopo una tale operazione.
Dopo il lavoro dello script il carico del processore non diminuisce (ho provato ad aspettare 15 minuti), ma il terminale è molto lento. Aiuta solo chiudendo il terminale.
Se eseguo lo script due volte senza chiudere il terminale, lo script funziona senza errori ma il carico della CPU rimane al 70-80%.

Ho semplificato lo script al minimo in modo da poter ripetere l'esperimento e lasciare solo la richiesta di citazioni. Il problema persiste ancora.

Se necessario, pronti a registrare video o a fornire informazioni in altra forma.

Il codice è pyhton:

Con tutto il rispetto, Alexander.

Non c'è nessun errore nel comportamento del terminale. Dovete capire che per lavorare con 1000 o più caratteri - avete bisogno di un ferro potente e molta memoria. Inoltre si raccomanda di limitare fortemente il numero di barre sul grafico (nelle impostazioni del terminale).

Almeno i7 o i9 di nona o meglio decima generazione. Memoria di almeno 32GB.


"... ha lasciato solo la richiesta di preventivo ..." - Se pensi davvero che richiedere le quotazioni sia un'operazione molto semplice - smetti di fare trading e non avvicinarti mai al tuo computer.

 
Vladimir Karputov:

Non c'è nessun errore nel comportamento del terminale. Dovete capire che per lavorare con 1000 o più simboli - avete bisogno di hardware potente e molta memoria. Si raccomanda anche di limitare fortemente il numero di barre sul grafico (nelle impostazioni del terminale).

Almeno i7 o i9 di nona o meglio decima generazione. Memoria di almeno 32GB.


"... ha lasciato solo la richiesta di preventivo ..." - Se pensi davvero che richiedere le quotazioni sia un'operazione molto semplice - smetti di fare trading e non avvicinarti mai al computer.

Forse non c'è nessun errore, non sto dicendo che ci sia, ho solo segnalato questo comportamento come un possibile bug, questo thread sembra essere riservato a questo, o mi sbaglio?

In base a quello che dici, il mio hardware è più che adeguato. Il consumo di memoria, a proposito, è relativamente basso per questa operazione, circa 3,5 GB. Tutto è a posto con la memoria, e in generale tutto funziona regolarmente.

Ora, ho intenzionalmente ridotto il numero di barre nelle impostazioni da 1mln a 1k. Non ha fatto alcuna differenza. Penso che avrà più effetto se apro qualche centinaio di schede nel terminale.

Non è una questione di quanto tempo di CPU viene mangiato nel processo di enumerazione, la questione è che dopo che tutte le query sono finite, il carico non scende.
Se assumiamo che per ogni carattere richiesto viene lasciato in memoria un thread separato (non distrutto) per un uso successivo, allora questo spiega tutto e non ci sono domande.

E ho forse affermato che la richiesta di preventivi è un'operazione semplice? Non è affatto quello che ho scritto. Su di me che semplifico lo script al primitivo in modo che altri fattori non abbiano un impatto e lasciando "solo la richiesta di preventivo".

Se pensate davvero che il trading richieda di capire che la richiesta di quotazioni è un'operazione complicata, non è affatto così.

Per quanto riguarda il consiglio di abbandonare il trading e stare lontano dal computer, troppo tardi. Sei in ritardo di 25 anni per il primo punto e di 10 anni per il secondo.

Se gli sviluppatori lo riterranno necessario, prenderanno in considerazione le informazioni. Se non lo fanno, non lo fanno.

Saluti, Alexander.

 
suncrypto:

Forse non c'è nessun errore, non lo sto affermando, ho segnalato questo comportamento come un possibile bug, questo thread sembra essere progettato per questo, o mi sbaglio?

Da quello che dici, ho un hardware più che sufficiente. Il consumo di memoria, a proposito, è relativamente basso per questa operazione, circa 3,5 GB. Tutto è a posto con la memoria, e in generale tutto funziona regolarmente.

Ora, ho intenzionalmente ridotto il numero di barre nelle impostazioni da 1mln a 1k. Non ha fatto alcuna differenza. Penso che avrà più effetto se apro qualche centinaio di schede nel terminale.

Non è una questione di quanto tempo di CPU viene mangiato nel processo di enumerazione, la questione è che dopo che tutte le query sono finite, il carico non scende.
Se assumiamo che per ogni simbolo richiesto un thread separato viene lasciato in memoria (non distrutto) per un ulteriore utilizzo, allora questo spiega tutto e non ci sono domande.

E ho forse affermato che la richiesta di preventivi è un'operazione semplice? Non è affatto quello che ho scritto. Su di me che semplifico lo script al primitivo in modo che altri fattori non abbiano un impatto e lasciando "solo la richiesta di preventivo".

Se pensate davvero che il trading richieda di capire che la richiesta di quotazioni è un'operazione complicata, non è affatto così.

Per quanto riguarda il consiglio di abbandonare il trading e stare lontano dal computer, troppo tardi. Sei in ritardo di 25 anni per il primo punto e di 10 anni per il secondo.

Se gli sviluppatori lo riterranno necessario, prenderanno in considerazione le informazioni. Se non lo fanno, non lo fanno.

Saluti, Alexander.

Hai riavviato il tuo terminale dopo aver diminuito il numero di barre?

 
Vladimir Karputov:

Hai riavviato il terminale dopo aver ridotto il numero di barre?

Certo che l'ho fatto.
 
Vladimir Karputov:

Hai riavviato il terminale dopo aver ridotto il numero di barre?

suncrypto:
Naturalmente.

Ho fatto un esperimento.

Ho aperto circa 100 finestre nel terminale (non ne apre di più, c'è un limite).
Il carico del processore è leggermente aumentato all'8-10% e la dimensione della memoria utilizzata è aumentata, il che è logico.
Poi ho chiuso il terminale, l' ho riaperto, il carico è aumentato fino al 70-80% e dopo circa un minuto si è normalizzato ed è tornato all'8-10%.

(Impostatelo a 1 milione di barre nelle impostazioni).


Quindi, la situazione descritta sopra (con connessione esterna), è come si dice, o un bug o una caratteristica.
Solo gli sviluppatori conoscono la risposta giusta.
Se si tratta di un bug, allora chiudete il terminale e riapritelo dopo tale operazione. L'operazione non è frequente.

 
suncrypto:

Se questa è una caratteristica, allora chiudere il terminale dopo una tale operazione e riaprirlo è una bella soluzione. L'operazione non è frequente.

Sì, il terminale dovrebbe mantenere una cache delle serie temporali richieste di recente.

Ma non deve farlo per sempre, credo che ci fosse un timeout di 3 o 5 minuti.

 
suncrypto:


Si prega di notare che dalla build 2650 in poi:


1.Terminal: Aggiunta l'impostazione "Carica i dati del grafico in anticipo per le posizioni e gli ordini aperti".


Per risparmiare traffico, la piattaforma di trading scarica la storia dei prezzi degli strumenti solo al momento della richiesta effettiva, ad esempio quando si apre un grafico o si esegue un test. Tuttavia, per gli strumenti utilizzati attivamente questo potrebbe non essere sempre conveniente. Se abiliti la nuova opzione, i grafici degli strumenti per i quali hai posizioni aperte o ordini in sospeso saranno aggiornati in background ogni volta che lanci la piattaforma. Così, quando aprite i grafici, non dovrete aspettare che i dati vengano ricaricati, saranno immediatamente disponibili per l'analisi.

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
  • 2020.10.08
  • www.mql5.com
В пятницу 9 октября 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Sì, il terminale dovrebbe mantenere una cache delle serie temporali richieste di recente.

Ma non dovrebbe farlo per sempre, credo che ci fosse un timeout di 3 o 5 minuti.

Sì, tutto è a posto nel terminale stesso. Chiudere le finestre "non necessarie" riduce sia il carico della CPU che il consumo di memoria.
L'unica domanda finora è sulla connessione esterna da python.
 
Vladimir Karputov:

Si prega di notare che dalla build 2650 in poi:


1.Terminal: Aggiunta l'impostazione "Carica i dati del grafico in anticipo per le posizioni e gli ordini aperti".


Per risparmiare traffico, la piattaforma di trading scarica la storia dei prezzi degli strumenti solo al momento della richiesta effettiva, ad esempio quando si apre un grafico o si esegue un test. Tuttavia, per gli strumenti utilizzati attivamente questo potrebbe non essere sempre conveniente. Se abiliti la nuova opzione, i grafici degli strumenti per i quali hai posizioni aperte o ordini in sospeso saranno aggiornati in background ogni volta che lanci la piattaforma. Così, quando aprite un grafico, non dovrete aspettare che i dati vengano caricati, poiché saranno immediatamente disponibili per l'analisi.

Su questo punto, c'è un disclaimer:"I grafici degli strumenti per i quali avete posizioni aperte o ordini pendenti.
Inoltre, tutti i grafici sono già stati caricati nel database locale mentre lo script è in esecuzione, il traffico è minimo.

Anche se non è del tutto corretto, se facciamo un'analogia con il Server SQL al quale facciamo almeno 1 milione di richieste di dati, allora, sì, ci sarà un picco di carico sul processore al momento, ma il carico sul processore si ridurrà sicuramente dopo che l'operazione sarà completata.

Certo, Metatrader non è un server sql, è una piattaforma diversa, ma per qualche motivo mi sembra che dopo l'esecuzione delle richieste a MetaTrader per le quotazioni e la chiusura della connessione ad esso, tutto dovrebbe tornare alla normalità. Spero che gli sviluppatori di metatrader mi spieghino.

 
mox_dimass:

Qual è il bug con il rollover nel tester? Nel file allegato uno screenshot con un esempio: una posizione Sellaperta, chiusa dal rollover attraverso Buy, poi riaperta attraverso Sell, ma con volume zero.

Di conseguenza, la posizione non viene riaperta, ma scompare. È evidenziato nello screenshot. Ne ho già scritto, ma senza immagini. Che tipo di bug è questo, rende impossibile testarlo.

Mi chiedo se gli sviluppatori risponderanno a questo inconveniente. Dopo tutto, il rollover è generato dal tester e non dal mio software.