Navigation:Home > Content >

i-WCCI_Vegas.mq4

Time: 2015-11-14 | Download file:i-WCCI_Vegas.mq4

//+------------------------------------------------------------------+
//|                                                 i-WCCI_Vegas.mq4 |
//|                                             Перевод на МТ4 KimIV |
//+------------------------------------------------------------------+
#property copyright "Ace, KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_chart_window
#property indicator_buffers 1

#property indicator_color1 SlateBlue

//------- Внешние параметры ------------------------------------------
extern int CCIP  = 14;  // Период CCI
extern int limit = 200; // границы в которых находится зигзаг
extern int delta = 10;  // расстояние между "хвостами" и "серединой"
extern int KBars = 5000;

//------- Буферы индикатора ------------------------------------------
double WCCI_Vegas[];

//------- Глобальные переменные --------------------------------------
bool firstTime = True;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  SetIndexBuffer(0, WCCI_Vegas);
  SetIndexStyle (0, DRAW_ARROW);
  SetIndexArrow (0, 132);
  Comment("");
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  Comment("");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  double tt[20], pmn1, pmn2, pmx1, pmx2;
  double tmn1, tmn2, tmx1, tmx2, kmn, kmx, line;
  int    loopbegin, shift, sh, cciU, cciD;

  if (firstTime) {
  	if (KBars==0) loopbegin = Bars - 1;
	  else loopbegin = KBars - 1;
  }
  for (shift=loopbegin; shift>=0; shift--) {
  	WCCI_Vegas[shift] = 0;
  	cciU = 0;
  	cciD = 0;
  	for (sh=0; sh<=19; sh++) {
      // Заполнение массива точек.
  		tt[sh] = iCCI(NULL, 0, CCIP, PRICE_TYPICAL, shift+sh);
      // Определение наличия тренда.
		  if (sh<=8) {
			  if (tt[sh]>=0) cciU++;
  			else cciD++;
  		}
  	}

  	pmx1 = 0;
  	pmn1 = 0;
    // Определение точек.
  	if (cciD>=6) {
  		for (sh=13; sh>=0; sh--) {
  			if (tt[sh]<=tt[sh+1] && tt[sh+1]>=tt[sh+2] && pmn1!=0 && pmx1==0) {
					pmx1 = tt[sh+1];
					tmx1 = sh + 1;
  			}
  			if (tt[sh]>=tt[sh+1] && tt[sh+1]<=tt[sh+2] && pmn1==0 && tt[sh+1]<=-limit && sh+1>=5)	{				
					pmn1 = tt[sh+1];
					tmn1 = sh + 1;
  			}
  		}
  	}

  	pmx2 = 0;
  	pmn2 = 0;
    // Определение точек.
  	if (cciU>=6) {
  		for (sh=13; sh>=0; sh--) {
  			if (tt[sh]>=tt[sh+1] && tt[sh+1]<=tt[sh+2] && pmn2!=0 && pmx2==0) {
					pmx2 = tt[sh+1];
					tmx2 = sh + 1;
  			}
  			if (tt[sh]<=tt[sh+1] && tt[sh+1]>=tt[sh+2] && pmn2==0 && tt[sh+1]>=limit && sh+1>=5) {				
					pmn2 = tt[sh+1];
					tmn2 = sh + 1;
  			}
  		}
  	}

    // Vegas в нисходящем тренде
  	if (pmx1!=0 && cciD>=6 && tt[1]=pmx1 && tt[0]-delta>tt[1]) {
			WCCI_Vegas[shift] = Low[shift] - 6 * Point;
  	}
	
    // Vegas в восходящем тренде
  	if (kmn!=0 && cciU>=6 && (pmn1>limit || pmn2>limit) && tt[0]+delta        

Recommend