//+--------------------------------------------------------------------------------------+
//                                                                KG Weekly BS Bands      |
//                                                              Copyright © KG 2009      |
//+--------------------------------------------------------------------------------------+
/*
Catatan Program.
v1.
- telah dibuat kumo untuk mengetahui area potensial OP
- urutan dibetulkan untuk buffer, agar fungsi background tidak menumpuk
*/

#property copyright "© KG 2009"                                    
#property link      "http://www.freedom.com"
//----
#property indicator_chart_window
#property indicator_buffers 8

extern bool ShowPivot = true;
extern bool ShowBBSB  = true;
extern bool ShowHiLo  = false;
extern bool ShowLSMA  = true;

double UpperBufHi[];
double UpperBuf[];
double MiddleBuf[];
double LowerBuf[];
double LowerBufLo[];
double LSMA24H[];
double AreaBuy[];
double AreaSell[];

int    Periode;
int    Price_Type=0;

void init()
{       
   int ActivePer=Period();
   Periode=7200/ActivePer;
   color Col = Magenta;
  
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 5, Plum);
   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 5, Plum);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, NULL, Col);
   SetIndexStyle(3, DRAW_LINE, STYLE_DASHDOTDOT, NULL, Col);
   SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 2, Col);
   SetIndexStyle(5, DRAW_LINE, STYLE_DASHDOTDOT, NULL, Col);
   SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, NULL, Col);
   SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 2, Col);   
//----   
   SetIndexDrawBegin(0, Periode);
   SetIndexDrawBegin(1, Periode); 
   SetIndexDrawBegin(2, Periode);
   SetIndexDrawBegin(3, Periode);
   SetIndexDrawBegin(4, Periode);
   SetIndexDrawBegin(5, Periode);
   SetIndexDrawBegin(6, Periode);
   SetIndexDrawBegin(7, Periode);        
//----
   SetIndexBuffer(0, AreaBuy);
   SetIndexBuffer(1, AreaSell);
   SetIndexBuffer(2, UpperBufHi);
   SetIndexBuffer(3, UpperBuf);
   SetIndexBuffer(4, MiddleBuf);
   SetIndexBuffer(5, LowerBuf);
   SetIndexBuffer(6, LowerBufLo);
   SetIndexBuffer(7, LSMA24H);   
//----
   SetIndexLabel(0,"Buy Area");
   SetIndexLabel(1,"Sell Area");
   SetIndexLabel(2,"Weekly Buyer Hi");
   SetIndexLabel(3,"Weekly Buyer");
   SetIndexLabel(4,"Weekly BSB");
   SetIndexLabel(5,"Weekly Seller");
   SetIndexLabel(6,"Weekly Seller Lo");
   SetIndexLabel(7,"Weekly LSMA");   
}


void start() 
  {
   int counted = IndicatorCounted();
//----
   if(counted < 0) 
       return (-1);
//----  
   if(counted > 0) 
       counted--;
   int limit = Bars - counted;
//----  
   for(int i = 0; i < limit; i++) {
      // ----------- Weekly BS Band -------------------  //
      UpperBufHi[i] = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, Periode, i));
      LowerBufLo[i] = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, Periode, i));                          
      MiddleBuf[i]  = (UpperBufHi[i]+LowerBufLo[i])/2;         
      UpperBuf[i]   = (UpperBufHi[i]+MiddleBuf[i])/2;
      LowerBuf[i]   = (LowerBufLo[i]+MiddleBuf[i])/2;
      LSMA24H[i]    =3*iMA(Symbol(),0,Periode  ,0,MODE_LWMA,Price_Type,i)-2*iMA(Symbol(),0,Periode  ,0,MODE_SMA,Price_Type,i);
      
      // ------- Pembentukan Kumo Area --------------- //
      AreaBuy[i]    = 0;
      AreaSell[i]   = 0;
      // ------- Rule untuk Sell ( Area Sell > Area Buy ) -------------------//
      if(Close[i]<UpperBuf[i] && Close[i]>MiddleBuf[i]) {
         AreaSell[i] = UpperBuf[i];
         AreaBuy[i]  = MiddleBuf[i];
      }
      
      // ------- Rule untuk Buy ( Area Buy > Area Sell ) -------------------//
      if(Close[i]>LowerBuf[i] && Close[i]<MiddleBuf[i]) {
         AreaSell[i] = LowerBuf[i];
         AreaBuy[i]  = MiddleBuf[i];
      }
            
      // ---------- Display Setting ------------- //
      if(!ShowPivot) {
         MiddleBuf[i] = 0;
      }   
      if(!ShowBBSB) {
         UpperBuf[i] = 0;
         LowerBuf[i] = 0;
      }
      if(!ShowHiLo) {
         UpperBufHi[i] = 0;
         LowerBufLo[i] = 0;
      }
      if(!ShowLSMA) {
         LSMA24H[i] = 0;
         AreaBuy[i]    = 0;
         AreaSell[i]   = 0;
      }
   }      
//----    
}

