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

[Eliminato]  
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
[Eliminato]  
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

[Eliminato]  
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()
[Eliminato]  

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....