Блог им. Andrejnamillion

Индикатор MA Color - модифицированный Moving Average

MA Color — это модифицированная скользящая средняя, которая меняет цвет в зависимости от направления тренда.

  • Зелёный цвет: восходящий тренд.
  • Красный цвет: нисходящий тренд.

Индикатор помогает визуально определять направление тренда, особенно на мелких таймфреймах.
Индикатор  MA Color  - модифицированный Moving Average


Settings = {
    Name = "MA Color",
    MAPeriod = 29, -- Период MA
    MAType = 0, -- Тип усреднения (0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA)
    line = {
        {
            Name = "MA Up", -- Линия роста MA
            Color = RGB(0, 255, 0), -- Зелёный (рост)
            Type = TYPE_POINT,
            Width = 2
        },
        {
            Name = "MA Down", -- Линия падения MA
            Color = RGB(255, 0, 0), -- Красный (падение)
            Type = TYPE_POINT,
            Width = 2
        }
    }
}

-- Функция расчёта скользящей средней (без рекурсии)
function MovingAverage(index, period, matype)
    if index < period then return nil end  -- Проверяем, есть ли достаточно дан <a name="cut"></a> ных

    local sum = 0

    if matype == 0 then
        -- Простая скользящая средняя (SMA)
        for i = index - period + 1, index do
            sum = sum + C(i)
        end
        return sum / period

    elseif matype == 1 then
        -- Экспоненциальная скользящая средняя (EMA)
        local alpha = 2 / (period + 1)
        local ema = C(index) -- Начинаем с текущей цены

        -- Рассчитываем EMA вручную (без рекурсии)
        for i = index - period + 1, index - 1 do
            ema = (C(i) - ema) * alpha + ema
        end
        return ema

    elseif matype == 2 then
        -- Сглаженная скользящая средняя (SMMA)
        sum = 0
        for i = index - period + 1, index do
            sum = sum + C(i)
        end
        local smma = sum / period  -- Первое значение SMMA = SMA

        -- Рассчитываем SMMA без рекурсии
        for i = index - period + 1, index - 1 do
            smma = (smma * (period - 1) + C(i)) / period
        end
        return smma

    elseif matype == 3 then
        -- Линейно-взвешенная скользящая средняя (LWMA)
        local weightSum = 0
        local divisor = 0
        for i = 0, period - 1 do
            weightSum = weightSum + C(index - i) * (period - i)
            divisor = divisor + (period - i)
        end
        return weightSum / divisor
    end
end

-- Функция инициализации индикатора
function Init()
    return 2 -- Две линии: "MA Up" и "MA Down"
end

-- Основная функция расчёта индикатора
function OnCalculate(index)
    if index < Settings.MAPeriod then return nil, nil end

    local maCurrent = MovingAverage(index, Settings.MAPeriod, Settings.MAType)  -- Текущее значение MA
    local maPrev = MovingAverage(index - 1, Settings.MAPeriod, Settings.MAType)  -- Предыдущее значение MA

    -- Проверяем, что значения не nil
    if not maCurrent or not maPrev then return nil, nil end

    -- Определяем, какую линию отображать
    if maCurrent > maPrev then
        return maCurrent, nil -- Если MA растёт, рисуем только зелёную линию
    else
        return nil, maCurrent -- Если MA падает, рисуем только красную линию
    end
end
514

Читайте на SMART-LAB:
Фото
📈 Синара: целевая цена акций МГКЛ на конец 2026 года — 5,2 рубля
Ниже приводим краткое содержание мнения аналитиков. Инвестиционный банк Синара обновил прогноз по МГКЛ: оценочная капитализация ПАО...
Фото
🎄 СЕГОДНЯ БОЛЬШОЙ НОВОГОДНИЙ ЭФИР + РОЗЫГРЫШ АЙФОНА 🎄
Мы подготовили максимально полезный и важный эфир, чтобы вы завершили год мощно и уверенно вошли в 2026-й. Тема финальной встречи: «Как раскачать...
Фото
🥳 В десяточку! Два выпуска на сумму более 10 млрд рублей
ГК «А101» завершила сбор книги заявок на два выпуска облигаций общим объемом 10,5 млрд рублей. Начало торгов состоится 26 декабря....
Фото
Какая доходность среди облигаций с наивысшим рейтингом надежности и сроком погашения от 3 лет?

теги блога Ray Intraday

....все тэги



UPDONW
Новый дизайн