//+------------------------------------------------------------------+ //| bbsqueeze.mq4 | //| Copyright © 2005, Nick Bilak, beluck[AT]gmail.com | //| enhanced a little bit by CJ Rivas, carlos[AT]vealo.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Nick Bilak" #property link "http://metatrader.50webs.com/" #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_color3 DarkBlue #property indicator_color4 Maroon #property indicator_color5 Red #property indicator_color6 Lime //---- input parameters extern int bolPrd=20; extern double bolDev=2.0; extern int keltPrd=20; extern double keltFactor=1.5; extern int momPrd=12; //---- buffers double upB[]; double upB2[]; double loB[]; double loB2[]; double upK[]; double loK[]; int i,j,slippage=3; double breakpoint=0.0; double ema=0.0; int peakf=0; int peaks=0; int valleyf=0; int valleys=0; double ccis[61],ccif[61]; double delta=0; double ugol=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,3); SetIndexBuffer(0,upB); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,3); SetIndexBuffer(1,loB); SetIndexEmptyValue(1,EMPTY_VALUE); SetIndexStyle(4,DRAW_ARROW,EMPTY,2); SetIndexBuffer(4,upK); SetIndexEmptyValue(4,EMPTY_VALUE); SetIndexArrow(4,159); SetIndexStyle(5,DRAW_ARROW,EMPTY,2); SetIndexBuffer(5,loK); SetIndexEmptyValue(5,EMPTY_VALUE); SetIndexArrow(5,159); SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,3); SetIndexEmptyValue(2,EMPTY_VALUE); SetIndexBuffer(2,upB2); SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,3); SetIndexEmptyValue(3,EMPTY_VALUE); SetIndexBuffer(3,loB2); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int shift; double diff,d,dPrev,std,bbs; int counted_bars=IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; if(counted_bars==0) limit-=1+2*bolPrd; for(shift=limit;shift>=0;shift--) { //d=iMomentum(NULL,0,momPrd,PRICE_CLOSE,shift); d=LinearRegressionValue(bolPrd,shift); dPrev=LinearRegressionValue(bolPrd,shift+1); if(d>0) { if((dPrev>0) && (dPrev>d)){ upB2[shift]=d; upB[shift]=0; } else { upB[shift]=d; upB2[shift]=0; } //upB[shift]=0; loB[shift]=0; loB2[shift]=0; } else { if((dPrev<0) && (dPrev