/*-----------------------------+ | | | Shared by www.Aptrafx.com | | | +------------------------------*/ //+------------------------------------------------------------------+ //| | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, FX Sniper " #property link "http://www.metaquotes.net/" //---- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 White #property indicator_color2 Red double Buffer1[]; //White double Buffer2[]; //Red // User input extern int Rperiod1 = 15; extern int Rperiod2 = 30; extern int Rperiod3 = 60; extern int Draw4HowLong = 400; //Static double lsma0a; double lsma1a; double lsma0b; double lsma1b; double lsma0c; double lsma1c; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(6); // 233 up arrow // 234 down arrow // 159 big dot SetIndexBuffer(0,Buffer1); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233); //up SetIndexBuffer(1,Buffer2); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234); //down } int start() { int shift; int i; int dir3; for(shift = Draw4HowLong; shift >= 0; shift--) { dir3=0; lsma1a=lsma0a; lsma1b=lsma0b; lsma1c=lsma0c; lsma0a = LSMA(Rperiod1,shift); lsma0b = LSMA(Rperiod2,shift); lsma0c = LSMA(Rperiod3,shift); if ( lsma1a > lsma0a ) dir3++; if ( lsma1b > lsma0b ) dir3++; if ( lsma1c > lsma0c ) dir3++; if ( lsma1a < lsma0a ) dir3--; if ( lsma1b < lsma0b ) dir3--; if ( lsma1c < lsma0c ) dir3--; Buffer1[shift]=CLR_NONE;//EMPTY_VALUE; Buffer2[shift]=CLR_NONE;//EMPTY_VALUE; if ( dir3 == 3 ) Buffer2[shift]=High[shift]; if ( dir3 == (-3) ) Buffer1[shift]=Low[shift]; } } double LSMA(int myLPeriod, int myShift ) { int myI; double myLengthvar; double mySum=0; myLengthvar = myLPeriod + 1; myLengthvar /= 3; for(myI = myLPeriod; myI >= 1 ; myI--) { mySum += ( myI - myLengthvar)*Open[myLPeriod-myI+myShift]; } return( mySum*6/(myLPeriod*(myLPeriod+1)) ); }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: