![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Forse basta fare un paio di test e le domande spariranno?
Forse. Vorrei avere più tempo per fare i test da solo :(
Forse basta fare un paio di test e le domande spariranno?
I test mostrano una differenza solo la prima volta che si inizia.
Symbol(), le voci _Symbol sono equivalenti a NULL (dove NULL è permesso al posto del nome del simbolo).
In questo caso, non c'è nessun controllo extra per l'esistenza del simbolo corrente, la presenza del simbolo corrente nel Market Watch e le proprietà di chiamata non necessarie del simbolo corrente, poiché le proprietà del carattere corrente sono memorizzate nella cache
Cioè, se viene specificato un normale parametro stringa invece di Symbol(), _Symbol o NULL, allora i controlli per il programma completo e altre chiamate di proprietà
Domanda:
- il comportamento delle chiamate SymbolInfoXXX in questi due casi, differiranno di più di un controllo?
?
A proposito, dai log freschi di oggi dell'ultima versione di MT5:
Erano 3 EAs in bilico su 1 simbolo, ognuno sul proprio grafico. E la richiesta continua ad ogni spunta. Tali picchi sono ovviamente poco frequenti, ma in effetti 1 richiesta di nuovi tick proveniente dall'ultimo tick è stata eseguita 700 ms.
Sto monitorando da circa 12 ore, ma posso già vedere che i ritardi superano tutti i limiti.
3 EAs, ognuno sul proprio grafico, tutti su 1 simbolo, stanno richiedendo i vecchi tick del tick precedente tramite CopyTicksRange. E il ritardo è di quasi 9 secondi. E sembra che questo non sia il limite. Molto probabilmente il negozio di tick è una risorsa condivisa il cui accesso è sincronizzato, ma anche con una pessima sincronizzazione non dovrebbero esserci questi tempi.
Alcuni diranno che si tratta di un inconveniente una tantum. Durante queste 12 ore di monitoraggio purtroppo ci sono state più di cento uscite di 1 secondo. E queste non sembrano più esplosioni una tantum. Sembra che ci fossero spesso più zecche in arrivo nello stesso momento, che è ciò che sta causando questi picchi.
Anche se chiudiamo gli occhi sul fatto che 3 EA hanno combattuto per una risorsa comune, guardiamo l'altro monitoraggio:
C'era solo 1 Expert Advisor sul simbolo. E ancora un secondo e mezzo. Non era l'unico, c'erano altri EA su altri simboli, ma non è multi-threaded? O i ticchettii per i diversi simboli possono comunque rallentarsi a vicenda?
Questa è una funzionalità di base per gli EA di base. La piattaforma è posizionata come una piattaforma di trading algoritmico. Detto questo, la funzionalità di base solleva forti domande. Una grande richiesta di guardarlo di nuovo, sono quasi sicuro che c'è spazio per migliorare da qualche parte. O sarebbe molto grato di essere in grado di ottenere gli ultimi tick da quando la funzione è stata chiamata, come suggerito qui
Forum sul trading, sistemi di trading automatico e strategie di trading di prova
MT5 e la velocità in azione
fxsaber, 2021.03.01 07:28
Per favore, pensate a una tale caratteristica.
Il problema di ottenere NUOVE zecche senza salti è ora risolto solo attraverso CopyTicks*. È un meccanismo molto ingombrante per questo compito diffuso. È come sparare agli uccelli con un cannone.
Quindi freni, mantenimento di enormi cache, ecc.
Minimizzato il numero di chiamate a SymbolInfoTick e CopyTicksRange:
Il terminale e la macchina (file di swap disattivato) con questo carico.
Come risultato, è stato possibile ridurre significativamente il numero di messaggi di ritardo (sono state fatte meno chiamate) delle funzioni regolari.
Registra per 50 minuti:
Non sembra troppo male. Non ci sono state transazioni commerciali. Che ne dici di loro, vedrò.
TUTTAVIA, il frammento evidenziato mostra che tre EA (personaggi diversi) sono stati ritardati quasi simultaneamente. Cioè il ritardo è universale per il terminale.
Symbol(), le voci _Symbol sono equivalenti a NULL (dove NULL è permesso al posto del nome del simbolo).
In questo caso, non c'è nessun controllo extra per l'esistenza del simbolo corrente, la presenza del simbolo corrente nel Market Watch e le proprietà di chiamata non necessarie del simbolo corrente, poiché le proprietà del carattere corrente sono memorizzate nella cache
Cioè, se si specifica un semplice parametro stringa invece di Symbol(), _Symbol o NULL, allora ci sono controlli per il programma completo e più proprietà di richiesta
Si prega di spiegare di nuovo, perché diverse interpretazioni delle tue parole da parte degli utenti del forum.
Nel terminale con un EA/carattere/simbolo.
Un tale registro in 15 minuti. Sembra essere una questione di lentezza di Windows, dopo tutto. In questo caso lo è.
Un chiaro esempio dei freni causati da Market Watch.
Guardate i valori nella colonna Processore (secondo da destra).
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Indicatori: Ping
fxsaber, 2021.03.12 10:56
Mi sono appena ricordato di questo grande indicatore.
È una foto della macchina con zero ping. Si scopre che il ritardo interno del terminale è in media di ~2ms. Rimbalza tra 0-9 ms.
Per esempio, il server ha ricevuto due tick: il primo, poi il secondo dopo 10 ms. Così, in Terminal il secondo tick può essere ricevuto non in 10 ms dopo il primo, ma in 10-19 ms. In media, in 12 ms.
Se fai trading dal mercato (market mart o ordini pendenti al prezzo corrente), sarà particolarmente difficile da gestire. È difficile dire se gli sviluppatori saranno in grado di migliorare qualcosa qui.
Guardando la borsa di Mosca, la situazione è simile. Infatti, facendo trading attraverso l'algo MT5, è quasi garantito di trovarsi alla fine della coda di esecuzione, non avendo il tempo di prendere la roba buona, purtroppo.