Trigger Line

Download script
Trigger Line

This tool is designed to provide traders with a visual representation of price momentum and trend direction by calculating specific weighted averages on a trading chart. Rather than simply showing the raw price, it interprets historical data to generate "Trigger Lines" that help identify whether the current market movement is gaining strength or losing steam.

Core Logic Overview

The script operates by performing three primary mathematical actions to distill complex price movements into readable visual cues:

1. Weighted Data Accumulation The tool looks back at a specific number of previous price points (determined by the "Rperiod" setting). Instead of treating every historical price equally, it applies a weighted calculation. This means it gives more significance to certain parts of the data range, helping to smooth out minor "noise" while highlighting the underlying trend of the price action.

2. Linear Smoothing (LSMA) The script then takes that weighted data and processes it through a Linear Smoothed Moving Average. This secondary calculation acts as a stabilizer. It helps to define the "mean" path of the price, filtering out erratic fluctuations so that the trader can see the broader direction of the market more clearly.

3. Dynamic Trend Identification The most important part of this script is how it handles color coding and visibility based on the relationship between the weighted data and the smoothed average:

  • Trend Confirmation: When the primary weighted value sits above the smoothed average, the tool highlights the trend line in Blue.
  • Trend Reversal/Weakness: When the primary weighted value falls below the smoothed average, the script automatically hides those specific segments (setting them to "Empty").

How It Benefits the User

By using this logic, the indicator acts as a filter for market sentiment. Instead of seeing a cluttered chart of every price tick, the user sees refined lines that only appear when specific momentum conditions are met. It effectively helps differentiate between a strong upward trend (Blue) and periods where the price momentum is failing to sustain its previous height, allowing for a cleaner visual analysis of "Buy" or "Sell" territories.

Miscellaneous
Implements a curve of type %1
8 Views
0 Downloads
0 Favorites
Trigger Line
//+------------------------------------------------------------------+
//|                                                     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 = 24;
extern int LSMA_Period = 6;
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)*Open[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