MT5 Per coloro che si preoccupano della velocità.

 

Ho una domanda: come funzionanoi comandi?

C'è una classeCAccountInfo per lavorare con l'account,

Quando accediamo a questo comando, il terminale inizia una richiesta al server o questa informazione è ricevuta tutto il tempo insieme alle virgolette e la prendiamo semplicemente dal buffer del terminale o da un file sul disco?

In breve, quanto tempo impiega questo comando ad essere eseguito? E se legge da disco, come dipende dal tipo di disco o SSD?

Testo completo...

In realtà l'informazione più importante che è necessaria operativamente è la presenza di una posizione aperta o la sua mancanza e anche il livello di prezzo di una posizione aperta.

Ho capito che questa analisi dovrebbe essere fatta in void OnTrade() - cioè, quando la posizione è aperta, questa subroutine sarà inizializzata ?

 
Testi completi, postati in questo forum.
 

Quindi confronta il tempo di richiesta con il tempo di ricezione del valore o di esecuzione del comando. Capisco che dipende dalla tua situazione specifica (linea di comunicazione per esempio).

 

CAccountInfo non accede al server commerciale, è emesso dalla memoria, non sale sul disco.

 
zfs:

Quindi confronta il tempo di interrogazione con il tempo per ottenere un valore o eseguire un comando. Capisco che tutto dipende dalla vostra situazione specifica (linea di comunicazione per esempio).

E quindi testare ogni comando in questo modo?

Ho bisogno di scrivere un EA per un'esecuzione rapida e per questo ho bisogno di capire il processo e come può risultare. Ho visto molte volte che il terminale si blocca anche se uso 1 strumento, 1 EA e un paio di grafici... Ho visto anche altri glitch... anche se ho messo un veloce SSD invece di un hard disk ibernato...

 
Renat:

CAccountInfo non accede al server commerciale, è in uscita dalla memoria, non va su disco.

Ho specificato la funzione in modo errato, mi interessaPositionGet...().

Laposizione ha un insieme di proprietà disponibili per essere lette dalla funzionePositionGet...().

Grazie.

 
shelandr:

E quindi testare ogni comando in questo modo?

Ho bisogno di scrivere un EA per l'esecuzione rapida e per questo ho bisogno di capire il processo e come può risultare. Ho visto molte volte che il terminale si blocca anche se uso 1 strumento, 1 EA e un paio di grafici... Inoltre, ci sono altri difetti... anche se ho messo un SSD veloce invece di un disco rigido ibernato...

Confrontare l'ora locale prima e dopo e ottenere il rendimento, dipende da molti fattori ed è individuale per ognuno.

https://www.mql5.com/ru/docs/dateandtime/timelocal
Документация по MQL5: Дата и время / TimeLocal
Документация по MQL5: Дата и время / TimeLocal
  • www.mql5.com
Дата и время / TimeLocal - Документация по MQL5
 
zfs:

Confrontare l'ora locale prima e dopo e ottenere il rendimento, dipende da molti fattori ed è individuale per ognuno.


https://www.youtube.com/playlist?list=PLIo3S7h2bgAD8afp8iN-MSy5irsL33PfE

Per organizzare i contatori e i timer ad alta risoluzione, usate la funzioneGetTickCount(), che produce valori in millisecondi.

Sta suggerendo di misurare in secondi? Anche i millisecondi sono lenti.

il mio contatore di millisecondi è sempre attivo, ma se 1 su 1000 cicli fallisce anche in un minuto, non posso prenderlo senza un programma speciale.

Non riesco nemmeno a prenderne 1 in un minuto senza un programma speciale.

 
shelandr:

https://www.youtube.com/playlist?list=PLIo3S7h2bgAD8afp8iN-MSy5irsL33PfE

Per organizzare i contatori e i timer ad alta risoluzione, usate la funzioneGetTickCount(), che produce valori in millisecondi.

Sta suggerendo di misurare in secondi? Anche i millisecondi sono lenti.

il mio contatore di millisecondi è sempre attivo, ma se 1 su 1000 cicli fallisce anche in un minuto, non posso prenderlo senza un programma speciale.

Inoltre, quando il terminale si blocca, il contatore non funziona

Funziona fino a quel punto, perché misurare ciò che non è tangibile, il fatto che il vostro terminale si blocca è più probabile un ciclo infinito nel vostro algoritmo, la presenza di ricorsione profonda, piuttosto che la velocità del terminale.

 
zfs:

Funziona fino a quel punto, perché misurare qualcosa che non è tangibile, il fatto che il vostro terminale si blocca è più probabilmente un loop nel vostro algoritmo, la presenza di ricorsione profonda, non la velocità del terminale.

Niente affatto - il terminale si blocca solo quando ci sono 2 eventi - un'operazione come la modifica dell'ordine e un forte movimento di prezzo sullo strumento - il server di scambio chiude tutte le richieste dei clienti e si blocca.

Quando il movimento dei prezzi si stabilizza, inizia a servire le richieste dei clienti.

La ragione è che il server in questi momenti o non ha tempo per elaborare le richieste o lo fa di proposito per non permettere al cliente di ricevere un profitto. Per capire questo, abbiamo bisogno di un protocollo di scambio MT%6 con il server delle società di brokeraggio.

A proposito, in questo momento la posizione non può essere violata nemmeno dal terminale - non è disponibile...

Quando non ci sono movimenti improvvisi, il sistema funziona abbastanza velocemente e riesce a inviare una posizione aperta in un secondo... Ma vorrei ottenere il tempo tra il segnale di apertura di una posizione e un ordine di posizione aperta fino a 100 ms (anche se conosco sistemi con tempo di 15 ms.

Per questo sto facendo un sacco di lavoro, a partire dall'aggiornamento dell'hardware, del sistema operativo e la scelta di un provider...

МТ5 | Секреты трейдинга
  • admin
  • shelandr.ru
Маленький экскурс. На сегодня наиболее быстрым терминалом,позволяющим строить и запускать автоматически исполняемые стратегии ( роботы или эксперты ) является терминал метатрейдер 5 или сокращённо МТ5. Почему именно так? Есть ведь терминал МТ4… Да есть..и последний год я активно его применял и писал роботов и индикаторы.. Весьма эффективно...
 
shelandr:

Niente affatto - il terminale si blocca solo quando ci sono 2 eventi - operazione come la modifica di un ordine e un forte movimento di prezzo sullo strumento - il server di scambio chiude tutte le richieste dei clienti e si blocca.

Quando il movimento dei prezzi si stabilizza, inizia a servire le richieste dei clienti.

La ragione è che il server in questi momenti o non ha tempo per elaborare le richieste o lo fa di proposito per non permettere al cliente di ricevere un profitto. Per capire questo, abbiamo bisogno di un protocollo di scambio MT%6 con il server delle società di brokeraggio.

A proposito, in questo momento la posizione non può essere violata nemmeno dal terminale - non è disponibile...

State raccontando tali storie dell'orrore) 2 eventi non sono elaborati insieme ma in sequenza, ci sono errori e dovrebbero essere analizzati ed evitati) Non confondete le prestazioni del server e del terminale.