Auguri per MT5 - pagina 50

 

Yedelkin:

Bene, perché il manuale dice che"l'evento NewTick è generato quando viene ricevuto un nuovo tick sul simbolo a cui l'EA è collegato al grafico", il fatto di ricevere nuovi tick dovrebbe causare la generazione di eventiNewTick.

A giudicare dalla domanda, pensi che nessun evento NewTick sia generato quando OnTick() è disabilitato? Ma non ho trovato tali informazioni nel manuale di riferimento.

Io la vedo così: se non c'è un gestore, l'evento non viene accodato. Questo è logico, e non vedo il motivo di scriverlo nella guida.

L'Expert Advisor genera un numero enorme di eventi (eventi commerciali, da un grafico, ecc.), non è necessario gestirli tutti.

Se tutti gli eventi (compresi quelli non gestiti) fossero messi in coda, alcuni EA non funzionerebbero - il loro evento non arriverebbe alla coda (per esempio, quando si lavora solo sul timer una volta al giorno).

 
komposter:

Ecco come la vedo io: se non c'è un gestore, l'evento non sarà accodato. Questo è logico e non vedo il motivo di scriverlo nella guida.

L'Expert Advisor genera un numero enorme di eventi (eventi commerciali, eventi del grafico, ecc.), non è necessario gestirli tutti.

Se tutti gli eventi (compresi quelli non gestiti) fossero messi nella stessa coda, alcuni Expert Advisors non potrebbero lavorare - il loro evento non arriverebbe alla coda (per esempio, quando solo il timer lavora una volta al giorno).

Secondo me, i due tipi di eventi (NewTick e Timer) devono essere trattati separatamente dagli altri.

Molto probabilmente, dovremmo anche separare gli eventi commerciali (Trade) e gli eventi per l'elaborazione della profondità di mercato (BookEvent).

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

Lizar, interessante,

Mi sono sbagliato sulle conclusioni del funzionamento del tester. A quanto pare, ho scambiato i log della demo per i log del tester. Il design di

void OnChartEvent(const int id,           
                const long& lparam,   
                const double& dparam, 
                const string& sparam  
                )
  {
   if(id==CHARTEVENT_CUSTOM) TesterWithdrawal(1);
  }

non funziona ancora per me. Suggerisce che l'evento utenteCHARTEVENT_CUSTOM dagli indicatori sui simboli alieni non viene ricevuto o non viene elaborato.

 
komposter:

Credo che questo sia il caso - se non c'è un gestore, l'evento non viene accodato.

Sarebbe bello se questa versione fosse confermata. Ma per il tester, i tic vengono generati comunque. Anche quando non sono assolutamente necessari.

komposter:

Questo è logico e non vedo alcuna ragione per scriverlo nella guida.

Forse è logico, ma non per tutti. Gli sviluppatori hanno ripetutamente rimproverato gli utenti per l'eccesso di pensiero. Perciò nelle mie conclusioni cerco di basarle solo sulle informazioni disponibili al momento. E attualmente, come è stato detto prima, il manuale dice che"l'evento NewTick viene generato quandoviene ricevuto unnuovo tick per il simbolo, al cui grafico è collegato l'Expert Advisor". Non ho trovato nessuna clausola di eccezione, quindi sono arrivato alla conclusione che il fatto di ricevere nuovi tick deve causare la generazione di eventiNewTick.

komposter:

L'Expert Advisor genera un numero enorme di eventi (eventi commerciali, dal grafico, ecc.), non è necessario gestirli tutti.

Per assicurarsi che l'eventoNewTick non sia gestito, propongo di fare una funzione di commutazione. L'Expert Advisor sarà in grado di decidere se richiede la generazione di eventiNewTick da parte del terminale. Il mio Expert Advisor dovrebbe funzionare solo con segnali "alieni", ma ha comunque bisogno di essere collegato a qualche grafico. E si scopre, per esempio, che durante i test/ottimizzazione una certa quantità di tempo viene spesa per generare tick per il simbolo a cui l'Expert Advisor è collegato mentre l'Expert Advisor non ha affatto bisogno di questi tick (e degli eventi NewTick).
 
Yedelkin:

Ma per il tester, i tic vengono generati comunque. Anche quando sono completamente inutili.

Cosa significa? E controllerà l'attivazione degli ordini (pendenti, SL e TP) a quali prezzi?

Nel tester, abbiamo bisogno di tick per tutti i simboli, su cui l'EA fa trading. Naturalmente, più grande è il numero di strumenti e più alta è la qualità della modellazione, più l'operazione sarà lenta.


Yedelkin:

E al momento, come detto sopra, il manuale dice che"l'evento NewTick viene generatoquando arriva un nuovo tick per il simbolo al cui grafico è collegato l'Expert Advisor". Non ho trovato nessuna clausola di eccezione a questa regola e quindi sono arrivato alla conclusione che l'arrivo di nuovi tick deve causare la generazione di eventiNewTick.

Sì, ma seguendo questa logica, tutti gli altri eventi dovrebbero essere accodati allo stesso modo. Sarebbe troppo.

 
komposter:

Come mai? E controllerà l'attivazione degli ordini (pendenti, SL e TP) a quali prezzi?

Bene, ripeto: l'EA non funziona affatto con il simbolo attaccato. E non ha bisogno di tracciare SL e TP di questo simbolo. Cioè, l'EA non ha bisogno di tick per questo simbolo. L'EA è attaccato al simbolo solo quando è necessario, perché deve essere attaccato almeno da qualche parte per essere attivato.

komposter:


Sì, ma seguendo questa logica, tutti gli altri eventi devono essere accodati esattamente allo stesso modo. Sarebbe troppo.

Seguendo questa logica, tutte le eccezioni alle regole per la generazione di tick e/o eventi di accodamento dovrebbero essere elencate nel libro di riferimento. Finora, ho trovato solo un'eccezione, - per il caso, quando (1) c'è la funzione OnTick(), (2) questa funzione gestisce l'evento NewTick precedente. Questa eccezione non è adatta al mio caso.

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

Yedelkin:

Seguendo questa logica, tutte le eccezioni alle regole per la generazione di tick e/o eventi di coda dovrebbero essere elencate nel manuale. Finora, ho trovato solo un'eccezione - per il caso in cui (1) c'è una funzione OnTick(), (2) questa funzione gestisce l'evento NewTick precedente. Questa eccezione non si adatta al mio caso.

Sarebbe logico supporre che se OnTick() è assente, non c'è elaborazione di tick per questo grafico (dal simbolo di questo grafico).

Se gli eventi sono accodati o no, e in quale coda è un'altra questione. La cosa principale è che i tick non vengono elaborati dal grafico (Expert Advisor su di esso)!

Se consideriamo che l'EA elabora i tick di altri grafici, dovremo considerare l'elaborazione dei tick ESTERNI.

Così, a mio parere, nel mio Expert Advisor dovrebbe essere creato il proprio trattamento di tick, in cui come parametri di input per passare: simbolo, tempo, prezzo (l'evento personalizzato teoricamente permette di fare tutto questo).

Penso che sia il lavoro con il potk dell'evento personalizzato che deve essere studiato e ottimizzato in dettaglio.

 
Interesting:

Se si tiene conto che l'EA elabora ticks da altri grafici, allora è necessario lavorare con l'elaborazione di ticks ESTERNI.

Così, a mio parere, in Expert Advisor dovrebbe essere creato il proprio trattamento di tick, in cui come parametri di input per passare: simbolo, tempo, prezzo (l'evento personalizzato teoricamente permette di fare tutto questo).

Secondo me, solo il lavoro con il potk degli eventi personalizzati dovrebbe essere studiato e ottimizzato nei dettagli.

Hai ragione, è esattamente il modo in cui sono andato, gestendo solo i tic esterni. Qui non ci sono ancora domande.

Interessante:

Sarebbe logico supporre che se OnTick() è assente, l'elaborazione dei tick per questo grafico (secondo il simbolo di questo grafico) non viene eseguita.

Se gli eventi sono accodati o no, e in quale coda è un'altra questione. La cosa principale è che i tick non vengono elaborati dal grafico (Expert Advisor su di esso)!

Quindi sono fissato a fare in modo che la coda generale nel mio caso non sia intasata da eventi di zecche "interne". Potrei sbagliarmi, naturalmente, ma dovrebbe essere molto più facile da "disabilitare" che "assicurare la generazione tempestiva dei tick, il corretto accodamento degli eventi, la sincronizzazione con il server, ecc." ...Lasciate che il "default" per la maggior parte delle persone rimanga com'è al momento, e per le persone estreme come me, aggiungete una funzione di disabilitazione/interruzione. Con avvertenze nel manuale se ci possono essere effetti collaterali.
 
Yedelkin:

Esatto, è esattamente il modo in cui sono andato avanti - gestendo esclusivamente le zecche esterne. Non ci sono ancora domande qui.

È su questo che sono fissato, per assicurarmi che la coda generale nel mio caso non sia intasata da eventi di zecche "interne". Potrei sbagliarmi, naturalmente, ma "disabilitare" dovrebbe essere molto più facile che "assicurare la generazione tempestiva dei tick, il corretto accodamento degli eventi, la sincronizzazione con il server, ecc." ...Lasciate che il "default" per la maggior parte delle persone rimanga com'è al momento, e per le persone estreme come me, aggiungete una funzione di disabilitazione/interruzione. Con avvertenze nel manuale se ci possono essere effetti collaterali.

Per quanto riguarda la facilità, è una questione discutibile, e la variante che proponi non è meno discutibile (secondo me).

L'intera questione riguardante i tick, e tutti gli eventi in generale, è cosa succede agli eventi se non c'è un gestore in Expert Advisor.

La mia seconda domanda a questo proposito sarebbe - tutti gli eventi sono gestiti nella stessa coda o per certi eventi (OnTimer, OnTick e OnTrade) hanno le loro proprie code?

 
Interesting:

Più facile è discutibile, e l'opzione che proponi non è meno discutibile (secondo me).

Sono d'accordo; è difficile giudicare ciò che non si conosce. Resta solo da esprimere i desideri :) Riguardo all'inutilità della mia versione posso dire che la cosa principale qui è l'idea di "Non ho bisogno di tic!"; come sarà implementata dipende dagli sviluppatori.

Interessante:

L'intera questione dei tick, e di tutti gli eventi in generale, è cosa succede agli eventi se non c'è un gestore in Expert Advisor.

Esattamente giusto. C'è solo una soluzione per me - tagliare le estremità (introdurre la funzione interruttore), ed è garantito che non ci si preoccupa della domanda :) Ma dovremmo anche ricordarci del tester che perde tempo a creare (generare?) zecche che in linea di principio non sono necessarie. Solo perché il tester è costretto a essere attaccato a uno dei personaggi.

Interessante:

La seconda domanda che ho in questo contesto è la seguente: tutti gli eventi sono gestiti in una coda o ci sono code separate per certi eventi (OnTimer, OnTick e OnTrade)?

Beh, il manuale dice esplicitamente che "tutti gli eventi che si verificano" sono messi in una coda comune e processati uno dopo l'altro nell'ordine in cui sono ricevuti. L'unica eccezione è specificata per NewTick. Hai in qualche modo dimostrato che l'evento OnTimer non è sempre gestito, ma può anche essere cancellato come risultato di un comune overflow della coda. Non ho visto alcuna menzione di code separate per ogni evento.

Motivazione: