Создал 2 индикатора:
Код: Выделить всё
function Initialize()
{
IndicatorName = "PosDI";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("PosDI", DrawAs.Line, Color.Green);
AddParameter("Period", 14);
}
function Evaluate()
{
PosDI = ADX(Input, Period)["PosDI"][0];
}
Код: Выделить всё
function Initialize()
{
IndicatorName = "NegDI";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("NegDI", DrawAs.Line, Color.Red);
AddParameter("Period", 14);
}
function Evaluate()
{
NegDI = ADX(Input, Period)["NegDI"][0];
}
и теперь демонстрация что возвращают они без EMA:
Код: Выделить всё
function Initialize()
{
   IndicatorName = "ADXS";
   PriceStudy = false;
   AddInput("Input", Inputs.Candle);
   AddSeries("DXP", DrawAs.Line, Color.Green);
   AddSeries("DXN", DrawAs.Line, Color.Red);
   AddSeries("DX", DrawAs.Line, Color.Blue);
   
   AddParameter("Period", 48, 2);
}
function Evaluate()
{
    var gDX=ADX(Input,Period);    
    var gPos=MY.PosDI(Input,Period);
    var gNeg=MY.NegDI(Input,Period);
    
     DXP = gPos[0];
    DXN = gNeg[0];
    //DXP = EMA(gPos,10)[0];
    //DXN = EMA(gNeg,10)[0];
    DX = gDX[0];
}
а теперь вариант с EMA
Код: Выделить всё
function Initialize()
{
   IndicatorName = "ADXS";
   PriceStudy = false;
   AddInput("Input", Inputs.Candle);
   AddSeries("DXP", DrawAs.Line, Color.Green);
   AddSeries("DXN", DrawAs.Line, Color.Red);
   AddSeries("DX", DrawAs.Line, Color.Blue);
   
   AddParameter("Period", 48, 2);
}
function Evaluate()
{
    var gDX=ADX(Input,Period);    
    var gPos=MY.PosDI(Input,Period);
    var gNeg=MY.NegDI(Input,Period);
    
    //DXP = gPos[0];
    //DXN = gNeg[0];
    DXP = EMA(gPos,10)[0];
    DXN = EMA(gNeg,10)[0];
    DX = gDX[0];
}
если менять толщину линии для серии DXP и DXN ничего на графике не меняется, значит ничего не вычисляет EMA
 Изображения (1057)
 Изображения (1057) Архивы (82)
 Архивы (82) Текстовые файлы (9)
 Текстовые файлы (9) Документы (7)
 Документы (7) Скрипты Альфа-Директ 4 (30)
 Скрипты Альфа-Директ 4 (30)