KijunTenkan+_v1
Download scriptThis script is designed to provide visual market analysis by plotting two fundamental components of the Ichimoku Kinko Hyo technical indicator on a trading chart. It automates the calculation of two specific trend lines—the Tenkan-sen and the Kijun-sen—which help traders identify momentum and potential price reversals.
Core Functionality
The logic behind this tool operates by scanning historical price data to determine the "balance" between the highest and lowest prices over specific timeframes. Instead of simply averaging every price point, it identifies the extremes (the peaks and valleys) within a set window and calculates the midpoint.
1. The Tenkan-sen (Conversion Line)
The script first calculates the Tenkan-sen, which acts as a short-term momentum indicator. It looks at a relatively small window of recent price action to find the highest high and the lowest low. By calculating the average of these two points, it creates a line that reacts quickly to current market movements, helping users see immediate changes in trend direction.
2. The Kijun-sen (Base Line)
The script then calculates the Kijun-sen, which serves as a medium-term equilibrium indicator. This calculation uses a significantly larger window of price data than the Tenkan-sen. Because it covers more historical ground, this line moves more slowly and provides a "base" for the market's current trend. It is primarily used to identify the broader direction of the market and to establish potential support or resistance levels.
Visual Presentation and Dynamics
To make the data useful for real-time viewing, the script applies two specific behaviors:
- Time Shifting: Both lines are intentionally shifted forward on the chart (offset). This "projection" allows traders to see how the current price action relates to the calculated equilibrium points in a way that accounts for the time it took to reach those averages.
- Dynamic Updates: The script continuously recalculates these values as new candles form. It ensures that the transition between historical data and live market prices remains seamless, providing a continuous, unbroken line for each indicator.
Summary of Use
By displaying both lines simultaneously, this script allows you to observe the relationship between short-term price fluctuations (Tenkan-sen) and long-term market stability (Kijun-sen). Traders typically look for instances where these two lines cross or spread apart to gauge the strength and potential turning points of the market trend.
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| Ichimoku.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| Copyright © 2004, AlexSilver â ïëàíå + |
//| http://www.metaquotes.net/ |
//| http://www.viac.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, AlexSilver â ïëàíå +"
#property link "http://www.viac.ru/"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int Tenkan=9;
extern int Kijun=26;
extern int TenkanShift=3;
extern int KijunShift=9;
//---- buffers
double Tenkan_Buffer[];
double Kijun_Buffer[];
//----
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Âûâîä Tenkan-sen
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Tenkan_Buffer);
SetIndexDrawBegin(0,Tenkan+TenkanShift-1);
SetIndexShift(0,TenkanShift);
SetIndexLabel(0,"Tenkan Sen");
//---- Âûâîä Kijun-sen
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Kijun_Buffer);
SetIndexDrawBegin(1,Kijun+KijunShift-1);
SetIndexShift(1,KijunShift);
SetIndexLabel(1,"Kijun Sen");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo |
//+------------------------------------------------------------------+
int start()
{
int i,k;
int counted_bars=IndicatorCounted();
double high,low,price;
//----
if(Bars<=Tenkan || Bars<=Kijun) return(0);
//---- initial zero
if(counted_bars<1)
{
for(i=1;i<=Tenkan;i++) Tenkan_Buffer[Bars-i]=0;
for(i=1;i<=Kijun;i++) Kijun_Buffer[Bars-i]=0;
}
//---- Tenkan Sen
i=Bars-Tenkan;
if(counted_bars>Tenkan) 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(high<price) high=price;
price=Low[k];
if(low>price) low=price;
k--;
}
Tenkan_Buffer[i+TenkanShift]=(high+low)/2;
i--;
} i=TenkanShift-1;
while(i>=0)
{
high=High[0]; low=Low[0]; k=Tenkan-TenkanShift+i;
while(k>=0)
{
price=High[k];
if(high<price) high=price;
price=Low[k];
if(low>price) 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(high<price) high=price;
price=Low[k];
if(low>price) low=price;
k--;
}
Kijun_Buffer[i+KijunShift]=(high+low)/2;
i--;
} i=KijunShift-1;
while(i>=0)
{
high=High[0]; low=Low[0]; k=Kijun-KijunShift+i;
while(k>=0)
{
price=High[k];
if(high<price) high=price;
price=Low[k];
if(low>price) low=price;
k--;
}
Kijun_Buffer[i]=(high+low)/2;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments