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
Un kernel in tempo reale aiuterebbe in qualche modo?
Mettete più core nel sistema e non rendete la situazione al 100% un carico single core.
Non credete alle favole, i processori e il thread scheduler non funzionano come immaginate.
Nelle ultime build la ricezione del flusso di tick non ha alcun effetto, anche teoricamente. Praticamente SymbolInfoTick funziona già con la cache, ma i singoli cittadini continuano a cercare un gatto nero.
E non è nemmeno l'80% nel test. Ha 6 agenti in esecuzione su 4 core, cioè il 100% garantito.
L'unica domanda è come il task scheduler del suo sistema sta gestendo la situazione. Allo stesso tempo, gli autori affermano che la colpa è dell'implementazione del terminale.
Cioè, si crea artificialmente una situazione in cui un computer è sovraccarico, quando letteralmente tutto su di esso rallenta, e poi si fanno delle affermazioni sotto forma di "Oh, guarda, perché il terminale a volte lagga".
Chiudiamo gli occhi sul fatto che anche in queste condizioni è "circa lo 0,01%" - al diavolo i dettagli! Basta dire che "a nessuno interessa la temperatura media dell'ospedale", "i ritardi causano problemi nel trading" e "vogliamo l'HFT".
Inoltre, ovviamente vogliamo HFT in 20 esperti su un vecchio desktop da ufficio o una macchina virtuale morta.
PS PositionSelectByTicket() nella sua implementazione ha certamente accesso a una risorsa condivisa con sincronizzazione degli accessi. E se non selezioni la posizione su ogni chiamata, stai leggendo il vecchio prezzo. Era più facile fare una "istantanea" tramite SymbolInfoDouble.
grazie
Ho la mia domanda perché sei mesi fa, stavo ottimizzando il mio codice e testando la velocità delle funzioni di sistema, e sei mesi fa, SymbolInfoDouble era più lento di SymbolInfoTick
Forse è vero quello che dici però. Oggi stavo cercando su Google alcuni articoli sulla cache multi-core (non mi sono interessato a queste informazioni per molto tempo),
Ecco un breve articolohttps://i2hard.ru/publications/25666/
il punto è che i dati arrivano a correre in ALU solo da L1-cache che è molto piccola e se si carica il processore a piena velocità, allora davvero - il test si trasformerà in un test del sistema operativo + test della velocità della cache del processore (caricamento, previsione dei dati L1+L3) ma non nel test delle prestazioni del codice (applicazione)
fxsaber, cosa succede se si imposta una priorità bassa per gli agenti nel task manager e una alta per MT5?
Non riesco a trovare un'utility che blocchi tutti i programmi/ thread dell'OS dall'essere assegnati a un thread specifico della CPU, altrimenti sarebbe possibile riservare un thread per MT5 e bloccarlo automaticamente dall'essere usato da altri programmi, il che potrebbe in teoria ridurre i lag.
Nelle ultime build la ricezione del flusso di tick non ha alcun effetto, anche teoricamente. In pratica, SymbolInfoTick funziona già con la cache, ma certi cittadini continuano a cercare un gatto nero.
Un cittadino particolare ha fattoduplicare il codice MQL dai suoi pantaloni larghi che ha mostrato che la stampella funziona più velocemente della funzione regolare nelle stesse condizioni.
Ma voi sostenete che la vostra funzione è buona, ha solo delle limitazioni nelle condizioni d'uso.
E non è nemmeno l'80% nel test. Ci sono 6 agenti in esecuzione su 4 core, cioè garantiti al 100%.
L'unica domanda è come il task scheduler del suo sistema sta gestendo la situazione. Allo stesso tempo, alcuni sostengono che la colpa è dell'implementazione del terminale.
Cioè, si crea artificialmente una situazione in cui un computer è sovraccaricato fino ai suoi limiti e tutto rallenta su di esso, e poi si fanno delle affermazioni sotto forma di "Oh, guarda, perché il terminale a volte lagga laggiù".
6/8 - niente è in ritardo. Browser, compilazione, debug ecc. girano in parallelo senza alcun accenno di ritardo.
Ma ora ho spento tutto di proposito, lasciando solo 4/8 di agente. La situazione non è cambiata con la tua funzione frenante.
Inoltre, ovviamente, vogliamo HFT in 20 esperti su un vecchio desktop da ufficio o una macchina virtuale morta.
È stata usata una macchina veloce. E solo 6 classifiche davano già i freni.
PS PositionSelectByTicket() nella sua implementazione ha certamente accesso a una risorsa condivisa con sincronizzazione degli accessi. E se non si seleziona la posizione su ogni chiamata, si legge il vecchio prezzo. Era più facile "fotografare" tramite SymbolInfoDouble.
Anche io uso questo.
Di che tipo di velocità nelle prestazioni di combattimento possiamo parlare quando ci sono problemi nel terminale.
L'Expert Advisor scansiona tutti gli strumenti finanziari e cerca un determinato modello.
Inciampa su un simbolo e si tiene stretto!!!
Codice da aiuto, ho messo solo passi, strumento finanziario con problema e timer:
Risultato del lavoro:
Non ho mai aspettato che lo script finisse di funzionare.
Finché il terminale ha questi bug, nessuna esecuzione di battaglia è fuori questione!!!
Ci si aspettava che quando un titolo entra nella revisione del mercato, almeno tutte le sue proprietà e la data di inizio della storia sono tirate fuori per esso. Se non c'è storia sul server, allora
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date)
Dovrebbe restituire NULL istantaneamente, perché il tempo di esecuzione 18446744073475877138 ?
Forse non so qualcosa, anche la funzione CopyXXX si blocca per 16-29 secondi!!!
Non è normale che un broker abbia 3000-6000 strumenti finanziari.
Forse non so cosa, anche le funzioni CopyXXX si bloccano per 16-29 secondi!!!
Non è normale che un broker abbia 3000-6000 strumenti finanziari.
I bar sono il male. Quindi, per favore, postate su di loro in un altro thread.
I bar sono il male. Quindi, per favore, postate su di loro in un altro thread.
Forse sapete come selezionare programmaticamente uno strumento finanziario e non rimanere bloccati per anni?
Forse sapete come selezionare programmaticamente uno strumento finanziario e non rimanere bloccati per anni?
Non mi sono mai imbattuto in un compito simile.
fxsaber, cosa succede se si imposta una priorità bassa per gli agenti nel task manager e una alta per MT5?
Non riesco a trovare un'utility che blocchi l'assegnazione di un thread specifico della CPU a tutti i programmi/filetti dell'OS, altrimenti sarebbe possibile riservare un thread per MT5 e bloccare automaticamente la sua occupazione da parte di altri programmi, il che potrebbe in teoria ridurre i lag.
Imposta tutti gli agenti alla priorità più bassa.
Non funziona.
ZZZ Il numero di EA in esecuzione influenza il risultato.
Cari sviluppatori, potreste informarmi come viene calcolato MQL_MEMORY_USED?
Ho fatto un calcolo della memoria che tutte le variabili EA occupano.
È meno del 10%. Se ho capito bene, MQL_MEMORY_USED contiene la cache History e la cache CopyTicks. Ma è ancora molto meno.
Allo stesso tempo, l'Expert Advisor parallelo consuma diverse volte meno. Ma il principio è lo stesso.
In generale, cosa è incluso in questo valore?
Ho salvato un modello con Expert Advisor e l'ho applicato allo stesso grafico causando il ricaricamento. L'ho visto così.
L'uso della memoria è cambiato di quasi un ordine di grandezza. È difficile spiegare cosa significa questo al momento.