Стратегическая система с использованием многопериодной скользящей средней и пересечения MACD

MA EMA MACD SMA VWMA WMA SMMA RMA
Дата создания: 2025-02-21 10:51:25 Последнее изменение: 2025-02-21 10:51:25
Копировать: 1 Количество просмотров: 403
2
Подписаться
319
Подписчики

Стратегическая система с использованием многопериодной скользящей средней и пересечения MACD Стратегическая система с использованием многопериодной скользящей средней и пересечения MACD

Обзор

Эта стратегия является торговой системой, объединяющей многопериодические полосы скользящих средних и индикатор MACD. Стратегия определяет рыночные тенденции и время торговли, в основном, путем скрещивания краткосрочных и долгосрочных скользящих средних и сигналов индикатора MACD. Стратегия интегрирует логику перезагрузки торговли в течение дня, что эффективно предотвращает риск на ночь.

Стратегический принцип

Основная логика стратегии состоит из трех основных частей: система перемещения средних линий, система MACD-индикаторов и механизм перезагрузки внутридневных сделок. Перемещающаяся средняя полоса состоит из равновесных линий с двумя различными циклами (9 и 21), из которых можно выбрать несколько типов равновесных линий, включая SMA, EMA, SMMA, WMA и VWMA. Система MACD использует стандартную параметрическую настройку 12/26/9 для определения количества входящего трендового движения через разницу между сигналом быстрого и медленного движения, а также через линию.

Стратегические преимущества

  1. Подтверждение сигнала с двойной надежностью: в сочетании с отслеживанием тенденций и динамическим индикатором значительно снижается риск ложных сигналов
  2. Гибкая конфигурация параметров: поддержка нескольких типов скользящих средних, которые могут быть оптимизированы в соответствии с различными рыночными характеристиками
  3. Управление рисками: включает в себя механизм перезагрузки операций в течение дня, что позволяет избежать рисков на ночь.
  4. Выдающийся визуальный эффект: интегрированная четкая маркировка сигналов купли-продажи и дисплей с равномерной полосой, облегчающий принятие торговых решений

Стратегический риск

  1. Задержка поворота тренда: может быть медленным в быстрых рыночных сдвигах из-за использования равнолинейной системы
  2. Не применяется для рынков с колебаниями: часто могут возникать ложные сигналы на рынках с горизонтальными колебаниями
  3. Трудность оптимизации параметров: оптимальные параметры могут существенно различаться в разных рыночных условиях
  4. Воздействие задержки исполнения: в условиях высокой волатильности рынка сигнал подтверждает, что реальная реализация может иметь большие ценовые различия

Направление оптимизации стратегии

  1. Введение фильтрации частоты колебаний: рекомендуется добавлять ATR или индикатор частоты колебаний, чтобы скорректировать триггерные значения сигналов в условиях высокой частоты колебаний
  2. Оптимизация механизма подтверждения сигнала: можно рассмотреть возможность увеличения подтверждения количества или подтверждения ценовой формы, повышения надежности сигнала
  3. Совершенствование управления рисками: рекомендуется включить динамические цели по остановке убытков и прибыли, чтобы повысить соотношение риска и прибыли в стратегии
  4. Приспособность к рыночной среде: можно приспосабливать параметры в зависимости от динамики различных рыночных условий, повышая адаптивность стратегии

Подвести итог

Эта стратегия в сочетании с равномерной полосой и MACD-индикатором создает более совершенную торговую систему. Хотя существует определенный риск отставания, при разумной оптимизации параметров и управлении рисками стратегия может иметь хороший эффект на трендовых рынках.

Исходный код стратегии
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Daily MA Ribbon + MACD Crossover with Buy/Sell Signals", overlay=true)

// === Daily Reset Logic ===
var bool newDay = false  // Initialize newDay as a boolean variable
newDay := bool(ta.change(time("D")))  // Cast the result of ta.change to boolean

// === Moving Average Ribbon ===
ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

// MA1 (Short-term MA)
show_ma1   = input(true, "MA №1", inline="MA #1")
ma1_type   = input.string("EMA", "", inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma1_source = input(close, "", inline="MA #1")
ma1_length = input.int(9, "", inline="MA #1", minval=1)  // Short-term MA (e.g., 9-period)
ma1_color  = input(color.blue, "", inline="MA #1")
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color = ma1_color, title="MA №1")

// MA2 (Long-term MA)
show_ma2   = input(true, "MA №2", inline="MA #2")
ma2_type   = input.string("EMA", "", inline="MA #2", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma2_source = input(close, "", inline="MA #2")
ma2_length = input.int(21, "", inline="MA #2", minval=1)  // Long-term MA (e.g., 21-period)
ma2_color  = input(color.red, "", inline="MA #2")
ma2 = ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color = ma2_color, title="MA №2")

// === MACD ===
fast_length = input(12, "Fast Length")
slow_length = input(26, "Slow Length")
signal_length = input.int(9, "Signal Smoothing", minval=1, maxval=50)
sma_source = input.string("EMA", "Oscillator MA Type", options=["SMA", "EMA"])
sma_signal = input.string("EMA", "Signal Line MA Type", options=["SMA", "EMA"])

// Calculate MACD
fast_ma = sma_source == "SMA" ? ta.sma(close, fast_length) : ta.ema(close, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(close, slow_length) : ta.ema(close, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Plot MACD
hline(0, "Zero Line", color = color.new(#787B86, 50))
plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
plot(macd, title = "MACD", color = #2962FF)
plot(signal, title = "Signal", color = #FF6D00)

// === Buy/Sell Signal Logic ===
// Condition 1: MA1 (Short-term) crosses above MA2 (Long-term)
ma_crossover = ta.crossover(ma1, ma2)

// Condition 2: MACD line crosses above Signal line
macd_crossover = ta.crossover(macd, signal)

// Buy Signal: Both conditions must be true
buy_signal = ma_crossover and macd_crossover

// Sell Signal: MA1 crosses below MA2 or MACD crosses below Signal
sell_signal = ta.crossunder(ma1, ma2) or ta.crossunder(macd, signal)

// Reset signals at the start of each new day
if (newDay)
    buy_signal := false
    sell_signal := false

// Plot Buy/Sell Signals
plotshape(buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Strategy Entry/Exit
if (buy_signal)
    strategy.entry("Buy", strategy.long)

if (sell_signal)
    strategy.close("Buy", comment="Sell")