Forex Trend fxfarizf

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

This trading tool is designed as a visual indicator for the MetaTrader platform, specifically optimized for "scalping"—a trading strategy that involves taking advantage of small, rapid price movements. It provides traders with a clear, color-coded visual aid to help identify momentum shifts and potential trend reversals in real-time.

Core Logic and Methodology

The script operates by analyzing the price action over a specific window of time (determined by a user-defined period). Here is a breakdown of how it processes information:

1. Price Range Analysis The tool constantly scans the highest and lowest prices reached within its look-back period. By identifying these boundaries, it establishes a "trading zone." It then calculates where the current price sits relative to that zone. This helps the indicator determine if the market is currently leaning toward the top (resistance) or the bottom (support).

2. Momentum Smoothing Instead of reacting erratically to every tiny price tick, the script uses a mathematical smoothing technique. It takes the current price position and blends it with previous data points. This "smoothing" filters out market noise, ensuring that the resulting signals are based on sustained movements rather than momentary fluctuations.

3. Signal Conversion The logic transforms these smoothed values into a specific visual format. It uses a logarithmic calculation to accentuate shifts in momentum. This helps to more clearly define when a trend is gaining significant strength or beginning to lose steam.

4. Trend Detection and Visual Feedback The final output is represented by two distinct colors (Blue and White) displayed as a histogram:

  • Trend Identification: The script monitors the direction of the smoothed momentum. When the data crosses a specific threshold, it recognizes a change in trend direction.
  • Visual Cues: One color dominates when the upward momentum is strongest, while the other takes over when downward pressure becomes the prevailing force. This allows traders to see at a glance which way the "weight" of the market is moving.

Alerts and Notifications

The script includes a built-in notification system. When the indicator detects a significant trend crossing—moving from an upward bias to a downward bias, or vice versa—it can trigger an automated alert. This ensures that traders who are not constantly staring at the charts can be notified immediately of a potential shift in market sentiment.

Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
10 Views
0 Downloads
0 Favorites
Forex Trend fxfarizf
//+------------------------------------------------------------------+
//|                                           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  Blue
#property  indicator_color3  White
#property indicator_style2 STYLE_SOLID
#property indicator_style3 STYLE_SOLID
#property indicator_width2 2
#property indicator_width3 2

extern int  period=23;
extern bool alarm=false;

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 (alarm && i==0 && last != 2 && ExtBuffer1[i] == 0 && Bars>alertBar) 
        {
            Alert("ForexTrend Crossing up ",Period()," ",Symbol());
            alertBar = Bars;last = 2;
        }
       }
        
       else
       {
         ExtBuffer1[i]=current;
          ExtBuffer2[i]=0.0;
        if (alarm && i==0 && last != 1 && ExtBuffer2[i] == 0 && Bars>alertBar) 
        {
            Alert("ForexTrend Crossing down ",Period()," ",Symbol());
            alertBar = Bars;
            last = 1;
        }
       }
     }

   return(0);
  }

Comments