Author: Ramdass - Conversion only
FATLs_v2

This script is designed as a technical analysis tool for the MetaTrader platform, specifically created to identify potential trend reversals in price action. Rather than using standard moving averages or simple price fluctuations, it utilizes a sophisticated mathematical approach to filter market "noise" and highlight specific transition points.

How the Logic Works

1. Weighted Price Analysis The core of the script involves a complex calculation that looks back at a specific window of historical price data (39 bars). Instead of treating every past price equally, the script assigns a unique weight to each previous closing price. This means some recent prices have a much stronger influence on the final result than others, allowing the tool to react more precisely to current market momentum while still considering the immediate historical context.

2. Dynamic Trend Detection The logic compares two distinct calculated values: one based on the current price data and another slightly offset to capture movement progress. By subtracting these two values from one another, the script determines the immediate "velocity" or direction of the market.

  • If the resulting difference is positive, it interprets a bullish upward trend.
  • If the difference is negative, it interprets a bearish downward trend.

3. Signal Generation (The Arrows) The tool is programmed to look for specific "cross-over" moments—points where the calculated trend flips from one state to another.

  • Bullish Signals: When the logic detects a switch from a downward trend to an upward trend, it places a visual marker (a blue arrow) just below the price candle.
  • Bearish Signals: When the logic detects a switch from an upward trend to a downward trend, it places a visual marker (a red arrow) just above the price candle.

Summary for the User

Essentially, this script acts as a "trend scanner." It constantly performs heavy-duty math in the background to decide if the market is moving up or down. Instead of showing you a constant line, it waits for the exact moment the momentum shifts and alerts you visually on your chart with arrows, highlighting potential opportunities where the trend may have turned.

Miscellaneous
Implements a curve of type %1
14 Views
0 Downloads
0 Favorites
FATLs_v2
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+ 
//| FATLs.mq4 
//| 
//+------------------------------------------------------------------+ 
#property copyright "Ramdass - Conversion only" 


#property indicator_chart_window 
#property indicator_buffers 2 
#property indicator_color1 Blue 
#property indicator_color2 Red 


//---- buffers 
double UPBuffer[]; 
double DownBuffer[]; 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function | 
//+------------------------------------------------------------------+ 
int init() 
{ 
string short_name; 
//---- indicator line 
IndicatorBuffers(2); 
SetIndexStyle(0,DRAW_ARROW); 
SetIndexArrow(0,241); 
SetIndexBuffer(0,UPBuffer); 
SetIndexDrawBegin(0,38); 
SetIndexStyle(1,DRAW_ARROW); 
SetIndexArrow(1,242); 
SetIndexBuffer(1,DownBuffer); 
SetIndexDrawBegin(1,38); 
//---- 
return(0); 
} 
//+------------------------------------------------------------------+ 
//| FATLs | 
//+------------------------------------------------------------------+ 
int start() 
{ 
int i,counted_bars=IndicatorCounted(); 
double val1, val2, i1; 
bool trend,old; 
//---- 
if(Bars<=38) return(0); 
//---- initial zero 
if(counted_bars<38) 
{ 
for(i=1;i<=0;i++) UPBuffer[Bars-i]=0.0; 
for(i=1;i<=0;i++) DownBuffer[Bars-i]=0.0; 
} 
//---- 
i=Bars-38-1; 
if(counted_bars>=38) i=Bars-counted_bars-1; 
while(i>=0) 
{ 
val1= 
0.4360409450*Close[i+0] 
+0.3658689069*Close[i+1] 
+0.2460452079*Close[i+2] 
+0.1104506886*Close[i+3] 
-0.0054034585*Close[i+4] 
-0.0760367731*Close[i+5] 
-0.0933058722*Close[i+6] 
-0.0670110374*Close[i+7] 
-0.0190795053*Close[i+8] 
+0.0259609206*Close[i+9] 
+0.0502044896*Close[i+10] 
+0.0477818607*Close[i+11] 
+0.0249252327*Close[i+12] 
-0.0047706151*Close[i+13] 
-0.0272432537*Close[i+14] 
-0.0338917071*Close[i+15] 
-0.0244141482*Close[i+16] 
-0.0055774838*Close[i+17] 
+0.0128149838*Close[i+18] 
+0.0226522218*Close[i+19] 
+0.0208778257*Close[i+20] 
+0.0100299086*Close[i+21] 
-0.0036771622*Close[i+22] 
-0.0136744850*Close[i+23] 
-0.0160483392*Close[i+24] 
-0.0108597376*Close[i+25] 
-0.0016060704*Close[i+26] 
+0.0069480557*Close[i+27] 
+0.0110573605*Close[i+28] 
+0.0095711419*Close[i+29] 
+0.0040444064*Close[i+30] 
-0.0023824623*Close[i+31] 
-0.0067093714*Close[i+32] 
-0.0072003400*Close[i+33] 
-0.0047717710*Close[i+34] 
+0.0005541115*Close[i+35] 
+0.0007860160*Close[i+36] 
+0.0130129076*Close[i+37] 
+0.0040364019*Close[i+38]; 

val2= 
0.4360409450*Close[i+0+1] 
+0.3658689069*Close[i+1+1] 
+0.2460452079*Close[i+2+1] 
+0.1104506886*Close[i+3+1] 
-0.0054034585*Close[i+4+1] 
-0.0760367731*Close[i+5+1] 
-0.0933058722*Close[i+6+1] 
-0.0670110374*Close[i+7+1] 
-0.0190795053*Close[i+8+1] 
+0.0259609206*Close[i+9+1] 
+0.0502044896*Close[i+10+1] 
+0.0477818607*Close[i+11+1] 
+0.0249252327*Close[i+12+1] 
-0.0047706151*Close[i+13+1] 
-0.0272432537*Close[i+14+1] 
-0.0338917071*Close[i+15+1] 
-0.0244141482*Close[i+16+1] 
-0.0055774838*Close[i+17+1] 
+0.0128149838*Close[i+18+1] 
+0.0226522218*Close[i+19+1] 
+0.0208778257*Close[i+20+1] 
+0.0100299086*Close[i+21+1] 
-0.0036771622*Close[i+22+1] 
-0.0136744850*Close[i+23+1] 
-0.0160483392*Close[i+24+1] 
-0.0108597376*Close[i+25+1] 
-0.0016060704*Close[i+26+1] 
+0.0069480557*Close[i+27+1] 
+0.0110573605*Close[i+28+1] 
+0.0095711419*Close[i+29+1] 
+0.0040444064*Close[i+30+1] 
-0.0023824623*Close[i+31+1] 
-0.0067093714*Close[i+32+1] 
-0.0072003400*Close[i+33+1] 
-0.0047717710*Close[i+34+1] 
+0.0005541115*Close[i+35+1] 
+0.0007860160*Close[i+36+1] 
+0.0130129076*Close[i+37+1] 
+0.0040364019*Close[i+38+1]; 

i1=val1-val2; 
UPBuffer[i]=0.0; DownBuffer[i]=0.0; 

if (i1>0) trend=true; 
if (i1<0) trend=false; 

if ((! trend==old) && trend==true) UPBuffer[i]=Low[i]-5*Point; 
if ((! trend==old) && trend==false) DownBuffer[i]=High[i]+5*Point; 
old=trend; 

i--; 
} 
return(0); 
} 
//+------------------------------------------------------------------+ 

Comments