Общие вопросы по разработке > Сложение индикаторов
Сложение индикаторов
Подскажите пожалуйста как сделать индикатор который скалавывал d+(адх) и ema....например к d- c периодом 25 надо прибавить ема с периодом 9?? как это релизовать????(хоть маленький пример)
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Сложение индикаторов
Задаем параметры 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: Сложение индикаторов
создаю индикатор а директ ругается на инпут 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: Сложение индикаторов
сделал но не рисует((( в чем проблема??
Код: Выделить всё
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
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Сложение индикаторов
Вы не задали выходной серии никаких значений.
Вы только произвели некоторый расчет.
Т.к. серия в Вашем индикаторе выходящая одна то надо выбрать что рисовать или
EMAnDI или EMApDI
или добавить 2 серии выходных в инициализации. как пример вот так:
и в GetValue не нужно указывать 14, это смещение в серии. если мы рассчитываем текущий бар это должно быть смещение 0.
пример выполнения:
Вы только произвели некоторый расчет.
Т.к. серия в Вашем индикаторе выходящая одна то надо выбрать что рисовать или
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.
пример выполнения:
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Сложение индикаторов
смысла только особого нет в сложении DI+ DI- и EMA, даже визуально изменения незначительные т.к. это разного порядка значения могут быть
например EMA может колебаться в районе 2-3, а ADX при этом колебания от 0 до 80 т.е. погоды эти 2-3 прибавленные не сделают абсолютно никакой. На каком то другом инструменте будет заметнее или наоборот ещё меньше влияния.
Т.е. эти значения непонятно зачем складывать.
например EMA может колебаться в районе 2-3, а ADX при этом колебания от 0 до 80 т.е. погоды эти 2-3 прибавленные не сделают абсолютно никакой. На каком то другом инструменте будет заметнее или наоборот ещё меньше влияния.
Т.е. эти значения непонятно зачем складывать.
никогда такого не было и вот опять
Re: Сложение индикаторов
спасибо...вот начинаю разбираться в коде потихоничку...но вот не пойму как сделать ссылку на свой индикатор(пользовательский) 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: Сложение индикаторов
и кстати можно как нибуть намекнуть кто редактирует ад4 чтоб заменили вывод ошибок...ведь живем в России ...а пишут на английском...???
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Сложение индикаторов
Код: Выделить всё
MY.EHMAnDI = MY.EHMA[0] + nDi;
MY.EHMApDI = MY.EHMA[0] + pDi;
замените на
Код: Выделить всё
MY.EHMAnDI = E[0] + nDi;
MY.EHMApDI = E[0] + pDi;
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей