Auguri per MT5 - pagina 48

 

Yedelkin:

Spiegazione. Se un Expert Advisor non elabora tick per un simbolo a cui è collegato a un grafico, la generazione continua di eventiNewTick per questo simbolo porterà a un overflow della coda di eventi elaborati da questo EA.

Cosa vuoi dire?

Non c'è OnTick() nell'Expert Advisor, ma gli eventi NewTick vengono accodati?

Come fate a sapere cosa ha analizzato la coda? )

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

Non ho trovato un modo per disabilitare il flusso di tick( eventoNewTick) per il simbolo con l'Expert Advisor collegato al grafico, se necessario.


Mi sembra di aver lavorato dalla domenica al venerdì senza alcun riposo... :))

 
komposter:

Cosa vuoi dire?

Come sapevi che...?

L'ho imparato in due modi. Prima ho fatto conoscenza con la combinazione EventChartCustom - OnChartEvent sull'esempio di un semplice Expert Advisor che raccoglie segnali di indicatori da simboli stranieri. Allo stesso tempo, l'Expert Advisor non lavorava con i tick del proprio simbolo, la funzione Ontick() nel codice dell'Expert Advisor era commentata. Quando si esegue l'EA nel tester, ho scoperto che il tempo di percorrenza differisce a seconda di quale simbolo è collegato all'EA. Vedi, per esempio, l'esempio qui sotto. Con gli stessi parametri di ottimizzazione i tempi di esecuzione sono notevolmente diversi.

OE      0       Tester  15:35:25        Experts\Ye00-01-0 Event.ex5 on USDRUR,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 CH      0       Tester  15:35:25        complete optimization started
LO      0       Core 1  15:35:25        agent process started
HK      0       Core 1  15:35:25        connecting to 127.0.0.1:3000
OK      0       Core 2  15:35:25        agent process started
DO      0       Core 2  15:35:25        connecting to 127.0.0.1:3001
DG      0       Core 2  15:35:26        connected
EK      0       Core 1  15:35:26        connected
NQ      0       Core 1  15:35:26        authorized (agent build 384)
QK      0       Core 2  15:35:26        authorized (agent build 384)
DI      0       Core 1  15:35:26        pass 0 started
LM      0       Core 2  15:35:26        pass 1 started
QK      0       Core 1  15:35:27        common synchronization completed
FD      0       Core 2  15:35:27        common synchronization completed
GR      0       Core 2  15:36:08        pass 1 returned result 10000.00 in 42 sec
RH      0       Core 2  15:36:08        pass 2 started
ON      0       Core 1  15:36:09        pass 0 returned result 10000.00 in 43 sec
ID      0       Core 1  15:36:09        pass 3 started
GK      0       Core 2  15:36:21        pass 2 returned result 10000.00 in 13 sec
QQ      0       Core 2  15:36:21        pass 4 started
PH      0       Core 1  15:36:21        pass 3 returned result 10000.00 in 12 sec
IR      0       Core 1  15:36:21        pass 5 started
ED      0       Core 2  15:36:34        pass 4 returned result 10000.00 in 13 sec
ON      0       Core 2  15:36:34        pass 6 started
MQ      0       Core 1  15:36:34        pass 5 returned result 10000.00 in 13 sec
GK      0       Core 1  15:36:34        pass 7 started
KN      0       Core 2  15:36:46        pass 6 returned result 10000.00 in 12 sec
ND      0       Core 2  15:36:46        pass 8 started
CJ      0       Core 1  15:36:47        pass 7 returned result 10000.00 in 13 sec
EP      0       Core 1  15:36:47        pass 9 started
PG      0       Core 2  15:36:59        pass 8 returned result 10000.00 in 13 sec
QO      0       Core 1  15:36:59        pass 9 returned result 10000.00 in 12 sec
MD      0       Tester  15:36:59        optimization finished, total passes 10
HS      0       Tester  15:36:59        optimization passed in 1 minutes 34 seconds
CE      0       Core 1  15:36:59        connect closed
PI      0       Core 2  15:36:59        connect closed
ON      1       Tester  15:37:20        genetics turned off because 10 passes, to use genetics increase amount of optimized parameters
RQ      0       Tester  15:37:20        Experts\Ye00-01-0 Event.ex5 on EURGBP,M1 from 2010.08.01 00:00 to 2010.08.09 00:00
 FL      0       Tester  15:37:20        complete optimization started
QM      0       Core 1  15:37:20        connecting to 127.0.0.1:3000
MG      0       Core 2  15:37:20        connecting to 127.0.0.1:3001
MN      0       Core 1  15:37:20        connected
LR      0       Core 2  15:37:20        connected
FH      0       Core 1  15:37:20        authorized (agent build 384)
QR      0       Core 2  15:37:20        authorized (agent build 384)
DF      0       Core 1  15:37:20        pass 0 started
LJ      0       Core 2  15:37:20        pass 1 started
JR      0       Core 1  15:37:20        common synchronization completed
EK      0       Core 2  15:37:20        common synchronization completed
IK      0       Core 1  15:38:35        pass 0 returned result 10000.00 in 75 sec
KQ      0       Core 1  15:38:35        pass 2 started
QG      0       Core 2  15:38:36        pass 1 returned result 10000.00 in 76 sec
FM      0       Core 2  15:38:36        pass 3 started
JD      0       Core 1  15:39:16        pass 2 returned result 10000.00 in 41 sec
MN      0       Core 1  15:39:16        pass 4 started
QP      0       Core 2  15:39:17        pass 3 returned result 10000.00 in 41 sec
FJ      0       Core 2  15:39:17        pass 5 started
KM      0       Core 1  15:39:56        pass 4 returned result 10000.00 in 40 sec
CG      0       Core 1  15:39:56        pass 6 started
DJ      0       Core 2  15:39:57        pass 5 returned result 10000.00 in 40 sec
LP      0       Core 2  15:39:57        pass 7 started
IF      0       Core 1  15:40:37        pass 6 returned result 10000.00 in 41 sec
FL      0       Core 1  15:40:37        pass 8 started
DS      0       Core 2  15:40:38        pass 7 returned result 10000.00 in 41 sec
GI      0       Core 2  15:40:38        pass 9 started
KP      0       Core 1  15:41:18        pass 8 returned result 10000.00 in 41 sec
NH      0       Core 2  15:41:19        pass 9 returned result 10000.00 in 41 sec
MS      0       Tester  15:41:19        optimization finished, total passes 10
OJ      0       Tester  15:41:19        optimization passed in 3 minutes 59 seconds

komposter:

Expert Advisor non ha OnTick(), mentre gli eventi NewTick sono in coda?

Per verificare la risposta a questa domanda (il secondo metodo), ho modificato il codice dell'Expert Advisor nel modo seguente

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }
Cioè ho inserito una linea con sfondo giallo per rilevare il fatto di nuovi tick ricevuti dal simbolo. I risultati mostrano che i tick per il simbolo a cui è collegato l'Expert Advisor vengono ricevuti regolarmente:
DS      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
QI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
IG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
PR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
LO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PI      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
DE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DH      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DO      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DR      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HD      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DQ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: GBPUSD 2011.01.21 18:29:38
EJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURUSD 2011.01.21 18:29:38
LE      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: USDCHF 2011.01.21 18:29:38
PP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DK      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LP      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
HM      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
DN      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
PJ      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38
LG      0       Ye00-01-0 Event (EURGBP,M1)      20:29:36        Ye00-01-0 Event.mq5 OnChartEvent: EURGBP 2011.01.21 18:29:38

Beh, dato che il manuale dice " l'evento NewTick è generato quando un nuovo tick viene ricevuto da un simbolo, al cui grafico è collegato l'Expert Advisor", il fatto che vengano ricevuti nuovi tick dovrebbe causare la generazione dell'eventoNewTick.

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

 
sergeev:

Sembra che tu abbia lavorato da domenica a venerdì senza riposo... :))

A giudicare dalla linea, conosci la soluzione giusta? - Dammi un indizio!
 
Yedelkin:
Cioè ho inserito una linea evidenziata in sfondo giallo per rilevare il fatto di nuovi tick in arrivo per simbolo. Dai risultati si può vedere che i tick di

al simbolo a cui è collegato l'Expert Advisor vengono ricevuti regolarmente:


Hai controllato quale evento causa la chiamata di OnChartEvent prima di chiamare quello personalizzato?

-------------

se

void OnChartEvent(const int id,         // идентификатор события  
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                  )
  {
   EventChartCustom(ChartID(),0,(long)SymbolInfoInteger(_Symbol,SYMBOL_TIME),0,_Symbol);

   if(id==CHARTEVENT_CUSTOM) Print(__FILE__," ",__FUNCTION__,": ",sparam ," ",(datetime)lparam);
  }


Se metti un semplice EA e lo fai girare nel tester, non si attiva.

avete altre funzioni che chiamano OnChartEvent?

 
sergeev:

avete altre funzioni che chiamano OnChartEvent.

Sì, certo. Poiché Expert Advisor raccoglie i segnali degli indicatori da simboli di terze parti utilizzando il binding EventChartCustom - OnChartEvent, ogni indicatore ha la propria istanza della funzione EventChartCustom(). Il primo parametro di ogni istanza della funzione EventChartCustom() contiene un identificatore di grafico, al quale il nostro EA è collegato; il secondo parametro è zero.

sergeev:

Se inserito in qualsiasi Expert Advisor, non sarà attivato.

Questa è solo una parte del codice, - dall'Expert Advisor che raccoglie i segnali degli indicatori da altri simboli. Se non ci sono indicatori, questa parte del codice (la funzione OnChartEvent) non elaborerà gli eventi personalizzati a causa della loro assenza.

sergeev:

avete controllato quale evento causa la chiamata di OnChartEvent prima di chiamare l'evento personalizzato?

No, un po' sbagliato. Volevo vedere se i tick vengono ricevuti dal simbolo, al cui grafico è collegato l'Expert Advisor, quando la funzione OnChartEvent() elabora gli eventi personalizzati provenienti dagli indicatori di altri simboli. Si può vedere che i tick EURGBP sono ricevuti. In base al riferimento, concludo che quando arrivano nuovi tick per il simbolo, viene generato l'evento NewTick.

 

Non è possibile capire quale delle vostre funzioni utilizzate ha portato a risultati di tempistica diversi. Senza un codice completo, è solo indovinare dai fondi di caffè.

NewTick non è direttamente collegato a OnChartEvent in alcun modo. Ecco perché il meccanismo di tracciamento delle code che suggerisci è piuttosto artificiale. Non sono sicuro che sia corretto.

In questo caso non pretenderei che sia NewTick a creare i ritardi del test. E penso che la colpa sia dei meccanismi dei vostri legami, non dell'evento in sé.

 
sergeev:

Non è possibile capire quale delle vostre funzioni che avete usato ha portato a risultati di tempistica diversi. Senza un codice completo, è solo indovinare dai fondi di caffè.

NewTick non è direttamente collegato a OnChartEvent in alcun modo. Ecco perché il meccanismo di tracciamento delle code che suggerisci è piuttosto artificiale. Non sono sicuro che sia corretto.

In questo caso non pretenderei che sia NewTick a creare i ritardi del test. E penso che la colpa sia dei vostri meccanismi di binding, non dell'evento in sé.

La questione non era quella che intendevo fin dall'inizio. Nel mio primo messaggio, ho detto che non avevo trovato un modo per disabilitare gli eventi tick per un simbolo con un Expert Advisor collegato al suo grafico. Avete reagito a questa frase, ma non avete fornito un modo per disabilitare il flusso di tick per il simbolo richiesto, se necessario. Concludo che non solo io, ma anche voi non conoscete un tale modo. Quindi il mio suggerimento è ancora valido: introdurre una funzione toggle che permetta di disabilitare programmaticamente la generazione di eventi NewTickper il simbolo che ha un Expert Advisor collegato al suo grafico.

Per quanto riguarda i commenti su "indovinare da gee" e "artificiosità dei meccanismi di tracciamento delle code" - non mi sono offerto di guardare nel codice fin dall'inizio e cercare una risposta alla domanda "perché succede così? Come potete vedere dal mio suggerimento, ho già trovato la risposta per me stesso. Ma consideriamo il problema da un punto di vista più astratto, senza focalizzare la nostra attenzione sul codice di un particolare Expert Advisor.

sergeev:

NewTick non è in alcun modo collegato direttamente con OnChartEvent.

Ok, supponiamo che sia così. Quindi, NewTick èindirettamente legato a OnChartEvent, ma è collegato. L'ho già detto nella spiegazione ma lo ripeterò ancora una volta. Sapete meglio di me che c'è una qualche "coda comune di eventi" dove sono ammassati tutti gli eventi che si verificano, sia predefiniti che definiti dall'utente. Questi eventi sono gestiti uno per uno, nell'ordine in cui vengono ricevuti. Poiché la coda ha una certa dimensione limitata, quando è piena, i vecchi eventi vengono rimossi senza essere elaborati. È giusto?

Così, si scopre che se Expert Advisor non prevede la gestione degli eventi NewTick, ma questi eventi sono ancora generati, allora la mia coda generale di eventi sarà semplicemente intasata da eventi NewTick non necessari, e ci sarà il rischio di non gestire eventi utente obsoleti che devono essere gestiti da Expert Advisor. Spero che tu sia d'accordo con questa conclusione. Ecco perché ho fatto il suggerimento di cui sopra.

Naturalmente, non conosco tutte le sottigliezze di come funziona la coda degli eventi e l'evento NewTick. Pertanto, potrei sbagliarmi in alcune conclusioni e considererò con interesse qualsiasi spiegazione.

sergeev:

In questo caso non pretenderei che sia NewTick a creare ritardi nei test. E penso che la colpa sia dei meccanismi dei vostri legami, non dell'evento in sé.

Per riferimento. L'Expert Advisor incardina le istanze di uno stesso indicatore con gli stessi parametri e con lo stesso "meccanismo di legame" sui simboli adiacenti, su uno stesso intervallo di tempo. Il binding è lo stesso: EventChartCustom - OnChartEvent.

Ho capito bene che sei d'accordo con l'affermazione che "se non c'è OnTick() in un Expert Advisor, gli eventi NewTick non vengono accodati affatto"?

 

Perché tirare a indovinare e fare ipotesi?

la vostra richiesta di"introdurre una funzione di commutazione che permette di disattivare programmaticamente la generazione di eventi NewTickper il simbolo a cui l'Expert Advisor è collegato al grafico. "è chiaro.

Scrivete a servicedesk.

Tutto il resto è lotta contro i mulini a vento.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

Perché tirare a indovinare e inventare ipotesi?

Tutto il resto è una lotta contro i mulini a vento.

Non mi dire :) Alcuni sono abituati a lavorare alla cieca, mentre altri cercano di imparare di più sul fenomeno da arginare. Le ipotesi nascono in assenza di questa o quella informazione. Grazie per aver partecipato alla discussione.

Ho scritto alla SD. Non sapevo che i suggerimenti potessero essere indirizzati lì.