MACD_CCIobos_mtf





//+------------------------------------------------------------------+
//|                                                     MACD_CCI.mq4 |
//|                                   Copyright © 2009, challenger78 |
//+------------------------------------------------------------------+
//mod mtf

#property  copyright "challenger78"

#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  RoyalBlue
#property  indicator_color2  Red
#property  indicator_color3  Orange

#property  indicator_minimum 0
#property  indicator_maximum 77

extern int TimeFrame=0;

extern int macdMAfast   =144;  //12
extern int macdMAslow   =233;  //26;
extern int macdSigMA    =21;   //9
extern int macdPrice    =0;
extern int macdLnMode   =0;

extern int CCIperiod = 50;
extern int CCIprice  = 5;
extern int cciOBlevel =  100;
extern int cciOSlevel = -100;

extern double BarLevl = 5;

//0main;1signal
extern string  MA_Method_Price = "SMA0 EMA1 SMMA2 LWMA3||0O,1C 2H3L,4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6||macdLnMode:0main 1sig";
extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";

double buffer1[], buffer2[], buffer3[];




int init()
{
   SetIndexStyle(0,DRAW_ARROW);    SetIndexArrow(0,167);    SetIndexBuffer(0,buffer1);    SetIndexEmptyValue(0,EMPTY_VALUE); 
   SetIndexStyle(1,DRAW_ARROW);    SetIndexArrow(1,167);    SetIndexBuffer(1,buffer2);    SetIndexEmptyValue(1,EMPTY_VALUE);
   SetIndexStyle(2,DRAW_ARROW);    SetIndexArrow(2,167);    SetIndexBuffer(2,buffer3);    SetIndexEmptyValue(2,EMPTY_VALUE); 
   
   
   TimeFrame=MathMax(TimeFrame,Period());  
   
   string name1= " macd: "+macdMAfast+","+macdMAslow+","+macdSigMA;
   string name2= " cci: " +CCIperiod;

   IndicatorShortName("MACDCCI_"+name1+name2+" "+TimeFrame);  

   
   return(0);
}



int start()
{
   int i,limit;
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0) return(-1);
   if(counted_bars > 0) counted_bars--;
   limit = Bars - counted_bars;
         if(TimeFrame!=Period())
         limit = MathMax(limit,TimeFrame/Period());
   
   for (i=limit; i>= 0; i--)
   {
              int y =iBarShift(NULL,TimeFrame,Time[i]);
                  
      double  macd0 =iMACD(NULL,TimeFrame,macdMAfast,macdMAslow,macdSigMA,macdPrice,macdLnMode,y);
      double  macd1 =iMACD(NULL,TimeFrame,macdMAfast,macdMAslow,macdSigMA,macdPrice,macdLnMode,y+1);

      double  cci   =iCCI (NULL,TimeFrame,CCIperiod,CCIprice,y);
                
                
                         
      buffer1[i]=EMPTY_VALUE;    buffer2[i]=EMPTY_VALUE;      buffer3[i]=EMPTY_VALUE;    
      
      if (cci > cciOBlevel && macd0 > macd1 )   buffer1[i] = BarLevl;  
      else 
      if (cci < cciOSlevel && macd0 < macd1 )   buffer2[i] = BarLevl;  
      else                                      buffer3[i] = BarLevl;
   
   }
   return(0);
}





Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_ARROW


Indicators Used:

MACD Histogram


Custom Indicators Used:

Order Management characteristics:

Other Features: