Почему мой советник продолжает давать отрицательную прибыль при обратном тестировании? - страница 2

 
deVries:

Я переписал ваш код и попробовал тест, смотрите также настройки.

Не с самыми лучшими бэктестданными, но если все сделать правильно, это может быть прибыльным.

Отчет тестера стратегии
RSI_strategy_cyxstudio
AlpariUK-Demo - Micro+Classic (Build 451)

СимволEURUSD (евро против доллара США)
ПериодЕжедневно (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
МодельКаждый тик (наиболее точный метод, основанный на всех доступных наименьших таймфреймах)
ПараметрыRSIPeriod=3; UpperBound=90; LowerBound=5; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="RSI стратегия"; Slippage.Pips=3;
Бары в тесте1603Тики смоделированы40187739Качество моделированиян/а
Ошибки несовпадающих графиков2062601
Первоначальный депозит3000.00
Итого чистая прибыль967.18Валовая прибыль2226.34Валовый убыток-1259.16
Коэффициент прибыли1.77Ожидаемая прибыль13.62
Абсолютная просадка107.10Максимальная просадка327.47 (7.99%)Относительная просадка7.99% (327.47)
Всего сделок71Короткие позиции (выигранные %)66 (69.70%)Длинные позиции (выиграно %)5 (80.00%)
Прибыльные сделки (% от общего количества)50 (70.42%)Убыточные сделки (% от общего количества)21 (29.58%)
Крупнейшийприбыльная сделка120.07убыточная сделка-60.00
Среднийприбыльная сделка44.53убыточная торговля-59.96
Максимумпоследовательных побед (прибыль в деньгах)8 (424.26)последовательные проигрыши (убыток в деньгах)3 (-179.93)
Максимальныйпоследовательная прибыль (количество выигрышей)424.26 (8)последовательный убыток (количество проигрышей)-179.93 (3)
Среднеепоследовательные выигрыши4последовательные проигрыши2


что за...? я написал по крайней мере 7-10 раз разными способами и он либо вообще не выполнил ни одной позиции, либо сделал отрицательную прибыль... как вы это сделали????
 
RaptorUK:
Это заставило бы меня думать, что что-то не так.


    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
Обычно да, но в данном случае нет, это сделано с помощью настроек, которыеcyxstudio выбрала для RSI.
 
deVries:

Я переписал ваш код и попробовал тест, смотрите также настройки.

Не с самыми лучшими бэктестданными, но если все сделать правильно, это может быть прибыльным.

Отчет тестера стратегии
RSI_strategy_cyxstudio
AlpariUK-Demo - Micro+Classic (Build 451)

СимволEURUSD (евро против доллара США)
ПериодЕжедневно (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
МодельКаждый тик (наиболее точный метод, основанный на всех доступных наименьших таймфреймах)
ПараметрыRSIPeriod=3; UpperBound=90; LowerBound=5; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="RSI стратегия"; Slippage.Pips=3;
Бары в тесте1603Тики смоделированы40187739Качество моделированиян/а
Ошибки несовпадающих графиков2062601
Первоначальный депозит3000.00
Итого чистая прибыль967.18Валовая прибыль2226.34Валовый убыток-1259.16
Коэффициент прибыли1.77Ожидаемая прибыль13.62
Абсолютная просадка107.10Максимальная просадка327.47 (7.99%)Относительная просадка7.99% (327.47)
Всего сделок71Короткие позиции (выигранные %)66 (69.70%)Длинные позиции (выиграно %)5 (80.00%)
Прибыльные сделки (% от общего количества)50 (70.42%)Убыточные сделки (% от общего количества)21 (29.58%)
Крупнейшийприбыльная сделка120.07убыточная сделка-60.00
Среднийприбыльная сделка44.53убыточная торговля-59.96
Максимумпоследовательных побед (прибыль в деньгах)8 (424.26)последовательные проигрыши (убыток в деньгах)3 (-179.93)
Максимальныйпоследовательная прибыль (количество выигрышей)424.26 (8)последовательный убыток (количество проигрышей)-179.93 (3)
Среднеепоследовательные выигрыши4последовательные проигрыши2


не могли бы вы дать мне посмотреть ваш код? мне нужно изучить его и учиться на своих ошибках.
 
deVries:
Обычно да, но в данном случае нет, это сделано с помощью настроек, которыеcyxstudio выбрал для RSI.
Хорошо, если вы можете объяснить это, тогда нет причин для беспокойства ;-)
 

С верхней границей 90 и нижней границей 10

Отчет тестера стратегий
RSI_стратегия_cyxstudio
AlpariUK-Demo - Micro+Classic (Build 451)

СимволEURUSD (евро против доллара США)
ПериодЕжедневно (D1) 2010.10.01 00:00 - 2013.01.29 00:00 (2010.10.01 - 2013.01.30)
МодельКаждый тик (наиболее точный метод, основанный на всех доступных наименьших таймфреймах)
ПараметрыRSIPeriod=3; UpperBound=90; LowerBound=10; MASlowPeriod=200; MAFastPeriod=5; Lots=0.1; StopLoss=60; TakeProfit=120; TrailingStop=40; MagicNumber=54333; CommentEA="RSI стратегия"; Slippage.Pips=3;
Бары в тесте1603Тики смоделированы40187739Качество моделированиян/а
Ошибки несовпадающих графиков2062601
Первоначальный депозит3000.00
Итого чистая прибыль782.62Валовая прибыль3062.38Валовый убыток-2279.76
Коэффициент прибыли1.34Ожидаемая прибыль7.38
Абсолютная просадка106.90Максимальная просадка400.70 (9.90%)Относительная просадка9.90% (400.70)
Всего сделок106Короткие позиции (выигранные %)66 (69.70%)Длинные позиции (выигранные %)40 (55.00%)
Прибыльные сделки (% от общего количества)68 (64.15%)Убыточные сделки (% от общего количества)38 (35.85%)
Крупнейшийприбыльная сделка120.07убыточная сделка-60.12
Среднийприбыльная торговля45.04убыточная торговля-59.99
Максимумпоследовательных побед (прибыль в деньгах)8 (425.96)последовательные проигрыши (убыток в деньгах)4 (-240.12)
Максимальныйпоследовательная прибыль (количество выигрышей)490.51 (6)последовательный убыток (количество проигрышей)-240.12 (4)
Среднеепоследовательные выигрыши3последовательные проигрыши2

Как это выглядит

 
cyxstudio:

не могли бы вы дать мне посмотреть ваш код? мне нужно изучить его и учиться на своих ошибках.

Это начало.....

Дайте свой комментарий ..... о том, что отличается от вашего до сих пор...

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

Затем прочтите https://www.mql5.com/en/forum/139654 и попробуйте сделать цикл обратного отсчета, проверяющий сделки.

 
deVries:

Это начало.....

Дайте свой комментарий ..... о том, что отличается от вашего до сих пор...

Затем прочтите https://www.mql5.com/en/forum/139654 и попробуйте сделать цикл обратного отсчета, проверяя сделки.


Он не полный...

Я пытаюсь заполнить остальное и протестировать это сейчас...

Кстати, зачем вам использовать , если простой Ask может вернуть то же значение?

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


Он не полный...

я пытаюсь заполнить остальное и протестировать его сейчас...

Кстати, зачем вам использовать , если простой Ask может вернуть то же значение?

Ask может быть устаревшим, вызов выше будет актуальным без необходимости вызывать RefreshRates()
 

А также int BUYS=1,SELLS=1; должны быть индикаторами того, была ли открыта позиция, верно?

Я добавил свои собственные скрипты и когда я тестировал их с помощью тестера стратегий в течение 20 дней... ничего не произошло, ни одна сделка не была исполнена.

 
cyxstudio:

А также int BUYS=1,SELLS=1; должны быть индикаторами того, была ли открыта позиция, верно?

Я добавляю свои собственные скрипты и когда я тестирую его в тестере стратегий в течение 20 дней... ничего не произошло, ни одна сделка не была исполнена

Когда вы запускаете Metatrader, советник должен узнать, открыта ли сделка.

Я делаю только цикл обратного отсчета для проверки сделок, если есть сделка.

Если я устанавливаю в начале на 1 и OrdersTotal() >0, то я делаю проверку сделок if(.......> || .......> ){делаю цикл....