WcciChart_v4





//+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 2000-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Gaba"
#property link      "http://www.metaquotes.net"
//----
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Silver
#property indicator_color2 LimeGreen
#property indicator_color3 OrangeRed
#property indicator_color4 Silver
#property indicator_color5 Black
//
#property indicator_minimum -300
#property indicator_maximum  300
//
#property indicator_level1  200
#property indicator_level2  100
#property indicator_level3 -100
#property indicator_level4 -200
// Ïàðåìåòû
extern int fastPeriod =6;
extern int slowPeriod =14;
extern int histLength =500;
// Áóôåðû äàííûõ
double FastBuffer[];    // Áûñòðûé CCI
double SlowBuffer[];    // Ìåäëåííûé CCI
double HistBuffer[];
double UpTrBuffer[];
double DnTrBuffer[];
// Èíèöèàëèçàöèÿ
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
   IndicatorBuffers(5);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   short_name="WoodiesCCI("+fastPeriod+","+slowPeriod+")";
   IndicatorShortName(short_name);
   // indicator lines ////////////////////////////////
   SetIndexStyle(0, DRAW_HISTOGRAM);
   SetIndexBuffer(0, HistBuffer);
   SetIndexDrawBegin(0, slowPeriod);
   SetIndexLabel(0,"SlowCCI histogram");
   SetIndexEmptyValue(0, EMPTY_VALUE);
   //
   SetIndexStyle(1, DRAW_HISTOGRAM);
   SetIndexBuffer(1, UpTrBuffer);
   SetIndexDrawBegin(1, slowPeriod);
   SetIndexLabel(1,"UpTrend histogram");
   SetIndexEmptyValue(1, EMPTY_VALUE);
   //
   SetIndexStyle(2, DRAW_HISTOGRAM);
   SetIndexBuffer(2, DnTrBuffer);
   SetIndexDrawBegin(2, slowPeriod);
   SetIndexLabel(2,"DnTrend histogram");
   SetIndexEmptyValue(2, EMPTY_VALUE);
   //
   SetIndexStyle(3, DRAW_LINE,1,3);
   SetIndexBuffer(3, SlowBuffer);
   SetIndexDrawBegin(3, slowPeriod);
   SetIndexLabel(3,"SlowCCI("+slowPeriod+")");
   SetIndexEmptyValue(3, EMPTY_VALUE);
   //
   SetIndexStyle(4, DRAW_LINE);
   SetIndexBuffer(4, FastBuffer);
   SetIndexDrawBegin(4, slowPeriod);
   SetIndexLabel(4,"FastCCI("+fastPeriod+")");
   SetIndexEmptyValue(4, EMPTY_VALUE);
//----
   return(0);
  }
// Custor indicator deinitialization function                       
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   // TODO: add your code here
   return(0);
  }
// Custom indicator iteration function                              
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   string symbolName;
   int i, shift, checksum, counted_bars=IndicatorCounted();
   double slowCCI=0.0;
   if (Bars<slowPeriod) return(0);
   // check for possible errors
   if (counted_bars<0) return(-1);
   // last counted bar will be recounted
   if (counted_bars>0) counted_bars++;
   int limit=Bars-counted_bars;
   if (counted_bars<1 || checksum!=(histLength+fastPeriod+slowPeriod+Period()) || symbolName!=Symbol())
     {
      // Ïàðàìåòðû èçìåíåíû, ïðîâîäèì ðåèíèöèàëèçàöèþ 
      for(i=Bars-1; i<=Bars-histLength; i++)
        {
         FastBuffer[i]=EMPTY_VALUE;    // Áûñòðûé CCI
         SlowBuffer[i]=EMPTY_VALUE;    // Ìåäëåííûé CCI
         HistBuffer[i]=EMPTY_VALUE;    // Ãèñòîãðàììà ìåäëåííîãî CCI
         UpTrBuffer[i]=EMPTY_VALUE;    // Íàïðàâëåíèå òðåíäà
         DnTrBuffer[i]=EMPTY_VALUE;    // Íàïðàâëåíèå òðåíäà
        }
      checksum=histLength+fastPeriod+slowPeriod+Period();
      symbolName=Symbol();
      limit=histLength;
     }
   for(shift=limit; shift>=0; shift--)
     {
      FastBuffer[shift]=iCCI(NULL,0,fastPeriod,PRICE_TYPICAL,shift);
      SlowBuffer[shift]=iCCI(NULL,0,slowPeriod,PRICE_TYPICAL,shift);
      HistBuffer[shift]=SlowBuffer[shift];
      UpTrBuffer[shift]=EMPTY_VALUE;
      DnTrBuffer[shift]=EMPTY_VALUE;
      //	Çàïîëíåíèå ìàññèâà òî÷åê è îïðåäåëåíèå òðåíäà
      int a, up=0, dn=0;
      for(a=0;a<8;a++)
        {
         slowCCI=iCCI(NULL,0,slowPeriod,PRICE_TYPICAL,shift+a);
         if (slowCCI>0) up++;
         if (slowCCI<=0) dn++;
        }
      if (up>=6) UpTrBuffer[shift]=SlowBuffer[shift];
      if (dn>=6) DnTrBuffer[shift]=SlowBuffer[shift];
     }
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_HISTOGRAM

Implements a curve of type DRAW_LINE

Indicators Used:

Commodity channel index


Custom Indicators Used:

Order Management characteristics:

Other Features: