1minütiger OHLC gegenüber jedem Tick - entgegengesetzte Ergebnisse

 

Ich bin immer völlig entgegengesetzte Ergebnis beim Testen auf jeden Tick oder 1min OHLC. die EA und Eingabeparameter sind genau das gleiche, aber im Falle von 1min ohlc ich 50000 Gewinn erhalten, während in jedem Tick ich -7000 Verluste erhalten.

Dies geschieht auf viele Paare testen auf einen Zeitraum von 2 Jahren 0811-0813

hat jemand das gleiche Problem gehabt? Ich verstehe nicht, was ist das Problem hier und was soll ich tun, wenn der Handel mit echtem Geld.

beide Diagramme unten

1Minute OHLC

1Minute ohlc

jeder Tick

jedes Häkchen

 

Ohne Informationen darüber, wie Ihr EA entscheidet, zu kaufen/verkaufen, ist dies schwer zu beantworten.

Wir sehen auf dem Markt viele Situationen, in denen ein Balken eine sehr große Größe hat (z.B. bei wichtigen Nachrichten).

Der Tester generiert dann bis zu 11 Ticks für einen solchen Balken. Je nach Ihrer Logik verhält er sich sehr unterschiedlich (nur im Test).

Wenn Sie Ihren EA mit echtem Geld verwenden würden, bin ich mir ziemlich sicher, dass es viel schlimmer sein wird, weil solche großen Balken bis zu 200 Ticks in einer Minute haben können.

Ich gehe davon aus, dass Ihre Logik auf den aktuellen Balken wirkt, Sie sollten Ihre Logik mit den Werten des vorherigen Balkens ausprobieren.

Beste Wünsche

Uwe

 
ugo58:

Ohne Informationen darüber, wie Ihr EA über den Kauf/Verkauf entscheidet, ist dies schwer zu beantworten.

Wir sehen auf dem Markt viele Situationen, in denen ein Balken eine sehr große Größe hat (z.B. bei wichtigen Nachrichten).

Der Tester generiert dann bis zu 11 Ticks für einen solchen Balken. Je nach Ihrer Logik verhält er sich sehr unterschiedlich (nur im Test).

Wenn Sie Ihren EA mit echtem Geld verwenden würden, bin ich mir ziemlich sicher, dass es viel schlimmer sein wird, weil solche großen Balken bis zu 200 Ticks in einer Minute haben können.

Ich gehe davon aus, dass Ihre Logik auf den aktuellen Balken wirkt, Sie sollten Ihre Logik mit den Werten des vorherigen Balkens ausprobieren.

Beste Wünsche

Uwe

Ich sende jetzt einen Trick, um nur in einem Balken zu "ticken". Sie müssen diese Logik nur an den Anfang des Ticks setzen. Wenn der Balken nicht neu ist, wird er verlassen...

In welchen Situationen denkst du, dass dieser Trick gut funktionieren könnte?

   //--- Let's first check if a new bar has come!         
   if(CopyTime(_Symbol, _Period, 0, 1, m_currentBarTime) > 0) 
     {
      if(m_previousBarTime != m_currentBarTime[0])
        {
         m_isNewBar = true;
         m_previousBarTime = m_currentBarTime[0];
        }
     }
   else
     {
      Alert("Error copying historical data, error: ", GetLastError());
      return;
     }
     
   if(!m_isNewBar) return;

Was würden Sie auch empfehlen, um diese zusätzlichen Ticks zu lösen? Gibt es einen Artikel oder so, der dies erklärt? Vielen Dank!

 
laplacianlab:

Ich sende jetzt einen Trick, um nur in einem Takt zu "ticken". Man muss nur diese Logik an den Anfang des Ticks setzen. Wenn der Balken nicht neu ist, wird er verlassen...

In welchen Situationen denken Sie, dass dieser Trick gut funktionieren könnte?

Was würden Sie auch empfehlen , um diese zusätzlichen Ticks zu lösen? Gibt es einen Artikel oder so, der dies erklärt? Ich danke Ihnen.

Was meinen Sie mit "um diese zusätzlichen Ticks zu lösen"?
 
ugo58:

Ohne Informationen darüber, wie Ihr EA entscheidet, zu kaufen/verkaufen, ist dies schwer zu beantworten.

Wir sehen auf dem Markt viele Situationen, in denen ein Balken eine sehr große Größe hat (z.B. bei wichtigen Nachrichten).

Der Tester generiert dann bis zu 11 Ticks für einen solchen Balken. Je nach Ihrer Logik verhält er sich sehr unterschiedlich (nur im Test).

Wenn Sie Ihren EA mit echtem Geld verwenden würden, bin ich mir ziemlich sicher, dass es viel schlimmer sein wird, weil solche großen Balken bis zu 200 Ticks in einer Minute haben können.

Ich gehe davon aus, dass Ihre Logik auf den aktuellen Balken wirkt, Sie sollten Ihre Logik mit den Werten des vorherigen Balkens ausprobieren.

Beste Wünsche

Uwe

Hallo,

was meinst du mit den Werten des vorherigen Balkens? maVal[1] (wobei maVal gleitende Durchschnittswerte enthält und das Array als Serie eingestellt ist) anstelle von maVal[0] verwenden?

oder überprüfen Sie, ob die Bedingung während des letzten Balkens verifiziert wurde und geben Sie sie bei der Eröffnung dieses Balkens ein?

unten ein Teil des Codes meines sehr einfachen EA

 triggerLong=maVal[1]-diff;
 triggerShort=maVal[1]+diff; 

......
.......

Buy_Condition_1=(now_ask<triggerLong);
Sell_Condition_1=(now_bid>triggerShort);

Exit_long_Condition=(closeAtCross? now_ask>=maVal[1]:false) || Sell_Condition_1;
Exit_short_Condition=(closeAtCross? now_bid<=maVal[1]:false) || Buy_Condition_1;

ob ich maVal[1] oder maVal[0] verwende, die Situation ändert sich nicht so sehr, die ohcl ist immer noch profitabel, während jeder Tick nicht ist.

danke

 
ugo58:

Ohne Informationen darüber, wie Ihr EA entscheidet, zu kaufen/verkaufen, ist dies schwer zu beantworten.

Wir sehen auf dem Markt viele Situationen, in denen ein Balken eine sehr große Größe hat (z.B. bei wichtigen Nachrichten).

Der Tester generiert dann bis zu 11 Ticks für einen solchen Balken. Je nach Ihrer Logik verhält er sich sehr unterschiedlich (nur im Test).

Wenn Sie Ihren EA mit echtem Geld verwenden würden, bin ich mir ziemlich sicher, dass es viel schlimmer sein wird, weil solche großen Balken bis zu 200 Ticks in einer Minute haben können.

Ich gehe davon aus, dass Ihre Logik auf den aktuellen Balken wirkt, Sie sollten Ihre Logik mit den Werten des vorherigen Balkens ausprobieren.

Beste Wünsche

Uwe

Das stimmt nicht, der Tester kann viel mehr als 11 Ticks erzeugen. Siehe diesen Beitrag.
 
angevoyageur:
Was meinen Sie mit "um diese zusätzlichen Ticks zu lösen"?

Ich stimme mit ugo58 absolut überein. Große Balken können das Ereignis OnTick viele Male auslösen, während kleine Balken es viel seltener auslösen werden.

Dies kann sich auf Ihre automatisierte Handelsstrategie auswirken, weshalb wir Entwickler nach Lösungen suchen müssen, die die Tatsache abmildern, dass Ihr Ereignis OnTick viele Male pro Balken ausgeführt werden kann.

Ich denke, dass das, was ich vorhin geschickt habe, nur eine Lösung ist. ugo50 hat eine andere Lösung vorgeschlagen: die Ausführung Ihrer OnTick-Logik im letzten vergangenen Takt. Wie auch immer, wenn Sie Ihre OnTick-Logik auf dem aktuellen Balken ausführen möchten, können Sie vielleicht etwas Ähnliches wie das, was ich zuvor geschickt habe, verwenden.

Wir versuchen, so etwas wie ein OnBar-Ereignis zu implementieren.

Was denken Sie darüber?

 
michelino:

Hallo,

was meinen Sie mit den Werten des vorherigen Balkens? Verwenden Sie maVal[1] (wobei maVal gleitende Durchschnittswerte enthält und das Array als Serie eingestellt ist) anstelle von maVal[0]?

oder überprüfen Sie, ob die Bedingung während des letzten Balkens verifiziert wurde und geben Sie sie bei der Eröffnung dieses Balkens ein?

unten ein Teil des Codes meines sehr einfachen EA

ob ich maVal[1] oder maVal[0] verwende, die Situation ändert sich nicht so sehr, die ohcl ist immer noch profitabel, während jeder Tick nicht ist.

Danke

Es ist natürlich ein großer Unterschied, ob Ihr Code maVal[1] oder maVal[0] verwendet, oder ob Sie generell nur auf Closed bar oder auf Open bar oder innerhalb eines bar arbeiten.

Im letzten Fall müssen Sie den Modus Every tick verwenden, alle anderen Modi sind nicht geeignet.

 
angevoyageur:
Das ist nicht wahr, Tester kann viel mehr als 11 Ticks erzeugen. Siehe diesen Beitrag.

Vielen Dank. Oh, nun ja. Eines der Dinge, die ich einfach neu lernen musste ;)


Wie ich schon sagte, hängt es von Ihrer Logik ab.

Es gibt viele Möglichkeiten, diese Probleme zu lösen, maVal[1]ist eine der einfacheren Lösungen, da sich gleitende Durchschnitte nicht so schnell pro Bar ändern (abhängig von der Periodenlänge und der Glättungsmethode).

Das könnte anders sein, wenn Sie zum Beispiel von einem Hoch und Tief einer Reihe von Bars abhängen.

 
Danke fürs Teilen... Schön
 
Vielleicht ist dieser Link auch nützlich,https://www.mql5.com/en/articles/159
"New Bar" Event Handler
"New Bar" Event Handler
  • 2010.10.11
  • Konstantin Gruzdev
  • www.mql5.com
MQL5 programming language is capable of solving problems on a brand new level. Even those tasks, that already have such solutions, thanks to object oriented programming can rise to a higher level. In this article we take a specially simple example of checking new bar on a chart, that was transformed into rather powerful and versatile tool. What tool? Find out in this article.