#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 White
#property indicator_color3 Red
#property indicator_color4 Lime
#property indicator_level1 0.0
extern int TimeFrame=0;
extern int History=500;
extern int bolPrd=20;
extern double bolDev=2.0;
extern int keltPrd=20;
extern double keltFactor=1.5;
extern int momPrd=12;
double upB[];
double loB[];
double upK[];
double loK[];
int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,upB);
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,loB);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexStyle(2,DRAW_ARROW);
SetIndexBuffer(2,upK);
SetIndexEmptyValue(2,EMPTY_VALUE);
SetIndexArrow(2,159);
SetIndexStyle(3,DRAW_ARROW);
SetIndexBuffer(3,loK);
SetIndexEmptyValue(3,EMPTY_VALUE);
SetIndexArrow(3,159);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("MTF_BB-Sqeeze "+TimeFrameStr);
}
return(0);
int start()
{
datetime TimeArray[];
int i,limit,y=0,counted_bars=IndicatorCounted();
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit=History;
for(i=0,y=0;i<limit;i++)
{
if (Time[i]<TimeArray[y]) y++;
upB[i]=iCustom(NULL,TimeFrame,"bbsqueeze",bolPrd,bolDev,keltPrd,keltFactor,momPrd,0,y);
loB[i]=iCustom(NULL,TimeFrame,"bbsqueeze",bolPrd,bolDev,keltPrd,keltFactor,momPrd,1,y);
upK[i]=iCustom(NULL,TimeFrame,"bbsqueeze",bolPrd,bolDev,keltPrd,keltFactor,momPrd,2,y);
loK[i]=iCustom(NULL,TimeFrame,"bbsqueeze",bolPrd,bolDev,keltPrd,keltFactor,momPrd,3,y);
}
return(0);
}