TriggerLines_v4

Download script
TriggerLines_v4

Overview

The Trigger Line is a technical analysis tool designed to help traders visualize price momentum and identify potential trend shifts. Rather than simply tracking the raw price of an asset, this script calculates a specialized moving average—specifically a Linear Weighted Moving Average (LSMA)—to smooth out market noise and reveal the underlying "flow" of the market.

Core Logic and Mechanics

The indicator functions by performing three primary mathematical operations:

1. Dynamic Weighting Unlike standard moving averages that treat all past prices equally, this script applies a specific weight to price data. It calculates a cumulative sum where more recent price action carries more significance than older data. This allows the indicator to react more quickly to sudden market movements while still maintaining a smooth visual path.

2. Linear Smoothing (LSMA) The script takes the weighted data and processes it through a linear smoothing formula. This creates a "smoothed" trend line. By comparing the raw weighted values against this smoothed average, the tool helps distinguish between temporary price fluctuations (noise) and sustained directional trends.

3. Trend Filtering and Visual Signaling The most important functional aspect of this script is its logic for "filtering" information on your chart:

  • Data Overlay: The script calculates two primary lines: a fast-moving weighted value and a secondary smoothed trend line.
  • Conditional Visibility: To keep the chart clean and focused, the script uses logic to hide specific data points. It evaluates the relationship between the fast weighted value and the smoothed average.
  • The "Trigger": When the fast value falls below the smoothed average, the script suppresses certain visual outputs (setting them to an empty value). This serves to highlight only the most relevant trend information, effectively filtering out data that does not meet the specific criteria of the "Trigger" logic.

How it Appears on Your Chart

To the user, this logic manifests as a dynamic set of lines that change based on price action:

  • Trend Identification: The lines provide a clear visual representation of the current momentum.
  • Reduced Clutter: Because the script automatically "hides" certain values based on its internal math, it prevents your chart from becoming overwhelmed with unnecessary information.
  • Signal Clarity: By only showing specific data when conditions are met, it acts as a visual filter, helping traders focus on significant trend movements rather than every minor price tick.
Miscellaneous
Implements a curve of type %1
12 Views
0 Downloads
0 Favorites
TriggerLines_v4
//+------------------------------------------------------------------+
//|                                                     Trigger Line |
//|                             Copyright © 2005 dwt5 and adoleh2000 |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005 dwt5 and adoleh2000 "
#property  link      "http://www.metaquotes.net/"

//---- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 4            
#property indicator_color1 Red      
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Blue

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];

int width;

extern int Rperiod = 20;
extern int LSMA_Period = 20;
int Draw4HowLong;
int shift;
int i;
int j;
int loopbegin;
int length;
int lsma_length;

double lengthvar;
double tmp ;
double tmp2 ;
double wt[];
double sum[];
double lsma_sum[];
double lsma_ma[];
double middle[];
int c;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 7 additional buffers are used for counting.
   IndicatorBuffers(7);   
   
//---- drawing settings
   
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);
   
   
   
   SetIndexBuffer(4,sum);        
   SetIndexBuffer(5,wt);         
   SetIndexBuffer(6,lsma_ma);
   
//---- initialization done
   return(0);
  }

int start()

  {   Draw4HowLong = Bars-Rperiod - 5;                            //Rperiod = 20
      length = Rperiod;                                           //length now = 20  
      lsma_length = LSMA_Period;
      loopbegin = Draw4HowLong - length - 1;   
      

      for(shift = loopbegin; shift >= 0; shift--)  //  MAIN For Loop
      { 
         sum[1] = 0;                                              
         for(i = length; i >= 1  ; i--)             //LSMA loop
         {
         lengthvar = length + 1;                               //lengthvar = 21  
         lengthvar /= 3;                                       //lengthvar = 7
         tmp = 0;
         tmp = ( i - lengthvar)*Close[length-i+shift];         //tmp = 20 - 7 * close[20-i+shift]
         sum[1]+=tmp;
         }
         wt[shift] = sum[1]*6/(length*(length+1));  
         j = shift;
         lsma_ma[shift] = wt[j+1] + (wt[j]-wt[j+1])* 2/(lsma_length+1);
  
                          
//========== COLOR CODING ===========================================                       
        
        
            ExtMapBuffer1[shift] = wt[shift]; 
            ExtMapBuffer2[shift] = lsma_ma[shift]; 
            ExtMapBuffer3[shift] = wt[shift]; 
            ExtMapBuffer4[shift] = lsma_ma[shift]; 
            
            
            
            if (wt[shift]  < lsma_ma[shift])
            {
                ExtMapBuffer4[shift] = EMPTY_VALUE;
                ExtMapBuffer3[shift] = EMPTY_VALUE;
           }          
        
        }
  }
//+------------------------------------------------------------------+



Comments