Author: Ramdass - Conversion only
FATLs_v1

This indicator is designed to identify specific trend shifts in financial markets by analyzing price movements over a defined historical period. Rather than relying on simple moving averages, it uses a sophisticated mathematical weighting system to detect changes in momentum.

Core Logic and Functionality

Weighted Data Analysis The script functions by looking at a window of 39 previous price bars. Instead of treating every price point equally, it applies a unique mathematical coefficient (a specific weight) to each bar. This means that some past prices have a much stronger influence on the current calculation than others. This specialized weighting is designed to filter out market "noise" and highlight more significant price actions.

Trend Detection Mechanism The system calculates two distinct values based on these weighted averages:

  1. It assesses the current weighted state of the market.
  2. It compares this against the immediate preceding weighted state.

By calculating the difference between these two values, the script determines the direction of the price flow. If the resulting calculation is positive, it signifies upward momentum; if negative, it signifies downward momentum.

Visual Signaling The primary purpose of this tool is to provide clear visual cues on your chart when a trend reversal occurs:

  • Buy Signals: When the logic detects a shift from a downward trend to an upward trend, a blue arrow is plotted below the candle.
  • Sell Signals: When the logic detects a shift from an upward trend to a downward trend, a red arrow is plotted above the candle.

Key Features for the User

  • Trend Transition Awareness: The indicator does not plot an arrow on every candle; it specifically waits for the moment the trend "flips," providing alerts for potential entry or exit points.
  • Precision Smoothing: By using a 39-period weighted calculation, the script attempts to provide a more nuanced view of price action compared to standard indicators that might react too quickly to minor fluctuations.
  • Clean Visualization: The logic is built to keep your chart clean, only displaying arrows at the exact point where the mathematical trend change is confirmed.
Miscellaneous
Implements a curve of type %1
10 Views
0 Downloads
0 Favorites
FATLs_v1
//+------------------------------------------------------------------+ 
//| 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