function Initialize() { IndicatorName = "RenkoLevels_US"; PriceStudy=false; AddInput("Input", Inputs.Candle); // AddParameter("DEMAperiod", 1); AddParameter("ATRperiod", 14); // AddParameter("Sens", 1.0); AddSeries("RenkoBuySell", DrawAs.Custom, Color.Black, AxisType.ZeroBased); AddSeries("RenkoUp", DrawAs.Custom, Color.LightGray, true, Axes.Parent); AddSeries("RenkoDn", DrawAs.Custom, Color.LightGray, true, Axes.Parent); AddGlobalVariable("Global_ATR", Types.Double); AddGlobalVariable("Global_UP", Types.Double); AddGlobalVariable("Global_DN", Types.Double); AddGlobalVariable("Global_COLOR", Types.Int); } function Evaluate() { double ATR; double UP; double DN; double H; int bs; var TR = 0.0; Color c = Color.LightGray; ; int Change; if (CurrentIndex < 1) ATR = Input.High[0]-Input.Low[0]; else { TR = ( Math.Max(Input.High[0] , Input.Close[-1]) - Math.Min(Input.Low[0], Input.Close[-1])); ATR = ((ATRperiod-1.0) * Global_ATR + TR)/ATRperiod; } Global_ATR=ATR; if (CurrentIndex == 0) { UP = ((Input.High[0]+Input.Low[0])/2.0) + (ATR/2.0); DN = ((Input.High[0]+Input.Low[0])/2.0) - (ATR/2.0); H = UP - DN ; bs=0; } else { UP = RenkoUp[-1]; DN = RenkoDn[-1]; H= UP - DN ; bs=(int)RenkoBuySell[-1]; } Change = 0; if ( (Change < 1 ) && (Input.Close[0] >= UP+H*3) ) { Change = 1; Global_COLOR = 1; Global_UP = UP+Global_ATR*3; Global_DN = UP+Global_ATR*2; c = Color.LightGreen; } if ( (Change < 1) && (Input.Close[0] <= DN-H*3) ) { // ShowMessage("минус 3 " + (UP + H *3) ); Change = 1; Global_COLOR = 0; Global_DN = DN-Global_ATR*3; Global_UP = DN-Global_ATR*2; c = Color.LightCoral; } if ( (Change < 1) & (Input.Close[0] >= UP+H*2) ) { // ShowMessage("плюс 2 " + (UP + H *2) ); Change = 1; Global_COLOR = 1; Global_UP = UP+Global_ATR*2; Global_DN = UP+Global_ATR; c = Color.LightGreen; } if ( (Change < 1) && (Input.Close[0] <= DN-H*2) ) { // ShowMessage("минус 2 " + (UP + H *2) ); Change = 1; Global_COLOR = 0; Global_DN = DN-Global_ATR*2; Global_UP = DN-Global_ATR; c = Color.LightCoral; } if ( (Change < 1) && (Input.Close[0] >= UP+H) ) { // ShowMessage("плюс 0 " + (UP + H) ); Change = 1; Global_COLOR = 1; Global_UP = UP+Global_ATR; Global_DN = UP; c = Color.LightGreen; } if ( (Change < 1) && (Input.Close[0] <= DN-H) ) { // ShowMessage("минус 0 " + (UP + H) ); Change = 1; Global_COLOR = 0; Global_DN = DN-Global_ATR; Global_UP = DN; c = Color.LightCoral; } if (Change < 1) { if (Global_COLOR == 1) { c = Color.LightGreen; } else { c = Color.LightCoral; } } //ShowMessage("усё"); // int Up, Dn; // // Up=(int)((Input.Close[0]-UP)/H); if(Up>3) Up=3; // Dn=(int)((DN-Input.Close[0])/H); if(Dn>3) Dn=3; // //ShowMessage("UP " + UP ); //ShowMessage("DN " + DN ); // if(Up>0) // { // UP+=Global_ATR*Up; // DN=UP-Global_ATR; // } // if(Dn>0) // { // DN-=Global_ATR*Dn; // UP=DN+Global_ATR; // } // RenkoUp[0]=Global_UP; RenkoDn[0]=Global_DN; //RenkoBuySell[0]=bs; RenkoDn.DrawChannel(RenkoUp, c, 50); }