//+------------------------------------------------------------------+ //| Cronex T Taichi GF.mq4 | //| Copyright © 2009, Cronex. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Cronex" #property link "http://www.metaquotes.net/" //---- indicator settings #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Silver #property indicator_color2 Red #property indicator_color3 Lime #property indicator_color4 Blue #property indicator_color5 DeepSkyBlue #property indicator_color6 DeepSkyBlue #property indicator_color7 DeepSkyBlue #property indicator_color8 DarkOrange //#property indicator_width1 2 //#property indicator_width4 2 //---- indicator parameters extern int Tenkan=9; extern int Kijun=26; extern int Senkou=52; extern int FlatSE=10; //---- indicator buffers double TaichiBuffer[]; double TaichiForBuffer[]; double SignalBuffer[]; double SSignalBuffer[]; double FlatBuffer1[]; double FlatBuffer2[]; double TaichiFCUBuffer[]; double TaichiFCDBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE); SetIndexStyle(3,DRAW_LINE); SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_DOT); SetIndexStyle(5,DRAW_HISTOGRAM,STYLE_DOT); SetIndexStyle(6,DRAW_LINE); SetIndexStyle(7,DRAW_LINE); IndicatorDigits(Digits); //---- indicator buffers mapping SetIndexBuffer(0,TaichiBuffer); SetIndexBuffer(1,SignalBuffer); SetIndexBuffer(2,SSignalBuffer); SetIndexBuffer(3,TaichiForBuffer); SetIndexBuffer(4,FlatBuffer1); SetIndexBuffer(5,FlatBuffer2); SetIndexBuffer(6,TaichiFCUBuffer); SetIndexBuffer(7,TaichiFCDBuffer); SetIndexEmptyValue(4,0.0); SetIndexEmptyValue(5,0.0); SetIndexEmptyValue(6,0.0); SetIndexEmptyValue(7,0.0); SetIndexShift(3,Kijun); SetIndexShift(6,Kijun); SetIndexShift(7,Kijun); // SetIndexDrawBegin(3,Kijun); //---- name for DataWindow and indicator subwindow label IndicatorShortName("Cronex Taichi"); SetIndexLabel(0,"Taichi"); SetIndexLabel(1,"Fast Signal"); SetIndexLabel(2,"Slow Signal"); SetIndexLabel(3,"TaichiFor"); SetIndexLabel(4,"FlatUp"); SetIndexLabel(5,"FlatDn"); SetIndexLabel(6,"TaichiFor Up"); SetIndexLabel(7,"TaichiFor Dn"); //---- 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; 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; if (SenkouSpanA>SenkouSpanB) { TaichiFCUBuffer[i+Kijun]=(SenkouSpanA+SenkouSpanB)/2; } else { TaichiFCDBuffer[i+Kijun]=(SenkouSpanA+SenkouSpanB)/2; } } else { TaichiForBuffer[i+Kijun]=(SenkouSpanA+SenkouSpanB)/2; if (SenkouSpanA>SenkouSpanB) { TaichiFCUBuffer[i+Kijun]=(SenkouSpanA+SenkouSpanB)/2; } else { TaichiFCDBuffer[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) { FlatBuffer1[i]=SignalBuffer[i]+FlatSE*Point; FlatBuffer2[i]=SignalBuffer[i]-FlatSE*Point; } } //---- done return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_LINE
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Ichimoku Kinko Hyo
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: