CCI_Cross0_x3WarnSigAlertEli_MTF

Author: Copyright � 2006, Eli Hayun
CCI_Cross0_x3WarnSigAlertEli_MTF
Price Data Components
Series array that contains the highest prices of each barSeries array that contains open time of each bar
Indicators Used
Indicator of the average true rangeCommodity channel index
Miscellaneous
Implements a curve of type %1It plays sound alerts
0 Views
0 Downloads
0 Favorites
CCI_Cross0_x3WarnSigAlertEli_MTF
//+------------------------------------------------------------------+
//|                                                    CCI_Cross.mq4 |
//|                                      Copyright © 2006, Eli Hayun |
//|                                          http://www.elihayun.com |
//|                                       Built for ValeoFX          |
//+------------------------------------------------------------------+
//mod2008fxtsd    ki
#property copyright "Copyright © 2006, Eli Hayun"
#property link      "http://www.elihayun.com"

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 BlueViolet//28-CCi
#property indicator_color2 BlueViolet
#property indicator_color3 Red//15-CCi
#property indicator_color4 Red
#property indicator_color5 Blue//5-CCi
#property indicator_color6 Blue
#property indicator_color7 Yellow
#property indicator_color8 Goldenrod



#property indicator_width1 4
#property indicator_width2 4
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 1
#property indicator_width6 1
#property indicator_width7 0
#property indicator_width8 1

//---- input parameters

extern int       FastCCIperiod=5;
extern int       FastCCIprice=5;
extern bool FastCCI_on  =true;
extern int       SlowCCIperiod=15;
extern int       SlowCCIprice=5;
extern bool SlowCCI_on  =true;
extern int       VerySlowCCIperiod=28;
extern int       VerySlowCCIprice=5;
extern bool VerySlowCCI_on =true;

extern bool    AlertsOn  =true;
extern string  AlertSoundFile="wait.wav";

extern double  SignalGap =0.8;
extern int     TimeFrame =0;


extern string   note_Price = "0C 1O 2H 3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN;0 currentTF";

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   TimeFrame= MathMax(TimeFrame,Period());

   if (FastCCI_on)
   {
   SetIndexStyle(5,DRAW_ARROW);
   SetIndexArrow(5,225);//217 233
   SetIndexBuffer(5,ExtMapBuffer1);
   SetIndexEmptyValue(5,0.0);

   SetIndexStyle(4,DRAW_ARROW);  
   SetIndexArrow(4,226);//218 234
   SetIndexBuffer(4,ExtMapBuffer2);
   SetIndexEmptyValue(4,0.0);

   SetIndexLabel(5,"CCI ("+FastCCIperiod+") M"+TimeFrame+" cross0 UP");
   SetIndexLabel(4,"CCI ("+FastCCIperiod+") M"+TimeFrame+" cross0 DN");
   }
   

   if (SlowCCI_on)
   {   
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,233);
   SetIndexBuffer(3,ExtMapBuffer3);
   SetIndexEmptyValue(3,0.0);

   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,234);
   SetIndexBuffer(2,ExtMapBuffer4);
   SetIndexEmptyValue(2,0.0);

   SetIndexLabel(3,"CCI ("+SlowCCIperiod+") M"+TimeFrame+" cross0 UP");
   SetIndexLabel(2,"CCI ("+SlowCCIperiod+") M"+TimeFrame+" cross0 DN");
   }
   

   if (VerySlowCCI_on)
   {      
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,241);
   SetIndexShift(1,-TimeFrame/Period());
   SetIndexBuffer(1,ExtMapBuffer5);
   SetIndexEmptyValue(1,0.0);

   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,242);
   SetIndexShift(0,-TimeFrame/Period());
   SetIndexBuffer(0,ExtMapBuffer6);
   SetIndexEmptyValue(0,0.0);

   SetIndexLabel(1,"CCI ("+VerySlowCCIperiod+") M"+TimeFrame+" cross0 UP");
   SetIndexLabel(0,"CCI ("+VerySlowCCIperiod+") M"+TimeFrame+" cross0 DN");
   }


   SetIndexStyle(6,DRAW_ARROW);
   SetIndexArrow(6,226);//167158159178115
   SetIndexBuffer(6,ExtMapBuffer7);
   SetIndexEmptyValue(6,0.0);
   SetIndexLabel(6,"CCI("+FastCCIperiod+")0cross WarningSignal");
//
   SetIndexStyle(7,DRAW_ARROW);
   SetIndexArrow(7,234);//167159178170167
   SetIndexBuffer(7,ExtMapBuffer8);
   SetIndexEmptyValue(7,0.0);
   SetIndexLabel(7,"CCI("+SlowCCIperiod+")0cross WarningSignal");



   IndicatorShortName("CCI x3 Cross0 ["+TimeFrame+"]");  


   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
   int    shift,y=0,limit,counted_bars=IndicatorCounted();
   
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;

   datetime TimeArray[];
   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); 

   limit = Bars-counted_bars;
   limit = MathMax (limit,TimeFrame/Period());
   
   for(shift=0,y=0;shift<limit;shift++)
   {
   if (Time[shift]<TimeArray[y]) y++; 

 double high  = iHigh(NULL, TimeFrame, y);
 double high1 = iHigh(NULL, TimeFrame, y+1);

 double low   = iLow (NULL, TimeFrame, y);
 double low1  = iLow (NULL, TimeFrame, y+1);

 double signalgap = MathCeil(iATR(NULL,TimeFrame,10,y)/Point)*SignalGap;   
 
 
 
   if (FastCCI_on)
      {
      
      ExtMapBuffer1[shift] = 0.0; ExtMapBuffer2[shift] = 0.0; ExtMapBuffer7[shift] = 0.0;

      double fCCI_0 = iCCI(NULL, TimeFrame, FastCCIperiod, FastCCIprice, y);
      double fCCI_1 = iCCI(NULL, TimeFrame, FastCCIperiod, FastCCIprice, y+1);
 //   double fCCI_2 = iCCI(NULL, 0, FastCCI, PRICE_TYPICAL, shift+2);
     
      if (fCCI_0 > 0 && fCCI_1<0 ){
         ExtMapBuffer1[shift] = low  - signalgap * Point; 
         ExtMapBuffer7[0]=ExtMapBuffer1[0];    SetIndexArrow(6,225);ExtMapBuffer7[1]=0.0;}

      if (fCCI_0 < 0 && fCCI_1>0 ){
         ExtMapBuffer2[shift] = high + signalgap *  Point;
         ExtMapBuffer7[0]=ExtMapBuffer2[0];   SetIndexArrow(6,226); }

      }

   if (SlowCCI_on)
      {
      ExtMapBuffer3[shift] = 0.0; ExtMapBuffer4[shift] = 0.0;  ExtMapBuffer8[shift] = 0.0;
         
      double sCCI_0 = iCCI(NULL, TimeFrame, SlowCCIperiod, SlowCCIprice, y);
      double sCCI_1 = iCCI(NULL, TimeFrame, SlowCCIperiod, SlowCCIprice, y+1);
//    double sCCI_2 = iCCI(NULL, TimeFrame, SlowCCIperiod, SlowCCIprice, y+2);
      
      if (sCCI_0>0 && sCCI_1 < 0 ){
         ExtMapBuffer3[shift] = low  - 1.2 *signalgap * Point;  
         ExtMapBuffer8[0]= ExtMapBuffer3[0];SetIndexArrow(7,233);}
      
      if (sCCI_0<0 && sCCI_1 > 0 ){
         ExtMapBuffer4[shift]= high + 1.2 *signalgap * Point; 
         ExtMapBuffer8[0]=  ExtMapBuffer4[0];   SetIndexArrow(7,234);}
     
      }
      
   if (VerySlowCCI_on)
      {         
      ExtMapBuffer5[shift] = 0.0; ExtMapBuffer6[shift] = 0.0;

//    double vsCCI_0 = iCCI(NULL,TimeFrame, VerySlowCCIperiod, PRICE_OPEN, y);
      double vsCCI_1 = iCCI(NULL,TimeFrame, VerySlowCCIperiod, VerySlowCCIprice, y+1);
      double vsCCI_2 = iCCI(NULL,TimeFrame, VerySlowCCIperiod, VerySlowCCIprice, y+2);
      
      if (vsCCI_1>0 && vsCCI_2<0)
      ExtMapBuffer5[shift] = low1 - 1.5*signalgap * Point; 

      if (vsCCI_1<0&& vsCCI_2>0)
      ExtMapBuffer6[shift] = high1 + 1.5*signalgap * Point; 
      }
  
  
   }

   string sComment = "";
   
 if(AlertsOn) 
   {
   if (FastCCI_on)
      {
   if (ExtMapBuffer1[0] != 0)
      sComment = sComment + " CCI ("+FastCCIperiod+") M"+TimeFrame+" UP ";
      
   if (ExtMapBuffer2[0] != 0)
      sComment = sComment + " CCI ("+FastCCIperiod+") M"+TimeFrame+" Down ";
      }

   if (SlowCCI_on)
      {
   if (ExtMapBuffer3[0] != 0)
      sComment = sComment + " CCI ("+SlowCCIperiod+") M"+TimeFrame+" UP ";
      
   if (ExtMapBuffer4[0] != 0)
      sComment = sComment + " CCI ("+SlowCCIperiod+") M"+TimeFrame+" Down ";
      }
      
   if (VerySlowCCI_on) 
      {     
   if (ExtMapBuffer5[0] != 0)
      sComment = sComment + " CCI3 ("+VerySlowCCIperiod+") M"+TimeFrame+" UP ";
      
   if (ExtMapBuffer6[0] != 0)
      sComment = sComment + " CCI3 ("+VerySlowCCIperiod+") M"+TimeFrame+"] Down ";
      }
   }
 

   if ((sComment != "") && (!IsTesting()))
   {
      if (NewBar())
      {
         PlaySound(AlertSoundFile);//"expert.wav"wait.wav;
         Print(Symbol(), " ", sComment);
      }
      Comment(TimeToStr(CurTime()), " ", sComment);
   }
   if ((sComment == "") && (!IsTesting()))
   {
      Comment("");
   }

   return(0);
}
//+------------------------------------------------------------------+

bool NewBar()
{
   static datetime dt = 0;
   if (dt != Time[0])
   {
      dt = Time[0];
      return(true);
   }
   return(false);
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---