Индикаторы: XSUM

 

XSUM:

Индикатор XSUM

Author: excelf

 

Останавливается на нулевом баре. Может кто поправит.

  rnj 

 

Вроде поправил

4irik:

Останавливается на нулевом баре. Может кто поправит.


//+------------------------------------------------------------------+
//|                                                         XSUM.mq4 |
//|                                Copyright © 2009, Ivan Kornilov   |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                                    vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Ivan Kornilov"
#property link "excelf@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
extern int period = 21;
extern int shift = 5;
extern int ma = 10;
double XBuffer[];
double MABuffer[];
int init() {
    SetIndexStyle(0,DRAW_LINE);
    SetIndexBuffer(0, XBuffer);
    
    SetIndexStyle(1,DRAW_LINE);
    SetIndexBuffer(1, MABuffer);
    
    SetIndexDrawBegin(0, (period+ma));
    SetIndexDrawBegin(1, (period+ma));
    
    IndicatorShortName("XSUM(" + period + "," + ma + ")");
}
int start() {
   int i;
   int j;
   int counted_bars=IndicatorCounted();
   int limit = Bars - counted_bars;
   if(counted_bars == 0) {
      limit = Bars - period-shift*3-1;
   }
   for(i = limit; i >= 0; i--) {
      double sum = 0;
      for(j=i;j<i+period;j++) {
         sum+= Close[j] / Close[j+shift];
      }
      XBuffer[i] = sum;
   }
    
   for(i = 0; i < limit; i++) {
      MABuffer[i] = iMAOnArray(XBuffer, Bars, ma, 0, 2, i);
   }
   return(0);
}
 
Vinin:

Вроде поправил

4irik:

Останавливается на нулевом баре. Может кто поправит.


//+------------------------------------------------------------------+
//|                                                         XSUM.mq4 |
//|                                Copyright © 2009, Ivan Kornilov   |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                                    vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Ivan Kornilov"
#property link "excelf@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
extern int period = 21;
extern int shift = 5;
extern int ma = 10;
double XBuffer[];
double MABuffer[];
int init() {
    SetIndexStyle(0,DRAW_LINE);
    SetIndexBuffer(0, XBuffer);
    
    SetIndexStyle(1,DRAW_LINE);
    SetIndexBuffer(1, MABuffer);
    
    SetIndexDrawBegin(0, (period+ma));
    SetIndexDrawBegin(1, (period+ma));
    
    IndicatorShortName("XSUM(" + period + "," + ma + ")");
}
int start() {
   int i;
   int j;
   int counted_bars=IndicatorCounted();
   int limit = Bars - counted_bars;
   if(counted_bars == 0) {
      limit = Bars - period-shift*3-1;
   }
   for(i = limit; i >= 0; i--) {
      double sum = 0;
      for(j=i;j<i+period;j++) {
         sum+= Close[j] / Close[j+shift];
      }
      XBuffer[i] = sum;
   }
    
   for(i = 0; i < limit; i++) {
      MABuffer[i] = iMAOnArray(XBuffer, Bars, ma, 0, 2, i);
   }
   return(0);
}
Vinin:

Вроде поправил

4irik:

Останавливается на нулевом баре. Может кто поправит.


Функционирует. Спасибо.
 
10 за идею
 
4irik:

Функционирует. Спасибо.

Можно конечно еще упростить, но надо ли. Тогда от авторской идеи ничего не останется
 
Vinin:
4irik:

Функционирует. Спасибо.

Можно конечно еще упростить, но надо ли. Тогда от авторской идеи ничего не останется

как упростить, если не секрет ?
 
Исправил проблему с нулевым баром. Ждем когда модератор одобрит.
 
excelf:

как упростить, если не секрет ?

Ответил в личку
 
Можно придать индикатору привычный вид:
XBuffer[i] = sum-period;
 

По моему не очень. Сигналы открытия ещё может и даёт, но закрывать надо по другому индюку. Три балла.

Причина обращения: