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
Ma guardo il log, e il log mostra lo stesso tick con una differenza di 4 secondi.
p.s.
Odio la frase "non può essere", mi sono abituato all'idea che tutto può succedere.
A proposito, forse è lontano dall'argomento, ma una volta sull'affermazione che la terra è rotonda ha anche detto qualcosa come questo - "non può essere.
In generale sono sempre in dubbio fino a quando non controllo e poi ricontrollo, e preferibilmente qualcun altro ricontrolla più volte.
Sei sicuro di non incasinare il codice che genera il log ed elabora i dati? Sono 4 secondi di differenza.
Le zecche sono già nel terminale, cioè sono già state inviate sulla rete.
Mettere il codice nel dominio pubblico
E vedete voi stessi.
I tic sono già nel terminale, cioè sono già stati trasmessi sulla rete.
Metteteci il codice di accesso aperto
E vedete voi stessi.
Grazie, farò una prova, seguo l'argomento da molto tempo, sono più interessato come ricercatore.
questo codice ha ritardato di 4 secondi?
Non sembra essere questo.
non vedere OnTick nel codice
Apparentemente questo era il codice in questione
Ho aggiunto il mio tempo al codice.
Ricordo il momento in cui OnTick() è stato attivato(t_time = GetMicrosecondCount();)
Poi prendo tempo, quando ogni funzione viene eseguita
Il risultato è
Cioè il tempo di esecuzione di ogni funzione è inferiore a 50 microsecondi!
Da dove possono venire 4 secondi?
Penso che due EAs erano in esecuzione in un terminale e il terminale semplicemente non ha il tempo di
Semplicemente non ha il tempo di "fondere" tutte le informazioni in un unico registro, quindi imposta l'ora locale come ritiene necessario.
Nel trading, personalmente, uso ordini asincroni.
Il fatto è che (se fai trading serio in borsa), hai bisogno di tutti i cambiamenti del mercato azionario,
e prima arriva questo evento, meglio è.
Io, per quanto mi riguarda, non vedo alternative a OnBook
In linea di principio, è possibile sollevare l'invocazione diretta delle operazioni commerciali da OnBook. Tutto quello che devi fare in OnBook è formare un flag per eseguire l'operazione e trattare il flag stesso altrove. Cioè, l'operazione stessa dovrebbe essere avviata in un'altra procedura dal flag formato, che creerà un evento, ma dopo aver lasciato la procedura HeBook, e quindi il codice OnBook stesso sarà libero da operazioni pesanti. Tuttavia, se gli ordini sono aperti in modo asincrono, e non c'è un'elaborazione folle di condizioni, è improbabile che causino ritardi significativi.
Ho aggiunto il mio tempo al codice.
Ricordo il momento in cui OnTick() è stato attivato(t_time = GetMicrosecondCount();)
Poi prendo tempo, quando ogni funzione viene eseguita
Il risultato è
Cioè il tempo di esecuzione di ogni funzione è inferiore a 50 microsecondi!
Da dove possono venire 4 secondi?
Penso che due EAs erano in esecuzione in un terminale e il terminale semplicemente non ha il tempo di
Il terminale semplicemente non ha il tempo di "scaricare" tutte le informazioni in un file di log ed è per questo che imposta l'ora locale come ritiene necessario.
Credo che sia vero, un ritardo così selvaggio non è realistico.
1 - FLUSH ha funzionato quando MQ lo ha deciso da solo!
2 - Ritardo tecnico nella scrittura su disco a causa del lavoro intensivo sul disco rigido
È possibile che ci sia già una coda di scrittura sulla vostra macchina locale - il che è abbastanza reale, ho avuto l'esperienza di diversi terabyte di backup riversati sul disco
Posso solo supporre quanto segue:
Ho avuto diversi terabyte di backup scaricati sul disco, ad esempio se ho eseguito Microsoft office, aggiornato il mio Windows e registrato filmati da Internet, o se ho lavorato con MS SQL sulla macchina locale allo stesso tempo,
fare un paio di backup, avere una dozzina di 4 torrenti e due o tre dozzine di programmi che scrivono intensamente su disco.
Cioè voglio dire che se c'è stato un lavoro intensivo con il disco - è possibile e c'è stato un ritardo nella scrittura del registro su disco.
Probabilmente vero, non realistico con un ritardo così selvaggio.
1 - FLUSH ha funzionato quando MQ lo ha deciso da solo!
2 - Ritardo tecnico nella scrittura su disco causato da un lavoro intensivo sul disco rigido.
È possibile che qualche coda sia già sulla vostra macchina locale per la registrazione - il che è abbastanza reale, ho avuto l'esperienza di diversi terabyte di backup riversati sul disco
Posso solo supporre quanto segue:
Ho avuto diversi terabyte di backup scaricati sul disco, ad esempio se ho eseguito Mac irosoft office, aggiornato il mio Windows e registrato filmati da Internet, o se ho lavorato con MS SQL sulla macchina locale allo stesso tempo,
fare un paio di backup, avere una dozzina di 4 torrenti e due o tre dozzine di programmi che scrivono intensamente su disco.
Voglio dire che se c'è stato un lavoro intensivo con il disco - è abbastanza possibile che ci sia stato un ritardo nella registrazione su disco.
Ho aggiunto il mio tempo al codice.
Ricordo il momento in cui OnTick() è stato attivato(t_time = GetMicrosecondCount();)
Poi prendo tempo, quando ogni funzione viene eseguita
Il risultato è
Cioè il tempo di esecuzione di ogni funzione è inferiore a 50 microsecondi!
Da dove possono venire 4 secondi?
Penso che due EAs erano in esecuzione in un terminale e il terminale semplicemente non ha il tempo di
Pertanto, fissa l'ora locale come ritiene necessario".
A proposito - in modo da non farsi prendere dal tempo di registrazione - si può aggiungere l'ora locale all'array - che si forma nel codice - qui sotto
Allora ci sarà una chiara differenza nel log tra il momento in cui il terminale ha resettato il log su disco e il momento in cui il tick o l'evento di OnBook è arrivato localmente.
E questo sarà più corretto dal punto di vista della ricerca.
Difficilmente collegato al disco, MT imposta il tempo già quando scrive il registro nella sua cache. Questo è quello che ho pensato il terminale in generale per 4 secondi può essere legato al carico complessivo del sistema, piuttosto RAM e CPU.
SEI SICURO DI QUESTO?
4 secondi ????, no! Pensate davvero che il processore sia bloccato per 4 secondi o che la memoria sia stata liberata per 4 secondi?
È più probabile che sia la coda di scrittura sul disco.
Il disco è più lento della memoria e del processore.
Il comando flush() è un comando C, probabilmente lo conoscete e viene eseguito quando vi fa comodo e può essere ritardato più spesso a causa dell'avvio del disco.
È così che si chiama quando si vuole scaricare i buffer su disco.