RSI-AREA.советник

 
привет всем! увидел в книге "FOREX:от простого к сложному"синяя такая(может у кого есть) интересный советник на основе RSI и нулевой линии.
Разработан компанией MetaQuotes.он считает площадь образованную этими двумя линиями.позы открывает при достижении площадью определенного значения.
значение площади можно варьировать.если ее увеличить(до 700 ед.) то кол-во сделок будет около 12 в год но прибыль увеличивается без просадок,т.е.гарантированно.я списал советник с книги
но там какие-то ошибки.я-чайник в программировании.
поэтому прошу всех кого заинтересовала тема исправьте ошибки. текст привожу:

 
//+------------------------------------------------------------------+
//|                                                 RSI-AREA.mq4     |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net//"
 
extern int RSIPeriod=13;
extern int AreaCondition=300;
 
double RSIAreaFunc(int& RSIAreaShift, double RSIPeriod, int BeginShift)
{
   int shift;
   double rsivalue, result;
   
   result = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, BeginShift) - 50.0;
   for(shift=BeginShift+1; shift<Bars-RSIPeriod; shift++)
    {
    rsivalue = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, shift) - 50.0;
    if((result>0 && rsivalue<-3 || (result<0 && rsivalue>3))
     {
     RSIAreaShift=shift;
     break;
     }
    result += rsivalue;
   }
   return(result);
  }
  
  int start()
   {
   static int RSIAreaShift=0;
   int cnt, shift;
   double RSICurrent, RSILocalMin, RSILocalMax, value;
   //--
      if(OrdersTotal()<1)
       {
        RSIArea = RSIAreaFunc(RSIAreaShift, RSIPeriod, 0);
        
        if(RSIArea<-AreaCondition)
         {
         OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0.0,0.0);
         RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
         }
         if(RSIArea>AreaCondition)
          {
          OrderSend(Symbol(),OP_SELL,1.0,Bid,3,0.0,0.0);
          RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
          return(0);
         }
         RSIAreaShift=0;
         }
        RSICurrent = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
        if(RSIOpen>50 && RSICurrent>50) return(0);
        if(RSIOpen<50 && RSICurrent<50) return(0);
        
      RSILocalMin = RSICurrent;
      RSILocalMax = RSICurrent;
      for(shift=1; shift<RSIAreaShift; shift++)
       {
       value = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Shift);
       if(value<RSILocalMin && RSIArea>0) RSILocalMin=value;
       if(value>RSILocalMax && RSIArea<0) RSILocalMax=value;
       
       for(cnt=OrdersTotal()-1; cnt>=0; cnt-)
         {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol())
            {
            if(OrderType()==OP_BUY)
             {
              if(RSILocalMax>=RSICurrent+4 && RSILocalMax>50)
                 OrderClose(OrderTicket(),OrderLots(),Bid,3);
             }
            if(OrderType()==OP_SELL)
             {
              if(RSILocalMin<=RSICurrent-4 && RSILocalMin<50)
                 OrderClose(OrderTicket(),OrderLots(),Ask,3);
               }
              }
             }
             return(0);
            }
 

да чуть не забыл,если что пишите на мыло dmitry-dobrynin@rambler.ru

 
//+------------------------------------------------------------------+
//|                                                 RSI-AREA.mq4     |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net//"
 
extern int RSIPeriod=13;
extern int AreaCondition=300;
 
 
 
 
  
int start()
{  
   static int RSIAreaShift=0;
   int cnt, shift;
   double RSIOpen, RSIArea, RSICurrent, RSILocalMin, RSILocalMax, value;
 
   
 
   if(OrdersTotal()<1)
 
   {  
      RSIArea = RSIAreaFunc(RSIAreaShift, RSIPeriod, 0);
 
      if(RSIArea<-AreaCondition)
      {  
      OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0.0,0.0);
      RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
      }  
      
      if(RSIArea>AreaCondition)
      {  
      OrderSend(Symbol(),OP_SELL,1.0,Bid,3,0.0,0.0);
      RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
 
      }
      
      RSIAreaShift=0;
      return(0);
   }
      
// =================================================================
      
      RSICurrent = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
      if(RSIOpen>50 && RSICurrent>50) return(0);
      if(RSIOpen<50 && RSICurrent<50) return(0);
        
      RSILocalMin = RSICurrent;
      RSILocalMax = RSICurrent;
      
for(shift=1; shift<RSIAreaShift; shift++)
{  
      value = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, shift);
      if(value<RSILocalMin && RSIArea>0) RSILocalMin=value;
      if(value>RSILocalMax && RSIArea<0) RSILocalMax=value;
       
      for(cnt=OrdersTotal()-1; cnt>=0; cnt--)
      {  
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      
         if(OrderSymbol()==Symbol())
         {  
         
            if(OrderType()==OP_BUY)
            {  
            if(RSILocalMax >= (RSICurrent+4) && RSILocalMax>50)
               {
               OrderClose(OrderTicket(),OrderLots(),Bid,3);
               }
            }
                  
            if(OrderType()==OP_SELL)
            {  
            if(RSILocalMin <= (RSICurrent-4) && RSILocalMin<50)
               {
               OrderClose(OrderTicket(),OrderLots(),Ask,3);
               }
            }
            
         }
      }
}
return(0);
 
}
 
 
//=======================================================================
 
 
double RSIAreaFunc(int RSIAreaShift, double RSIPeriod, int BeginShift)
 
{
   
   int shift;
   double rsivalue, result;
   result = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, BeginShift) - 50.0;
   
   for(shift=BeginShift+1; shift<Bars-RSIPeriod; shift++)
   {
   rsivalue = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, shift) - 50.0;
      
      if((result>0 && rsivalue<-3) || (result<0 && rsivalue>3))
         {
         RSIAreaShift=shift;
         break;
         }
         
      result += rsivalue;
   }
   return(result);
}
Ошибки исправил, те что нашел, но сделки почему-то не закрываются:(
 

В тексте книги в этом месте ошибки набора. Вот оригинал эксперта

//+------------------------------------------------------------------+
//|                                                     RSI_Area.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
extern int RSIPeriod=13;
extern int AreaCondition=300;
double RSIArea, RSIOpen;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   static int RSIAreaShift=0;
   int    cnt, shift;
   double RSICurrent, RSILocalMin, RSILocalMax, value;
//---- 
   if(OrdersTotal()<1)
     {
      RSIArea = RSIAreaFunc(RSIAreaShift, RSIPeriod, 0);
      //---- проверяем на возможность встать в длинную позицию
      if(RSIArea<-AreaCondition)
        {
         OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0.0,0.0);
         RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
         return(0);
        }
      //---- проверяем на возможность встать в короткую позицию
      if(RSIArea>AreaCondition)
        {
         OrderSend(Symbol(),OP_SELL,1.0,Bid,3,0.0,0.0);
         RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
         return(0);
        }
      RSIAreaShift=0;
     }
   RSICurrent = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
   if(RSIOpen>50 && RSICurrent>50) return(0);
   if(RSIOpen<50 && RSICurrent<50) return(0);
 
   RSILocalMin = RSICurrent;
   RSILocalMax = RSICurrent;
   for(shift=1; shift<RSIAreaShift; shift++)
     {
      value = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, shift);
      if(value<RSILocalMin && RSIArea>0) RSILocalMin=value;
      if(value>RSILocalMax && RSIArea<0) RSILocalMax=value;
     }
 
   for(cnt=OrdersTotal()-1; cnt>=0; cnt--)
     {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            //---- проверим, может уже пора закрываться?
            if(RSILocalMax>=RSICurrent+4 && RSILocalMax>50)
               OrderClose(OrderTicket(),OrderLots(),Bid,3);
           }
         if(OrderType()==OP_SELL)
           {
            if(RSILocalMin<=RSICurrent-4 && RSILocalMin<50)
               OrderClose(OrderTicket(),OrderLots(),Ask,3);
           }
        }
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double RSIAreaFunc(int& RSIAreaShift, double RsiPeriod, int BeginShift)
  {
   int    shift;
   double rsivalue, result;
 
   result = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, BeginShift) - 50.0;
   for(shift=BeginShift+1; shift<Bars-RsiPeriod; shift++)
     {
      rsivalue = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, shift) - 50.0;
      if((result>0 && rsivalue<-3) || (result<0 && rsivalue>3))
        {
         RSIAreaShift=shift;
         break;
        }
      result += rsivalue;
     }
   return(result);
  }
//+------------------------------------------------------------------+

А вот оригинал индикатора

//+------------------------------------------------------------------+
//|                                             RSIAreaIndicator.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Gray
#property indicator_color2 Gray
//---- input parameters
extern int       ExtRSIPeriod=13;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorShortName("RSIArea("+ExtRSIPeriod+")");
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexLabel(1,NULL);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
//---- macd counted in the 1-st additional buffer
   for(int i=0; i<limit; i++)
     {
      double value=iRSI(NULL,0,ExtRSIPeriod,PRICE_CLOSE,i)-50.0;
      ExtMapBuffer1[i]=value;
      ExtMapBuffer2[i]=value;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
ну вот:) а я исправлял, старался:)
 
Вот исправленный, работает:
//+------------------------------------------------------------------+
//|                                                 RSI-AREA.mq4     |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net//"
 
extern int RSIPeriod=13;
extern int AreaCondition=300;
double RSIArea,RSIOpen;
int init() {return(0);}
int deinit() {return(0);}
double RSIAreaFunc(int& RSIAreaShift, double RSIPeriod, int BeginShift)
 {
  int shift;
  double rsivalue, result; 
  result = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, BeginShift) - 50.0;
  for(shift=BeginShift+1; shift<Bars-RSIAreaShift; shift++)
   {
    rsivalue = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, shift) - 50.0;
    if((result>0 && rsivalue<-3) || (result<0 && rsivalue>3))
     {
      RSIAreaShift=shift;
      break;
     }
    result += rsivalue;
   }
  return(result);
 }
// 
int start()
 {
  static int RSIAreaShift=0;
  int cnt, shift;
  double RSICurrent, RSILocalMin, RSILocalMax, value;
//--
  if(OrdersTotal()<1)
   {
    RSIArea = RSIAreaFunc(RSIAreaShift, RSIPeriod, 0);
    if(RSIArea<-AreaCondition)
     {
      OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0.0,0.0);
      RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
     }
    if(RSIArea>AreaCondition)
     {
      OrderSend(Symbol(),OP_SELL,1.0,Bid,3,0.0,0.0);
      RSIOpen = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
      return(0);
     }
//    
   }
  RSICurrent = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0);
  if(RSIOpen>50 && RSICurrent>50) return(0);
  if(RSIOpen<50 && RSICurrent<50) return(0);      
  RSILocalMin = RSICurrent;
  RSILocalMax = RSICurrent;
  for(shift=1; shift<RSIAreaShift; shift++)
   {
    value = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, shift);
    if(value<RSILocalMin && RSIArea>0) RSILocalMin=value;
    if(value>RSILocalMax && RSIArea<0) RSILocalMax=value;   
    for(cnt=OrdersTotal()-1; cnt>=0; cnt--)
     {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol())
       {
        if(OrderType()==OP_BUY)
         {
          if(RSILocalMax>=RSICurrent+4 && RSILocalMax>50)OrderClose(OrderTicket(),OrderLots(),Bid,3);
         }
        if(OrderType()==OP_SELL)
         {
          if(RSILocalMin<=RSICurrent-4 && RSILocalMin<50)OrderClose(OrderTicket(),OrderLots(),Ask,3);
         }
       }
     }
   }    
  return(0);
 }
 

Ещё один? :о

 
Даже не очень-то и сливает))))))




Strategy Tester: RSI-Area
Strategy Tester Report
RSI-Area

СимволEURUSD (Euro vs US Dollar)
Период1 Час (H1) 2007.01.02 08:00 - 2007.06.21 00:00 (2007.01.01 - 2007.06.21)
МодельВсе тики (на основе всех наименьших доступных периодов с фрактальной интерполяцией каждого тика)
ПараметрыRSIPeriod=13; AreaCondition=300;
Баров в истории7917Смоделировано тиков423406Качество моделирования90.00%
Начальный депозит10000.00
Чистая прибыль2459.80Общая прибыль7409.60Общий убыток-4949.80
Прибыльность1.50Матожидание выигрыша61.50
Абсолютная просадка1867.60Максимальная просадка2089.80 (20.44%)Относительная просадка20.44% (2089.80)
Всего сделок40Короткие позиции (% выигравших)22 (68.18%)Длинные позиции (% выигравших)18 (77.78%)
Прибыльные сделки (% от всех)29 (72.50%)Убыточные сделки (% от всех)11 (27.50%)
Самая большаяприбыльная сделка652.20убыточная сделка-1314.70
Средняяприбыльная сделка255.50убыточная сделка-449.98
Максимальное количествонепрерывных выигрышей (прибыль)9 (1796.10)непрерывных проигрышей (убыток)4 (-1115.40)
Максимальнаянепрерывная прибыль (число выигрышей)1872.10 (7)непрерывный убыток (число проигрышей)-1314.70 (1)
Среднийнепрерывный выигрыш4непрерывный проигрыш1

ВремяТипОрдерЛотыЦенаS / LT / PПрибыльБаланс
12007.01.02 08:00sell11.001.32410.00000.0000
22007.01.03 13:17close11.001.32320.00000.000092.2010092.20
32007.01.04 01:00buy21.001.31670.00000.0000
42007.01.09 03:48close21.001.30370.00000.0000-1314.708777.50
52007.01.10 17:00buy31.001.29630.00000.0000
62007.01.11 15:34close31.001.29770.00000.0000125.308902.80
72007.01.12 15:00buy41.001.28900.00000.0000
82007.01.12 17:05close41.001.29210.00000.0000310.009212.80
92007.01.23 23:00sell51.001.30260.00000.0000
102007.01.24 11:04close51.001.29870.00000.0000392.209605.00
112007.01.26 16:42buy61.001.28990.00000.0000
122007.01.29 10:20close61.001.29140.00000.0000145.109750.10
132007.01.30 09:00sell71.001.29610.00000.0000
142007.01.31 12:07close71.001.29370.00000.0000242.209992.30
152007.02.01 07:00sell81.001.30320.00000.0000
162007.02.02 19:08close81.001.29670.00000.0000652.2010644.50
172007.02.05 08:00buy91.001.29360.00000.0000
182007.02.06 13:00close91.001.29370.00000.00005.1010649.60
192007.02.07 03:24sell101.001.29750.00000.0000
202007.02.08 12:11close101.001.29920.00000.0000-163.4010486.20
212007.02.13 03:00buy111.001.29580.00000.0000
222007.02.13 10:18close111.001.29930.00000.0000350.0010836.20
232007.02.14 01:00sell121.001.30340.00000.0000
242007.02.16 11:18close121.001.31280.00000.0000-931.209905.00
252007.02.26 08:00sell131.001.31810.00000.0000
262007.02.26 19:45close131.001.31650.00000.0000160.0010065.00
272007.03.02 15:00buy141.001.31620.00000.0000
282007.03.02 21:47close141.001.31900.00000.0000280.0010345.00
292007.03.05 23:00buy151.001.30940.00000.0000
302007.03.06 11:09close151.001.31140.00000.0000195.1010540.10
312007.03.08 05:00sell161.001.31760.00000.0000
322007.03.08 12:38close161.001.31570.00000.0000190.0010730.10
332007.03.13 02:00sell171.001.31860.00000.0000
342007.03.13 10:02close171.001.31720.00000.0000140.0010870.10
352007.03.14 23:00sell181.001.32230.00000.0000
362007.03.15 11:35close181.001.32120.00000.0000116.6010986.70
372007.03.16 08:00sell191.001.32890.00000.0000
382007.03.19 09:56close191.001.33010.00000.0000-117.8010868.90
392007.03.22 06:00sell201.001.33880.00000.0000
402007.03.22 19:01close201.001.33370.00000.0000510.0011378.90
412007.03.23 20:00buy211.001.32910.00000.0000
422007.03.26 18:38close211.001.33250.00000.0000335.1011714.00
432007.03.27 10:00sell221.001.33300.00000.0000
442007.03.28 12:41close221.001.33390.00000.0000-87.8011626.20
452007.04.05 18:00sell231.001.34330.00000.0000
462007.04.06 17:44close231.001.33770.00000.0000562.2012188.40
472007.04.09 04:00buy241.001.33630.00000.0000
482007.04.10 06:39close241.001.34170.00000.0000535.1012723.50
492007.04.10 20:00sell251.001.34340.00000.0000
502007.04.17 03:10close251.001.35310.00000.0000-954.6011768.90
512007.04.18 11:31sell261.001.35960.00000.0000
522007.04.18 19:09close261.001.35810.00000.0000150.0011918.90
532007.04.25 03:00sell271.001.36320.00000.0000
542007.04.26 13:17close271.001.36150.00000.0000176.6012095.50
552007.05.02 15:00buy281.001.35750.00000.0000
562007.05.02 21:28close281.001.35960.00000.0000210.0012305.50
572007.05.04 06:00buy291.001.35450.00000.0000
582007.05.04 16:02close291.001.35840.00000.0000390.0012695.50
592007.05.07 16:00sell301.001.36180.00000.0000
602007.05.08 01:38close301.001.36030.00000.0000152.2012847.70
612007.05.08 23:00buy311.001.35440.00000.0000
622007.05.09 17:35close311.001.35480.00000.000035.1012882.80
632007.05.11 08:00buy321.001.34800.00000.0000
642007.05.11 18:02close321.001.35150.00000.0000350.0013232.80
652007.05.14 09:00sell331.001.35430.00000.0000
662007.05.15 14:07close331.001.35350.00000.000082.2013315.00
672007.05.16 10:00sell341.001.36060.00000.0000
682007.05.16 17:02close341.001.35810.00000.0000250.0013565.00
692007.05.17 06:00buy351.001.35280.00000.0000
702007.05.18 19:07close351.001.35020.00000.0000-264.9013300.10
712007.05.22 05:00buy361.001.34560.00000.0000
722007.05.23 16:20close361.001.34840.00000.0000275.1013575.20
732007.06.05 01:00sell371.001.34940.00000.0000
742007.06.06 15:03close371.001.35180.00000.0000-237.8013337.40
752007.06.08 00:24buy381.001.34300.00000.0000
762007.06.12 07:26close381.001.33590.00000.0000-719.8012617.60
772007.06.13 03:00buy391.001.33020.00000.0000
782007.06.13 22:10close391.001.33010.00000.0000-10.0012607.60
792007.06.18 02:00sell401.001.33800.00000.0000
802007.06.19 13:10close401.001.33950.00000.0000-147.8012459.80
 
stringo:

В тексте книги в этом месте ошибки набора. Вот оригинал эксперта

double RSIAreaFunc(int& RSIAreaShift, double RsiPeriod, int BeginShift)
  {
   int    shift;
   double rsivalue, result;
 
   result = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, BeginShift) - 50.0;
   
for(shift=BeginShift+1; shift<Bars-RsiPeriod; shift++)

{
rsivalue = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, shift) - 50.0;
if((result>0 && rsivalue<-3) || (result<0 && rsivalue>3))
{
RSIAreaShift=shift;
break;
}
result += rsivalue;
}
return(result);
}
//+------------------------------------------------------------------+

В Вашем оригинале явная ошибка. Нужно так:for(shift=BeginShift+1; shift<Bars-RSIAreaShift; shift++)
 
Sepulca:
stringo:

В тексте книги в этом месте ошибки набора. Вот оригинал эксперта

double RSIAreaFunc(int& RSIAreaShift, double RsiPeriod, int BeginShift)
  {
   int    shift;
   double rsivalue, result;
 
   result = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, BeginShift) - 50.0;
   
for(shift=BeginShift+1; shift<Bars-RsiPeriod; shift++)

{
rsivalue = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, shift) - 50.0;
if((result>0 && rsivalue<-3) || (result<0 && rsivalue>3))
{
RSIAreaShift=shift;
break;
}
result += rsivalue;
}
return(result);
}
//+------------------------------------------------------------------+

В Вашем оригинале явная ошибка. Нужно так:for(shift=BeginShift+1; shift<Bars-RSIAreaShift; shift++)

 
пожалуйста объясните как правильно тестить у меня в тестере никаких графиков изменения баланса нет вообще ничего нет!
Причина обращения: