Cronex Taichi Bars





//+------------------------------------------------------------------+
//|                                           Cronex Taichi Bars.mq4 |
//|                                           Adapted by CJA         |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                Cronex Taichi.mq4 |
//|                                        Copyright © 2007, Cronex. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2007, Cronex"
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 7

#property  indicator_color5  DarkGreen
#property  indicator_color6  Maroon
#property  indicator_color7  DarkGoldenrod
#property  indicator_width5  2
#property  indicator_width6  2
#property  indicator_width7  2


//---- indicator parameters

extern int Tenkan=9;
extern int Kijun=26;
extern int Senkou=52;
extern int FlatSE=7;

extern bool   AlertON = false;
extern bool   SoundON = false;
extern string SoundFile_UP = "Alert";
extern string SoundFile_DN = "Alert2"; 

//---- indicator buffers
double     TaichiBuffer[];
double     TaichiForBuffer[];//
double     SignalBuffer[];
double     SSignalBuffer[];
double UpBuffer[];
double DnBuffer[];
double EqBuffer[];
double trend2;
int  TimeFrame;
string TF;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
  

//   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(Digits+1);
//---- indicator buffers mapping
   SetIndexBuffer(0,TaichiBuffer);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexBuffer(2,SSignalBuffer);   
   SetIndexBuffer(3,TaichiForBuffer);
   
   SetIndexShift(3,Kijun);
//   SetIndexDrawBegin(3,Kijun);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Cronex Taichi Bars");
   SetIndexLabel(0,"");
   SetIndexLabel(1,"");
   SetIndexLabel(2,"");
   SetIndexLabel(3,"");
   
   SetIndexStyle(4,DRAW_HISTOGRAM);
   SetIndexStyle(5,DRAW_HISTOGRAM);
   SetIndexStyle(6,DRAW_HISTOGRAM);
  
   SetIndexBuffer(4,UpBuffer);
   SetIndexBuffer(5,DnBuffer);
   SetIndexBuffer(6,EqBuffer);
   
   SetIndexLabel(4,"");
   SetIndexLabel(5,"");
   SetIndexLabel(6,"");
   
    	switch(TimeFrame)
	{
		case 1:		TF=" M1";  break;
		case 5:		TF=" M5";  break;
		case 15:		TF=" M15"; break;
		case 30:		TF=" M30"; break;
		case 60:		TF=" H1";  break;
		case 240:	TF=" H4";  break;
		case 1440:	TF=" D1";  break;
		case 10080:	TF=" W1";  break;
		case 43200:	TF=" MN1"; break;
		default:	  {TimeFrame = Period(); init(); return(0);}
	}
   
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Cronex Taichi                                                    |
//+------------------------------------------------------------------+
int start()
  {
  
   double TenkanSen,KijunSen,SenkouSpanA,SenkouSpanB,ChinkouSpan;
  
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=-Kijun; i<limit; i++)
      {
      TenkanSen   = iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_TENKANSEN,i);
      KijunSen    = iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,i);
      SenkouSpanA = iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,i);
      SenkouSpanB = iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,i);
      ChinkouSpan = iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_CHINKOUSPAN,i);      
      if (i>=0)
       {
        TaichiBuffer[i]=(TenkanSen+KijunSen+SenkouSpanA+SenkouSpanB)/4;
        TaichiForBuffer[i+Kijun]=(SenkouSpanA+SenkouSpanB)/2;
       }
      else TaichiForBuffer[i+Kijun]=(SenkouSpanA+SenkouSpanB)/2;
      }
//========================== signal line counted ================
   for(i=0; i<limit; i++)
    {
     SignalBuffer[i]=iMAOnArray(TaichiBuffer,Bars,Kijun,0,MODE_LWMA,i);
     SSignalBuffer[i]=iMAOnArray(TaichiBuffer,Bars,Senkou,0,MODE_LWMA,i);   
     
//========================== Flat line counted ================
   if(MathAbs(((TaichiBuffer[i]-SignalBuffer[i])+(TaichiBuffer[i]- SSignalBuffer[i])+(SignalBuffer[i]-SSignalBuffer[i]))/3)<FlatSE*Point)
    {
      
    }
    
    if((TaichiBuffer[i]>SignalBuffer[i])&&(SignalBuffer[i]>TaichiForBuffer[i+Kijun])){trend2=1;}
    else if((TaichiBuffer[i]<SignalBuffer[i])&&(SignalBuffer[i]<TaichiForBuffer[i+Kijun])){trend2=-1;}
    else {trend2=2;}
    
     if (trend2==1)
	  {
	  
	  UpBuffer[i]=1;
	  EqBuffer[i]=0;
	  DnBuffer[i]=0;
	  
	  
	  }
	  if (trend2==2) 
	  {
	  
	  UpBuffer[i]=0;
	  EqBuffer[i]=1;
	  DnBuffer[i]=0;
	  
	  }
	  if (trend2==-1) 
	  {
	    
	  UpBuffer[i]=0;
	  EqBuffer[i]=0;
	  DnBuffer[i]=1;
	 
	  }}
	   double Price = iMA(NULL,PERIOD_M1,1,0,MODE_SMA,PRICE_CLOSE,0);
	  static datetime timeprev;

     if(timeprev==Time[0]) {
     return(0); 
     } else if (timeprev==0) {
     timeprev=Time[0]; 
     return(0);
     } else {
     timeprev=Time[0];
  
   
	  if (trend2==1)
	  if(AlertON){Alert(Symbol()+""+TF+" : Taichi Bars X UP @ "+DoubleToStr(Price,Digits));}
     if (SoundON) PlaySound (SoundFile_UP);
     if (trend2==-1)
     if(AlertON){Alert(Symbol()+""+TF+" : Taichi Bars X DOWN @ "+DoubleToStr(Price,Digits));}       
     if (SoundON) PlaySound (SoundFile_DN);
	  }
	  
    
//---- done

   return(0);
  }

  
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_NONE

Implements a curve of type DRAW_HISTOGRAM

Indicators Used:

Ichimoku Kinko Hyo
Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen