Triggerlines2

Download script
Triggerlines2

This indicator, titled "Trigger Line," is designed to provide traders with a visual representation of price momentum and trend direction by calculating two distinct mathematical values on the chart. Its primary purpose is to filter market noise and identify specific zones where the price sentiment might be shifting.

Core Logic and Calculations

The script operates by analyzing historical price data over a specific period (defined by the user as the "Rperiod"). It performs the following steps:

1. Weighted Momentum Calculation Instead of looking at simple averages, the tool applies a weighted calculation to the price history. It treats more recent data points differently than older ones, creating a dynamic value that reflects current momentum. This results in a "weighted" line that tracks the movement of the market with greater sensitivity to recent price action.

2. Linear Smoothing (LSMA) The script also calculates a Linear Weighted Moving Average (LSMA). This serves as a smoother, more stable baseline. By blending the weights of historical prices, it provides a clear picture of the underlying trend, effectively "ironing out" minor fluctuations that often distract from the primary direction of the market.

Visual Representation and Signaling

The indicator renders these two calculations on your chart simultaneously. The core logic relies on the relationship between these two lines to provide visual cues:

  • Trend Identification: By comparing the weighted momentum against the smoothed average, the tool helps users see whether the current momentum is accelerating faster than the general trend or slowing down.
  • Dynamic Color Coding: One of the most important features of this script is its conditional visibility. The indicator identifies "active" signals based on the position of these lines relative to one another. When the momentum value falls below the smoothed average, the indicator hides specific data points (rendering them invisible).

Summary for the Trader

In essence, this tool acts as a trend-following filter. It helps you visualize where the market has significant "weight" and strength. By dynamically showing or hiding certain line segments based on their relationship to the moving average, it aims to highlight specific price movements while suppressing data that does not meet its internal momentum criteria.

Miscellaneous
Implements a curve of type %1
15 Views
0 Downloads
0 Favorites
Triggerlines2
//+------------------------------------------------------------------+
//|                                                     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