Backtest im MT5 für den A* ?

Einloggen oder registrieren, um einen Kommentar zu schreiben
Tobse24
182
Tobse24  

Hallo zusammen,


kann mir einer erklären warum Backtest auf Tickbasis anhand echter Tick völlig unterschiedliche Ergebnisse produzieren, wenn ich die Testzeitraumdauer variiere???

 

Wenn ich nur 2 bis maximal 3 Tage testen lasse, produziert der Test ähnliche Ergebnisse wie im Echthandel. Allerdings steigt der EA im Echtzeitbetrieb oft früher ein. Also auch hier stimmt was nicht?!

 

Der krasse Unterschied aber: Wenn ich eine Woche, Monat, Jahr simulieren lasse, weichen die Ergebnisse völlig ab von den Trades, die mir im Echtbetrieb und in der Kurzzeitsimulation produziert werden.

 

Ich verwende den ganz normalen Strategy Tester von MT5.

 

Kann mir das jemand erklären?



Grüße

Tobse24
182
Tobse24  

hier mal ein Beispiel:


Tradeformation am 20.03 Kurzzeittest:


(Das echte System ist übrigens schon am blauen Kreuz short, ps: Slippage wurde simuliert)



Gleiches Sequenz im Langzeittest:


Große Abweichung im Systemverhalten, obwohl genau die gleichen Settings vorlagen?!

Carl Schreiber
Moderator
9115
Carl Schreiber  
Könnte davon abhängen, wie viel historische Tickdaten (und M1 Bars) zur Verfügung stehen, aus denen dass alle anderen Bars (M2,M5,...) 'gebaut werden.
Tobse24
182
Tobse24  
Carl Schreiber:
Könnte davon abhängen, wie viel historische Tickdaten (und M1 Bars) zur Verfügung stehen, aus denen dass alle anderen Bars (M2,M5,...) 'gebaut werden.

Hi Carl,


mit der Tickdatenbasis lässt sich die Diskrepanz zwischen Echtsystembetrieb und Kurzzeittest erklären.

 

Nicht aber der fehlende Hedging-Modus als elementarer Systembestandteil bei Bild 2. Das einzige Kriterium um eine Position nachzulegen sind nämlich 150 Abstand zum Entry, sollte der Markt in die falsche Richtung laufen.

Das hätte er selbst mit reinen M5-Open-Daten triggern müssen.

 

Da stimmt was nicht beim Simulator...

Carl Schreiber
Moderator
9115
Carl Schreiber  

Na, dann starte doch mal das Debuggen mit historischen Daten!

Wäre genau das Richtige in Deinem Fall!

Tobse24
182
Tobse24  
Carl Schreiber:

Na, dann starte doch mal das Debuggen mit historischen Daten!

Wäre genau das Richtige in Deinem Fall!

Wie bitte soll ich den den Code des MT5 "debuggen" ?


es kann ja nur an deren Software liegen wenn zwei verschiedene Backtest mit unterschiedlichen Zeiträumen mit exakt dem gleichen EA jeweils unterschiedliche Ergebnisse liefern.


Habe festgestellt, das die Simulation nur dann passt, wenn ich maximal 3 tage am Stück testen lasse. Bei längeren Zeiträumen ignoriert der Tester einige EA-Funktionen, was langzeittetst invalide macht...

amando
2563
amando  
Ja der backtest ist für den a... drum haben wir alle klopapier gekauft, weil metaquotes bringt das seit jahren nicht hin
Tobse24
182
Tobse24  
amando:
Ja der backtest ist für den a... drum haben wir alle klopapier gekauft, weil metaquotes bringt das seit jahren nicht hin
na toll...und wie entwickelst du dann bitte Systeme?
amando
2563
amando  
Wie jeder andere, auf gut glück
Christian
2957
Christian  
Tobse24:

Wie bitte soll ich denn den Code des MT5 "debuggen" ?


Es kann ja nur an deren Software liegen, wenn zwei verschiedene Backtest mit unterschiedlichen Zeiträumen mit exakt dem gleichen EA jeweils unterschiedliche Ergebnisse liefern.


Habe festgestellt, das die Simulation nur dann passt, wenn ich maximal 3 tage am Stück testen lasse. Bei längeren Zeiträumen ignoriert der Tester einige EA-Funktionen, was Langzeittest invalide macht...

Nicht den MT5, sondern dein EA sollst du debuggen.

Hilfreich ist sich mit der Anleitung des MT5 anzufreunden.


Der Tester ist auf keinen Fall fehlerfrei aber dein Problem hat andere Gründe.


Da gibt es viele Faktoren die sowas produzieren.

Aber als Erstes müsstest du schon konkret sagen was der Tester nach 3 Tagen "vergisst". Stochern im Nebel mag keiner.

Entscheidend ist oft, ob der 1. Trade wirklich zur gleichen Zeit passiert.

Oftmals ist hier schon der Hund begraben, weil dann die ganzen restlichen Trades auch nicht mehr passen.


Was dir auf jeden Fall bewusst sein muss ist, das der Tester ein Simulator ist. Und so wie jeder Simulator kommt so eine Kiste nicht an die 100 % des simulierten Objektes.

Es werden niemals gleiche Ergebnisse entstehen(komplexe trade Logik).

Die Ticks werden mit sehr hoher Wahrscheinlichkeit auch nicht gleich sein, auch wenn man sie noch 10 mal kopiert.

Intern (Handel Server) laufen diverse Algorithmen um die Aufträge zu Bündeln und zu Routen. Dass dieser Algorithmus mit mehr als die üblichen Ticks/Sek die bei uns ankommen, arbeitet, ist sicher einleuchtend.

Die Liste ist lang ....


Gruß

Tobse24
182
Tobse24  
Christian:


Der Tester ist auf keinen Fall fehlerfrei aber dein Problem hat andere Gründe.


Da gibt es viele Faktoren die sowas produzieren.

Aber als Erstes müsstest du schon konkret sagen was der Tester nach 3 Tagen "vergisst". Stochern im Nebel mag keiner.



Hi Christian,


also der erste Trade passt zumindest gelegentlich.


Das hier vergisst der Tester, sobald der Testzeitraum länger als drei Tage dauert:


if(Last_Buy_Entry > (ask+150 * _Point)){
        
            if (offeneBuyOrders == 1 && countSL_Buy < 2 && Trend_MA > 0){
               Handel(POSITION_TYPE_BUY, "Buy-Order2 RSI-MA analog EURUSD",1.2);             
            }
           
              
         }else if(Last_Sell_Entry < (bid-150 * _Point)) {
                
            if (offeneSellOrders == 1 && countSL_Sell < 2 && Trend_MA <0 ){
               Handel(POSITION_TYPE_SELL, "Sell-Order2 RSI-MA analog EURUSD",1.2);
          }
       }   
     //---------------------------------------------------
      if(Last_Buy_Entry > (ask+150 * _Point)){
        
            if (offeneBuyOrders == 2 && countSL_Buy < 2 && Trend_MA > 0 ){
               Handel(POSITION_TYPE_BUY, "Buy-Order3 RSI-MA analog EURUSD",1.4);             
            }
           
              
         }else if(Last_Sell_Entry < (bid-150 * _Point)) {
                
            if (offeneSellOrders == 2 && countSL_Sell < 2 && Trend_MA < 0 ){
               Handel(POSITION_TYPE_SELL, "Sell-Order3 RSI-MA analog EURUSD",1.4);
          }
       }   
     //---------------------------------------------------

ect....


Die Last_Buy-Entry bzw. Last_sell_Entry wird in der Handelsfunktion mit exakt dem Kurs des letzten Tardes belegt:


Last_Buy_Entry = SymbolInfoDouble(_Symbol,SYMBOL_ASK);


wenn nun der Kurs gegen die Handelsrichtung läuft, schiebt der EA eine Position nach, dann noch eine usw., wenn der langfristige Trend (gemessen über den Trend_MA bzw. dessen Steigung) zumindest immer noch in die Richtung des Trades zeigt.

Funktioniert sowohl im Echtbetrieb wie auch im Tester bei kurzen Testzeiträumen >=3 tadellos. Bei längeren Testzeiträumen wie gesagt aber unterschlägt er diesen Codebestandteil, als stünde er nicht im EA drin. Schau dir die Bilder oben an, da siehst du genau den unterschied, im unteren Bild wurde ein Monat getestet, im Oberen nur 3 Tage. Oben wurde Gewinn gemacht, unten Verlust.

12
Einloggen oder registrieren, um einen Kommentar zu schreiben