_Amplitude_NBarsAvg

Author: komposter
1 Views
0 Downloads
0 Favorites
_Amplitude_NBarsAvg
//+------------------------------------------------------------------+
//|                                              		 Amplitude.mq4 |
//|                                                        komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
#property copyright "komposter"
#property link      "mailto:komposterius@mail.ru"

#property indicator_separate_window
#property indicator_minimum 0
#property  indicator_buffers 5
#property  indicator_color1  Chartreuse
#property  indicator_color2  Green
#property  indicator_color3  Blue
#property  indicator_color4  Red
#property  indicator_color5  SlateGray
#property indicator_width2 2
#property indicator_style5 2

double buf0[]; //High-Low Average
double buf1[]; //Body Average
double buf2[]; //Up_Shadow Average
double buf3[]; //Down_Shadow Average
double buf4[]; //Summ_Shadow Average

extern int AveragePeriod = 960;
extern int DrawBars		 = 500;

//---- EASY TO READ indicator parameters  

extern bool  show.info       = true;
extern int   win             = 1;
extern int price.x.offset    = 250;  //250
extern int price.y.offset    = -160; //-190
//+------------------------------------------------------------------+ 



int init()
{
	IndicatorShortName( "Ampltd( "+AveragePeriod+" barsAvg)HL,OC,(Hwg,Lwg)H+Lwg" );
//	IndicatorShortName( "Amplitude (" + AveragePeriod + " bars average)   -   " );
	IndicatorDigits ( 2 );

	SetIndexBuffer ( 0 , buf0 );
	SetIndexStyle ( 0 , DRAW_LINE );
	SetIndexDrawBegin ( 0 , AveragePeriod );
	SetIndexLabel( 0 , "High-Low");

	SetIndexBuffer ( 1 , buf1 );
	SetIndexStyle ( 1 , DRAW_LINE );
	SetIndexDrawBegin ( 1 , AveragePeriod );
	SetIndexLabel( 1 , "Open-Close");

	SetIndexBuffer ( 2 , buf2 );
	SetIndexStyle ( 2 , DRAW_LINE );
	SetIndexDrawBegin ( 2 , AveragePeriod );
	SetIndexLabel( 2 , "Up_Shadow");

	SetIndexBuffer ( 3 , buf3 );
	SetIndexStyle ( 3 , DRAW_LINE);
	SetIndexDrawBegin ( 3 , AveragePeriod );
	SetIndexLabel( 3 , "Down_Shadow");

	SetIndexBuffer ( 4 , buf4 );
	SetIndexStyle ( 3 , DRAW_LINE);
	SetIndexDrawBegin ( 4 , AveragePeriod );
	SetIndexLabel( 4 , "Summ_Shadow");

return(0);
}


int deinit() 
{ 
   ObjectDelete("NBA");
   ObjectDelete("NBA_TL");
   ObjectDelete("NBA_BL");
   ObjectDelete("NBA_MN");
   ObjectDelete("NBA_TR");
   ObjectDelete("NBA_BR");  
   ObjectDelete("NBA_LB");      
} 



int start()
{
	int counted_bars=IndicatorCounted();
	if ( counted_bars < 0 ) { Print( "Indicator Error (Counted bars < 0)!" ); return(-1); }
	if ( Bars < 100 ) { Print( "Indicator Error (Bars < 100)!" ); return(-1); }
	if ( AveragePeriod > Bars - 1 ) { IndicatorShortName( "Indicator Error (Bars < AveragePeriod)!" ); Print( "Indicator Error (BARS < AveragePeriod)!" ); return(-1); }
	if ( DrawBars > Bars - 1 || DrawBars <= 0 ) { DrawBars = Bars - 1; }
	if ( DrawBars <= AveragePeriod ) { DrawBars = AveragePeriod + 1; }

	for ( int i = DrawBars; i >= 0; i -- )
	{
		double buf_tmp = 0, buf_tmp1 = 0, buf_tmp2 = 0, buf_tmp3 = 0, buf_tmp4 = 0;
		int z = 0, z1 = 0, z2 = 0, z3 = 0, z4 = 0;
		double high, low, close, open, point = Point;

		for ( int u = i + AveragePeriod; u >= i; u -- )
		{
			high = High[u]; low = Low[u]; close = Close[u]; open = Open[u];
			
			buf_tmp += ( high - low ) / point;
			if ( ( high - low ) / point == 0 ) z --;

			buf_tmp1 += MathAbs( ( close - open ) ) / point;
			if ( MathAbs( ( close - open ) ) / point  == 0 ) z1 --;

			if ( close - open >= 0 )
			{
				buf_tmp2 += ( high - close ) / point;
				if ( ( high - close ) / point  == 0 ) z2 --;

				buf_tmp3 += ( open - low ) / point;
				if ( ( open - low ) / point  == 0 ) z3 --;
			}
			else
			{
				buf_tmp2 += ( high - open ) / point;
				if ( ( high - open ) / point  == 0 ) z2 --;

				buf_tmp3 += ( close - low ) / point;
				if ( ( close - low ) / point  == 0 ) z3 --;
			}
		}
		buf0[i] = buf_tmp  / ( AveragePeriod + z  );
		buf1[i] = buf_tmp1 / ( AveragePeriod + z1 );
		buf2[i] = buf_tmp2 / ( AveragePeriod + z2 );
		buf3[i] = buf_tmp3 / ( AveragePeriod + z3 );
		buf4[i] = buf2[i] + buf3[i];
		
	}



//+------------------------------------------------------------------+ 
if (show.info) {    

//int win  = WindowFind("_Amplitude_NBarsAvt"); 
   
int tDig = Digits ;
   
string tLabl = "NBA" ;

string tMain =  DoubleToStr( buf0[0] , tDig ) ;  
string tTopL =  DoubleToStr( buf2[0] , tDig ) ; 
string tBotL =  DoubleToStr( buf3[0] , tDig ) ; 
string tTopR =  DoubleToStr( buf1[0] , tDig ) ; 
string tBotR =  DoubleToStr( buf4[0] , tDig ) ; 

color cLabl =  Gray ;
color cMain =  White ;   
color cTopL =  Lime ; 
color cBotL =  Crimson  ; 
color cTopR =  Orange ; 
color cBotR =  Silver ;


   ObjectCreate("NBA_LB", OBJ_LABEL, win, 0, 0);// main LABEL
   ObjectSetText("NBA_LB", tLabl , 30, "Arial Bold", cLabl );
   ObjectSet("NBA_LB", OBJPROP_CORNER, 0);
   ObjectSet("NBA_LB", OBJPROP_XDISTANCE, 760+price.x.offset);
   ObjectSet("NBA_LB", OBJPROP_YDISTANCE, 160+price.y.offset);
 
   ObjectCreate("NBA_TL", OBJ_LABEL, win, 0, 0);// top left LABEL
   ObjectSetText("NBA_TL", tTopL , 15, "Arial Bold", cTopL );
   ObjectSet("NBA_TL", OBJPROP_CORNER, 0);
   ObjectSet("NBA_TL", OBJPROP_XDISTANCE, 770+price.x.offset);
   ObjectSet("NBA_TL", OBJPROP_YDISTANCE, 197+price.y.offset);
   
   ObjectCreate("NBA_BL", OBJ_LABEL, win, 0, 0);//HiLow LABEL
   ObjectSetText("NBA_BL", tBotL , 15, "Arial Bold", cBotL );
   ObjectSet("NBA_BL", OBJPROP_CORNER, 0);
   ObjectSet("NBA_BL", OBJPROP_XDISTANCE, 770+price.x.offset);
   ObjectSet("NBA_BL", OBJPROP_YDISTANCE, 260+price.y.offset);                 
                     
   ObjectCreate("NBA_MN", OBJ_LABEL, win, 0, 0);//HiLow LABEL
   ObjectSetText("NBA_MN", tMain , 40, "Arial Bold", cMain );
   ObjectSet("NBA_MN", OBJPROP_CORNER, 0);
   ObjectSet("NBA_MN", OBJPROP_XDISTANCE, 800+price.x.offset); // 765
   ObjectSet("NBA_MN", OBJPROP_YDISTANCE, 210+price.y.offset); 
           
 
   ObjectCreate("NBA_TR", OBJ_LABEL, win, 0, 0);
   ObjectSetText("NBA_TR", tTopR , 15, "Arial Bold", cTopR );
   ObjectSet("NBA_TR", OBJPROP_CORNER, 0);
   ObjectSet("NBA_TR", OBJPROP_XDISTANCE, 860+price.x.offset);
   ObjectSet("NBA_TR", OBJPROP_YDISTANCE, 197+price.y.offset);
                 
   ObjectCreate("NBA_BR", OBJ_LABEL, win, 0, 0);
   ObjectSetText("NBA_BR", tBotR , 15, "Arial Bold", cBotR );
   ObjectSet("NBA_BR", OBJPROP_CORNER, 0);
   ObjectSet("NBA_BR", OBJPROP_XDISTANCE, 860+price.x.offset);
   ObjectSet("NBA_BR", OBJPROP_YDISTANCE, 260+price.y.offset);    
    
 
//+------------------------------------------------------------------+  
   WindowRedraw();    
} 

return(0);
}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---