Triggerlines_003

Download script
Triggerlines_003

This tool is designed as a visual technical indicator for trading platforms, specifically built to help traders identify trends by analyzing price momentum and smoothness. It functions by calculating two distinct types of moving averages and plotting them on your chart to reveal the underlying strength of market movements.

Core Logic and Mechanics

The script operates using a dual-layered calculation approach:

1. Momentum Weighted Calculation Instead of simply averaging prices over a set period, the logic applies a "weighted" approach. It calculates the importance of price data based on its position in time. By applying a specific mathematical weight to recent prices compared to older ones, it produces a line that is more responsive to current market volatility while still filtering out minor "noise."

2. The Smoothing Layer (LSMA) The script then takes that weighted data and passes it through a secondary smoothing process (Linear Weighted Moving Average). This creates a secondary, more stable line. Think of this as a "trend-follower" that rounds off the sharper edges of the primary momentum data to show the broader direction of the market.

Visual Behavior and Interpretation

The indicator provides real-time visual feedback through specific color coding and dynamic visibility:

  • Trend Identification: By comparing the weighted price line against the smoothed trend line, the script helps users see where the current price action is positioned relative to its recent history.
  • Dynamic Filtering: The logic includes a specific "visibility filter." When the momentum falls below the smoothed average, certain lines are intentionally hidden (set to empty values). This is designed to clean up the chart, ensuring that only significant trend signals are highlighted to the user.
  • Visual Clarity: By using different colors for these calculations, the tool allows you to quickly distinguish between immediate price momentum and the long-term moving average.

Summary for the User

Essentially, this script acts as a "filter" for price action. It processes raw market data into two smooth lines that react differently to speed and direction. By hiding specific segments when certain conditions are met, it aims to provide a cleaner visual path for identifying whether the market is currently trending upward or downward, helping to filter out distracting fluctuations.

Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
Triggerlines_003
//+------------------------------------------------------------------+
//|                                                     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 = 15;
extern int LSMA_Period = 5;
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