Forex Trend fxfariz

Download script
Author: fxfariz a.k.a warrior trader
Forex Trend fxfariz

This 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.

Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
8 Views
0 Downloads
0 Favorites
Forex Trend fxfariz
//+------------------------------------------------------------------+
//|                                           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