#property copyright ""
#property link      ""

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 LimeGreen
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_color4 DarkGray
#property indicator_style4 STYLE_DOT

extern string USD_Index_Symbol       = "I.USDX";
extern int    BandPeriod             = 20;
extern double BandDeviation          = 2;
extern bool   Invert                 = false;

double DATABuf[],UpZone[],DnZone[],Ma[];

//+------------------------------------------------------------------+
int init()
{
   IndicatorBuffers(4);
   SetIndexBuffer(0,DATABuf);
   SetIndexStyle(0,DRAW_LINE);  
   SetIndexBuffer(1,UpZone);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(2,DnZone);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(3,Ma);
   SetIndexStyle(3,DRAW_LINE); 
       
   IndicatorShortName("DXY_BB");
   return(0);
}
int deinit()
{
   return(0);
}

//+------------------------------------------------------------------+
int start()
{
   int i;
   int counted_bars=IndicatorCounted();
    if(counted_bars<0) return(-1);
    if(counted_bars>0) counted_bars--;
   int limit=MathMin(Bars-counted_bars,Bars-1);
           
   for(i=0; i<limit; i++) 
    {
    DATABuf[i] = iClose(USD_Index_Symbol,_Period,i);
    if(Invert)
    DATABuf[i] = -DATABuf[i]; 
    }
   for(i=0; i<limit; i++) 
    {
    Ma[i]     = iBands(USD_Index_Symbol,_Period,BandPeriod,BandDeviation,0,PRICE_CLOSE,MODE_MAIN,i); 
    UpZone[i] = iBands(USD_Index_Symbol,_Period,BandPeriod,BandDeviation,0,PRICE_CLOSE,MODE_UPPER,i); 
    DnZone[i] = iBands(USD_Index_Symbol,_Period,BandPeriod,BandDeviation,0,PRICE_CLOSE,MODE_LOWER,i); 
    if(Invert)
     {
     Ma[i]=-Ma[i];
     UpZone[i]=-UpZone[i];
     DnZone[i]=-DnZone[i];
     }
    }       
   return(0);
}
//+------------------------------------------------------------------+
