Triggerlines2_v2

Download script
Triggerlines2_v2

The Trigger Line indicator is designed to provide traders with a visual representation of market momentum by identifying specific crossovers between two distinct types of moving averages. It serves as a technical tool to help filter out market "noise" and highlight potential trend shifts or entry points.

Core Logic and Functionality

The indicator operates by calculating and plotting two primary lines on your chart:

1. The Weighted Momentum Line (Weighting Calculation) Instead of using a standard moving average that treats all price data equally, the script employs a sophisticated weighting system. It looks back at a specific period of historical data (defined by the Rperiod setting) and applies a mathematical progression to the prices within that timeframe. This means that as the indicator moves through its calculation window, it gives more significance to certain segments of the price action, creating a "weighted" result that reflects the current momentum of the market.

2. The Linear Smoothed Moving Average (LSMA) To complement the weighted line, the script calculates a Linear Smoothed Moving Average. This is a refined smoothing technique used to identify the primary direction of the trend. By comparing the fast-reacting weighted data against this smoother average, the indicator can highlight whether the current price movement is gaining strength or losing steam.

Visual Behavior and Color Coding

The tool uses a dynamic coloring system to make it easier for a trader to interpret market conditions at a glance:

  • Trend Identification: The script compares the position of the weighted line against the smoothed average.
  • Dynamic Visibility: When the weighted momentum is higher than the smoothed average, both lines are displayed prominently on your chart (appearing as distinct color paths).
  • Filtering Outative Data: If the weighted momentum falls below the smoothed average, the indicator intelligently hides those specific data points (setting them to an "Empty Value").

Purpose for the Trader

By combining these two calculations, the script acts as a trend filter. It highlights periods where momentum is positively aligned with the moving average. When both lines are visible, it suggests a strengthening trend; when the values drop below the threshold and disappear, it signals a potential loss of momentum or a shift in market sentiment. This allows traders to focus on high-probability trends while visually ignoring periods of low-strength movement.

Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
Triggerlines2_v2
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                     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