//+------------------------------------------------------------------+
//| |
//| _TRO_IND2_History |
//| |
//| Copyright � 2008, Avery T. Horton, Jr. aka TheRumpledOne |
//| |
//| PO BOX 43575, TUCSON, AZ 85733 |
//| |
//| GIFTS AND DONATIONS ACCEPTED |
//| |
//| therumpledone@gmail.com |
//+------------------------------------------------------------------+
// this updn was posted here: http://www.forex-tsd.com/general-discussion/7123-daily-average-indicator-2.html#post212976
#property copyright "Copyright � 2008, Avery T. Horton, Jr. aka TRO"
#property link "http://www.therumpledone.com/"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Turquoise
#property indicator_color2 Navy
#property indicator_color3 Gold
#property indicator_color4 MediumVioletRed
#property indicator_color5 Magenta
//---- parameters
extern string myPair = "";
extern int MAPeriod = 5;
extern int MAType = 1;
int MAMode;
string strMAType;
//---- buffers
double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
double ExtBuffer3[];
double ExtBuffer4[];
//+------------------------------------------------------------------+
int myPeriod = 0 ;
int ExtCountedBars=0;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_MN1: tfs="MN"; break;
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
}
return(tfs);
}
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
SetIndexBuffer(3,ExtBuffer3);
SetIndexBuffer(4,ExtBuffer4);
SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, 4, indicator_color1);
SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, 4, indicator_color2);
SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, 4, indicator_color3);
SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, 4, indicator_color4);
SetIndexStyle(4,DRAW_HISTOGRAM, EMPTY, 4, indicator_color5);
if (myPair == "") myPair = Symbol();
if( myPeriod == 0) myPeriod = Period() ;
string tPeriod = TimeFrameToString(myPeriod) ;
IndicatorShortName("TRO IND2 HIST "+myPair+"("+tPeriod+")" );
switch (MAType)
{
case 1: strMAType="EMA"; MAMode=MODE_EMA; break;
case 2: strMAType="SMMA"; MAMode=MODE_SMMA; break;
case 3: strMAType="LWMA"; MAMode=MODE_LWMA; break;
case 4: strMAType="LSMA"; break;
default: strMAType="SMA"; MAMode=MODE_SMA; break;
}
return(0);
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int i=Bars-counted_bars;
//---- main calculation loop
while( i>=0)
{
double price = iClose(myPair,myPeriod,i);
double close = iClose(myPair,myPeriod,i+1);
double MA_Cur = iMA(NULL,myPeriod,MAPeriod,0,MAMode,PRICE_CLOSE,i);
double MA_Prev = iMA(NULL,myPeriod,MAPeriod,0,MAMode,PRICE_CLOSE,i+1);
while(true)
{
if (MA_Cur > MA_Prev && price > MA_Cur){ PlotHist(4,0,0,0,0,i); break ;}
if (MA_Cur <= MA_Prev && price > MA_Cur){ PlotHist(0,4,0,0,0,i); break ;}
if (MA_Cur >= MA_Prev && price < MA_Cur){ PlotHist(0,0,0,4,0,i); break ;}
if (MA_Cur < MA_Prev && price < MA_Cur){ PlotHist(0,0,0,0,4,i); break ;}
PlotHist(0,0,4,0,0,i); break ;
} // while
i--;
} // for
/*
Comment("i=", i, "\n",
"ExtMapBuffer7[i]=", DoubleToStr(ExtMapBuffer7[i],4), "\n",
"ExtMapBuffer8[i]=", DoubleToStr(ExtMapBuffer8[i],4) );
*/
return(0);
}
//+------------------------------------------------------------------+
void PlotHist(int a,int b,int c,int d,int e, int bars)
{
ExtBuffer0[bars]=a;
ExtBuffer1[bars]=b;
ExtBuffer2[bars]=c;
ExtBuffer3[bars]=d;
ExtBuffer4[bars]=e;
}
//+------------------------------------------------------------------+