Общие вопросы по разработке > MACDH (MACD Histogram) + SMA
MACDH (MACD Histogram) + SMA
Здравствуйте уважаемые форумчане и многоуважаемый Администратор evge! Помогите пожалуйста создать индикатор . Суть такая : надо построить простую SMA, с периодом 5, от MACDH (MACD Histogram), все в одном окне, оба индикатора.Код MACDH (MACD Histogram) прилагаю под спойлером. И тоже самое надо от BW_AO (Awesome Oscillator) – ЧУДЕСНЫЙ ОСЦИЛЛЯТОР Билла Вильямса. С Уважением.
► Показать
► Показать
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACDH (MACD Histogram) + SMA
Добавлен период для SMA в параметрах: PeriodMA
Код: Выделить всё
function Initialize()
{
IndicatorName = "MACDH_MA";
AddInput("Input", Inputs.Price);
PriceStudy = false;
AddSeries("MACDH", DrawAs.Custom, Color.Green, AxisType.ZeroBased);
AddSeries("MA", DrawAs.Line, Color.Black, AxisType.ZeroBased);
AddParameter("pFast", 5);
AddParameter("pSlow", 96,2);
AddParameter("Period", 8);
AddParameter("PeriodMA", 5);
AddGlobalVariable("sum", Types.Double, 0);
}
function Evaluate()
{
// AlfaDirect. 2015. OX
// MACD Histogram (MACDH) - Гистограмма MACD
// Цвет - определяется направлением изменения MACD
//
// evge 26.02.2020 https://alfadirect4.ru
// +SMA от MACDH
if (CurrentIndex < 1)
MACDH = 0.0;
else
{
MACDH = MACD(Input, pFast, pSlow, Period).GetValue("Histogram", 0);
sum += MACDH[0];
if (CurrentIndex > PeriodMA) sum -= MACDH[PeriodMA];
MA = sum / PeriodMA;
if (MACDH[0] > MACDH[-1])
MACDH.DrawHistogram(Color.Green, Color.Green, 50);
else
MACDH.DrawHistogram(Color.Red, Color.Red, 50);
}
}
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACDH (MACD Histogram) + SMA
По аналогии BW_AO_MA
Код: Выделить всё
function Initialize()
{
IndicatorName = "BW_AO_MA";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("BW_AO", DrawAs.Custom, Color.Green, AxisType.ZeroBased);
AddSeries("MA", DrawAs.Line, Color.Black, AxisType.ZeroBased);
AddParameter("PeriodMA", 5);
AddGlobalVariable("sum", Types.Double, 0);
}
function Evaluate()
{
// AlfaDirect. 2014/ OX
// BW_AO (Awesome Oscillator) - чудесный осциллятор (Bill Williams)
//
// evge 26.02.2020 https://alfadirect4.ru
// +SMA от BW_AO
if (CurrentIndex > 34)
{
var Inp = LIB.MID(Input);
BW_AO = SMA(Inp, 5) - SMA(Inp, 34);
if (BW_AO > BW_AO[-1] )
BW_AO.DrawHistogram(Color.Green);
else
BW_AO.DrawHistogram(Color.Red);
sum += BW_AO[0];
if (CurrentIndex > 34 + PeriodMA) sum -= BW_AO[PeriodMA];
MA = sum / PeriodMA;
}
}
никогда такого не было и вот опять
Re: MACDH (MACD Histogram) + SMA
Огромное Вам спасибо! Сам что то никак не мог сообразить как написать. Даже после прочтения существующей литературы на вашем сайте.Видимо не мое это. Еще раз спасибо за быстрый отклик на просьбу.
Re: MACDH (MACD Histogram) + SMA
Здравствуйте, уажаемый Evge.
Простой индикатор (канал) написал. Границы от максимума и минимума цены откладываются на К*стандартное отклонение.
Хотел посмотреть как выглядит, но к сожалению не рисуется. (я не специалист )
Просьба помочь , подправить
Простой индикатор (канал) написал. Границы от максимума и минимума цены откладываются на К*стандартное отклонение.
Хотел посмотреть как выглядит, но к сожалению не рисуется. (я не специалист )
Просьба помочь , подправить
Код: Выделить всё
function Initialize()
{
IndicatorName = "RES_SUP_SD";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("Rs");
AddSeries("Sp");
AddSeries("Res", DrawAs.Line, Color.Blue);
AddSeries("Sup", DrawAs.Line, Color.Blue);
AddParameter("K", 3,1);
AddParameter("Dl", -1,1);
}
function Evaluate()
{
// JU. 2020.
//
if ( CurrentIndex < 1)
{
Res = Input.Low[0]+ K*MY.STD(Input.Close)[0];
Sup = Input.High[0] - K*MY.STD(Input.Close)[0];
}
else
{
Rs = Input.Low[0] + K*MY.STD(Input.Close)[0];
Sp = Input.High[0] - K*MY.STD(Input.Close)[0];
Res=Rs[Dl];
Sup=Sp[Dl];
}
}
- evge
- Администратор
- Сообщения: 1812
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: MACDH (MACD Histogram) + SMA
Приветствую!
MY.STD указывает на использование пользовательского индикатора.
Судя по описанию, хотели воспользоваться встроенной функцией STD из библиотеки алгоритмов LIB?
Если так, тогда MY. надо заменить на LIB. и задать параметр периода.
STD(Series, N) – стандартное отклонение
Параметры:
• Series –ряд данных;
• N – период;
пример рабочего кода (период задан 20, можно вынести в параметры индикатора):
MY.STD указывает на использование пользовательского индикатора.
Судя по описанию, хотели воспользоваться встроенной функцией STD из библиотеки алгоритмов LIB?
Если так, тогда MY. надо заменить на LIB. и задать параметр периода.
STD(Series, N) – стандартное отклонение
Параметры:
• Series –ряд данных;
• N – период;
пример рабочего кода (период задан 20, можно вынести в параметры индикатора):
Код: Выделить всё
function Initialize()
{
IndicatorName = "RES_SUP_SD";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("Rs");
AddSeries("Sp");
AddSeries("Res", DrawAs.Line, Color.Blue);
AddSeries("Sup", DrawAs.Line, Color.Blue);
AddParameter("K", 3,1);
AddParameter("Dl", -1,1);
}
function Evaluate()
{
// JU. 2020.
//
var S = LIB.STD(Input.Close, 20)[0];
if ( CurrentIndex < 1)
{
Res = Input.Low[0] + K * S;
Sup = Input.High[0] - K * S;
}
else
{
Rs = Input.Low[0] + K * S;
Sp = Input.High[0] - K * S;
Res=Rs[Dl];
Sup=Sp[Dl];
}
}
никогда такого не было и вот опять
Средня
Здравствуйте.
В потоке данных с биржи идет трансляция средневзвешенной цены дня, сформированной по всем сделкам с открытия и по текущий момент. К сожалению этот параметр никак не передается в график (или я не нашел).
А можно построить индикатор, с выводом на график цены?
Это будет что-то типа
CV =CV[-1]+ Input.Close[0]*Input.Volume[0];
V = V[-1]+Input.Volume[0];
VolAvD=CV/V
Спасибо.
В потоке данных с биржи идет трансляция средневзвешенной цены дня, сформированной по всем сделкам с открытия и по текущий момент. К сожалению этот параметр никак не передается в график (или я не нашел).
А можно построить индикатор, с выводом на график цены?
Это будет что-то типа
CV =CV[-1]+ Input.Close[0]*Input.Volume[0];
V = V[-1]+Input.Volume[0];
VolAvD=CV/V
Спасибо.
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей