TTF+-+MW_v2
Download scriptThis tool is designed to analyze price action on your trading charts by identifying significant shifts in market momentum. Instead of looking at simple price movements, it evaluates the "power" behind buying and selling forces to determine which side currently has the upper hand.
Core Logic and Methodology
1. Power Dynamics Analysis The script works by comparing two specific price points over a defined period:
- Buy Power: It measures the distance between the highest price reached in the most recent timeframe and the lowest price from an older timeframe.
- Sell Power: It measures the distance between the highest price of an older timeframe and the lowest price of the recent timeframe.
By calculating these two values, the tool can determine whether the market is being driven more by aggressive buying pressure or heavy selling pressure.
2. Momentum Calculation Once the Buy and Sell powers are established, the script calculates a percentage-based momentum score. This score tells us the relative strength of one side versus the other. If the result is heavily weighted toward one direction, it suggests a strong trend; if it is balanced, it suggests consolidation or indecision.
3. Signal Smoothing and Filtering To prevent "market noise" from creating false signals, the tool applies a multi-stage smoothing process. It uses a series of weighted calculations (similar to a moving average) to refine the momentum data. This ensures that the resulting signals are based on sustained trends rather than temporary, erratic price spikes.
4. Visual Execution The final output is displayed as clear visual markers on your chart:
- Sell Signals: When the momentum score reaches an extreme negative threshold (indicating dominant selling pressure), a marker appears above the candle.
- Buy Signals: When the momentum score reaches an extreme positive threshold (indicating dominant buying pressure), a marker appears below the candle.
By filtering out the middle ground where the market is neutral, the script highlights only the moments where the price action shows clear, high-probability directional strength.
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| TTF.mq4 |
//| MojoFX |
//| http://fx.studiomojo.com |
//+------------------------------------------------------------------+
#property copyright "MojoFX"
#property link "http://fx.studiomojo.com"
//---- indicators setting
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 GreenYellow
//---- input parameters
extern int TTFbars=12;
extern int t3_period=6;
extern double b=1.618;
//---- buffers
double ExtMapBuffer1[],ExtMapBuffer2[];
double b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,w1,w2,TTF,r;
double HighestHighRecent,HighestHighOlder,LowestLowRecent,LowestLowOlder;
double BuyPower,SellPower;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,159);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
b2=b*b;
b3=b2*b;
c1=-b3;
c2=(3*(b2+b3));
c3=-3*(2*b2+b+b3);
c4=(1+3*b+b3+3*b2);
r=t3_period;
if (r<1) r=1;
r = 1 + 0.5*(r-1);
w1 = 2 / (r + 1);
w2 = 1 - w1;
e1=0;
e2=0;
e3=0;
e4=0;
e5=0;
e6=0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
//----
for(int i=limit; i>=0; i--)
{
HighestHighRecent=High[Highest(NULL,0,2,TTFbars,i-TTFbars+1)];
HighestHighOlder =High[Highest(NULL,0,2,TTFbars,i+1)];
LowestLowRecent =Low[Lowest(NULL,0,1,TTFbars,i-TTFbars+1)];
LowestLowOlder =Low[Lowest(NULL,0,1,TTFbars,i+1)];
BuyPower =HighestHighRecent-LowestLowOlder;
SellPower=HighestHighOlder -LowestLowRecent;
TTF=(BuyPower-SellPower)/(0.5*(BuyPower+SellPower))*100;
e1 = w1*TTF + w2*e1;
e2 = w1*e1 + w2*e2;
e3 = w1*e2 + w2*e3;
e4 = w1*e3 + w2*e4;
e5 = w1*e4 + w2*e5;
e6 = w1*e5 + w2*e6;
TTF = c1*e6 + c2*e5 + c3*e4 + c4*e3;
if (TTF <= (-100))
{
ExtMapBuffer1[i] = High[i]+4*Point;
ExtMapBuffer2[i] = 0;
}
if (TTF >= 100)
{
ExtMapBuffer1[i] = 0;
ExtMapBuffer2[i] = Low[i]-4*Point;
}
if (TTF>(-100) && TTF<100){
ExtMapBuffer1[i]=0;
ExtMapBuffer2[i]=0;
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments