Vorschläge zur Verbesserung des MetaEditors - Seite 6

 
Lizar:
Versuchen Sie es. Funktioniert im Testgerät. Allerdings mit den in dem Artikel genannten Anpassungen.

Und was in der Prüfer durch das Ereignis zu senden?

A) Charts im Tester werden nicht geöffnet

B) die Ereignisindikatoren nicht erhalten

Der Expert Advisor sendet Ereignisse an sich selbst, was ist also der Sinn?

 

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

Das Vorhandensein des Handlers OnTick() in einem Expert Advisor ist nicht notwendig, um mit historischen Daten im Strategy Tester des MetaTrader 5 Terminals getestet zu werden. Es reicht aus, wenn der Expert Advisor mindestens eine der oben aufgeführten Handler-Funktionen besitzt:

  • OnTick() - Handler für ein neues Tick-Ereignis;
  • OnTrade () - Handler des Handelsereignisses;
  • OnTimer() - Event-Handler für das Eintreffen des Timer-Signals;
  • OnChartEvent() - Handler für benutzerdefinierte Ereignisse.

Beim Testen in einem Expert Advisor können benutzerdefinierte Ereignisse mit OnChartEvent() behandelt werden, aber in Indikatoren wird diese Funktion im Tester nicht aufgerufen. Selbst wenn der Indikator über den OnChartEvent()-Handler verfügt und dieser Indikator in dem zu testenden Expert Advisor verwendet wird, empfängt der Indikator selbst keine benutzerdefinierten Ereignisse.

Der Indikator kann während des Testens benutzerdefinierte Ereignisse mit dem EventChartCustom()-Befehl erzeugen, während der Expert Advisor diese Ereignisse mit OnChartEvent() verarbeiten kann.

1. Soweit ich mich erinnere, verarbeitet der Expert Advisor in der Testversion derzeit keine Ereignisse, die mit der Funktion EventChartCustom() gesendet werden

2. Der Artikel enthält einen Hinweis darauf, dass die Funktion in den Indikatoren des Testers nicht funktioniert, die Hilfedatei jedoch nicht. Wie verstehen Sie das?

3. Nun, es ist nicht richtig, wenn etwas in der Demo/Realität funktioniert und in der Testversion nicht funktioniert. Was immer Sie mir antun wollen, es ist trotzdem falsch.

Wenn Sie OnChartEvent() in Indikatoren verwenden, lassen Sie es überall funktionieren, sonst macht es keinen Sinn, es dort zu behalten...

PS

Frage für Entwickler - funktioniert es im Tester überhaupt nicht, oder nur das, was mit OnChartEvent() gesendet wird ?

 
Urain:

Und was in der Prüfer durch das Ereignis zu senden?

A) Die Diagramme im Tester werden nicht geöffnet

B) Die Indikatoren empfangen keine Ereignisse

Der Expert Advisor sendet Ereignisse an sich selbst, was ist der Sinn davon?

Macht Sinn, ich, zum Beispiel, habe mich erfolgreich gesendet, und mehr als eine (bis der Tester brach Ereignis Empfang).

Und wenn der Prüfer beginnt, das Diagramm zu verstehen und zu verarbeiten, wird es logisch sein, Ereignisse zu empfangen...

 

Die Frage ist unklar. Was meinen Sie mit "es funktioniert im Tester überhaupt nicht, oder verarbeitet nur, was mit OnChartEvent() gesendet wird"?

Es gibt keinen Mechanismus im Testgerät, um ChartEvent an Indikatoren zu liefern. Der Zyklus der Ereignisse, die an den zu testenden Expert Advisor geliefert werden, ist der Hauptteil des Testers.

 
Interesting:

Es gibt einen Punkt, ich, zum Beispiel, erfolgreich geschickt mich, und mehr als eine (bis das Ereignis Empfang wurde in der Tester gebrochen).

Der Tester hatte also früher Ereignisempfang, aber dann wurde er unterbrochen?
 
Interesting:

Es macht Sinn, ich, zum Beispiel, erfolgreich geschickt mich, und mehr als eine (bis der Tester brach Ereignis Empfang).

Und wenn der Prüfer anfängt, Grafiken zu verstehen und zu verarbeiten, wird es logisch sein, Ereignisse zu empfangen...

Innerhalb eines Programms gibt es viele Möglichkeiten, Informationen zu übertragen, aber die Bedeutung von Ereignissen ist die Übertragung von Informationen zwischen verschiedenen Programmen.
 
Lizar:

Es ist schon ein paar Wochen her, dass dies in dem Artikel offiziell angekündigt wurde:

Offiziell angekündigt in "Build-Updates", nicht in Artikeln. Gab es etwas in den "Updates"?
 
Urain:
Innerhalb eines Programms gibt es viele Gelegenheiten, Informationen zu übertragen, der Sinn von Veranstaltungen ist es, Informationen zwischen verschiedenen Programmen zu übertragen.

Es geht nicht darum, wie man liefern soll, sondern darum, dass das, was im Tester funktionierte (und hätte funktionieren sollen), dort vor etwa 6 Monaten aufgehört hat zu funktionieren.

stringo:

Es gibt keinen Mechanismus im Testgerät, um ChartEvent an Indikatoren zu liefern. Der Zyklus der Übermittlung von Ereignissen an den zu testenden Expert Advisor ist der Hauptbestandteil des Testers.

Es gab also früher einen Ereignisempfang im Tester und dann wurde er unterbrochen?

Ich meine das Problem von EventChartCustom() -> OnChartEvent() im Tester für Expert Advisors. Vielleicht verstehe ich etwas nicht, aber vor der Meisterschaft funktionierte es gut, aber jetzt nicht mehr.

Gleichzeitig denke ich, dass jeder dies bereits weiß und versteht, aber die "Lokomotive" bewegt sich immer noch nicht (obwohl dies genau der "Hauptteil" ist).

Ein einfaches Beispiel:

1 . Wir initialisieren den Expert Advisor, indem wir alle 300 Sekunden (5 Minuten) einen Timer starten.

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

EventSetTimer(300);

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

2. Im Timer schreiben wir das Senden des Ereignisses mit Code 1001 vor

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

EventChartCustom(0,(ushort)(customEventID-CHARTEVENT_CUSTOM),0,0,"OnTimer - EventChartCustom");
//----------------------------------------------------------------------------//
}
3. Erfassen Sie dieses Ereignis im 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);
  }
//----------------------------------------------------------------------------//  
}


Das Ergebnis ist, dass die Demo das Ereignis erhält, der Strategietester jedoch nicht.

Und dies ist eine Art Grundelement des Handelssystems, das auch im Falle eines "Atomkriegs" funktionieren soll.

1. Demo mit einem 1-Minuten-Timer


2. ein Prüfgerät mit einer Zeitschaltuhr von 1 Stunde


Ich sollte noch hinzufügen, dass die Tests vom 01.04.2011 bis 07.04.2011 im Zeitrahmen 1H durchgeführt wurden.

Und wo sind sie?

PS

Vielleicht denkt jemand, dass wenn eine Nachricht nicht von Expert Advisor kommt, sie von iinduke kommt?


 
Yedelkin:
Offiziell angekündigt in "Update-Builds", nicht in Artikeln. Gab es etwas in den "Updates"?

Ja, da war nichts, als der Fehler auftauchte, so wiegt es.

Und über die Tatsache, dass in dem Artikel so sollte es nicht in den Artikeln angegeben werden, und nicht einmal in der Beschreibung der neuen Builds, obwohl es auch dort.

Eigentlich sollten solche Dinge im Sprachenhandbuch vorgeschrieben sein. Zeigen Sie mir, wo auch nur ein Wort darüber steht (ich persönlich konnte es nicht finden)...

 
stringo:
Es gab also früher einen Ereignisempfang im Tester und dann wurde er unterbrochen?

Das ist es, was ich tun sollte, mich richtig auf das Staatsexamen vorbereiten. und was ich tue, ist nach meinen Beiträgen im Forum zu suchen. :)

1. bugs, bugs, Fragen.

Wanzen , Wanzen, Fragen.

Wollte den ersten Beitrag über das Problem zu finden, und nicht graben es, obwohl ich daran erinnern, dass während der Meisterschaft bereits nicht fic...

Nehmen wir an, der Beitrag datiert vom 09.05.2010 und war der erste zu diesem Thema. Fazit - es sind bereits 8 Monate vergangen... :(

PS

Hier ist mehr dazu:

Mein Beispiel vom 06/09/2010

Und sogar Alexey versprach, über eine Lösung für das Problem nachzudenken

Grund der Beschwerde: