T3 -Trix_v2

Download script
Author: convert FinGeR Alex orginal by Luis Damiani
T3 -Trix_v2

This script is a custom financial analysis tool designed for the MetaTrader platform. Its primary purpose is to track and visualize specific momentum trends by calculating "Rate of Change" (ROC) values based on smoothed price data.

Core Logic Overview

The indicator functions by processing historical price data (specifically Close prices, though it can be adjusted to use Open prices) through a sophisticated smoothing mathematical model. Instead of reacting instantly to every minor price tick—which can often create "noise" or false signals—this script filters the data to identify broader trends.

How it Works

The logic can be broken down into three main stages:

1. Data Smoothing (The T3 Foundation) The script utilizes a technique similar to a Triple Exponential Moving Average but with a specific mathematical structure (T3). It performs several layers of calculations where the current price is blended with previous prices using weighted coefficients. This creates a "smoothed" version of the market movement, making it easier to see the underlying direction of the asset.

2. Double Trend Analysis The script actually calculates two different smoothed trends simultaneously:

  • Trend A: Uses a primary period (defaulting to 18 bars) to capture the main movement.
  • Trend B: Uses a secondary, faster period (defaulting to 10 bars) to capture shorter-term momentum.

3. Rate of Change (ROC) Calculation Rather than just plotting the price lines themselves, the final output displayed on your chart represents the percentage change between these smoothed trends.

  • It compares where the trend is now against where it was in the previous step.
  • The resulting values help traders identify how quickly a trend is accelerating or decelerating.

Visual Output

The script produces two distinct lines in a separate window:

  • Line 1 (DeepSkyBlue): Represents the rate of change for the primary long-term trend.
  • Line 2 (Blue): Represents either the rate of change for the secondary trend or a combined calculation of both, depending on your settings.

Summary for the User

In plain terms, this tool is designed to tell you "how fast is the current momentum moving?" By looking at these lines, a user can identify when a trend is gaining strength, losing steam, or potentially reversing, providing a cleaner view of market dynamics than raw price action alone.

Miscellaneous
Implements a curve of type %1
10 Views
0 Downloads
0 Favorites
T3 -Trix_v2
  
//+------------------------------------------------------------------+ 
//|                                          T3 TRIX (ROC of T6).mq4 | 
//|                      convert FinGeR Alex orginal by Luis Damiani | 
//|                                                                  | 
//+------------------------------------------------------------------+ 
#property copyright "convert FinGeR Alex orginal by Luis Damiani" 
#property link      "" 
//----
#property indicator_separate_window 
#property indicator_buffers 2 
#property indicator_color1 DeepSkyBlue  
#property indicator_color2 Blue 
//---- input parameters 
extern int       A_t3_period=18; 
extern int       num_bars=350; 
extern int       is_A_open_price=0; 
extern int       B_t3_period_ac=10; 
extern int       diferential=0; 
extern double    hot=0.7; 
//---- buffers 
double ExtMapBuffer1[]; 
double ExtMapBuffer2[]; 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- indicators 
   SetIndexStyle(0,DRAW_LINE); 
   SetIndexBuffer(0,ExtMapBuffer1); 
   SetIndexStyle(1,DRAW_LINE); 
   SetIndexBuffer(1,ExtMapBuffer2); 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| Custor indicator deinitialization function                       | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int start() 
  { 
int  shift=0; 
double A_t3=0,A_t3_1=0,max_per=0; 
double  B_t3=0,B_t3_1=0; 
double e1=0,e2=0,e3=0,e4=0,e5=0,e6=0,c1=0,c2=0,c3=0,c4=0; 
double e1x=0,e2x=0,e3x=0,e4x=0,e5x=0,e6x=0; 
double d1=0,d2=0,d3=0,d4=0,d5=0,d6=0; 
double d1x=0,d2x=0,d3x=0,d4x=0,d5x=0,d6x=0; 
double n=0,A_w1=0,A_w2=0,B_w1=0,B_w2=0,b2=0,b3=0; 
double init=true; 
double bar=0, prevbars=0, start=0, cs=0, prevcs=0,frame=0;  
string commodt="nonono"; 
int    counted_bars=IndicatorCounted(); 
//----
cs = num_bars+A_t3_period+is_A_open_price+B_t3_period_ac+diferential+hot; 
//----
if (cs==prevcs && commodt==Symbol() && frame==Time[4]-Time[5] && Bars-prevbars<2) 
start=Bars-prevbars; 
else start=-1;    
commodt=Symbol(); 
frame=Time[4]-Time[5]; 
prevbars = Bars; 
prevcs = cs;    
//----
if (start==1 || start==0)  bar=start; else init=true; 
if (init==true) 
{ 
  b2=hot*hot; 
  b3=b2*hot; 
  c1=-b3; 
  c2=(3*(b2+b3)); 
  c3=-3*(2*b2+hot+b3); 
  c4=(1+3*hot+b3+3*b2); 
  n=A_t3_period; 
//----
  if (n<1) n=1; 
//----
  n = 1 + 0.5*(n-1); 
  A_w1 = 2 / (n + 1); 
  A_w2 = 1 - A_w1; 
 n=B_t3_period_ac; 
//----
  if (n<1) n=1; 
//----  
  n = 1 + 0.5*(n-1); 
  B_w1 = 2 / (n + 1); 
  B_w2 = 1 - B_w1; 
//----
ExtMapBuffer1[num_bars-1]=0; 
e1x=0;e2x=0;e3x=0;e4x=0;e5x=0;e6x=0; 
ExtMapBuffer2[num_bars-1]=0; 
d1x=0;d2x=0;d3x=0;d4x=0;d5x=0;d6x=0; 
// max_per=max(A_t3_period,B_t3_period_ac); 
bar=num_bars-2; 
init=false; 
} 
//SetLoopCount(0); 
shift=bar; 
while(shift>=0) 
{ 
 if ( is_A_open_price==1 ) d1 = A_w1*Open[shift] + A_w2*d1x; 
  else d1 = A_w1*Close[shift] + A_w2*d1x; 
  d2 = A_w1*d1 + A_w2*d2x; 
  d3 = A_w1*d2 + A_w2*d3x; 
  d4 = A_w1*d3 + A_w2*d4x; 
  d5 = A_w1*d4 + A_w2*d5x; 
  d6 = A_w1*d5 + A_w2*d6x; 
  A_t3 = c1*d6 + c2*d5 + c3*d4 + c4*d3; 
//----  
if ((start==1 && shift==1) || start==-1  ) 
{  
  d1x=d1; 
  d2x=d2; 
  d3x=d3; 
  d4x=d4; 
  d5x=d5; 
  d6x=d6; 
  } 
  e1 = B_w1*Close[shift] + B_w2*e1x; 
  e2 = B_w1*e1 + B_w2*e2x; 
  e3 = B_w1*e2 + B_w2*e3x; 
  e4 = B_w1*e3 + B_w2*e4x; 
  e5 = B_w1*e4 + B_w2*e5x; 
  e6 = B_w1*e5 + B_w2*e6x; 
B_t3 = c1*e6 + c2*e5 + c3*e4 + c4*e3; 
//----
  if(diferential==1) 
  { 
   ExtMapBuffer1[shift]=(A_t3-A_t3_1)/A_t3_1; 
   ExtMapBuffer2[shift]=(A_t3-A_t3_1)/A_t3_1+(B_t3-B_t3_1)/B_t3_1;  
  } 
  else 
  { 
if ( B_t3_1 >0 && A_t3_1>0) 
{ 
ExtMapBuffer2[shift]=(B_t3-B_t3_1)/B_t3_1; 
ExtMapBuffer1[shift]=(A_t3-A_t3_1)/A_t3_1; 
} 
  //Comment("0"); 
  } 
 //Comment("  start: ",start,"  bar: ",bar,"\n", 
//"frame: ",frame,"  num_bars:" ,num_bars," commodity: ",commodt ,"\n",(B_t3-B_t3_1)/B_t3_1); 
if ((start==1 && shift==1) || start==-1) 
{  
//Comment("Bar=ghfghfgh");  
  A_t3_1=A_t3; 
  B_t3_1=B_t3; 
  e1x=e1; 
  e2x=e2; 
  e3x=e3; 
  e4x=e4; 
  e5x=e5; 
  e6x=e6; 
 } 
  shift--; 
//Comment("View !!!  NO?????"); 
   } 
//----  
  } 
//+------------------------------------------------------------------+

Comments