Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1392

 

Saluti. Puoi darmi un suggerimento?

Se ho capito bene, l'esecuzione di OnTick() avviene quando arriva un nuovo tick e a condizione che l'esecuzione (dopo il tick precedente) sia già finita.

Da qui la domanda: quale tempo di esecuzione diOnTick() è considerato normale e quale è già un tempo lungo?

 
E un'altra domanda: l'Expert Advisor ha un algoritmo di trading e una grafica. È possibile organizzare la priorità del trading algoritmico sul design visivo? E se sì, come?
 
Andrey Sokolov:

Saluti. Puoi darmi un suggerimento?

Se ho capito bene, l'esecuzione di OnTick() avviene quando arriva un nuovo tick e a condizione che l'esecuzione (dopo il tick precedente) sia già finita.

Da qui la domanda: quale tempo di esecuzione diOnTick() è considerato normale e quale tempo è già lungo?

Dipende dallo strumento. Se ci sono solo 3-5 millisecondi tra i tick, l'esecuzione di OnTick() non dovrebbe essere più lunga. E ci sono tali strumenti in cui il tick è ritardato fino a 1 secondo o anche di più.

 
Andrey Sokolov:
E un'altra domanda: il mio Expert Advisor ha il trading algoritmico e la visualizzazione grafica. È possibile organizzare la priorità degli algoritmi di trading rispetto al design visivo? E se sì, come?

Questo design visivo cambia ad ogni spunta? È sufficiente inserirlo in OnInit()?

 
Alexey Viktorov:

Questo design visivo cambia ad ogni spunta? Forse è sufficiente inserirlo in OnInit()?

Ci sono diversi conteggi nel pannello e oggetti sul grafico che cambiano.


Se al momento dell'esecuzione di OnTimer() si verifica un nuovo tick, cosa viene eseguito e in quale ordine?

 
Andrey Sokolov:

Ci sono diversi conteggi nel pannello e oggetti sul grafico che cambiano.


Se si verifica un nuovo tick mentre OnTimer() è in esecuzione, cosa viene fatto e in che ordine?

In base all'ordine di arrivo
 
MakarFX:
In ordine di priorità

Se non è un segreto, posso avere un link alla fonte dell'informazione?

C'è qualche dubbio cheOnTick() venga eseguito in questo caso.

 
Andrey Sokolov:

Se si verifica un nuovo tick durante l'esecuzione di OnTimer(), cosa e in che ordine viene eseguito?

non in nessun ordine

se un nuovo evento si verifica durante i calcoli complessi all'interno della funzione OnTimer() o OnTick(), sarà saltato

cercare nel forum "tick skipping" dovrebbe trovare una discussione e gli amministratori hanno ripetutamente scritto su di esso

a proposito, in MT4 per la sincronizzazione con i nuovi dati tick c'era RefreshRates() - forse anche nella guida di questa funzione c'è una menzione di tick skipping

 
Andrey Sokolov:

Se non è un segreto, posso avere un link alla fonte dell'informazione?

C'è qualche dubbio cheOnTick() venga eseguito in questo caso.

Andrey Sokolov:

Ci sono diversi conteggi nel pannello e oggetti sul grafico che cambiano.

Se un nuovo tick viene eseguito durante OnTimer(), cosa viene eseguito e in quale ordine?

Se c'è OnTimer() tutto il resto viene messo in coda tranne il nuovo OnTimer() - viene saltato.

Ho avuto una situazione simile e ho messo OnTimer() prima di OnTick() e ho eseguito EventSetMillisecondTimer(100).

Finalmente ho risolto il mio problema.

 

Igor Makanu, MakarFX, chi di voi ha ragione? Cerchiamo di trovare la descrizione e scopriamola. L'ho visto una volta, ma non riesco a trovarlo per tutto il giorno.


Un altro suggerimento, per favore: se c'è più di un EA nel terminale, in quale ordine elaboreranno i tick, se la loro elaborazione richiede più tempo della pausa tra i tick?