Cronex Taichi
Download scriptThe Cronex Taichi is a sophisticated technical analysis tool designed to provide traders with a clearer picture of market trends by synthesizing several core components of the popular Ichimoku Kinko Hyo system. Its primary purpose is to smooth out market "noise" and identify significant price movements through a multi-layered calculation approach.
Core Methodology
The indicator functions by gathering data from four primary Ichimoku components: the Tenkan-sen, Kijun-sen, Senkou Span A, and Senkou Span B. Instead of showing these as separate, often cluttered lines, the script merges them into a single unified average. This "Taichi" line represents a balanced equilibrium of the market's short-term and long-term sentiment.
Key Visual Elements
The logic generates several distinct visual layers to help users interpret price action:
- The Taichi Line: This is the primary smoothed value derived from the four Ichimoku components. It acts as the main trend identifier.
- Signal Layers (Signal & SSignal): The script takes the Taichi line and applies two different types of moving averages to it. These act as secondary signals, helping traders identify when the momentum of the main Taichi line is shifting or stabilizing.
- The Flat Zone: One of the unique features of this script is its ability to detect "flat" or sideways markets. By measuring the proximity between the Taichi line and its two signal lines, the tool identifies periods where price action is consolidating. When these values are very close to one another, the indicator highlights a "Flat" area, signaling that the market may be ranging rather than trending.
How it Works for the Trader
The logic follows a sequential flow:
- Data Collection: It pulls the necessary historical data from the Ichimoku system.
- Synthesis: It blends those four values into one master "Taichi" price point.
- Smoothing: It then calculates two additional smoothed averages (the Signals) based on that master price.
- Analysis: Finally, it compares the distance between all these lines. If the gap is small enough, it confirms a flat market; if the gaps widen or cross, it indicates the emergence of a new trend.
By combining these elements, the Cronex Taichi aims to provide a "filtered" view of the market, making it easier to distinguish between significant trend changes and minor price fluctuations.
//+------------------------------------------------------------------+
//| 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_chart_window
#property indicator_buffers 6
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_color3 Lime
#property indicator_color4 DarkOrange
#property indicator_color5 DeepSkyBlue
#property indicator_color6 DeepSkyBlue
#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=7;
//---- indicator buffers
double TaichiBuffer[];
double TaichiForBuffer[];
double SignalBuffer[];
double SSignalBuffer[];
double FlatBuffer1[];
double FlatBuffer2[];
//+------------------------------------------------------------------+
//| 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);
// SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,TaichiBuffer);
SetIndexBuffer(1,SignalBuffer);
SetIndexBuffer(2,SSignalBuffer);
SetIndexBuffer(3,TaichiForBuffer);
SetIndexBuffer(4,FlatBuffer1);
SetIndexBuffer(5,FlatBuffer2);
SetIndexShift(3,Kijun);
// SetIndexDrawBegin(3,Kijun);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("Cronex Taichi");
SetIndexLabel(0,"Taichi");
SetIndexLabel(1,"Signal");
SetIndexLabel(2,"SSignal");
SetIndexLabel(3,"TaichiFor");
SetIndexLabel(4,"FlatUp");
SetIndexLabel(5,"FlatDn");
//---- 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);
FlatBuffer1[i]=0;
FlatBuffer2[i]=0;
//========================== 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);
}
//+------------------------------------------------------------------+
Comments