Triggerlines2_v3
Download scriptThis technical indicator is designed to provide traders with a visual guide on market trends by analyzing price action and identifying specific momentum shifts. It operates by calculating and plotting two distinct types of moving averages simultaneously on the chart, allowing for a clearer distinction between current price movement and its underlying smoothing trend.
Core Logic and Mechanics
The script functions by processing historical price data to generate two primary visual components:
- Weighted Momentum Tracking: The tool calculates a weighted value based on the closing prices over a specific period (defined by the "Rperiod" setting). Unlike a standard average that treats all past prices equally, this logic applies more significance to specific segments of the timeframe. This helps in identifying the immediate "weight" or strength of the current price movement.
- Linearly Smoothed Average: To complement the weighted momentum, the script calculates a secondary, smoother trend line (based on the "LSMA_Period"). This serves as a baseline to help filter out minor market "noise" and highlight the broader direction of the price action.
Visual Representation and Signal Logic
The indicator distinguishes between these two values using color-coded lines on your chart:
- Trend Alignment: When the weighted momentum value is higher than the smoothed average, the tool highlights the data points (typically appearing in blue). This suggests a specific directional strength where the current momentum is leading above the smoothed baseline.
- Conditional Filtering: The script includes an automated filtering mechanism. It is designed to hide or "empty out" certain data lines when the weighted momentum falls below the smoothed average. By doing this, it visually streamlines the chart, ensuring that the user only sees the active trend signals rather than cluttered information.
Summary for the Trader
In practical terms, this script acts as a dynamic filter. It calculates the relationship between immediate price weight and long-term smoothing. By comparing these two values, it provides a visual cue of where momentum is strongest, while automatically hiding data that doesn't meet specific trend criteria to keep your workspace clean and focused on actionable price movements.
//+------------------------------------------------------------------+
//| Triggerlines.mq4 |
//| 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