Triggerlines2_v4

Download script
Triggerlines2_v4

This script is a technical analysis tool designed to help traders visualize price momentum and identify specific trend shifts on a trading chart. It works by calculating two distinct types of moving data and comparing them against one another to highlight potential market signals.

Core Mechanics

The logic relies on the interaction between two primary calculations:

  • Weighted Momentum Calculation: The tool looks back at a specific period of historical price data (defined by the Rperiod setting). Instead of treating every price point equally, it applies a weighting system where different points in time have different levels of importance. This creates a weighted average that reacts to recent price action more dynamically than a standard average.
  • Linear Smoothing: The script then takes that weighted data and applies a "Linear Smoothed Moving Average" (LSMA). This acts as a secondary filter, smoothing out the noise from the primary calculation to reveal the underlying trend of the momentum.

How it Visualizes Data

The script produces visual lines on your chart that represent these two different calculations:

  1. The Primary Signal: The script plots both the weighted value and the smoothed average.
  2. The "Trigger" Logic: This is where the tool becomes specific. The script constantly compares the weighted momentum to its smoothed average.
    • When the weighted momentum is higher than the smoothed average, both lines are displayed clearly on the chart.
    • When the weighted momentum falls below the smoothed average, the script hides those specific data points (leaving them blank).

Purpose for the User

By filtering out the data in this way, the tool is designed to visually highlight specific "triggers." It essentially cleans up the chart so that you only see the sections where the momentum is actively trending in a specific direction relative to its average. This helps traders ignore background noise and focus on the moments where the momentum reaches a significant threshold, making it easier to spot potential entry or exit points based on how the two lines interact with one another.

Miscellaneous
Implements a curve of type %1
16 Views
0 Downloads
0 Favorites
Triggerlines2_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
//----
extern int Rperiod = 24;
extern int LSMA_Period = 6;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//----
int width;
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void 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