nuovo mql4 che fornisce millisecondi in timestamps....

 

Attualmente, mql4 può fornire solo il tempo fino al secondo più vicino per i tick in arrivo. Usiamo la seguente funzione:

MarketInfo(Symbol(), MODE_TIME)

1) C'è una funzione diversa che può fornire il timbro temporale al millisecondo o può essere utilizzata per determinare i millisecondi per i dati in tick in arrivo sulla piattaforma?

2) il nuovo mql4 che sta combinando le funzioni di mql5 sarà in grado di richiedere o ottenere time stamp in millisecondi (o sub-secondi) sui tick in arrivo?

Quindi come fa la piattaforma mt4 (e mt5) a distinguere correttamente i tick che arrivano allo "stesso tempo"?

 
4evermaat:

Attualmente, mql4 può fornire solo il tempo fino al secondo più vicino per i tick in arrivo. Usiamo la seguente funzione:

MarketInfo(Symbol(), MODE_TIME)

1) C'è una funzione diversa che può fornire il timbro temporale al millisecondo o può essere utilizzata per determinare i millisecondi per i dati in tick in arrivo sulla piattaforma?

2) il nuovo mql4 che sta combinando le funzioni di mql5 sarà in grado di richiedere o ottenere time stamp in millisecondi (o sub-secondi) sui tick in arrivo?

Quindi come fa la piattaforma mt4 (e mt5) a distinguere correttamente i tick che arrivano allo "stesso tempo"?

1) GetTickCount(), dovrebbe funzionare Live. Inutile sui dati storici.

2) Anche mt5_data non è salvato in millisecondi. Tuttavia, no_problem Live.

3) Non capisco dove vuoi arrivare. Se è lo stesso tempo in millisecondi allora avere i millisecondi non aiuterebbe. Se si tratta di tempi diversi in millisecondi che GetTickCount() potrebbe aiutare. Aiutare nel senso che il vostro codice elabora il tick corrente in meno di un millisecondo. Quanto sia importante dipende da cosa state cercando di ottenere... credo.

 

Avete almeno due scelte.

1. Distinguere i tick con GetTickCount() di MQL, che ha una precisione di 16 ms.

2. Accedere al tempo del PC usando GetLocalTime() da Kernell32.dll con precisione al nanosecondo (questo non funziona con gli emulatori su linux, restituiscono ancora la precisione di 16 ms).

 

4evermaat: Penso che i tick siano distinti dal Volume. Ogni volta che un nuovo tick viene inviato dal broker, il volume aumenta di uno. Ad esempio, se stai guardando un grafico M1, il volume di una particolare barra è quanti tick sono stati inviati in quel minuto.

In realtà ieri ho provato a fare una funzione che registra il tempo con i millisecondi. Ha usato TimeCurrent() e GetTickCount(). Matematicamente, era giusto... ma GetTickCount() non è abbastanza preciso. Ho scoperto che arrotondando i tempi degli eventi all'ultimo secondo (cioè usando solo TimeCurrent()) si hanno errori minori della mia funzione... :/

Proverò di nuovo un altro giorno, ma per quanto posso vedere, non potete fare affidamento su GetTickCount() se avete bisogno di precisione entro un secondo.

Forse gli esperti di C++ possono accedere a equivalenti più accurati di GetTickCount()...?

 
Ovo:

Avete almeno due scelte.

1. Distinguere i tick con GetTickCount() di MQL, che ha una precisione di 16 ms.

2. Accedere al tempo del PC usando GetLocalTime() da Kernell32.dll con precisione al nanosecondo (questo non funziona con gli emulatori su linux, restituiscono ancora la precisione di 16 ms).


1) Dai miei test, non credo che GetTickCount() abbia una precisione di 16ms. È vero, 16ms è il valore più piccolo che ottengo (a parte 0), ma non credo che i valori di 16ms siano precisi al più vicino 16ms. :/

2) Ah questa è una grande idea. Farò una prova.

 
alladir:


1) Dai miei test, non credo che GetTickCount() abbia una precisione di 16ms. È vero, 16ms è il valore più piccolo che ottengo (a parte 0), ma non credo che i valori su 16ms siano precisi al più vicino 16ms. :/

2) Ah questa è una grande idea. Farò una prova.


Mi dispiace, spesso confondo la precisione con l'accuratezza, non sono sicuro nemmeno ora di quale sia.
 
Ovo:

Mi dispiace, spesso confondo la precisione con l'accuratezza, non sono sicuro nemmeno ora di quale sia.

Neanch'io, so solo che ho una formula che dovrebbe funzionare matematicamente ma nella vita reale non lo fa... quindi do la colpa a GetTickCount() :)
 
alladir:

4evermaat: Penso che i tick siano distinti dal Volume. Ogni volta che un nuovo tick viene inviato dal broker, il volume aumenta di uno. Ad esempio, se stai guardando un grafico M1, il volume di una particolare barra è quanti tick sono stati inviati in quel minuto.


Ho visto questo molte volte prima, ma sei sicuro di questo? Ho controllato questo alcune volte sul mio broker ECN e il volume aumenta in modo abbastanza diverso su ogni tick, è probabilmente i lotti effettivamente scambiati che scorrono attraverso quel broker. Per esempio quando vendo 10 lotti, il prossimo tick sarà +10, non +1.

 

Il volume sale di 10 quando si scambiano 10 lotti?!? Non l'ho sperimentato. Ho un raccoglitore di tick che registra ogni tick. A volte il volume sale di 2 o 3, ma immagino che si tratti di tick molto veloci che il broker non ha inviato, o che sono arrivati mentre la funzione Start del mio tick collector era ancora in esecuzione.

Sì, penso solo che Volume = Ticks da googling, ma sembra adattarsi ai dati che sto vedendo

 
szgy74:

Ho visto questo molte volte prima, ma sei sicuro di questo? Ho controllato questo alcune volte sul mio broker ECN e il volume aumenta in modo abbastanza diverso ad ogni tick, probabilmente sono i lotti effettivamente scambiati che scorrono attraverso quel broker. Per esempio quando vendo 10 lotti, il prossimo tick sarà +10, non +1.

Volume è un brutto nome per quello che in realtà è "Tick count" . . . non ha niente a che fare con il volume/lotti scambiati. . . la ragione per cui può cambiare di più di 1 è perché si possono perdere dei tick.
 
4evermaat:

Attualmente, mql4 può fornire solo il tempo fino al secondo più vicino per i tick in arrivo. Usiamo la seguente funzione:

MarketInfo(Symbol(), MODE_TIME)

1) C'è una funzione diversa che può fornire il timbro temporale al millisecondo o può essere utilizzata per determinare i millisecondi per i dati in tick in arrivo sulla piattaforma?

2) il nuovo mql4 che sta combinando le funzioni di mql5 sarà in grado di richiedere o ottenere time stamp in millisecondi (o sub-secondi) sui tick in arrivo?

Quindi come fa la piattaforma mt4 (e mt5) a distinguere correttamente i tick che arrivano allo "stesso tempo"?

Non ci sono queste informazioni nemmeno in mql5. Ma ci sono eventi Timer che possono essere usati con precisione di millisecondi, anche se non so se questa caratteristica sarà disponibile con il nuovo mql4.
Motivazione: