LSMA_in_color_00a_v1

Download script
LSMA_in_color_00a_v1

This technical indicator is designed to provide visual market analysis by identifying potential trend reversals and momentum shifts through a specialized calculation of price averages. It serves as an informative overlay for your trading charts, helping to filter out market "noise" to highlight significant price movements.

Core Logic and Mechanics

Dynamic Trend Mapping The script calculates a weighted average based on a specific look-back period (the "length"). Unlike a simple moving average that treats all past prices equally, this logic applies more weight to recent price action. By doing so, it reacts more fluidly to current market changes while maintaining the context of historical data.

Visual Boundaries (The Signal Zones) The indicator generates three primary visual lines on your chart:

  • The Core Line (Yellow): This represents the primary calculated weighted average. It acts as the baseline for the current trend.
  • The Upper and Lower Bounds (Green and Red): The script automatically creates a small "buffer zone" around the core line. These lines represent the immediate volatility area surrounding the current price average.

Momentum Tracking The logic constantly compares the current weighted value against the previous one. By monitoring these fluctuations, the script identifies whether the market is gaining upward momentum or experiencing a downward shift. It essentially "watches" the direction of the trend to detect when the energy of the market is changing.

Entry Signal Logic The indicator includes a built-in counting mechanism to help identify high-probability zones:

  • Consecutive Movements: The script tracks how many times the price has moved in a specific direction relative to its weighted average.
  • Signal Generation: When the market exhibits a sustained trend of 6 consecutive movements in one direction, the indicator triggers a visual marker on the chart. These markers serve as alert points, suggesting that a potential trading opportunity (either a Buy or Sell signal) may be forming based on established momentum.

Summary for the Trader

Instead of just showing you where the price is, this tool tells you what the "heartbeat" of the market looks like. It filters price history into a smoothed trend line and then watches for specific patterns of movement. When the market stays consistently on one side of that trend line for a set period, the script highlights it with a visual icon, allowing you to spot potential entries without having to manually guess where the momentum is shifting.

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

//+------------------------------------------------------------------+
//| LSMA indicator with global variables to drive a companion expert |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005, FX Sniper "
#property  link      "http://www.metaquotes.net/"

//---- indicator settings
#property  indicator_chart_window

#property indicator_buffers   5
#property indicator_color1  Yellow      
#property indicator_color2  Green
#property indicator_color3  Red
#property indicator_color4  White
#property indicator_color5  White


//---- buffers
double ExtMapBuffer1[];  //Yellow
double ExtMapBuffer2[];  //Green
double ExtMapBuffer3[];  //Red
double XBuffer[];        //White
double ZBuffer[];        //White

extern int extRperiod = 32;
extern int extDraw4HowLong = 500;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {

   SetIndexBuffer(0,ExtMapBuffer1);   //Yellow
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);

   SetIndexBuffer(1,ExtMapBuffer2);  //Green
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);

   SetIndexBuffer(2,ExtMapBuffer3);  //Red
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2);


   // 233 up arrow
   // 234 down arrow
   // 158 little dot
   // 159 big dot
   // 168 open square
   // 120 box with X
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexBuffer(3, XBuffer);     //White
   SetIndexArrow(3,120);

   SetIndexStyle(4,DRAW_ARROW);
   SetIndexBuffer(4, ZBuffer);     //White
   SetIndexArrow(4,159);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   int i;
   
   for( i=0; i<Bars; i++ ) ExtMapBuffer1[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer2[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer3[i]=0;
   for( i=0; i<Bars; i++ ) XBuffer[i]=0;
   for( i=0; i<Bars; i++ ) ZBuffer[i]=0;

   return(0);
  }


int start()
  {   

   //----- variables
   int    c;
   int    i;
   int    length;
   double lengthvar;
   int    loopbegin;
   int    pos;
   double sum;
   double tmp;
   int    width;

   double wtp; //previous value
   double wt;  //current value
   int    rc=0;
   int    gc=0;
   
   double p=Point;
   
   length = extRperiod;
   loopbegin = extDraw4HowLong - length - 1;
 
   for(pos = loopbegin; pos >= 0; pos--)
     { 
      sum = 0;
      for(i = length; i >= 1  ; i--)
        {
         lengthvar = length + 1;
         lengthvar /= 3;
         tmp = 0;
         tmp = ( i - lengthvar)*Close[length-i+pos];
         sum+=tmp;
        }
         
      wtp=wt;
      wt = sum*6/(length*(length+1));
         
      ExtMapBuffer1[pos] = wt;   //yellow
      ExtMapBuffer2[pos] = wt+(10*Point());   //green
      ExtMapBuffer3[pos] = wt-(10*Point());   //red 

      if (wtp > wt)
        {
         ExtMapBuffer2[pos+1] = wt; //remove GREEN
         rc++;
         ZBuffer[pos]=Low[pos];
        }
      else
        {
         ExtMapBuffer3[pos+1] = wt; //remove RED
         gc++;
         ZBuffer[pos]=High[pos];
        }

      //Comment("wtp=",wtp,"\nwt=",wt,"\nRed=",rc,"\nGreen=",gc);
      
      
      if (gc>0 && rc>0)
        {
         // Close any orders
         gc=0; 
         rc=0;
        }
      
      if (gc==6)
        {
         // indicate buy order 
         XBuffer[pos]=High[pos];
        }
        
      if (rc==6)
        {
         // indicate sell order 
         XBuffer[pos]=Low[pos];
        }

     }

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



Comments