//+------------------------------------------------------------------+ //| aedu-pricelevel.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Lime #property indicator_color2 DodgerBlue #property indicator_color3 Magenta #property indicator_color4 Yellow //--- input parameters extern int PERIOD=15; //--- buffers double MDBuffer[]; double UPBuffer[]; double DNBuffer[]; double SignalBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorDigits(Digits); //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,MDBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,UPBuffer); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,DNBuffer); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,SignalBuffer); SetIndexEmptyValue(0, -1); SetIndexEmptyValue(1, -1); SetIndexEmptyValue(2, -1); SetIndexEmptyValue(3, -1); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i,limit, ExtCountedBars=IndicatorCounted(); double mdprice,hprice,lprice,d,u,sum ; if (ExtCountedBars<0) return(-1); if (ExtCountedBars>0) ExtCountedBars--; limit=Bars-ExtCountedBars; for(i = limit ; i >= 0; i--) { d = iCustom(NULL, 0,"лоувол", PERIOD, 2, i) ; u = iCustom(NULL, 0,"хайвол", PERIOD, 2, i) ; sum = (u + d )*(High[i]+Low[i]) / 2; if (Close[i]>Open[i]){ hprice = (High[i] + Close[i])/2 + (u/100 * Low[i])/1000 ; lprice = (Open[i] + Low[i])/2 + (d/100 * High[i])/1000; mdprice = (hprice + lprice)/2+ sum/100/1000 ; } else { hprice = (High[i] + Open[i])/2 + (u/100 * Low[i])/1000 ; lprice = (Open[i] + Low[i])/2 + (d/100 * High[i])/1000 ; mdprice = (hprice + lprice)/2 + sum/100/1000 ; } UPBuffer[i] = (High[i] + hprice)/2 ; DNBuffer[i] = (Low[i] + lprice)/2 ; SignalBuffer[i] = ((High[i]+Low[i]) / 2 + mdprice)/2 ; MDBuffer[i] = (UPBuffer[i] + DNBuffer[i])/2; } return(0); } //+------------------------------------------------------------------+