Расширенная стратегия оценки динамики объемов и ценовых тенденций

MACD ATR MA EMA SMA
Дата создания: 2025-01-10 15:40:37 Последнее изменение: 2025-01-10 15:40:37
Копировать: 0 Количество просмотров: 346
1
Подписаться
1617
Подписчики

Расширенная стратегия оценки динамики объемов и ценовых тенденций

Обзор

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

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

Основная логика стратегии основана на глубоких и поверхностных столбчатых изменениях индикатора MACD в сочетании с системой двойных скользящих средних EMA и SMA. Когда гистограмма MACD меняет цвет с темного на светлый, это указывает на изменение импульса, и система будет торговать в это время. Конкретно:

  1. Рассчитайте значение MACD, используя быструю (12) и медленную (26) скользящие средние.
  2. MACD, сглаженный 9-периодной сигнальной линией
  3. Наблюдайте за изменением цвета гистограммы MACD.
  4. Объедините 14-периодный индикатор ATR для установки динамического тейк-профита и стоп-лосса

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

  1. Комбинация индикаторов является научной и обоснованной, MACD может эффективно улавливать тренды, а ATR может адаптироваться к колебаниям.
  2. Настройки стоп-профита и стоп-лосса являются гибкими и могут быть скорректированы в соответствии с различными характеристиками рынка с помощью множества параметров.
  3. Торговый сигнал четкий, а время входа можно интуитивно оценить по изменению цвета гистограммы.
  4. Принимая во внимание как длинные, так и короткие двусторонние транзакции, увеличивая применимость стратегий и возможности получения прибыли

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

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

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

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

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

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

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

//@version=5
strategy(title="軒割MACD 空心量能不足策略", shorttitle="軒割MACD 空心量能不足策略", overlay=true)

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

// 啟用多單 / 空單
useLong       = input.bool(title="啟用多單?(底部紅色)", defval=true)
useShort      = input.bool(title="啟用空單?(頂部綠色)", defval=true)

// 止盈倍數 (1~10倍 ATR)
tpATRmult     = input.int(title="止盈 ATR 倍數 (1~10)", defval=10, minval=1, maxval=500)
// 止損倍數 (1~10倍 ATR)
slATRmult     = input.int(title="止損 ATR 倍數 (1~10)", defval=3, minval=1, maxval=500)

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

//=== 3) 判斷深色/淺色(用於變化訊號)===//
darkGreen  = hist >= 0 and hist <= hist[1]   // 上方,柱子縮小或持平
lightGreen = hist >= 0 and hist >  hist[1]   // 上方,柱子變大
darkRed    = hist <  0 and hist <= hist[1]   // 下方,柱子(絕對值)變大或持平
lightRed   = hist <  0 and hist >  hist[1]   // 下方,柱子(絕對值)變小

// 由「深 → 淺」是否發生在上一根
colorChangeToLightGreen = darkGreen[1] and lightGreen
colorChangeToLightRed   = darkRed[1]   and lightRed

//=== 4) ATR 計算 (用於止盈止損) ===//
atrPeriod  = 14
atrValue   = ta.atr(atrPeriod)

//=== 5) 多單策略:深紅 → 淺紅 (底部紅色) ===//
if useLong and colorChangeToLightRed
    // 以當前 K 線 low - ATR倍數 作為多單止損
    longStopLoss   = low - (slATRmult * atrValue)
    // 以當前 close + ATR倍數 作為多單止盈
    longTakeProfit = close + (tpATRmult * atrValue)

    // 進多單
    strategy.entry("Long Entry", strategy.long, comment="多", qty=1)
    strategy.exit("平多", "Long Entry", stop=longStopLoss, limit=longTakeProfit)

//=== 6) 空單策略:深綠 → 淺綠 (頂部綠色) ===//
if useShort and colorChangeToLightGreen
    // 以當前 K 線 high + ATR倍數 作為空單止損
    shortStopLoss   = high + (slATRmult * atrValue)
    // 以當前 close - ATR倍數 作為空單止盈
    shortTakeProfit = close - (tpATRmult * atrValue)

    // 進空單
    strategy.entry("Short Entry", strategy.short, comment="空", qty=1)
    strategy.exit("平空", "Short Entry", stop=shortStopLoss, limit=shortTakeProfit)

//=== 7) 繪製 MACD 與直方圖 ===//
hline(0, "Zero Line", color=color.new(#787B86, 50))

// 長條圖顏色:
//   - 上方 (hist >= 0) 時:hist 比前一根大 (淺綠) 或小 (深綠)
//   - 下方 (hist < 0)  時:hist 比前一根大 (淺紅) 或小 (深紅)
plot(hist,title="Histogram",style=plot.style_columns,color = hist >= 0? (hist > hist[1]  ? #26A69A : #B2DFDB)   : (hist > hist[1]  ? #FFCDD2 : #FF5252)  )

// 繪製 MACD 與 Signal
plot(macd,   title="MACD",   color=#2962FF)
plot(signal, title="Signal", color=#FF6D00)