Вроде тоже красиво.
Код: Выделить всё
function Initialize()
{
// Область определения параметров индикатора
// Обязательные параметры:
IndicatorName = "HAWKEYE_PERIOD"; // Задайте название индикатора и сохраните с данным именем
PriceStudy = true; // Рисовать в области цены (true – да, false – нет)
AddInput("Input", Inputs.Candle); // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
AddSeries("Var1", DrawAs.Custom, Color.Green);
AddSeries("Var2", DrawAs.Custom, Color.Red);
AddSeries("Var3", DrawAs.Custom, Color.Green);
AddSeries("Var4", DrawAs.Custom, Color.Red);
AddSeries("Var5", DrawAs.Line, Color.Green, AxisType.Default, false); // Задаем вид линии
AddGlobalVariable("VarG60", Types.Int, 1);
AddGlobalVariable("VarG61", Types.Int, 1);
AddGlobalVariable("VarG70", Types.Int, 1);
AddGlobalVariable("VarG71", Types.Int, 1);
// Дополнительные параметры:
AddParameter("kATR", 1); // Задаем имя изменяемого параметра и его значение
AddParameter("Period", 14); // Задаем имя изменяемого параметра и его значение
}
function Evaluate()
{
if ((CurrentIndex < Period) )
{
Var1 = Input.Close[0];
Var2 = Input.Close[0];
Var3 = Input.Close[0];
Var4 = Input.Close[0];
}
else
{
Var1= MY.EHMA(Input.Close, Period)[0] - (kATR*ATR(Input, Period)[0]);
Var2= MY.EHMA(Input.Close, Period)[0] + (kATR*ATR(Input, Period)[0]);
Var3= MY.EHMA(Input.Close, Period)[0] - (kATR*ATR(Input, Period)[0])/2;
Var4= MY.EHMA(Input.Close, Period)[0] + (kATR*ATR(Input, Period)[0])/2;
Var5 = MY.EHMA(Input.Close, Period)[0];
if ((VarG60 == 1) && (Input.Close<Var1))
VarG60=-1;
if (VarG60 == -1 && Input.Close>Var2)
VarG60=1;
if (VarG70 == 1 && Input.Close<Var3)
VarG70=-1;
if (VarG70 == -1 && Input.Close>Var4)
VarG70=1;
if (VarG60 == 1 && VarG61 == 1)
{Var1=Math.Max(Var1,Var1[1]);
}
if (VarG60 == -1 && VarG61 == -1)
{Var2=Math.Min(Var2,Var2[1]);
}
if (VarG70 == 1 && VarG71 == 1)
{Var3=Math.Max(Var3,Var3[1]);
}
if (VarG70 == -1 && VarG71 == -1)
{Var4=Math.Min(Var4,Var4[1]);
}
if (VarG60 == 1)
{
Var1=Math.Max(Var1,Var1[1]);
Var1.DrawLine(Color.Lime, Line.Solid, 2);
}
if (VarG60 == -1)
{
Var2=Math.Min(Var2,Var2[1]);
Var2.DrawLine(Color.Red, Line.Solid, 2);
}
if (VarG70 == 1)
{
Var3=Math.Max(Var3,Var3[1]);
Var3.DrawLine(Color.White, Line.Solid, 2);
}
if (VarG70 == -1)
{
Var4=Math.Min(Var4,Var4[1]);
Var4.DrawLine(Color.Yellow, Line.Solid, 2);
}
}
}