//+------------------------------------------------------------------+ //| Ichimoku_All_Signals_V-2.0.mq4 | //| Copyright 2017 | //| email:Chris.Wang.2006@hotmail.com | //| wx: chriswang3744 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //|Feature Description: | //| * | //| * | //+------------------------------------------------------------------+ #property copyright "Copyright 2017" #property link "Chris.Wang.2006@hotmail.com" #property description "Ichimoku_Signal_V2" //--- indicator settings #property indicator_chart_window #property indicator_buffers 22 #property indicator_color1 Red #property indicator_color2 DodgerBlue #property indicator_color3 Red #property indicator_color4 DodgerBlue #property indicator_color5 Red #property indicator_color6 DodgerBlue #property indicator_color7 Red #property indicator_color8 DodgerBlue #property indicator_color9 Red #property indicator_color10 DodgerBlue #property indicator_color11 Red #property indicator_color12 DodgerBlue #property indicator_color13 Red #property indicator_color14 DodgerBlue #property indicator_color15 Red #property indicator_color16 DodgerBlue #property indicator_color17 Red #property indicator_color18 DodgerBlue #property indicator_color19 Red #property indicator_color20 DodgerBlue #property indicator_color21 Red #property indicator_color22 DodgerBlue #property indicator_style1 STYLE_SOLID #property indicator_style2 STYLE_SOLID #property indicator_style3 STYLE_SOLID #property indicator_style4 STYLE_SOLID #property indicator_style5 STYLE_SOLID #property indicator_style6 STYLE_SOLID #property indicator_style5 STYLE_SOLID #property indicator_style6 STYLE_SOLID #property indicator_style7 STYLE_SOLID #property indicator_style8 STYLE_SOLID #property indicator_style9 STYLE_SOLID #property indicator_style10 STYLE_SOLID #property indicator_style11 STYLE_SOLID #property indicator_style12 STYLE_SOLID #property indicator_style13 STYLE_SOLID #property indicator_style14 STYLE_SOLID #property indicator_style15 STYLE_SOLID #property indicator_style16 STYLE_SOLID #property indicator_style15 STYLE_SOLID #property indicator_style16 STYLE_SOLID #property indicator_style17 STYLE_SOLID #property indicator_style18 STYLE_SOLID #property indicator_style19 STYLE_SOLID #property indicator_style20 STYLE_SOLID #property indicator_style21 STYLE_SOLID #property indicator_style22 STYLE_SOLID //--- input parameter //--- buffers Chikou Span double CPUPBuffer[]; // Chikou Span, Price Buy double CPDNBuffer[]; // Chikou Span, Price Sell double CTUPBuffer[]; // Chikou Span, Tenkan Sen Buy double CTDNBuffer[]; // Chikou Span, Tenkan Sen Sell double CKUPBuffer[]; // Chikou Span, Kijun Sen Buy double CKDNBuffer[]; // Chikou Span, Kijun Sen Sell double CCUPBuffer[]; // Chikou Span, Cloud Buy double CCDNBuffer[]; // Chikou Span, Cloud Sell //--- buffers Price double PTUPBuffer[]; // Price,Tenkan Sen Buy double PTDNBuffer[]; // Price,Tenkan Sen Sell double PKUPBuffer[]; // Price,Kijun Sen Buy double PKDNBuffer[]; // Price,Kijun Sen Sell double PCUPBuffer[]; // Price,Cloud Buy double PCDNBuffer[]; // Price,Cloud Sell //--- buffers Tenkan Sen double TKUPBuffer[]; //Tenkan,Kijun Buy double TKDNBuffer[]; //Tenkan,Kijun Sell double TCUPBuffer[]; //Tenkan,Cloud Buy double TCDNBuffer[]; //Tenkan,Cloud Sell //--- buffers Kijun Sen double KCUPBuffer[]; //Kijun,Cloud Buy double KCDNBuffer[]; //Kijun,Cloud Sell //--- buffers Senkou Span A double SSABUPBuffer[]; // Senkou Span A,B Buy double SSABDNBuffer[]; // Senkou Span A,B Sell //--- buffers Confirmation double CPCBuffer[]; // Price/Kumo Confirmation: UP=1,MD=0,DN=-1, double PKCBuffer[]; // Price/Kumo Confirmation: UP=1,MD=0,DN=-1, extern int Signal_Filter_Level=3; // Weak=1,Neutral=2,Srong=3 extern int Tenkan=9; // Tenkan-sen extern int Kijun=26; // Kijun-sen extern int Senkou=52; // Senkou Span extern bool ShowChikouSpanPriceCross_0 = true; extern bool ShowChikouSpanTenkanSenCross_1 = true; extern bool ShowChikouSpanKijunSenCross_2 = true; extern bool ShowChikouSpanCloudCross_3 = true; extern bool ShowPriceTenkanSenCross_4 = true; extern bool ShowPriceKijunSenCross_5 = true; extern bool ShowPriceCloudCross_6 = true; extern bool ShowTenkanSenKijunSenCross_7 = true; extern bool ShowTenkanSenCloudCross_8 = true; extern bool ShowKijunSenCloudCross_9 = true; extern bool ShowSenkouSpanABCross_10 = true; extern bool EnableChikouSpanPriceConfirmation = true; extern bool EnablePriceKumoConfirmation = true; extern bool EnableAlert = true; int Signal_Default_Level = 1; datetime pTime; string short_name; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit(void) { //--- name for DataWindow and indicator subwindow label short_name="Price_Action_Ichimoku_Signal_V2 ("+string(Tenkan)+" "+string(Kijun)+" "+string(Senkou)+")"; IndicatorShortName(short_name); //--- 1 additional buffer used for counting. IndicatorBuffers(24); IndicatorDigits(Digits); //--- indicator line //--- Signal 0: SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(0,128); SetIndexBuffer(0,CPUPBuffer); SetIndexLabel(0,"Chikou Span/Price Buy"); SetIndexDrawBegin(0,2); SetIndexEmptyValue(0,0); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(1,128); SetIndexBuffer(1,CPDNBuffer); SetIndexLabel(1,"Chikou Span/Price Sell"); SetIndexDrawBegin(1,2); SetIndexEmptyValue(1,0); if(!ShowChikouSpanPriceCross_0) { SetIndexStyle(0,DRAW_NONE); SetIndexStyle(1,DRAW_NONE); } //--- Signal 1: SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(2,129); SetIndexBuffer(2,CTUPBuffer); SetIndexLabel(2,"Chikou Span/Tenkan Sen Buy"); SetIndexDrawBegin(2,2); SetIndexEmptyValue(2,0); SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(3,129); SetIndexBuffer(3,CTDNBuffer); SetIndexLabel(3,"Chikou Span/Tenkan Sen Sell"); SetIndexDrawBegin(3,2); SetIndexEmptyValue(3,0); if(!ShowChikouSpanTenkanSenCross_1) { SetIndexStyle(2,DRAW_NONE); SetIndexStyle(3,DRAW_NONE); } //--- Signal 2: SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(4,130); SetIndexBuffer(4,CKUPBuffer); SetIndexLabel(4,"Chikou Span/Kijun Sen Buy"); SetIndexDrawBegin(4,2); SetIndexEmptyValue(4,0); SetIndexStyle(5,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(5,130); SetIndexBuffer(5,CKDNBuffer); SetIndexLabel(5,"Chikou Span/Kijun Sen Sell"); SetIndexDrawBegin(5,2); SetIndexEmptyValue(5,0); if(!ShowChikouSpanKijunSenCross_2) { SetIndexStyle(4,DRAW_NONE); SetIndexStyle(5,DRAW_NONE); } //--- Signal 3: SetIndexStyle(6,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(6,131); SetIndexBuffer(6,CCUPBuffer); SetIndexLabel(6,"Chikou Span/Cloud Buy"); SetIndexDrawBegin(6,2); SetIndexEmptyValue(6,0); SetIndexStyle(7,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(7,131); SetIndexBuffer(7,CCDNBuffer); SetIndexLabel(7,"Chikou Span/Cloud Sell"); SetIndexDrawBegin(7,2); SetIndexEmptyValue(7,0); if(!ShowChikouSpanCloudCross_3) { SetIndexStyle(6,DRAW_NONE); SetIndexStyle(7,DRAW_NONE); } //--- Signal 4: SetIndexStyle(8,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(8,132); SetIndexBuffer(8,PTUPBuffer); SetIndexLabel(8,"Price/Tenkan Sen Buy"); SetIndexDrawBegin(8,2); SetIndexEmptyValue(8,0); SetIndexStyle(9,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(9,132); SetIndexBuffer(9,PTDNBuffer); SetIndexLabel(9,"Price/Tenkan Sen Sell"); SetIndexDrawBegin(9,2); SetIndexEmptyValue(9,0); if(!ShowPriceTenkanSenCross_4) { SetIndexStyle(8,DRAW_NONE); SetIndexStyle(9,DRAW_NONE); } //--- Signal 5: SetIndexStyle(10,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(10,133); SetIndexBuffer(10,PKUPBuffer); SetIndexLabel(10,"Price/Kijun Sen Buy"); SetIndexDrawBegin(10,2); SetIndexEmptyValue(10,0); SetIndexStyle(11,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(11,133); SetIndexBuffer(11,PKDNBuffer); SetIndexLabel(11,"Price/Kijun Sen Sell"); SetIndexDrawBegin(11,2); SetIndexEmptyValue(11,0); if(!ShowPriceKijunSenCross_5) { SetIndexStyle(10,DRAW_NONE); SetIndexStyle(11,DRAW_NONE); } //--- Signal 6: SetIndexStyle(12,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(12,134); SetIndexBuffer(12,PCUPBuffer); SetIndexLabel(12,"Price/Cloud Buy"); SetIndexDrawBegin(12,2); SetIndexEmptyValue(12,0); SetIndexStyle(13,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(13,134); SetIndexBuffer(13,PCDNBuffer); SetIndexLabel(13,"Price/Cloud Sell"); SetIndexDrawBegin(13,2); SetIndexEmptyValue(13,0); if(!ShowPriceCloudCross_6) { SetIndexStyle(12,DRAW_NONE); SetIndexStyle(13,DRAW_NONE); } //--- Signal 7: SetIndexStyle(14,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(14,135); SetIndexBuffer(14,TKUPBuffer); SetIndexLabel(14,"Tenkan Sen/Kijun Sen Buy"); SetIndexDrawBegin(14,2); SetIndexEmptyValue(14,0); SetIndexStyle(15,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(15,135); SetIndexBuffer(15,TKDNBuffer); SetIndexLabel(15,"Tenkan Sen/Kijun Sen Sell"); SetIndexDrawBegin(15,2); SetIndexEmptyValue(15,0); if(!ShowTenkanSenKijunSenCross_7) { SetIndexStyle(14,DRAW_NONE); SetIndexStyle(15,DRAW_NONE); } //--- Signal 8: SetIndexStyle(16,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(16,136); SetIndexBuffer(16,TCUPBuffer); SetIndexLabel(16,"Tenkan Sen/Cloud Buy"); SetIndexDrawBegin(16,2); SetIndexEmptyValue(16,0); SetIndexStyle(17,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(17,136); SetIndexBuffer(17,TCDNBuffer); SetIndexLabel(17,"Tenkan Sen/Cloud Sell"); SetIndexDrawBegin(17,2); SetIndexEmptyValue(17,0); if(!ShowTenkanSenCloudCross_8) { SetIndexStyle(16,DRAW_NONE); SetIndexStyle(17,DRAW_NONE); } //--- Signal 9: SetIndexStyle(18,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(18,137); SetIndexBuffer(18,KCUPBuffer); SetIndexLabel(18,"Kijun Sen/Cloud Buy"); SetIndexDrawBegin(18,2); SetIndexEmptyValue(18,0); SetIndexStyle(19,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(19,137); SetIndexBuffer(19,KCDNBuffer); SetIndexLabel(19,"Kijun Sen/Cloud Sell"); SetIndexDrawBegin(19,2); SetIndexEmptyValue(19,0); if(!ShowKijunSenCloudCross_9) { SetIndexStyle(18,DRAW_NONE); SetIndexStyle(19,DRAW_NONE); } //--- Signal 10: SetIndexStyle(20,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(20,138); SetIndexBuffer(20,SSABUPBuffer); SetIndexLabel(20,"Senkou Span A/B Buy"); SetIndexDrawBegin(20,2); SetIndexEmptyValue(20,0); SetIndexStyle(21,DRAW_ARROW,STYLE_SOLID,2); SetIndexArrow(21,138); SetIndexBuffer(21,SSABDNBuffer); SetIndexLabel(21,"Senkou Span A/B Sell"); SetIndexDrawBegin(21,2); SetIndexEmptyValue(21,0); if(!ShowSenkouSpanABCross_10) { SetIndexStyle(20,DRAW_NONE); SetIndexStyle(21,DRAW_NONE); } SetIndexBuffer(22,CPCBuffer); SetIndexDrawBegin(22,2); SetIndexEmptyValue(22,EMPTY_VALUE); SetIndexBuffer(23,PKCBuffer); SetIndexDrawBegin(23,2); SetIndexEmptyValue(23,EMPTY_VALUE); //--- check for input parameter pTime=iTime(NULL,0,0); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- return value of prev_calculated for next call int i,limit; double coef=0.8; //--- check for bars count and input parameter if(rates_total<=Senkou) return(0); //--- counting from 0 to rates_total //--- preliminary calculations if(prev_calculated==0) limit=rates_total-Senkou-1; else limit=rates_total-prev_calculated+1; for(i=limit; i>0; i--) { // confiremation double price_high =high[i]+iATR(NULL,0,10,i)*coef; double price_low =low[i] -iATR(NULL,0,10,i)*coef; double x1,x0,y1,y0; double t1,t0; t1 = getTenkanSen(i+1); t0 = getTenkanSen(i); // // arrow 0 // if(ShowChikouSpanPriceCross_0) { x1 = getChikouSpan(i+Kijun+1); x0 = getChikouSpan(i+Kijun); y1 = close[i+Kijun+1]; y0 = close[i+Kijun]; if(checkCrossUP(x1,x0,y1,y0)) { CPUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { CPDNBuffer[i]=price_high; } } // // arrow 1 // if(ShowChikouSpanTenkanSenCross_1) { x1 = getChikouSpan(i+Kijun+1); x0 = getChikouSpan(i+Kijun); y1 = getTenkanSen(i+Kijun+1); y0 = getTenkanSen(i+Kijun); if(checkCrossUP(x1,x0,y1,y0)) { CTUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { CTDNBuffer[i]=price_high; } } // // arrow 2 // if(ShowChikouSpanKijunSenCross_2) { x1 = getChikouSpan(i+Kijun+1); x0 = getChikouSpan(i+Kijun); y1 = getKijunSen(i+Kijun+1); y0 = getKijunSen(i+Kijun); if(checkCrossUP(x1,x0,y1,y0)) { CKUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { CKDNBuffer[i]=price_high; } } // // arrow 3 // if(ShowChikouSpanCloudCross_3) { x1=getChikouSpan(i+Kijun+1); x0=getChikouSpan(i+Kijun); y1 = MathMax(getSenkouSpanA(i+Kijun+1),getSenkouSpanB(i+Kijun+1)); y0 = MathMax(getSenkouSpanA(i+Kijun), getSenkouSpanB(i+Kijun)); if(checkCrossUP(x1,x0,y1,y0)) { CCUPBuffer[i]=price_low; } y1 = MathMin(getSenkouSpanA(i+Kijun+1),getSenkouSpanB(i+Kijun+1)); y0 = MathMin(getSenkouSpanA(i+Kijun), getSenkouSpanB(i+Kijun)); if(checkCrossDN(x1,x0,y1,y0)) { CCDNBuffer[i]=price_high; } } // // arrow 4 // if(ShowPriceTenkanSenCross_4) { x1 = close[i+1]; x0 = close[i]; y1 = getTenkanSen(i+1); y0 = getTenkanSen(i); if(checkCrossUP(x1,x0,y1,y0)) { PTUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { PTDNBuffer[i]=price_high; } } // // arrow 5 // if(ShowPriceKijunSenCross_5) { x1=close[i+1]; x0 = close[i]; y1 = getKijunSen(i+1); y0 = getKijunSen(i); if(checkCrossUP(x1,x0,y1,y0)) { PKUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { PKDNBuffer[i]=price_high; } } // // arrow 6 // if(ShowPriceCloudCross_6) { x1=close[i+1]; x0= close[i]; y1 = MathMax(getSenkouSpanA(i+1),getSenkouSpanB(i+1)); y0 = MathMax(getSenkouSpanA(i), getSenkouSpanB(i)); if(checkCrossUP(x1,x0,y1,y0) //&& t1t0 ) { PCDNBuffer[i]=price_high; } } // // arrow 7 // if(ShowTenkanSenKijunSenCross_7) { x1 = getTenkanSen(i+1); x0 = getTenkanSen(i); y1 = getKijunSen(i+1); y0 = getKijunSen(i); if(checkCrossUP(x1,x0,y1,y0)) { TKUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { TKDNBuffer[i]=price_high; } } // // arrow 8 // if(ShowTenkanSenCloudCross_8) { x1=getTenkanSen(i+1); x0=getTenkanSen(i); y1 = MathMax(getSenkouSpanA(i+1),getSenkouSpanB(i+1)); y0 = MathMax(getSenkouSpanA(i), getSenkouSpanB(i)); if(checkCrossUP(x1,x0,y1,y0)) { TCUPBuffer[i]=price_low; } y1 = MathMin(getSenkouSpanA(i+1),getSenkouSpanB(i+1)); y0 = MathMin(getSenkouSpanA(i), getSenkouSpanB(i)); if(checkCrossDN(x1,x0,y1,y0)) { TCDNBuffer[i]=price_high; } } // // arrow 9 // if(ShowKijunSenCloudCross_9) { x1 = getKijunSen(i+1); x0 = getKijunSen(i); y1 = MathMax(getSenkouSpanA(i+1),getSenkouSpanB(i+1)); y0 = MathMax(getSenkouSpanA(i), getSenkouSpanB(i)); if(checkCrossUP(x1,x0,y1,y0)) { KCUPBuffer[i]=price_low; } y1 = MathMin(getSenkouSpanA(i+1),getSenkouSpanB(i+1)); y0 = MathMin(getSenkouSpanA(i), getSenkouSpanB(i)); if(checkCrossDN(x1,x0,y1,y0)) { KCDNBuffer[i]=price_high; } } // // arrow 10 // if(ShowSenkouSpanABCross_10) { x1 = getSenkouSpanA(i-Kijun+1); x0 = getSenkouSpanA(i-Kijun); y1 = getSenkouSpanB(i-Kijun+1); y0 = getSenkouSpanB(i-Kijun); if(checkCrossUP(x1,x0,y1,y0)) { SSABUPBuffer[i]=price_low; } if(checkCrossDN(x1,x0,y1,y0)) { SSABDNBuffer[i]=price_high; } } // // confirmation CPC // if(close[i+Kijun]getChikouSpan(i)) CPCBuffer[i]=-1; else CPCBuffer[i]=0; // // confirmation PKC // if(close[i]>MathMax(getSenkouSpanA(i),getSenkouSpanB(i))) PKCBuffer[i]=1; else if(close[i]0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Price Buy"); if(CPDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Price Sell"); } // signal 1 if(ShowChikouSpanTenkanSenCross_1) { if(CTUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Tenkan Sen Buy"); if(CTDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Tenkan Sen Sell"); } // signal 2 if(ShowChikouSpanKijunSenCross_2) { if(CKUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Kijun Sen Buy"); if(CKDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Kijun Sen Sell"); } // signal 3 if(ShowChikouSpanCloudCross_3) { if(CCUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Cloud Buy"); if(CCDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Chikou Span/Cloud Sell"); } // signal 4 if(ShowPriceTenkanSenCross_4) { if(PTUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Price/Tenkan Sen Buy"); if(PTDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Price/Tenkan Sen Sell"); } // signal 5 if(ShowPriceKijunSenCross_5) { if(PKUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Price/Kijun Sen Buy"); if(PKDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Price/Kijun Sen Sell"); } // signal 6 if(ShowPriceCloudCross_6) { if(PCUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Price/Cloud Buy"); if(PCDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Price/Cloud Sell"); } // signal 7 if(ShowTenkanSenKijunSenCross_7) { if(TKUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Tenkan Sen/Kijun Sen Buy"); if(TKDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Tenkan Sen/Kijun Sen Sell"); } // signal 8 if(ShowTenkanSenCloudCross_8) { if(TCUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Tenkan Sen/Cloud Buy"); if(TCDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Tenkan Sen/Cloud Sell"); } // signal 9 if(ShowKijunSenCloudCross_9) { if(KCUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Kijun Sen/Cloud Buy"); if(KCDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Kijun Sen/Cloud Sell"); } // signal 10 if(ShowSenkouSpanABCross_10) { if(SSABUPBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Senkou Span A/B Buy"); if(SSABDNBuffer[i]>0) Alert(Symbol()+" "+timeframeToString(Period())+" "+short_name+" Signal: Senkou SPan A/B Sell"); } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ bool isNewBar() { bool res=false; if(iTime(NULL,0,0)!=pTime) { res=true; pTime=iTime(NULL,0,0); } return(res); } //+------------------------------------------------------------------+ string timeframeToString(int timeframe) { switch(timeframe) { case PERIOD_M1 : return("M1"); //break; case PERIOD_M2 : return("M2"); //break; case PERIOD_M3 : return("M3"); //break; case PERIOD_M4 : return("M4"); //break; case PERIOD_M5 : return("M5"); //break; case PERIOD_M6 : return("M6"); //break; case PERIOD_M10 : return("M10"); //break; case PERIOD_M12 : return("M12"); //break; case PERIOD_M15 : return("M15"); //break; case PERIOD_M20 : return("M20"); //break; case PERIOD_M30 : return("M30"); //break; case PERIOD_H1 : return("H1"); //break; case PERIOD_H2 : return("H2"); //break; case PERIOD_H3 : return("H3"); //break; case PERIOD_H4 : return("H4"); //break; case PERIOD_H6 : return("H6"); //break; case PERIOD_H8 : return("H8"); //break; case PERIOD_H12 : return("H12"); //break; case PERIOD_D1 : return("D1"); //break; case PERIOD_W1 : return("W1"); //break; case PERIOD_MN1 : return("MN1"); //break; default : return("Current"); } } //+------------------------------------------------------------------+ double getChikouSpan(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_CHIKOUSPAN,index); //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,4,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getTenkanSen(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_TENKANSEN,index); //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,0,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getKijunSen(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,index); //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,1,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getSenkouSpanA(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,index); // Senkou Span A at time of latest closed bar of Chinkou span. //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,2,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getSenkouSpanB(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,index); // Senkou Span B at time of latest closed bar of Chinkou span. //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,3,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getSenkouSpanB_UP(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,index); // Senkou Span B at time of latest closed bar of Chinkou span. //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,7,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getSenkouSpanB_DN(int index) { return iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,index); // Senkou Span B at time of latest closed bar of Chinkou span. //return iCustom(NULL,0,"Price_Action_Ichimoku_Fibo_V2",0,Tenkan,Kijun,Senkou,8,index); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool checkCrossUP(double x1,double x0,double y1,double y0) { if(x1<=y1 && x0>y0 && x0>x1) { return true; } return false; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool checkCrossDN(double x1,double x0,double y1,double y0) { if(x1>=y1 && x00) { if(EnablePriceKumoConfirmation) { if(PKCBuffer[i]<0) signal_level=1; if(PKCBuffer[i]==0) signal_level=2; if(PKCBuffer[i]>0) signal_level=3; } if(EnableChikouSpanPriceConfirmation) { if(signal_level==0x7FFFFFFF) { if(CPCBuffer[i]<0) signal_level=1; if(CPCBuffer[i]==0) signal_level=2; if(CPCBuffer[i]>0) signal_level=3; } else { if(CPCBuffer[i]<0) signal_level--; if(CPCBuffer[i]>0) signal_level++; } } if(signal_level0) { if(EnablePriceKumoConfirmation) { if(PKCBuffer[i]<0) signal_level=3; if(PKCBuffer[i]==0) signal_level=2; if(PKCBuffer[i]>0) signal_level=1; } if(EnableChikouSpanPriceConfirmation) { if(signal_level==0x7FFFFFFF) { if(CPCBuffer[i]>0) signal_level=1; if(CPCBuffer[i]==0) signal_level=2; if(CPCBuffer[i]<0) signal_level=3; } else { if(CPCBuffer[i]>0) signal_level--; if(CPCBuffer[i]<0) signal_level++; } } if(signal_level