azzx_sma_rsi_1_0

0 Views
0 Downloads
0 Favorites
azzx_sma_rsi_1_0
// ---------------------------------------------------------------------------
//  Ðàññ÷¸ò RSI ïî êíèãå ×.Ëåáî è Ä.Ëóêàñà, äëÿ óñðåäíåíèÿ èñïîëüçóåòñÿ SMA.
// ---------------------------------------------------------------------------

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1  Red
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1  30
#property indicator_level2  70

// Ïåðèîä èíäèêàòîðà.
extern int PERIOD = 9;

// Áóôåðû èíäèêàòîðà.
double buf_rsi[];
// Ðàáî÷èé ïåðèîä èíäèêàòîðà.
int work_period;

// Èíèöèàëèçàöèÿ.
int init() {
  IndicatorShortName(StringConcatenate(
    "AZZX - SMA RSI v1.0 (", PERIOD, ")"));
  IndicatorDigits(0);
  
  SetIndexBuffer(0, buf_rsi);
  SetIndexEmptyValue(0, -1);
  SetIndexLabel(0, "SMA RSI(" + PERIOD + ")");
  
  work_period = Bars - PERIOD;

  return(0);
}

// Ãëàâíûé öèêë.
int start() {
  int i;
  
  for(i = Bars - IndicatorCounted() - 1; i >= 0; i--) {
    if(i < work_period) {
      double up = 0, dn = 0;
      int j;
      
      for(j = i + PERIOD - 1; j >= i; j--) {
        double v = Close[j] - Open[j];
        
        if(v > 0) {
          up += v;
        } else {
          dn -= v;
        }
      }
      
      buf_rsi[i] = up / (up + dn) * 100;
    } else {
      buf_rsi[i] = -1;
    }
  }

  return(0);
}

Comments