//+------------------------------------------------------------------+ //| Ichimoku.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_chart_window #property indicator_buffers 7 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 SandyBrown #property indicator_color4 Thistle #property indicator_color5 Lime #property indicator_color6 SandyBrown #property indicator_color7 Thistle //---- input parameters extern int Tenkan=9; extern int Kijun=26; extern int Senkou=52; //---- buffers double Tenkan_Buffer[]; double Kijun_Buffer[]; double SpanA_Buffer[]; double SpanB_Buffer[]; double Chinkou_Buffer[]; double SpanA2_Buffer[]; double SpanB2_Buffer[]; //---- int a_begin; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,Tenkan_Buffer); SetIndexDrawBegin(0,Tenkan-1); SetIndexLabel(0,"Tenkan Sen"); //---- SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,Kijun_Buffer); SetIndexDrawBegin(1,Kijun-1); SetIndexLabel(1,"Kijun Sen"); //---- a_begin=Kijun; if(a_beginTenkan) i=Bars-counted_bars-1; while(i>=0) { high=High[i]; low=Low[i]; k=i-1+Tenkan; while(k>=i) { price=High[k]; if(highprice) low=price; k--; } Tenkan_Buffer[i]=(high+low)/2; i--; } //---- Kijun Sen i=Bars-Kijun; if(counted_bars>Kijun) i=Bars-counted_bars-1; while(i>=0) { high=High[i]; low=Low[i]; k=i-1+Kijun; while(k>=i) { price=High[k]; if(highprice) low=price; k--; } Kijun_Buffer[i]=(high+low)/2; i--; } //---- Senkou Span A i=Bars-a_begin+1; if(counted_bars>a_begin-1) i=Bars-counted_bars-1; while(i>=0) { price=(Kijun_Buffer[i]+Tenkan_Buffer[i])/2; SpanA_Buffer[i]=price; SpanA2_Buffer[i]=price; i--; } //---- Senkou Span B i=Bars-Senkou; if(counted_bars>Senkou) i=Bars-counted_bars-1; while(i>=0) { high=High[i]; low=Low[i]; k=i-1+Senkou; while(k>=i) { price=High[k]; if(highprice) low=price; k--; } price=(high+low)/2; SpanB_Buffer[i]=price; SpanB2_Buffer[i]=price; i--; } //---- Chinkou Span i=Bars-1; if(counted_bars>1) i=Bars-counted_bars-1; while(i>=0) { Chinkou_Buffer[i]=Close[i]; i--; } //---- //----ALERTS //---- TS cross KS if (Tenkan_Buffer[0] > Kijun_Buffer[0] && Tenkan_Buffer[-1] < Kijun_Buffer[-1]) { //crossed upwards Alert ("TS crossed KS upwards on+ "+Symbol());} if (Tenkan_Buffer[0] < Kijun_Buffer[0] && Tenkan_Buffer[-1] > Kijun_Buffer[-1]) { //crossed downwards Alert ("TS crossed KS downwards on+ "+Symbol());} //---- Kijun Sen Cross if (Bid > Kijun_Buffer[0] && Close[-1] < Kijun_Buffer[-1]) { //price crossed upwards Alert ("price crossed KS upwards on+ "+Symbol());} if (Bid < Kijun_Buffer[0] && Close[-1] > Kijun_Buffer[-1]) { //crossed downwards Alert ("price crossed KS downwards on+ "+Symbol());} //---- Kumo Breakout or Senkou Span A/B Cross //---- Chinkou Span Cross if (Chinkou_Buffer[0] > Bid && Chinkou_Buffer[-1] < Close[-1]) { //chinkou crossed the price upwards Alert ("chinkou span crossed KS upwards on+ "+Symbol());} if (Chinkou_Buffer[0] < Bid && Chinkou_Buffer[-1] > Close[-1]) { //chinkou crossed the price downwards Alert ("chinkou span crossed KS downwards on+ "+Symbol());} return(0); } //+------------------------------------------------------------------+