Suggerimenti per migliorare il MetaEditor - pagina 6

 
Lizar:
Prova. Funziona nel tester. Ma con gli aggiustamenti stipulati nell'articolo.

E cosa nel tester da inviare attraverso l'evento?

A) I grafici nel tester non vengono aperti

B) gli indicatori di evento non ricevono

L'Expert Advisor invierà eventi a se stesso, quindi che senso ha?

 

Обработка событий в тестере

La presenza del gestore OnTick() in un Expert Advisor non è necessaria per essere testato su dati storici nello Strategy Tester del terminale MetaTrader 5. E' sufficiente che l'Expert Advisor abbia almeno una funzione gestore tra quelle elencate sopra:

  • OnTick() - gestore di un evento di arrivo di un nuovo tick;
  • OnTrade () - gestore dell'evento trade;
  • OnTimer() - gestore di eventi dell'arrivo del segnale del timer;
  • OnChartEvent() - gestore di eventi personalizzati.

Quando si testa in un Expert Advisor, gli eventi personalizzati possono essere gestiti da OnChartEvent(), ma negli indicatori questa funzione non viene chiamata nel tester. Anche se l'indicatore ha il gestore OnChartEvent() e questo indicatore è usato nell'Expert Advisor in prova, l'indicatore stesso non riceverà nessun evento personalizzato.

L'indicatore durante i test può generare eventi personalizzati usando la funzione EventChartCustom(), mentre l'Expert Advisor può elaborare questi eventi in OnChartEvent().

1. Al momento, per quanto mi ricordo, l'Expert Advisor nel tester non elabora gli eventi inviati tramite la funzione EventChartCustom()

2. L'articolo contiene un'indicazione che la funzione non funziona negli indicatori nel tester, ma il file di aiuto non lo fa. Come lo capite?

3. beh, non è giusto quando qualcosa funziona in demo/real e non funziona in tester. Qualsiasi cosa tu voglia farmi, è comunque sbagliata.

Se fai OnChartEvent() negli indicatori, fallo funzionare ovunque, altrimenti non ha senso tenerlo lì...

PS

Domanda per gli sviluppatori - non funziona affatto nel tester, o solo quello che viene inviato con OnChartEvent()?

 
Urain:

E cosa nel tester da inviare attraverso l'evento?

A) I grafici nel tester non vengono aperti

B) gli indicatori non ricevono eventi

l'Expert Advisor invierà eventi a se stesso, che senso ha?

Ha senso, io, per esempio, mi sono inviato con successo, e più di uno (fino a quando il tester ha rotto la ricezione dell'evento).

E quando il tester comincia a capire ed elaborare il grafico, sarà logico ricevere eventi...

 

La domanda non è chiara. Cosa intendi per "non funziona affatto nel tester, o elabora solo ciò che viene inviato con OnChartEvent()"?

Non c'è nessun meccanismo nel tester per fornire ChartEvent agli indicatori. Il ciclo di consegna degli eventi all'Expert Advisor sotto test è precisamente la parte principale del tester.

 
Interesting:

C'è un punto, io, per esempio, mi sono inviato con successo, e più di uno (fino a quando la ricezione dell'evento è stata rotta nel tester).

Quindi il tester aveva la ricezione degli eventi, ma poi si è rotto?
 
Interesting:

Ha senso, io, per esempio, ho inviato con successo me stesso, e più di uno (fino a quando il tester ha rotto la ricezione degli eventi).

E quando il tester comincia a capire ed elaborare la grafica, sarà logico ricevere eventi...

All'interno di un programma ci sono molte possibilità di trasferire informazioni, ma il significato degli eventi è il trasferimento di informazioni tra diversi programmi.
 
Lizar:

Sono passate un paio di settimane da quando è stato annunciato ufficialmente nell'articolo:

Ufficialmente una specie di annuncio negli "aggiornamenti della build", non negli articoli. C'era qualcosa negli "aggiornamenti"?
 
Urain:
All'interno di un programma ci sono molte opportunità di trasferire informazioni, il punto degli eventi è quello di trasferire informazioni tra diversi programmi.

Il punto non è come consegnare, ma che ciò che funzionava nel tester (e avrebbe dovuto funzionare) ha smesso di funzionare lì circa 6 mesi fa.

stringo:

Non c'è nessun meccanismo nel tester per fornire ChartEvent agli indicatori. Il ciclo di consegna degli eventi all'Expert Advisor sotto test è la parte principale del tester.

Quindi prima c'era la ricezione degli eventi nel tester e poi è stata interrotta?

Intendo il problema di EventChartCustom() -> OnChartEvent() nel tester per Expert Advisors. Forse non capisco qualcosa, ma prima del campionato funzionava bene, ma ora no.

Allo stesso tempo, penso che tutti lo sappiano e lo capiscano già, ma la "locomotiva" non si muove ancora (nonostante il fatto che questa sia esattamente la "parte principale").

Un semplice esempio:

1 . Inizializziamo l'Expert Advisor facendo partire un timer ogni 300 secondi (5 minuti).

//Function OnInit
int OnInit()
//Function for initialization of the trade system
{
//----------------------------------------------------------------------------//
int Result = 0; //Returned importance
//----------------------------------------------------------------------------//

EventSetTimer(300);

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

2. Nel timer si prescrive l'invio dell'evento con il codice 1001

//Event OnTimer
void OnTimer()
{
//----------------------------------------------------------------------------//
//Work variables
int customEventID; // номер пользовательского события для отправки
//----------------------------------------------------------------------------//
customEventID=CHARTEVENT_CUSTOM+1;

EventChartCustom(0,(ushort)(customEventID-CHARTEVENT_CUSTOM),0,0,"OnTimer - EventChartCustom");
//----------------------------------------------------------------------------//
}
3. catturare questo evento nell'Expert Advisor
//Event OnChartEvent
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam
                  )
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//

//----------------------------------------------------------------------------//
//                          Processing user events                            //
//----------------------------------------------------------------------------//
  if(id>CHARTEVENT_CUSTOM)
  //User event is received
  {
  Print("New event, ID ",id," - ",sparam);
  }
//----------------------------------------------------------------------------//  
}


Il risultato è che la Demo riceve l'evento, ma lo Strategy Tester no.

E questo è una specie di elemento di base del sistema commerciale che si suppone funzioni anche in caso di "guerra nucleare".

1. Demo con un timer di 1 minuto


2. un tester con un timer di 1 ora


Dovrei anche aggiungere che il test è stato eseguito dal 01/04/2011 al 07/04/2011 al timeframe 1H.

E dove sono?

PS

Forse qualcuno pensa che se un messaggio non arriva da Expert Advisor, arriverà da iinduke?


 
Yedelkin:
Ufficialmente una specie di annuncio in "aggiornamenti build", non in articoli. C'era qualcosa negli "aggiornamenti"?

Sì, non c'era niente, come il bug è apparso così pesa.

E sul fatto che nell'articolo così non dovrebbe essere specificato negli articoli, e nemmeno nella descrizione delle nuove costruzioni, anche se anche lì.

In effetti, queste cose dovrebbero essere prescritte nel manuale di lingua. Mostratemi dove c'è anche solo una parola al riguardo (io personalmente non l'ho trovata)...

 
stringo:
Quindi prima c'era la ricezione degli eventi nel tester e poi è stata interrotta?

Questo è quello che dovrei fare, preparare correttamente l'esame di stato. quello che sto facendo è cercare i miei post sul forum. :)

1. Bug, bug, domande.

Bug, bug, domande.

Volevo trovare il primo post sul problema, e non ha scavato, anche se mi ricordo che durante il campionato già non ha funzionato fic...

Supponiamo che il post sia datato 05/09/2010 e sia stato il primo sull'argomento dato. Conclusione - sono già passati 8 mesi... :(

PS

Qui c'è di più su questo:

Il mio esempio del 06/09/2010

E anche Alexey ha promesso di pensare a una soluzione al problema