Cronex Taichi

Download script
Cronex Taichi

The 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:

  1. Data Collection: It pulls the necessary historical data from the Ichimoku system.
  2. Synthesis: It blends those four values into one master "Taichi" price point.
  3. Smoothing: It then calculates two additional smoothed averages (the Signals) based on that master price.
  4. 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.

Indicators Used
Ichimoku Kinko HyoMoving average indicator
Miscellaneous
Implements a curve of type %1
15 Views
0 Downloads
0 Favorites
Cronex Taichi
//+------------------------------------------------------------------+
//|                                                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