O recurso está a ser carregado... Carregamento...

Estratégia de impulso da tendência preço-volume reforçada

Autora:ChaoZhang, Data: 2025-01-10 15:40:37
Tags:MACDATRMAEMASMA

 Enhanced Price-Volume Trend Momentum Strategy

Resumo

Esta estratégia é um sistema de negociação baseado no indicador MACD e na relação preço-volume, que identifica pontos de reversão da tendência do mercado observando mudanças nos padrões do histograma MACD. A estratégia emprega um mecanismo dinâmico de captação de lucro e stop-loss usando o indicador ATR para se adaptar à volatilidade do mercado e controlar efetivamente o risco.

Princípio da estratégia

A lógica central da estratégia é construída sobre as mudanças de cor do histograma MACD, combinado com sistemas de média móvel EMA e SMA dupla. 1. Calcule os valores do MACD usando médias móveis rápidas (12) e lentas (26) 2. MACD suave com uma linha de sinal de 9 períodos 3. Monitorar mudanças de profundidade de cor no histograma MACD 4. Definir metas de lucro dinâmicas e parar perdas usando ATR de 14 períodos

Vantagens da estratégia

  1. Combinação científica de indicadores, com o MACD a captar efetivamente as tendências e o ATR a adaptar-se à volatilidade
  2. Configurações flexíveis de obtenção de lucro e de stop-loss ajustáveis através de parâmetros multiplicadores para diferentes características do mercado
  3. Sinais de negociação claros com tempo de entrada intuitivo com base em alterações de cor do histograma
  4. Acomoda negociações longas e curtas, aumentando a versatilidade da estratégia e as oportunidades de lucro

Riscos estratégicos

  1. O MACD como indicador atrasado pode perder pontos de entrada ideais em movimentos rápidos do mercado
  2. Pode gerar sinais falsos em mercados variados, levando a negociações frequentes
  3. Configurações inadequadas do multiplicador ATR podem resultar em travões demasiado soltos ou demasiado apertados
  4. Requer uma gestão adequada do dinheiro para evitar perdas excessivas por transacção única

Orientações para a otimização da estratégia

  1. Incorporar sinais de confirmação de volume para melhorar a confiabilidade do sinal
  2. Adicionar filtros de tendência para reduzir sinais falsos em mercados variados
  3. Otimizar os multiplicadores de lucro e stop-loss com ajustamento dinâmico com base em diferentes prazos
  4. Incluir filtragem de volatilidade para reduzir a frequência de negociação durante períodos altamente voláteis
  5. Considerar a implementação de filtros de tempo para evitar a negociação durante períodos desfavoráveis

Resumo

Esta é uma estratégia abrangente que combina o indicador clássico de análise técnica MACD com métodos modernos de controle de risco. Captura as mudanças de ímpeto do mercado observando as mudanças no padrão do histograma MACD enquanto usa ATR para controle de risco dinâmico. A estratégia é bem projetada com lógica operacional clara e valor prático. Através da otimização e melhoria contínua, esta estratégia mostra promessa para um melhor desempenho em condições reais de negociação.


/*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)


Relacionados

Mais.