//+------------------------------------------------------------------+ //| CCI_Cross.mq4 | //| Copyright © 2006, Eli Hayun | //| http://www.elihayun.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Eli Hayun" #property link "http://www.elihayun.com" #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Red// Kleurloos #property indicator_color2 DodgerBlue//Kleurloos #property indicator_color3 Red//DodgerBlue #property indicator_color4 Red #property indicator_color5 DodgerBlue//Kleurloos #property indicator_color6 Red//Kleurloos //---- input parameters extern int FastCCI=25; extern int SlowCCI=50; extern int VerySlowCCI=50; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID, 2); SetIndexArrow(0,217); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID, 2); SetIndexArrow(1,218); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID, 2); SetIndexArrow(2,233); SetIndexBuffer(2,ExtMapBuffer3); SetIndexEmptyValue(2,0.0); SetIndexStyle(3,DRAW_NONE); SetIndexArrow(3,234); SetIndexBuffer(3,ExtMapBuffer4); SetIndexEmptyValue(3,0.0); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,241); SetIndexBuffer(4,ExtMapBuffer5); SetIndexEmptyValue(4,0.0); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,242); SetIndexBuffer(5,ExtMapBuffer6); SetIndexEmptyValue(5,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int shift; for(shift=Bars-1;shift>=0;shift--) { ExtMapBuffer1[shift] = 0; ExtMapBuffer2[shift] = 0; ExtMapBuffer3[shift] = 0; ExtMapBuffer4[shift] = 0; ExtMapBuffer5[shift] = 0; ExtMapBuffer6[shift] = 0; double fCCI_0 = iCCI(NULL, 0, FastCCI, PRICE_TYPICAL, shift); double fCCI_1 = iCCI(NULL, 0, FastCCI, PRICE_TYPICAL, shift+1); double fCCI_2 = iCCI(NULL, 0, FastCCI, PRICE_TYPICAL, shift+2); if (fCCI_0 > 0 && fCCI_1<0 && fCCI_2 < 0) ExtMapBuffer1[shift] = Low[shift] - 3 * Point; if (fCCI_0 < 0 && fCCI_1>0 && fCCI_2 > 0) ExtMapBuffer2[shift] = High[shift] + 3 * Point; double sCCI_0 = iCCI(NULL, 0, SlowCCI, PRICE_TYPICAL, shift); double sCCI_1 = iCCI(NULL, 0, SlowCCI, PRICE_TYPICAL, shift+1); double sCCI_2 = iCCI(NULL, 0, SlowCCI, PRICE_TYPICAL, shift+2); if (sCCI_0 > 0 && sCCI_1<0 && sCCI_2 < 0) ExtMapBuffer3[shift] = Low[shift] - 4 * Point; if (sCCI_0 < 0 && sCCI_1>0 && sCCI_2 > 0) ExtMapBuffer4[shift] = High[shift] + 4 * Point; double vsCCI_0 = iCCI(NULL, 0, VerySlowCCI, PRICE_TYPICAL, shift); double vsCCI_1 = iCCI(NULL, 0, VerySlowCCI, PRICE_TYPICAL, shift+1); double vsCCI_2 = iCCI(NULL, 0, VerySlowCCI, PRICE_TYPICAL, shift+2); if (vsCCI_0 > 0 && vsCCI_1<0 && vsCCI_2 < 0) ExtMapBuffer5[shift] = Low[shift] - 5 * Point; if (vsCCI_0 < 0 && vsCCI_1>0 && vsCCI_2 > 0) ExtMapBuffer6[shift] = High[shift] + 5 * Point; } string sComment = ""; if (ExtMapBuffer1[0] != 0) sComment = sComment + " 1st UP"; if (ExtMapBuffer2[0] != 0) sComment = sComment + " 1st Down"; if (ExtMapBuffer3[0] != 0) sComment = sComment + " 2nd UP"; if (ExtMapBuffer4[0] != 0) sComment = sComment + " 2nd Down"; if (ExtMapBuffer5[0] != 0) sComment = sComment + " 3rd UP"; if (ExtMapBuffer6[0] != 0) sComment = sComment + " 3rd Down"; if ((sComment != "") && (!IsTesting())) { if (NewBar()) { PlaySound("expert.wav"); Print(Symbol(), " ", sComment); } Comment(TimeToStr(CurTime()), " ", sComment); } if ((sComment == "") && (!IsTesting())) { Comment(""); } return(0); } //+------------------------------------------------------------------+ bool NewBar() { static datetime dt = 0; //if (dt == 0) dt = Time[0]; if (dt != Time[0]) { dt = Time[0]; return(true); } return(false); }