Страница 1 из 2

Сложение индикаторов

Добавлено: 01 апр 2016, 17:26
Сергей
Подскажите пожалуйста как сделать индикатор который скалавывал d+(адх) и ema....например к d- c периодом 25 надо прибавить ема с периодом 9?? как это релизовать????(хоть маленький пример)

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 18:42
evge
Задаем параметры PeriodEMA, PeriodADX

Код: Выделить всё

var E = EMA(Input.Close, PeriodEMA);

var A = ADX(Input, PeriodADX);
var nDi = A.GetValue("NegDI", 0);
var pDi = A.GetValue("PosDI", 0);

var EMAnDI = E[0] + nDi;
var EMApDI = E[0] + pDi;


в индикаторе в инициализации должно быть

Код: Выделить всё

AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 18:48
Сергей
спасибо...большое)))

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 19:05
Сергей
создаю индикатор а директ ругается на инпут 1

Код: Выделить всё

function Initialize()
{
// Область определения параметров индикатора

// Обязательные параметры:
   IndicatorName = "A1";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Price);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
 AddSeries("A", DrawAs.Line, Color.Red);   // Задаем вид линии индикатора A

}

function Evaluate()
{
var E = EMA(Input1.Close, 14);

var A = ADX(Input1, 14);
var nDi = A.GetValue("NegDi", 14);
var pDi = A.GetValue("PosDi", 14);

var EMAnDI = E[0] + nDi;
var EMApDI = E[0] + pDi;
}

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 19:11
Сергей
сделал но не рисует((( в чем проблема??

Код: Выделить всё

function Initialize()
{
// Область определения параметров индикатора

// Обязательные параметры:
   IndicatorName = "A1";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   
   AddInput("Input", Inputs.Candle);// Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
 AddSeries("A", DrawAs.Line, Color.Red);   // Задаем вид линии индикатора A

}

function Evaluate()
{
var E = EMA(Input.Close, 14);

var A = ADX(Input, 14);
var nDi = A.GetValue("NegDi", 14);
var pDi = A.GetValue("PosDi", 14);

var EMAnDI = E[0] + nDi;
var EMApDI = E[0] + pDi;
}

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 19:16
evge
Вы не задали выходной серии никаких значений.
Вы только произвели некоторый расчет.

Т.к. серия в Вашем индикаторе выходящая одна то надо выбрать что рисовать или

EMAnDI или EMApDI

или добавить 2 серии выходных в инициализации. как пример вот так:

Код: Выделить всё

function Initialize()
{
   IndicatorName = "ADXEMA";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   
   AddInput("Input", Inputs.Candle);// Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   AddSeries("EMApDI", DrawAs.Line, Color.Green);   
   AddSeries("EMAnDI", DrawAs.Line, Color.Red);

    AddParameter("PeriodEMA", 9);
    AddParameter("PeriodADX", 14); 

}

function Evaluate()
{
var E = EMA(Input.Close, PeriodEMA);

var A = ADX(Input, PeriodADX);
var nDi = A.GetValue("NegDI", 0);
var pDi = A.GetValue("PosDI", 0);

EMAnDI = E[0] + nDi;
EMApDI = E[0] + pDi;
}


и в GetValue не нужно указывать 14, это смещение в серии. если мы рассчитываем текущий бар это должно быть смещение 0.

пример выполнения:

ADXEMA-01.png
ADXEMA-01.png (29.33 КБ) 21030 просмотров

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 19:40
evge
смысла только особого нет в сложении DI+ DI- и EMA, даже визуально изменения незначительные т.к. это разного порядка значения могут быть

например EMA может колебаться в районе 2-3, а ADX при этом колебания от 0 до 80 т.е. погоды эти 2-3 прибавленные не сделают абсолютно никакой. На каком то другом инструменте будет заметнее или наоборот ещё меньше влияния.

Т.е. эти значения непонятно зачем складывать.

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 21:00
Сергей
спасибо...вот начинаю разбираться в коде потихоничку...но вот не пойму как сделать ссылку на свой индикатор(пользовательский) MY.EHMA...чот ругается((

Код: Выделить всё

function Initialize()
{
   IndicatorName = "ADXEMA";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   
   AddInput("Input", Inputs.Candle);// Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   AddSeries("MY.EHMApDI", DrawAs.Line, Color.Green);   
   AddSeries("MY.EHMAnDI", DrawAs.Line, Color.Red);

    AddParameter("PeriodMY.EHMA", 9);
    AddParameter("PeriodADX", 14); 

}

function Evaluate()
{
var E = MY.EHMA(Input.Close, PeriodEMA);

var A = ADX(Input, PeriodADX);
var nDi = A.GetValue("NegDI", 0);
var pDi = A.GetValue("PosDI", 0);

MY.EHMAnDI = MY.EHMA[0] + nDi;
MY.EHMApDI = MY.EHMA[0] + pDi;
}

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 21:17
Сергей
и кстати можно как нибуть намекнуть кто редактирует ад4 чтоб заменили вывод ошибок...ведь живем в России ...а пишут на английском...???

Re: Сложение индикаторов

Добавлено: 01 апр 2016, 21:36
evge

Код: Выделить всё

MY.EHMAnDI = MY.EHMA[0] + nDi;
MY.EHMApDI = MY.EHMA[0] + pDi;

замените на

Код: Выделить всё

MY.EHMAnDI = E[0] + nDi;
MY.EHMApDI = E[0] + pDi;