//------------------------------------------------------------------ #property copyright "www.forex-tsd.com" #property link "www.forex-tsd.com" //------------------------------------------------------------------ #property indicator_separate_window #property indicator_buffers 8 #property indicator_plots 1 #property indicator_label1 "Clear" #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 clrDeepSkyBlue,clrSandyBrown #property indicator_width1 2 #property indicator_minimum 0 #property indicator_maximum 1 // // // // // double clear[]; double clearhi[]; double colorBuffer[]; double prevhihi[]; double prevhilo[]; double prevlolo[]; double prevlohi[]; double swing[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // int OnInit() { SetIndexBuffer(0,clearhi,INDICATOR_DATA); SetIndexBuffer(1,colorBuffer,INDICATOR_COLOR_INDEX); SetIndexBuffer(2,clear,INDICATOR_DATA); SetIndexBuffer(3,prevhihi,INDICATOR_CALCULATIONS); SetIndexBuffer(4,prevhilo,INDICATOR_CALCULATIONS); SetIndexBuffer(5,prevlolo,INDICATOR_CALCULATIONS); SetIndexBuffer(6,prevlohi,INDICATOR_CALCULATIONS); SetIndexBuffer(7,swing,INDICATOR_CALCULATIONS); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // #define isUpSwing swing[i]==1 int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { for (int i=(int)MathMax(prev_calculated-1,0); i prevlohi[i]) { swing[i] = 1; prevhihi[i] = high[i]; prevhilo[i] = low[i]; } } // // // // // clearhi[i] = 1; if (isUpSwing) { clear[i] = prevhilo[i]; colorBuffer[i] = 0; } else { clear[i] = prevlohi[i]; colorBuffer[i] = 1; } } return(rates_total); }