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
Guarda i tempi del registro. Tutto questo è successo in un ms, e accanto ad esso (nello stesso ms) un mucchio di OnBooks.
Puoi contare tutti gli eventi con i contatori, ma anche visivamente puoi vedere che ci sono più OnBooks.
Non hai scritto che usi gli ordini Async?
Mi chiedevo, quale algoritmo usate per controllare l'esecuzione dei trade?
Andrew, i numeri lì sono microsecondi fissi quando le OnFunctions sono attivate, e tutto viene stampato insieme poi dall'array. Gli OnBooks in totale potrebbero essere di più - li conterò, ma non è chiaro perché saltano davanti agli OnTick nella coda o cosa. O non ogni OnTick corrisponde a un OnBook?
benvenuti nel mondo del networking ))))
La cosa più semplice da fare è eseguireNetstat - a -b sotto l'amministratore.
Vedrete porte e software, non voglio disturbare, ma credo che il server MT5 passi asincronicamente pacchetti con diverse informazioni che il terminale mette negli "scaffali" necessari.
SZZY: riguardo a Print() e al salto delle stampe se ne stampi molte alla volta, lo sai? - Scrivi solo le tue informazioni nel file - in questo modo salverai tutto e in ordine, ma non dimenticare di chiudere il file prima di chiuderlo. In teoria e Print() nei registri nel file dovrebbe essere completo, ma non hanno controllato e in generale non mi fido se un sacco di dati in uscita. Discusso quihttps://www.mql5.com/ru/forum/329730, molto spesso si parla di "impronte mancanti" ))) - ricerca
Andrew, i numeri sono fissati in microsecondi quando le OnFunctions sono attivate, e poi stampati tutti insieme dall'array. Forse ci sono più OnBooks in totale - li conterò, ma non è chiaro perché saltano prima degli OnTick nella coda. O non ogni OnTick corrisponde a un OnBook?
Capito.
Beh, c'è comunque un sacco di OnBook in giro. È difficile trarre conclusioni con un registro del genere.
Pensavo avessi scritto che stavi usando gli ordini Async?
Mi chiedevo, quale algoritmo usate per controllare l'esecuzione degli scambi?
In OnTradeTransaction()+ controllare la funzione se non c'è una risposta del server per molto tempo.
Generalmente per magia.
Riservo 65535 simboli magici per ogni simbolo quando si imposta un EA,
e quando invio un ordine gli assegno un numero magico unico che non interseca in alcun modo altri simboli.
che non si sovrappone in alcun modo ad altri strumenti.
Ecco come ho impostato il numero magico iniziale per un simbolo
Magic - ulong (8 byte) ad es.
GAZR-3.12
Byte[7] (byte alto) è "G"
Byte[6] è "A"
Byte[5] per "Z"
Il byte[4] è "R
Byte[3] è "3
Byte[2] è "12"
Byte[1] e Byte[0] sono riserva di magia (65535)
Questo è il modo in cui passo attraverso i magiks quando invio un ordine:
Ma questo funziona solo per FORTS poiché i nomi dei simboli sono standardizzati!
Aggiunto
Se l'ordine viene inviato con successo, allora
ricorda il tempo
E poi (se non c'è risposta in OnTradeTransaction)
E poi la stessa funzioneFindOrderBuyMagic
Aggiunto da
"Buona idea" aggiungere l'identificatore EA (0-255) al 1° byte nell'automagia,
ma non ne ho ancora bisogno, quindi non l'ho fatto :)
In OnTradeTransaction()+ controllare la funzione se non c'è una risposta del server per molto tempo.
Grazie per il suggerimento.
1. Il secondo e i successivi terminali del broker sono pay-as-you-go e non ho strategie in cui commercio solo azioni(portafogli azionari).
2. Se avete intenzione di emettere ilGetMicrosecondCount() accumulato, allora
farlo senza timer in OnDeinit(), quando EA esce, tutto verrà stampato.
Per favore mandami il link al broker, è possibile nella LC.
È un ramo interessante... :-)
benvenuti nel mondo del networking ))))
la cosa più semplice da fare è eseguireNetstat - a -b sotto l'amministratore
Vedrete porte e software, non voglio disturbare, ma credo che il server MT5 passi asincronicamente pacchetti con diverse informazioni che il terminale mette negli "scaffali" necessari.
SZZY: riguardo a Print() e al salto delle stampe se ne stampi molte alla volta, lo sai? - Scrivi solo le tue informazioni nel file - in questo modo salverai tutto e in ordine, ma non dimenticare di chiudere il file prima di chiuderlo. In teoria e Print() nei registri nel file dovrebbe essere completo, ma non hanno controllato e in generale non mi fido se un sacco di dati in uscita. Discusso quihttps://www.mql5.com/ru/forum/329730, molto spesso si parla di "impronte mancanti" ))) - ricerca
Igor, la perdita di stampe è discussa da coloro che non hanno aperto il file di log, un centinaio di volte e Rinat Fatkullin stesso ha scritto che non si perde nulla nel file di log. Ma per il tuo post non è stato invano :) ho aggiunto l'output in un file separato, inoltre ho fatto il secondo file, dove ho output un po 'diverso (raccogliendo tutti gli eventi in CArrayObj) per bypassare possibili bug del mio design, che ordina due array, cioè sto mettendo tutti in CArrayObj da due array, poi ordinare per microsecondi e uscita con marcatura quale evento Tick o Book.
E sì, cosa c'entra con i porti, cosa c'entra? Sto solo testando la coda degli eventi EA. Se arriva un tick, dovrebbero essere generati due eventi - OnTick, e il corrispondente OnBook, e OnBook è sempre messo in coda, e OnTick può scomparire se c'è già OnTick in coda (come in manuale), cioè la situazione in cui uno dopo l'altro OnTick senza OnTick può essere solo se 1. gli OnTick vanno "senza accodamento" 2. c'è un ritardo di sistema di OnBook, questo è quello che voglio controllare, questo può spiegare il ritardo di secondi, precedentemente identificato dai colleghi. Gli OnBooks totali sono 2+ volte di più in un giorno, ma perché sono in ritardo? Se questo ritardo è dovuto ai pacchetti asincroni e al parsing, forse, ma io controllo solo il fatto del loro arrivo nell'Expert Advisor finora. Come testare con il resto delle sfumature in mente, non ci ho ancora pensato.
Ecco il nuovo codice, all'apertura testerò la correttezza del lavoro ed eseguirò per la giornata.
s.w. La ragione può anche essere: se Tick è passato agli stessi prezzi senza cambiare la tazza - OnBook non è formato? Non sono uno specialista in commercio di azioni, chi può dirmi. Pensavo che OnTick causasse sempre OnBook.
Ma mi chiedo se il responsabile sia soddisfatto delle risposte alla sua domanda.
Ho già ricevuto tutte le risposte e ho tratto le mie conclusioni.
Ho bisogno di analizzare la striscia di scambi per un periodo di tempo fisso - prezzi degli scambi, volumi realizzati, ecc.
E ho anche bisogno di simulare il funzionamento dell'algoritmo nel tester di strategia.
L'evento OnTick si adatta perfettamente a questo, i risultati del trading reale e i risultati della modellazione nel tester concordano con un piccolo errore per mia soddisfazione.
Se avete bisogno di un'analisi più veloce della striscia, potete usare OnTimer.
E non è necessario che ogni tick che arriva al terminale sia messo in OnBook - questo è lo specifico dell'esecuzione degli ordini di mercato.
E ogni tick che entra nel terminale non deve necessariamente andare in OnBook - è specifico per l'esecuzione degli ordini di mercato.
Al contrario, ogni tick(evento) che arriva al gestore OnTick deve essere sincronizzato con OnBook.
Ci sono tre eventi nel gestore OnTick, il cambiamento del prezzo della migliore offerta, il cambiamento del prezzo della migliore domanda e il trade (ultimo).
Se il prezzo bid o ask cambia senza una negoziazione, questo sarà un evento e OnTick riceverà questi eventi.
E OnBook deve anche catturare questi eventi, ma i propri eventi, il suo gestore, altrimenti ci sarà un mismatch dei prezzi bid e ask tra i gestori.
E se OnTick riceve un ultimo evento, significa che un trade è passato.
Il commercio genera l'evento in OnTick, perché dopo il commercio il prezzo o il volume di offerte e domande di cambiare nel mercato.
È un circolo vizioso.
In OnTick così come in OnBook, c'è un evento Best Bid e Best Ask.
Questi eventi dovrebbero essere sempre sincroni in entrambi i gestori.
E l'evento dura da solo, genera un evento in OnBook dopo lo scambio.
Pertanto, qualsiasi evento che arriva al gestore OnTick deve essere riflesso sincronicamente in OnBook.