Perché il mio EA continua a dare profitti negativi durante il back testing? - pagina 2

 
deVries:

Ho riscritto il tuo codice e provato un test, vedi anche le impostazioni

Non con i migliori backtestdata ma se lo fai bene può essere redditizio

Rapporto del tester di strategia
RSI_strategia_cyxstudio
AlpariUK-Demo - Micro+Classic (Build 451)

SimboloEURUSD (Euro contro Dollaro USA)
PeriodoQuotidiano (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
ModelloOgni tick (il metodo più preciso basato su tutti i timeframe minimi disponibili)
ParametriRSIPeriod=3; UpperBound=90; LowerBound=5; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="strategia RSI"; Slippage.Pips=3;
Bars in test1603Ticks modellati40187739Qualità della modellazionen/a
Errori di grafici non corrispondenti2062601
Deposito iniziale3000.00
Profitto netto totale967.18Utile lordo2226.34Perdita lorda-1259.16
Fattore di profitto1.77Guadagno previsto13.62
Drawdown assoluto107.10Dispersione massima327.47 (7.99%)Prelievo relativo7.99% (327.47)
Totale operazioni71Posizioni corte (vinto %)66 (69.70%)Posizioni lunghe (% won)5 (80.00%)
Operazioni con profitto (% del totale)50 (70.42%)Operazioni in perdita (% del totale)21 (29.58%)
Il più grandeprofitto120.07operazione in perdita-60.00
Mediadi profitto44.53commercio in perdita-59.96
Massimovittorie consecutive (profitto in denaro)8 (424.26)perdite consecutive (perdita in denaro)3 (-179.93)
Massimoprofitto consecutivo (conteggio delle vittorie)424.26 (8)perdita consecutiva (conteggio delle perdite)-179.93 (3)
Mediavittorie consecutive4perdite consecutive2


Ho scritto almeno 7-10 volte in modi diversi e non ha eseguito alcuna posizione o ha fatto profitti negativi... come hai fatto ????
 
RaptorUK:
Questo mi fa pensare che ci sia qualcosa che non va.


    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
Normalmente sì, ma in questo caso no, è fatto con l'impostazionechecyxstudio ha scelto per RSI
 
deVries:

Ho riscritto il tuo codice e provato un test, vedi anche le impostazioni

Non con i migliori backtestdata ma se lo fai bene può essere redditizio

Rapporto del tester di strategia
RSI_strategia_cyxstudio
AlpariUK-Demo - Micro+Classic (Build 451)

SimboloEURUSD (Euro contro Dollaro USA)
PeriodoQuotidiano (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
ModelloOgni tick (il metodo più preciso basato su tutti i timeframe minimi disponibili)
ParametriRSIPeriod=3; UpperBound=90; LowerBound=5; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="strategia RSI"; Slippage.Pips=3;
Bars in test1603Ticks modellati40187739Qualità della modellazionen/a
Errori di grafici non corrispondenti2062601
Deposito iniziale3000.00
Profitto netto totale967.18Utile lordo2226.34Perdita lorda-1259.16
Fattore di profitto1.77Guadagno previsto13.62
Drawdown assoluto107.10Dispersione massima327.47 (7.99%)Prelievo relativo7.99% (327.47)
Totale operazioni71Posizioni corte (vinto %)66 (69.70%)Posizioni lunghe (% won)5 (80.00%)
Operazioni con profitto (% del totale)50 (70.42%)Operazioni in perdita (% del totale)21 (29.58%)
Il più grandeprofitto120.07operazione in perdita-60.00
Mediadi profitto44.53commercio in perdita-59.96
Massimovittorie consecutive (profitto in denaro)8 (424.26)perdite consecutive (perdita in denaro)3 (-179.93)
Massimoprofitto consecutivo (conteggio delle vittorie)424.26 (8)perdita consecutiva (conteggio delle perdite)-179.93 (3)
Mediavittorie consecutive4perdite consecutive2


Mi faresti dare un'occhiata al tuo codice? Ho bisogno di studiarlo e imparare dai miei errori.
 
deVries:
Normalmente sì, ma in questo caso no, è fatto con l'impostazionechecyxstudio ha scelto per RSI
Ah OK, se puoi spiegarlo allora non c'è motivo di preoccuparsi ;-)
 

Con UpperBound 90 e LowerBound 10

Rapporto del tester di strategia
RSI_strategia_cyxstudio
AlpariUK-Demo - Micro+Classic (Build 451)

SimboloEURUSD (Euro contro Dollaro USA)
PeriodoQuotidiano (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
ModelloOgni tick (il metodo più preciso basato su tutti i timeframe minimi disponibili)
ParametriRSIPeriod=3; UpperBound=90; LowerBound=10; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="strategia RSI"; Slippage.Pips=3;
Bars in test1603Ticks modellati40187739Qualità della modellazionen/a
Errori di grafici non corrispondenti2062601
Deposito iniziale3000.00
Profitto netto totale782.62Utile lordo3062.38Perdita lorda-2279.76
Fattore di profitto1.34Payoff previsto7.38
Drawdown assoluto106.90Dispersione massima400.70 (9.90%)Prelievo relativo9.90% (400.70)
Totale operazioni106Posizioni corte (vinto %)66 (69.70%)Posizioni lunghe (% won)40 (55.00%)
Operazioni con profitto (% del totale)68 (64.15%)Operazioni in perdita (% del totale)38 (35.85%)
Il più grandeprofitto120.07operazione in perdita-60.12
Mediadi profitto45.04commercio in perdita-59.99
Massimovittorie consecutive (profitto in denaro)8 (425.96)perdite consecutive (perdita in denaro)4 (-240.12)
Massimoprofitto consecutivo (conteggio delle vittorie)490.51 (6)perdita consecutiva (conteggio delle perdite)-240.12 (4)
Mediavittorie consecutive3perdite consecutive2

Come si presenta

 
cyxstudio:

Mi faresti dare un'occhiata al tuo codice? Ho bisogno di studiarlo e imparare dai miei errori.

Questo è l'inizio.....

Dai il tuo commento ..... su ciò che è diverso dal tuo finora...

//+------------------------------------------------------------------+
//|                                       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;
        } 

Poi dai un'occhiata a https://www.mql5.com/en/forum/139654 e prova a fare un ciclo di conto alla rovescia controllando le transazioni

 
deVries:

Questo è l'inizio.....

Dai il tuo commento ..... su ciò che è diverso dal tuo finora...

Poi dai un'occhiata a https://www.mql5.com/en/forum/139654 e prova a fare un ciclo che conti alla rovescia controllando i trade


Non è completo...

Sto cercando di riempire il resto e testarlo ora ...

a proposito, perché dovresti usare quando un semplice Ask può restituire lo stesso valore?

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


Non è completo...

Sto cercando di riempire il resto e testarlo ora...

A proposito, perché dovresti usare quando un semplice Ask può restituire lo stesso valore?

Ask può essere scaduto, la chiamata sopra sarà attuale senza la necessità di chiamare RefreshRates()
 

Inoltre gli int BUYS=1,SELLS=1; dovrebbero essere indicatori se una posizione è stata aperta, giusto?

Ho aggiunto i miei script e quando l'ho testato con strategy tester per 20 giorni ... non è successo nulla, nessun trade è stato eseguito

 
cyxstudio:

Inoltre gli int BUYS=1,SELLS=1; dovrebbero essere indicatori se una posizione è stata aperta, giusto?

Ho aggiunto i miei script e quando l'ho testato con strategy tester per 20 giorni ... non è successo nulla, nessun trade è stato eseguito

quando si avvia la Metatrader l'EA deve scoprire se c'è un trade aperto

Faccio solo il conto alla rovescia per controllare i trade se c'è un trade

Se lo imposto all'inizio su uno e OrdersTotal() >0 allora lo faccio controllare le compravendite if(.......> || .......> ){fare il ciclo....

Motivazione: