Многоуровневая динамическая стратегия отслеживания тренда MACD с количественным анализом в сочетании с 52-недельной системой анализа расширения позиций максимума и минимума

MACD MA EMA SMA RSI
Дата создания: 2024-12-27 14:27:51 Последнее изменение: 2024-12-27 14:27:51
Копировать: 0 Количество просмотров: 427
1
Подписаться
1617
Подписчики

Многоуровневая динамическая стратегия отслеживания тренда MACD с количественным анализом в сочетании с 52-недельной системой анализа расширения позиций максимума и минимума

Обзор

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

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

Стратегия основана на следующих ключевых принципах:

  1. Входящие сигналы подтверждаются оборотным MACD-форком и солнечным MACD-форком, требуя, чтобы показатели MACD обоих временных периодов появлялись на просмотре.
  2. Выходный сигнал запускается с помощью солнечного MACD-смертника, и в случае появления солнечного MACD-смертного сигнала выходит из строя.
  3. Динамическая стоп-убытка устанавливается на минимальную цену в день, когда был задействован сигнал выхода на рынок.
  4. 52-недельная высокая низкая линия динамически генерируется на основе вычисленного пользователем критерия ((наивысшая минимальная цена или цена закрытия) и образует важную точку отсчета, протянувшуюся вправо.
  5. Стратегия применяет 5%-ный управляемый позиционный курс, одна сделка обходится в одну валютную единицу.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD Bitcoin strategy con 52W High/Low (linee estese)", overlay=true)

// === MACD SETTINGS ===
fastLength = 12
slowLength = 26
signalSmoothing = 9

// Funzione per ottenere i valori MACD
getMACD(source, timeframe) =>
    [macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)
    [macdLine, signalLine]

// Valori MACD Settimanali
[macdWeekly, signalWeekly] = request.security(syminfo.tickerid, "W", getMACD(close, "W"), lookahead=barmerge.lookahead_on)

// Valori MACD Giornalieri
[macdDaily, signalDaily] = getMACD(close, "D")

// Variabile per lo stop loss
var float lowOfSignalCandle = na

// Condizione per l'ingresso
longConditionWeekly = ta.crossover(macdWeekly, signalWeekly)
exitConditionDaily = ta.crossunder(macdDaily, signalDaily)

// Imposta Stop Loss sulla candela giornaliera
if (exitConditionDaily)
    lowOfSignalCandle := low

// Condizione di ingresso nel trade
enterTradeCondition = macdWeekly > signalWeekly and ta.crossover(macdDaily, signalDaily)

if (enterTradeCondition)
    strategy.entry("MACD Long", strategy.long)

if (not na(lowOfSignalCandle))
    strategy.exit("Stop Loss", "MACD Long", stop=lowOfSignalCandle)

if (strategy.position_size == 0)
    lowOfSignalCandle := na

// // === 52 WEEK HIGH/LOW SETTINGS ===
// // Input per selezionare tra Highs/Lows o Close
// high_low_close = input.string(defval="Highs/Lows", title="Base 52 week values on candle:", options=["Highs/Lows", "Close"])

// // Calcolo dei valori delle 52 settimane
// weekly_hh = request.security(syminfo.tickerid, "W", ta.highest(high, 52), lookahead=barmerge.lookahead_on)
// weekly_ll = request.security(syminfo.tickerid, "W", ta.lowest(low, 52), lookahead=barmerge.lookahead_on)
// weekly_hc = request.security(syminfo.tickerid, "W", ta.highest(close, 52), lookahead=barmerge.lookahead_on)
// weekly_lc = request.security(syminfo.tickerid, "W", ta.lowest(close, 52), lookahead=barmerge.lookahead_on)

// // Selezione dei valori in base all'input
// high_plot = high_low_close == "Highs/Lows" ? weekly_hh : weekly_hc
// low_plot = high_low_close == "Highs/Lows" ? weekly_ll : weekly_lc

// // === LINEE ORIZZONTALI ESTESE FINO AL PREZZO ATTUALE ===
// var line highLine = na
// var line lowLine = na

// // Linea Orizzontale per il 52W High
// if (na(highLine))
//     highLine := line.new(bar_index, high_plot, bar_index + 1, high_plot, color=color.green, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(highLine, high_plot)
//     line.set_y2(highLine, high_plot)

// // Linea Orizzontale per il 52W Low
// if (na(lowLine))
//     lowLine := line.new(bar_index, low_plot, bar_index + 1, low_plot, color=color.red, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(lowLine, low_plot)
//     line.set_y2(lowLine, low_plot)

// // Etichette per le linee orizzontali
// var label highLabel = na
// var label lowLabel = na

// if (na(highLabel))
//     highLabel := label.new(bar_index, high_plot, "52W High", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.small)
// else
//     label.set_y(highLabel, high_plot)
//     label.set_x(highLabel, bar_index)

// if (na(lowLabel))
//     lowLabel := label.new(bar_index, low_plot, "52W Low", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.small)
// else
//     label.set_y(lowLabel, low_plot)
//     label.set_x(lowLabel, bar_index)

// // Tracciamento delle Linee Estese
// plot(high_plot, title="52W High", color=color.green, style=plot.style_linebr)
// plot(low_plot, title="52W Low", color=color.red, style=plot.style_linebr)