Warum liefert mein EA beim Backtesting immer wieder negative Gewinne? - Seite 2

 
deVries:

Habe Ihren Code umgeschrieben und einen Test versucht siehe auch die Einstellungen

Nicht mit den besten Backtestdaten, aber wenn man es richtig macht, kann es profitabel sein

Strategie-Testbericht
RSI_Strategie_cyxstudio
AlpariUK-Demo - Mikro+Klassisch (Build 451)

SymbolEURUSD (Euro gegen US Dollar)
ZeitraumTäglich (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
ModellJeder Tick (die präziseste Methode auf der Grundlage aller verfügbaren Mindestzeitrahmen)
ParameterRSIPeriod=3; UpperBound=90; LowerBound=5; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="RSI strategy"; Slippage.Pips=3;
Bars im Test1603Ticks modelliert40187739Qualität der Modellierungk.A.
Fehler bei nicht übereinstimmenden Diagrammen2062601
Ursprüngliche Kaution3000.00
Gesamtnettogewinn967.18Bruttogewinn2226.34Bruttoverlust-1259.16
Gewinnfaktor1.77Erwartete Auszahlung13.62
Absoluter Drawdown107.10Maximale Auszahlung327.47 (7.99%)Relative Absenkung7.99% (327.47)
Gesamte Abschlüsse71Short-Positionen (gewonnene %)66 (69.70%)Long-Positionen (Won %)5 (80.00%)
Gewinnbringende Geschäfte (% der Gesamtsumme)50 (70.42%)Verlustgeschäfte (% der Gesamtzahl)21 (29.58%)
GrößteGewinngeschäft120.07Verlusthandel-60.00
DurchschnittlicheGewinn-Handel44.53Verlusthandel-59.96
Maximalaufeinanderfolgende Gewinne (Gewinn in Geld)8 (424.26)Verluste in Folge (Verlust in Geld)3 (-179.93)
MaximalGewinn in Folge (Anzahl der Gewinne)424.26 (8)Konsekutiver Verlust (Anzahl der Verluste)-179.93 (3)
DurchschnittKonsekutive Gewinne4aufeinanderfolgende Verluste2


Was zum...?? ich hatte mindestens 7-10 mal auf verschiedene Arten geschrieben und es hat entweder überhaupt keine Position ausgeführt oder einen negativen Gewinn gemacht... wie haben Sie das gemacht????
 
RaptorUK:
Das würde mich denken lassen, dass etwas nicht stimmt.


    if (BUYS<1 && CurrentRSI < LowerBound && pAsk > MA200) 
        {    //Condition to execute buy entry  
         Ticket = OrderSend(Symbol(), OP_BUY,......


// LowerBound=5


  if (SELLS<1 && CurrentRSI > UpperBound && pBid > MA200) 
      {     //Condition to execute sell entry
       Ticket = OrderSend(Symbol(), OP_SELL, Lots,......


// UpperBound=90
Normalerweise ja, aber in diesem Fall nicht, es ist mit der Einstellungcyxstudio hat für RSI gewählt getan
 
deVries:

Habe Ihren Code umgeschrieben und einen Test versucht siehe auch die Einstellungen

Nicht mit den besten Backtestdaten, aber wenn man es richtig macht, kann es profitabel sein

Strategie-Testbericht
RSI_Strategie_cyxstudio
AlpariUK-Demo - Mikro+Klassisch (Build 451)

SymbolEURUSD (Euro gegen US Dollar)
ZeitraumTäglich (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
ModellJeder Tick (die präziseste Methode auf der Grundlage aller verfügbaren Mindestzeitrahmen)
ParameterRSIPeriod=3; UpperBound=90; LowerBound=5; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="RSI strategy"; Slippage.Pips=3;
Bars im Test1603Ticks modelliert40187739Qualität der Modellierungk.A.
Fehler bei nicht übereinstimmenden Diagrammen2062601
Ursprüngliche Kaution3000.00
Gesamtnettogewinn967.18Bruttogewinn2226.34Bruttoverlust-1259.16
Gewinnfaktor1.77Erwartete Auszahlung13.62
Absoluter Drawdown107.10Maximale Auszahlung327.47 (7.99%)Relative Absenkung7.99% (327.47)
Gesamte Abschlüsse71Short-Positionen (gewonnene %)66 (69.70%)Long-Positionen (Won %)5 (80.00%)
Gewinnbringende Geschäfte (% der Gesamtsumme)50 (70.42%)Verlustgeschäfte (% der Gesamtzahl)21 (29.58%)
GrößteGewinngeschäft120.07Verlusthandel-60.00
DurchschnittlicheGewinn-Handel44.53Verlusthandel-59.96
Maximalaufeinanderfolgende Gewinne (Gewinn in Geld)8 (424.26)Verluste in Folge (Verlust in Geld)3 (-179.93)
MaximalGewinn in Folge (Anzahl der Gewinne)424.26 (8)Konsekutiver Verlust (Anzahl der Verluste)-179.93 (3)
DurchschnittKonsekutive Gewinne4aufeinanderfolgende Verluste2


Würden Sie mich bitte Ihren Code ansehen lassen? Ich muss ihn studieren und aus meinen Fehlern lernen.
 
deVries:
Normalerweise ja, aber in diesem Fall nicht, es wird mit der Einstellung gemacht,diecyxstudio für RSI gewählt hat
Ah OK, wenn Sie es erklären können, dann gibt es keinen Grund zur Sorge ;-)
 

Mit UpperBound 90 und LowerBound 10

Strategie-Testbericht
RSI-Strategie_cyxstudio
AlpariUK-Demo - Mikro+Klassisch (Build 451)

SymbolEURUSD (Euro gegen US Dollar)
ZeitraumTäglich (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
ModellJeder Tick (die präziseste Methode auf der Grundlage aller verfügbaren Mindestzeitrahmen)
ParameterRSIPeriod=3; UpperBound=90; LowerBound=10; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="RSI strategy"; Slippage.Pips=3;
Bars im Test1603Ticks modelliert40187739Qualität der Modellierungk.A.
Fehler bei nicht übereinstimmenden Diagrammen2062601
Ursprüngliche Kaution3000.00
Gesamtnettogewinn782.62Bruttogewinn3062.38Bruttoverlust-2279.76
Gewinnfaktor1.34Erwartete Auszahlung7.38
Absoluter Drawdown106.90Maximale Auszahlung400.70 (9.90%)Relative Absenkung9.90% (400.70)
Gesamte Trades106Short-Positionen (gewonnene %)66 (69.70%)Long-Positionen (Won %)40 (55.00%)
Gewinnbringende Geschäfte (% der Gesamtsumme)68 (64.15%)Verlustgeschäfte (% der Gesamtzahl)38 (35.85%)
GrößteGewinngeschäft120.07Verlustgeschäft-60.12
DurchschnittGewinn-Handel45.04Verlusthandel-59.99
Maximalaufeinanderfolgende Gewinne (Gewinn in Geld)8 (425.96)Verluste in Folge (Verlust in Geld)4 (-240.12)
MaximaleGewinn in Folge (Anzahl der Gewinne)490.51 (6)Konsekutiver Verlust (Anzahl der Verluste)-240.12 (4)
DurchschnittGewinne in Folge3aufeinanderfolgende Verluste2

Wie sieht das aus?

 
cyxstudio:

Lassen Sie mich bitte einen Blick auf Ihren Code werfen. Ich muss ihn studieren und aus meinen Fehlern lernen.

Dies ist der Anfang.....

Geben Sie Ihren Kommentar ..... über das, was anders ist als bei Ihnen bisher...

//+------------------------------------------------------------------+
//|                                       RSI_strategy_cyxstudio.mq4 |
//|                                  Copyright 2013, Tjipke de Vries |
//|                                     https://forum.mql4.com/53695/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern int RSIPeriod        =  3;      //number of periods for RSI
extern double UpperBound    =  90;     //set upper bound value for RSI
extern double LowerBound    =  5;      //set lower bound value for RSI
extern int MASlowPeriod     = 200;
extern int MAFastPeriod     = 5;
extern double Lots  = 0.1;
extern double StopLoss      = 60;       //Set the stop loss level
extern double TakeProfit    = 120;       //Set the take profit level
extern double TrailingStop = 40;
//extra settings for OrderSend
extern int        MagicNumber = 54333;
extern string     CommentEA = "RSI strategy";
extern int        Slippage.Pips    = 3;


int    BUYS=1,SELLS=1;
//++++ These are adjusted for 5 digit brokers.
int     pips2points;      // slippage  3 pips    3=points    30=points
double  pips2dbl;         // Stoploss 15 pips    0.015      0.0150
int     Digits.pips;      // DoubleToStr(dbl/pips2dbl, Digits.pips)
//---
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----   
   if(Digits % 2 == 1)  // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
     {pips2dbl = Point*10; pips2points = 10;   Digits.pips = 1;}
     else {pips2dbl = Point;    pips2points =  1;   Digits.pips = 0;}
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl        
//----      

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int Ticket;
   double SL,TP;
   int Total;
   
   double pAsk = MarketInfo(Symbol(), MODE_ASK);
   double pBid = MarketInfo(Symbol(), MODE_BID);
   double MA200 = iMA(NULL, 1440, MASlowPeriod, 0,MODE_SMA,PRICE_CLOSE, 0);  //200 day Moving Average   
   double MA5 = iMA(NULL, 1440, MAFastPeriod, 0,MODE_SMA,PRICE_CLOSE, 0);      //  5 day Moving Average
   double CurrentRSI = iRSI (NULL, 1440, RSIPeriod,PRICE_CLOSE ,0);
   
   
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   
   if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }


   if(OrdersTotal()<1)
        {
         BUYS=0;
         SELLS=0;
        } 

Dann lesen Sie https://www.mql5.com/en/forum/139654 und versuchen Sie, eine Schleife zu erstellen, die die Trades abwärts zählt.

 
deVries:

Dies ist der Anfang.....

Geben Sie Ihren Kommentar ..... über das, was anders ist als bei Ihnen bisher...

Dann lesen Sie https://www.mql5.com/en/forum/139654 und versuchen Sie, eine Schleife zu erstellen, die abwärts zählt und Trades überprüft


Es ist nicht vollständig...

ich versuche gerade, den Rest auszufüllen und zu testen...

Übrigens, warum sollten Sie verwenden, wenn ein einfaches Ask den gleichen Wert zurückgeben kann?

double pAsk = MarketInfo(Symbol(), MODE_ASK);  
 
cyxstudio:


Es ist nicht vollständig...

Ich versuche gerade, den Rest auszufüllen und zu testen...

Übrigens, warum sollten Sie verwenden, wenn ein einfaches Ask den gleichen Wert zurückgeben kann?

Ask kann veraltet sein, der obige Aufruf wird aktuell sein, ohne RefreshRates() aufrufen zu müssen
 

Außerdem sind die int BUYS=1,SELLS=1; als Indikatoren dafür gedacht, ob eine Position eröffnet wurde, richtig?

Ich füge meine eigenen Skripte ein und wenn ich es mit dem Strategietester für 20 Tage teste, passiert nichts, es werden keine Trades ausgeführt.

 
cyxstudio:

Außerdem sind die int BUYS=1,SELLS=1; als Indikatoren dafür gedacht, ob eine Position eröffnet wurde, richtig?

ich füge meine eigenen Skripte ein und wenn ich es mit dem Strategietester 20 Tage lang teste...passiert nichts, es werden keine Trades ausgeführt

wenn Sie Ihren Metatrader starten, muss der EA herausfinden, ob ein Handel offen ist

Ich mache nur die Schleife, die abwärts zählt, um zu prüfen, ob es einen Handel gibt.

Wenn ich es am Anfang auf eins setze und OrdersTotal() >0 dann lasse ich es die Trades prüfen if(.......> || .......> ){die Schleife ausführen....

Grund der Beschwerde: