Forex Trend fxfariz
Download scriptThis specialized technical indicator is designed for the MetaTrader platform to assist traders in identifying momentum shifts and trend reversals, specifically tailored for scalping strategies on 5-minute charts. By analyzing price action over a defined lookback period, the script provides visual cues and real-time alerts to help users navigate market volatility.
Core Operational Logic
The logic of this script can be broken down into three primary phases:
1. Price Positioning and Normalization The tool begins by scanning a specific number of previous price bars (the "period") to identify the highest peak and the lowest valley reached during that time. It then calculates the current market price relative to this range. This allows the script to determine where the price sits—whether it is hugging the top, bottom, or sitting in the middle of the recent trading range.
2. Momentum Calculation Once the relative position of the price is established, the script converts this data into a smoothed value. It uses a mathematical smoothing technique (resembling a moving average logic) to ensure that the resulting trend doesn't react too violently to "noise" or tiny, insignificant price flickers. This calculation ensures that the trend line remains fluid but consistent, highlighting the underlying strength of the market movement.
3. Trend Identification and Alerting The final phase of the script interprets the smoothed values to determine the direction of the market:
- Upward Trend: When the calculated momentum crosses into positive territory, the script identifies an "Up" trend and highlights it visually (Aqua color).
- Downward Trend: When the momentum crosses into negative territory, the script identifies a "Down" trend and highlights it visually (Red color).
User Experience Features
To assist in active trading, the script includes a built-in notification system. Rather than just providing a visual line, it actively monitors for "crossovers"—the exact moment the momentum flips from positive to negative or vice versa. When these significant shifts occur on the current live bar, the script generates an automated alert on your screen, notifying you of the trend change in real-time. This allows traders to react quickly to momentum shifts without having to constantly stare at the charts.
//+------------------------------------------------------------------+
//| fxfariz_scalpingM5.mq4 |
//| fxfariz a.k.a warrior trader |
//| fxfariz@gmail,com |
//+------------------------------------------------------------------+
#property copyright "fxfariz a.k.a warrior trader"
#property link "fxfariz@gmail,com"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color2 Aqua
#property indicator_color3 Red
#property indicator_style2 STYLE_SOLID
#property indicator_style3 STYLE_SOLID
#property indicator_width2 2
#property indicator_width3 2
extern int period=23;
double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
double alertBar;
double last;
int init()
{
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
IndicatorShortName("Technique Scalping_TF5M by fxfariz");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);
return(0);
}
int start()
{
//int period=10;
int limit;
int counted_bars=IndicatorCounted();
double prev,current,old;
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
double price;
double MinL=0;
double MaxH=0;
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<Bars; i++)
{
MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)];
MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];
price = (High[i]+Low[i])/2;
if(MaxH-MinL == 0) Value = 0.33*2*(0-0.5) + 0.67*Value1;
else Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
Value=MathMin(MathMax(Value,-0.999),0.999);
if(1-Value == 0) ExtBuffer0[i]=0.5+0.5*Fish1;
else ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
Value1=Value;
Fish1=ExtBuffer0[i];
}
bool up=true;
for(i=Bars; i>=0; i--)
{
current=ExtBuffer0[i];
prev=ExtBuffer0[i+1];
if (((current<0)&&(prev>0))||(current<0)) up= false;
if (((current>0)&&(prev<0))||(current>0)) up= true;
if(!up)
{
ExtBuffer2[i]=current;
ExtBuffer1[i]=0.0;
if (i==0 && prev != 2 && ExtBuffer1[i] == 0 && Bars>alertBar) {Alert("ForexTrend Changing Down on ",Period()," ",Symbol());alertBar = Bars;last = 2;}
}
else
{
ExtBuffer1[i]=current;
ExtBuffer2[i]=0.0;
if (i==0 && last != 1 && ExtBuffer2[i] == 0 && Bars>alertBar) {Alert("ForexTrend Changing Up on ",Period()," ",Symbol());alertBar = Bars;last = 1;}
}
}
return(0);
}
Comments