Создал 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