Общие вопросы по разработке > Сложение индикаторов

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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

Непрочитанное сообщение Сергей » 01 апр 2016, 17:26

Подскажите пожалуйста как сделать индикатор который скалавывал d+(адх) и ema....например к d- c периодом 25 надо прибавить ема с периодом 9?? как это релизовать????(хоть маленький пример)

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

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

Непрочитанное сообщение evge » 01 апр 2016, 18:42

Задаем параметры 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)
никогда такого не было и вот опять

Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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

Непрочитанное сообщение Сергей » 01 апр 2016, 18:48

спасибо...большое)))

Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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;
}

Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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;
}

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

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

Непрочитанное сообщение evge » 01 апр 2016, 19:16

Вы не задали выходной серии никаких значений.
Вы только произвели некоторый расчет.

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

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 КБ) 8011 просмотров
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

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

Непрочитанное сообщение evge » 01 апр 2016, 19:40

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

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

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

Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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;
}

Сергей
Сообщения: 34
Зарегистрирован: 01 апр 2016, 17:03

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

Непрочитанное сообщение Сергей » 01 апр 2016, 21:17

и кстати можно как нибуть намекнуть кто редактирует ад4 чтоб заменили вывод ошибок...ведь живем в России ...а пишут на английском...???

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

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

Непрочитанное сообщение evge » 01 апр 2016, 21:36

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

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

замените на

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

MY.EHMAnDI = E[0] + nDi;
MY.EHMApDI = E[0] + pDi;
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей