#property indicator_chart_window #property indicator_buffers 5 #property indicator_color1 DodgerBlue #property indicator_color2 Magenta #property indicator_color3 Yellow #property indicator_color4 Red #property indicator_color5 DodgerBlue #property indicator_width1 1 #property indicator_width2 1 #property indicator_width3 1 #property indicator_width4 2 #property indicator_width5 2 //--- input parameters extern int PERIOD = 20 ; extern int Schift = -1 ; extern double Variator_S = 1.85 ; extern double Variator = 777777 ; extern int up_ARROW = 233 ; extern int dn_ARROW = 234 ; //--- buffers double UPBuffer[]; double DNBuffer[]; double SignalBuffer[]; double bayBuffer[],sellBuffer[]; int ExtCountedBars=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorDigits(Digits); //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,UPBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,DNBuffer); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,SignalBuffer); SetIndexShift(0,Schift); SetIndexShift(1,Schift); SetIndexBuffer(3,bayBuffer); SetIndexBuffer(4,sellBuffer); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,up_ARROW); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,dn_ARROW); SetIndexEmptyValue(0,-1); SetIndexEmptyValue(1,-1); SetIndexEmptyValue(2,-1); SetIndexEmptyValue(3,0.0); SetIndexEmptyValue(4,0.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { string on; int i,limit,ExtCountedBars=IndicatorCounted(); double d , u , sum ; double spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;//СПРЕД if (ExtCountedBars<0) return(-1); if (ExtCountedBars>0) ExtCountedBars--; limit=Bars-ExtCountedBars; for(i = limit ; i >= 0; i--) { d = iCustom(NULL, 0,"клоузвол-х", PERIOD, 1, i) ; u = iCustom(NULL, 0,"клоузвол-х", PERIOD, 3, i) ; sum = iCustom(NULL, 0,"клоузвол-х", PERIOD, 6, i) ; double Sell =( High[i]+0.7*spread) + d/Variator ; UPBuffer[i] = Sell; double Bay = (Low[i]- spread) - u/Variator ; DNBuffer[i] = Bay; if(Close[i] >= Open[i]){ double Signal_Sell = (High[i]+Low[i])/2 +sum*Variator_S/Variator+ spread; SignalBuffer[i] = Signal_Sell;} if(Close[i] < Open[i]){ double Signal_Bay = (High[i]+Low[i])/2 -MathAbs(sum)*Variator_S/Variator- spread; SignalBuffer[i] = Signal_Bay;} bayBuffer[i] = EMPTY_VALUE; sellBuffer[i] = EMPTY_VALUE; if( SignalBuffer[i] UPBuffer[i] ) sellBuffer[i] = High[i] + iATR(NULL, 0, 14, i); } return(0); } //+------------------------------------------------------------------+