TII_RLH1

The Trend Intensity Index (TII) is a technical analysis tool designed to measure the strength and direction of a market trend. Its primary purpose is to help traders identify whether a market is moving decisively in one direction or if it is currently experiencing a period of neutrality or reversal.

Core Logic and Methodology

The indicator functions by comparing the current price of an asset against its historical average. Here is a breakdown of how it processes information:

1. Establishing a Baseline (The Major Period) The tool first calculates a Moving Average based on a large "Major Period" (standardized at 60 bars). This moving average acts as the baseline, representing the long-term "equilibrium" price of the asset.

2. Calculating Deviations Once the baseline is established, the script looks at a smaller "Minor Period" (standardized at 30 bars). It calculates the difference between the closing price and the Moving Average for every individual bar within this timeframe. These differences are categorized into two groups:

  • Positive Deviations: Instances where the price is currently trading above the moving average.
  • Negative Deviations: Instances where the price is currently trading below the moving average.

3. Determining Trend Intensity The tool then aggregates these deviations. It sums up all the positive values and all the negative values separately. By comparing these two sums, it produces a percentage score between 0 and 100:

  • A score approaching 100 indicates that the vast majority of price movement over the recent period has been upward (Strong Uptrend).
  • A score approaching 0 indicates that the majority of price movement has been downward (Strong Downtrend).
  • A score near 50 suggests a state of equilibrium, where neither trend is dominating.

How to Interpret the Results

The TII provides a visual representation of market momentum. Traders typically use specific thresholds to make decisions:

  • Uptrend Identification: When the index rises above 50, it signals a bullish bias. The higher the value (moving toward 100), the more powerful the upward trend is considered to be.
  • Downtrend Identification: When the index falls below 50, it signals a bearish bias. The lower the value (moving toward 0), the stronger the downward pressure on the price.
  • Trend Strength & Reversals: The tool is designed to help traders "ride" a strong trend. A high reading suggests that the current momentum has staying power. Conversely, if a high index begins to drop significantly toward the 50-level, it may serve as an early warning sign that the trend is weakening and a reversal could be approaching.
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
9 Views
0 Downloads
0 Favorites
TII_RLH1
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+--------------------------------------------------------------------+
//|                                                   TII_RLH          |
//|                                    Copyright © 2006, Robert Hill   |
//|                                       http://www.metaquotes.net/   |
//|                                                                    |
//| Based on the formula developed by M. H. PEE                        |
//|                                                                    |
//| Trend Intensity Index.                                             |
//|                                                                    |
//| TII is used to indicate the strength of the current trend in the   |
//| market. The stronger the current trend, the more likely the        |
//| market will continue moving in the current direction.              |
//| It is recommended to enter the market during a strong trend        |
//| and ride it until TII shows signs of a reversal, at which time     |
//| you should abandon your position and prepare to enter in the       |
//| opposite direction.                                                |
//| Pee recommends using a major period of 60 and a minor period of 30.|
//| Assuming these setting, TII is calculated as follows.              |
//| The 60 bar simple moving average (MA) is computed.                 |
//| The deviation between the closing price and this computed average  |
//| for each of the last 30 bars is computed (CL - MA).                |
//| Positive deviations (CL > MA) are summed to give SDPOS.            |
//| Negative deviations (CL < MA) are summed to give SDNEG.            |
//| Then, the 30 period TII is calculated as:                          |
//|     100 * SDPOS / (SDPOS - SDNEG).                                 |
//| TII ranges from a lower limit of 0 to an upper limit of 100        |
//| A TII value above 50 signals an uptrend                            |
//| A TII value of 80 means that 80% of the total deviations are up    |
//| When TII fall below 50, a downtrend is likely in place             |
//| 50 represents a level that is trend-neutral                        |
//| The closer TII is to 100, the stronger the current uptrend         |
//| The closer TII is to 0, the stronger the current downtrend         |
//|                                                                    |
//+--------------------------------------------------------------------+
#property  copyright "Copyright © 2006, Robert Hill "
#property  link      "http://www.metaquotes.net/"

//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 1
#property  indicator_color1  Red
#property  indicator_width1  2
      
extern int Major_Period = 60;
extern int Major_MaMode = 1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode = 0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
extern int Minor_Period = 30;
extern color LevelColor = Silver;
extern int BuyLevel = 20;
extern int MidLevel = 50;
extern int SellLevel = 80;

//---- buffers
double ma[];
double ma_dev[];
double tii[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- drawing settings
   IndicatorBuffers(3);
   
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,Major_Period);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

//---- 3 indicator buffers mapping
   if(!SetIndexBuffer(0,tii) &&
      !SetIndexBuffer(1,ma_dev) &&
      !SetIndexBuffer(2,ma))
      Print("cannot set indicator buffers!");
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("TII("+Minor_Period+")");
   SetLevelStyle(STYLE_DASH,1,LevelColor);
   SetLevelValue(0,BuyLevel);
   SetLevelValue(1,MidLevel);
   SetLevelValue(2,SellLevel);
   
//---- initialization done
   return(0);
  }

//+------------------------------------------------------------------+
//| LSMA with PriceMode                                              |
//| PrMode  0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2,    |
//| 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4  |
//+------------------------------------------------------------------+

double LSMA(int Rperiod, int prMode, int shift)
{
   int i;
   double sum, pr;
   int length;
   double lengthvar;
   double tmp;
   double wt;

   length = Rperiod;
 
   sum = 0;
   for(i = length; i >= 1  ; i--)
   {
     lengthvar = length + 1;
     lengthvar /= 3;
     tmp = 0;
     switch (prMode)
     {
     case 0: pr = Close[length-i+shift];break;
     case 1: pr = Open[length-i+shift];break;
     case 2: pr = High[length-i+shift];break;
     case 3: pr = Low[length-i+shift];break;
     case 4: pr = (High[length-i+shift] + Low[length-i+shift])/2;break;
     case 5: pr = (High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift])/3;break;
     case 6: pr = (High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift] + Close[length-i+shift])/4;break;
     }
     tmp = ( i - lengthvar)*pr;
     sum+=tmp;
    }
    wt = sum*6/(length*(length+1));
    
    return(wt);
}

int start()
{
   int i,j,  limit;
   double sdPos, sdNeg;
   int    counted_bars=IndicatorCounted();
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
  
   for(i = limit; i >= 0; i--)
   {
      if (Major_MaMode == 4)
      {
         ma[i] = LSMA(Major_Period, Major_PriceMode, i);
      }
      else
      {
       ma[i] = iMA(NULL,0,Major_Period,0,Major_MaMode,Major_PriceMode,i);
      }
      ma_dev[i] = Close[i] - ma[i];
   }
    
         
//========== COLOR CODING ===========================================               
        
   for(i = 0; i <=limit; i++)
   {
       sdPos = 0;
       sdNeg = 0;
       for (j=i;j<i+30;j++)
       {
          if (ma_dev[j] >= 0) sdPos = sdPos + ma_dev[j];
          if (ma_dev[j] < 0) sdNeg = sdNeg + ma_dev[j];
       }
       tii[i] = 100 * sdPos/(sdPos - sdNeg);
   }
       
   return(0);
}
//+------------------------------------------------------------------+

Comments