Пофиг, всё равно пляшет.
Написал в суппорт
Код: Выделить всё
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);
}