StratoTriggerlines

Download script
StratoTriggerlines

This script functions as a visual trading tool designed to help identify momentum and trend shifts on a price chart. It processes historical price data to generate specific "Trigger Lines" that signal when market conditions might be changing.

Core Logic and Methodology

The tool operates by analyzing the relationship between two distinct mathematical averages. Rather than simply looking at a standard moving average, it uses a more sophisticated calculation:

  • Weighted Price Analysis: The script first calculates a weighted value based on a user-defined period. By applying specific weights to different price points within that period, it gives more significance to certain data points, allowing the tool to react to price movements with more nuance than a basic average.
  • Linear Smoothening: It then takes those weighted values and applies a Linear Smoothened Moving Average (LSMA). This creates a secondary line that is less volatile and follows the primary weighted trend more fluidly.

Visual Behavior and Signaling

The primary purpose of this script is to show the interaction between these two calculations. On your chart, you will see lines rendered in different colors based on their relationship to one another:

  1. Trend Tracking: The indicator constantly compares the "Weighted" value against the "Smoothened" average.
  2. Conditional Visibility: To keep the chart clean and focus on specific signals, the script uses a logic-gate for its coloring. It only displays specific lines (the Blue components) when the weighted value is positioned above the smoothed average.
  3. Market Signal: When the conditions change and the values flip positions, the indicator effectively "hides" or changes the visual output of those specific lines. This creates a clear visual cue for the user, highlighting periods where the short-term momentum is moving in a specific direction relative to the smoothed trend.

In summary, this tool filters out market noise by calculating a weighted price movement and then providing a visual "trigger" whenever that movement confirms a specific directional strength.

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