LSMA_ind_04
Download scriptThis script functions as a specialized visual tool for traders, designed to identify trend shifts and potential entry points by analyzing price movement over a specific period. Rather than simply reacting to immediate price spikes, the logic uses a smoothed calculation to filter out "noise," making it easier to see the underlying direction of the market.
Core Logic and Visualization
The tool operates through three primary stages of analysis:
1. Trend Smoothing and Calculation The script looks back at a set number of previous price bars (defined by a user-adjustable period). It calculates a weighted value based on these prices, which allows it to create a "flowing" line on your chart. This line represents the smoothed momentum of the market.
2. Color-Coded Momentum Tracking The script constantly compares the current smoothed value against the previous one to determine the direction of the trend:
- Downward Movement: When the current smoothed value is lower than the previous one, the indicator highlights this movement (typically associated with selling pressure).
- Upward Movement: When the current smoothed value is higher than the previous one, it highlights the upward momentum (associated with buying pressure).
The script uses these color transitions to keep track of "streaks." It essentially counts how many consecutive bars the market has been moving in a specific direction.
3. Entry Signal Generation Instead of providing a signal on every single price movement, the logic includes a "quality" filter. It requires the market to maintain a consistent trend for a specific number of consecutive bars before it triggers a visual alert:
- Buy Signals: If the market maintains a positive (upward) trend for a predetermined number of bars, the script places a specific marker on the chart.
- Sell Signals: If the market maintains a negative (downward) trend for that same duration, a corresponding marker is placed at the opposite end of the price action.
Summary for the User
In simple terms, this tool acts as a trend-following filter. It ignores minor fluctuations and only alerts you when the market has shown sustained, consistent movement in one direction for a specific length of time. This helps traders identify established trends rather than jumping into trades based on erratic, short-term price changes.
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| LSMA |
//+------------------------------------------------------------------+
#property copyright "Copywrong 2005 RonT"
#property link "http://www.lightpatch.com/forex/"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Yellow
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 White
#property indicator_color5 White
#property indicator_color6 Green
#property indicator_color7 Red
//---- buffers
double ExtMapBuffer1[]; //Yellow
double ExtMapBuffer2[]; //Green
double ExtMapBuffer3[]; //Red
double XBuffer[]; //White
double ZBuffer[]; //White
double ExtMapBuffer6[]; //Green
double ExtMapBuffer7[]; //Red
extern int extRperiod = 32;
extern int extDraw4HowLong = 500;
int flip=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,ExtMapBuffer1); //Yellow
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(1,ExtMapBuffer2); //Green
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(2,ExtMapBuffer3); //Red
SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 2);
// 233 up arrow
// 234 down arrow
// 158 little dot
// 159 big dot
// 168 open square
// 120 box with X
SetIndexStyle(3,DRAW_ARROW);
SetIndexBuffer(3, XBuffer); //White
SetIndexArrow(3,120);
SetIndexStyle(4,DRAW_ARROW);
SetIndexBuffer(4, ZBuffer); //White
SetIndexArrow(4,158);
SetIndexBuffer(5,ExtMapBuffer6); //Green
SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 2);
SetIndexBuffer(6,ExtMapBuffer7); //Red
SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 2);
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
int i;
for( i=0; i<Bars; i++ ) ExtMapBuffer1[i]=0;
for( i=0; i<Bars; i++ ) ExtMapBuffer2[i]=0;
for( i=0; i<Bars; i++ ) ExtMapBuffer3[i]=0;
for( i=0; i<Bars; i++ ) XBuffer[i]=0;
for( i=0; i<Bars; i++ ) ZBuffer[i]=0;
for( i=0; i<Bars; i++ ) ExtMapBuffer6[i]=0;
for( i=0; i<Bars; i++ ) ExtMapBuffer7[i]=0;
return(0);
}
int start()
{
//----- variables
int c;
int i;
int length;
double lengthvar;
int loopbegin;
int pos;
double sum;
double tmp;
int width;
double wtp; //previous value
double wt; //current value
int rc=0;
int gc=0;
int qualcount;
double p=Point;
length = extRperiod;
loopbegin = extDraw4HowLong - length - 1;
for(pos = loopbegin; pos >= 0; pos--)
{
sum = 0;
for(i = length; i >= 1 ; i--)
{
lengthvar = length + 1;
lengthvar /= 3;
tmp = 0;
tmp = ( i - lengthvar)*Close[length-i+pos];
sum+=tmp;
}
wtp=wt;
wt = sum*6/(length*(length+1));
ExtMapBuffer1[pos] = wt; //yellow
ExtMapBuffer2[pos] = wt; //green
ExtMapBuffer3[pos] = wt; //red
//ExtMapBuffer6[pos] = wt-(p*3); //green
//ExtMapBuffer7[pos] = wt+(p*3); //red
if (wtp > wt)
{
ExtMapBuffer2[pos] = EMPTY_VALUE; //remove GREEN
//ExtMapBuffer6[pos] = wt-(p*10); //remove GREEN
rc++;
// Close any orders
if (gc>0) {gc=0; flip++;}
ZBuffer[pos]=Low[pos];
}
else
{
ExtMapBuffer3[pos] = EMPTY_VALUE; //remove RED
//ExtMapBuffer7[pos] = wt+(p*10); //remove RED
gc++;
if (rc>0) {rc=0; flip++;}
ZBuffer[pos]=High[pos];
}
//Comment("wtp=",wtp,"\nwt=",wt,"\nRed=",rc,"\nGreen=",gc);
if (flip==1) {qualcount=6;}
if (flip>1) {qualcount=9;}
if (gc==qualcount)
{
// indicate buy order
XBuffer[pos]=High[pos];
flip=0;
}
if (rc==qualcount)
{
// indicate sell order
XBuffer[pos]=Low[pos];
flip=0;
}
}
return(0);
}
//+------------------------------------------------------------------+
Comments