//+------------------------------------------------------------------+ //| Ind-SKB-1.mq4 | //| Copyright © 2005, Kara Software Corp. | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Kara Software Corp." #property link "" //---- #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Red #property indicator_color2 Green #property indicator_color3 Blue #property indicator_color4 Blue #property indicator_color5 FireBrick #property indicator_color6 FireBrick //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtMapBuffer3); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,ExtMapBuffer4); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,217); SetIndexBuffer(4,ExtMapBuffer5); SetIndexEmptyValue(4,0.0); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,218); SetIndexBuffer(5,ExtMapBuffer6); SetIndexEmptyValue(5,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double FU,FL; int CCU1,CCU2,CCL1,CCL2,shift,i,j; //---- CCU1=0;CCU2=0;CCL1=0;CCL2=0; for(shift=Bars-100;shift>=0;shift--) { FU=0;FL=0; FU=iFractals(NULL,0,MODE_UPPER,shift+3); FL=iFractals(NULL,0,MODE_LOWER,shift+3); if(FU>0) { i=shift+3+1; while(iFractals(NULL,0,MODE_UPPER,i)==0)i++; for(j=shift+3;j<=i;j++) { if(iFractals(NULL,0,MODE_LOWER,j)>0) { CCU1=shift+3; CCU2=i; if(CCL1==0)CCL1=j; else if(Low[j]High[shift+3])FU=0; } if(FL>0) { i=shift+3+1; while(iFractals(NULL,0,MODE_LOWER,i)==0)i++; for(j=shift+3;j<=i;j++) { if(iFractals(NULL,0,MODE_UPPER,j)>0) { if(CCU1==0)CCU1=j; else if(High[j]>High[CCU1])CCU1=j; CCU2=0; CCL1=shift+3; CCL2=i; } } } if(CCU1>0 && CCU2>0) { if(High[CCU1]>High[CCU2]) { ExtMapBuffer1[shift]=High[CCU1]+(High[CCU1]-High[CCU2])/(CCU2-CCU1)*(CCU1-shift); ExtMapBuffer2[shift]=Low[CCL1]+(High[CCU1]-High[CCU2])/(CCU2-CCU1)*(CCL1-shift); } if(High[CCU1]0 && CCL2>0) { if(Low[CCL1]Low[CCL2]) { ExtMapBuffer1[shift]=High[CCU1]+(Low[CCL1]-Low[CCL2])/(CCL2-CCL1)*(CCU1-shift); ExtMapBuffer2[shift]=Low[CCL1]+(Low[CCL1]-Low[CCL2])/(CCL2-CCL1)*(CCL1-shift); } } } return(0); } //+------------------------------------------------------------------+