Auguri per MT5 - pagina 51

 
Yedelkin:

Spiegazione. Se un Expert Advisor non elabora tick per il simbolo al cui grafico è collegato, allora la generazione continua di eventiNewTick per quel simbolo porterà a un overflow della coda di eventi elaborati da quell'Expert Advisor.


https://www.mql5.com/ru/docs/runtime/running

Tutti gli eventi generati dal terminale client si accumulano nella coda comune. Così gli eventi sono processati uno dopo l'altro nell'ordine in cui vengono ricevuti. L'unica eccezione è l'evento NewTick. Se c'è già un evento nella coda o se l'evento è in fase di elaborazione, un nuovo evento NewTick non viene messo in coda.

La coda degli eventi ha una dimensione limitata. Quando la coda si riempie, i vecchi eventi vengono rimossi senza elaborazione per fare spazio ai nuovi eventi. Questo è il motivo per cui si raccomanda vivamente di scrivere gestori di eventi efficienti e di non usare cicli infiniti (eccetto per gli script che gestiscono un singolo evento Start).

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Rosh:

https://www.mql5.com/ru/docs/runtime/running

Il terminale client memorizza tutti gli eventi che si verificano in una coda comune. In questo modo, gli eventi vengono elaborati uno dopo l'altro nell'ordine in cui vengono ricevuti. L'eccezione è l'evento NewTick. Se c'è già un evento nella coda o se l'evento è in fase di elaborazione, un nuovo evento NewTick non viene messo in coda.

La coda degli eventi ha una dimensione limitata. Quando la coda si riempie, i vecchi eventi vengono rimossi senza essere elaborati per fare spazio ai nuovi eventi. Per questo motivo si raccomanda vivamente di scrivere gestori di eventi efficienti e di non usare cicli infiniti (l'eccezione sono gli script che gestiscono un singolo evento Start).

Così, la regola "un evento NewTick per tutta la coda comune" è sempre valida, indipendentemente dalla presenza/assenza della funzione OnTick() nell'EA. Grazie per il chiarimento!

C'è ancora una domanda sullo spegnimento del processo di generazione di tick non necessari nel tester.

 

Yedelkin:

Rimane la questione della disabilitazione del processo di generazione di tick inutili nel tester.

Non elaborarli lì e logicamente tutto andrà bene.

 
Interesting:

Non elaborarli lì e logicamente tutto andrà bene.

È solo a prima vista "tutto sarà OK". Suppongo che le spunte nel tester siano generate forzatamente, durante tutto il periodo di test/ottimizzazione. Sei d'accordo? Se è così, i tick saranno generati forzatamente per il simbolo a cui è collegato l'Expert Advisor e che (i tick) non vengono elaborati da quell'EA. Cioè, nonostante l'assenza di elaborazione di ticks per questo simbolo (il tuo suggerimento), il tester sprecherà il suo tempo nella generazione di ticks. Se c'è qualcosa che non capisco, sono pronto a imparare nuove cose con piacere.

 
Yedelkin:

Bene, te lo ripeto: l'Expert Advisor non funziona affatto con il simbolo a cui è collegato. E non ha bisogno di tracciare alcun SL e TP su questo simbolo. Cioè, l'Expert Advisor non ha bisogno di tick su questo simbolo. EA è attaccato al simbolo solo come richiesto, perché ha bisogno di essere attaccato almeno da qualche parte per funzionare.

Ahem... E perché dovresti testare l'Expert Advisor su un simbolo su cui non fai trading? Fai un test su quello su cui hai bisogno di fare trading.

E se non hai bisogno di fare trading, allora non hai nemmeno bisogno di testare - lavora con la cronologia delle quotazioni dell'EA in esecuzione in tempo reale.

 
Rosh:

Il terminale client memorizza tutti gli eventi che si verificano in una coda comune. In questo modo, gli eventi vengono elaborati uno dopo l'altro nell'ordine in cui vengono ricevuti.

Rashid, cosa succede agli eventi che non sono gestiti dall'EA/script/indicator? Ecco su cosa verteva la domanda.

Sono davvero messi in coda e rimossi da essa solo quando viene attivata l'elaborazione dell'evento a cui la risposta è destinata?

O avevo ancora ragione nel supporre che ognuno ha la propria coda, e solo gli eventi che devono essere elaborati sono raccolti lì?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Yedelkin:

Presumo che le spunte nel tester siano generate forzatamente, per tutto il periodo di test/ottimizzazione. Sei d'accordo? Se è così, i tick saranno generati forzatamente per il simbolo a cui è collegato l'Expert Advisor e che (i tick) non vengono elaborati da quell'EA. Cioè, nonostante l'assenza di elaborazione di zecche per questo simbolo (il tuo suggerimento), il tester perderà il suo tempo per generarle. Se c'è qualcosa che non capisco, sarò felice di imparare cose nuove.

Parliamo della modalità "Tutte le zecche".

Capisco che non sono solo generati forzatamente, e tutti i simboli selezionati e scambiati nell'Expert Advisor (nessun modo senza di esso).

I tick sul simbolo selezionato nelle impostazioni del tester (simbolo principale) possono essere gestiti in OnTick oppure no (in questo caso, se questo tipo di evento è già gestito o esiste nella coda, non viene aggiunto ad essa).

Almeno, questo è il modo in cui ho capito la logica dello sviluppatore.

3.In base al compito che hai descritto, otteniamo informazioni sui tick sui simboli aggiuntivi con gli eventi personalizzati, relativi al ChartEvent. Il ChartEvent arriva alla coda e sarà eseguito o cancellato quando è piena.

Procedendo da quanto sopra, è chiaro che se l'elaborazione dei tick da "simboli aggiuntivi" (esterni a Expert Advisor) viene eseguita in modo inefficace, è l'elaborazione di ChartEvent che sarà un problema e che sporcherà l'intero stack della coda degli eventi.

Forse non capisco bene la logica del tuo Expert Advisor, ma in queste condizioni, metterei in un timer un blocco per raccogliere informazioni sui prezzi di tutti i simboli e altre informazioni importanti sui simboli aggiuntivi. E usando ChartEvent trasferirei solo le informazioni sulla comparsa, per esempio, di una nuova barra.

Si possono anche elaborare informazioni su altri simboli nel blocco OnTick (se è usato), come si fa in MT4. Ma il timer ha qualche vantaggio qui, perché il timer viene elaborato periodicamente e non più di una volta al secondo.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
komposter:

Rashid, cosa succede agli eventi che non sono gestiti dall'EA/script/indicator? Questa era la domanda, vero?

Sono davvero messi in coda e rimossi da essa solo quando viene attivata l'elaborazione dell'evento a cui la risposta è destinata?

O avevo ancora ragione nel supporre che ognuno ha la propria coda, e solo gli eventi che devono essere elaborati sono raccolti lì?

Per quanto ho capito, se non c'è elaborazione, gli eventi nella coda vengono "eliminati" da essa quando arriva un nuovo evento (se la coda è piena).
 
komposter:

Rashid, cosa succede agli eventi che non sono gestiti dall'EA/script/indicator? Questa era la domanda, vero?

Sono davvero messi in una coda e rimossi da essa solo quando l'elaborazione dell'evento a cui la risposta è fornita è abilitata?

O avevo ancora ragione nel supporre che ogni coda ha il suo, e solo gli eventi che devono essere elaborati sono raccolti lì?

Risposta degli sviluppatori:

Ogni Expert Advisor/Script/indicator ha la sua coda. Naturalmente, nulla nella coda viene congelato se il gestore non è disponibile. Beh, se non c'è, viene letto e saltato.

 
komposter:

Ahem... Perché dovresti testare un EA su uno strumento che non stai negoziando?

Probabilmente non hai letto molto attentamente i miei post, che hanno già esposto il principio di funzionamento. Suggerisco di chiudere l'argomento a questo punto.

Voglio spiegare perché l'ho fatto, ma in ogni caso, grazie.