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

MACDH (MACD Histogram) + SMA

Добавлено: 25 фев 2020, 15:22
manolega
Здравствуйте уважаемые форумчане и многоуважаемый Администратор evge! Помогите пожалуйста создать индикатор . Суть такая : надо построить простую SMA, с периодом 5, от MACDH (MACD Histogram), все в одном окне, оба индикатора.Код MACDH (MACD Histogram) прилагаю под спойлером. И тоже самое надо от BW_AO (Awesome Oscillator) – ЧУДЕСНЫЙ ОСЦИЛЛЯТОР Билла Вильямса. С Уважением.
► Показать

► Показать

Re: MACDH (MACD Histogram) + SMA

Добавлено: 26 фев 2020, 12:47
evge
MACDH_MA-01.png
MACDH_MA-01.png (34.76 КБ) 18710 просмотров


Добавлен период для 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);
}
}

Re: MACDH (MACD Histogram) + SMA

Добавлено: 26 фев 2020, 12:56
evge
По аналогии 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

Добавлено: 26 фев 2020, 14:35
manolega
Огромное Вам спасибо! Сам что то никак не мог сообразить как написать. Даже после прочтения существующей литературы на вашем сайте.Видимо не мое это. Еще раз спасибо за быстрый отклик на просьбу.

Re: MACDH (MACD Histogram) + SMA

Добавлено: 07 мар 2020, 23:10
JASON
Здравствуйте, уажаемый Evge.
Простой индикатор (канал) написал. Границы от максимума и минимума цены откладываются на К*стандартное отклонение.
Хотел посмотреть как выглядит, но к сожалению не рисуется. :D (я не специалист )
Просьба помочь , подправить

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

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

Re: MACDH (MACD Histogram) + SMA

Добавлено: 10 мар 2020, 06:22
evge
Приветствую!

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

Re: MACDH (MACD Histogram) + SMA

Добавлено: 10 мар 2020, 10:54
JASON
Добрый день.
Да ссылался на встроенный индикатор. Спасибо большое.

Средня

Добавлено: 06 апр 2020, 11:59
JASON
Здравствуйте.
В потоке данных с биржи идет трансляция средневзвешенной цены дня, сформированной по всем сделкам с открытия и по текущий момент. К сожалению этот параметр никак не передается в график (или я не нашел).
А можно построить индикатор, с выводом на график цены?
Это будет что-то типа
CV =CV[-1]+ Input.Close[0]*Input.Volume[0];
V = V[-1]+Input.Volume[0];
VolAvD=CV/V

Спасибо.