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

Dynamic WaveTrend e Estratégia de Negociação Quantitativa Integrada de Fibonacci

Autora:ChaoZhang, Data: 2025-01-17 15:09:01
Tags:RSIWTFIBEMASMAHLC3

 Dynamic WaveTrend and Fibonacci Integrated Quantitative Trading Strategy

Resumo

Esta é uma estratégia de negociação quantitativa abrangente que combina o indicador WaveTrend, os níveis de retração de Fibonacci e o indicador RSI. A estratégia busca oportunidades de negociação ideais nas tendências de mercado e flutuações de preços através da coordenação de vários indicadores técnicos.

Princípio da estratégia

A estratégia baseia-se em vários elementos essenciais: Indicador de tendência de onda: Constrói um canal de volatilidade dinâmica calculadora da média móvel exponencial (EMA) e desvio padrão dos preços. 2. Níveis de retracementos de Fibonacci: A estratégia calcula e atualiza dinamicamente os máximos e mínimos dos preços, desenhando três níveis de retracementos de Fibonacci principais em 38,2%, 50% e 61,8%. Indicador RSI: usa um índice de força relativa (RSI) de 14 períodos para confirmar as condições de sobrecompra e sobrevenda do mercado. 4. Confirmação de sinais múltiplos: A estratégia requer a satisfação simultânea de condições específicas, incluindo sinais de cruzamento da WaveTrend, sinais de sobrecompra/supervenda do RSI e relação de preço com os níveis de Fibonacci.

Vantagens da estratégia

  1. Alta fiabilidade do sinal: reduz eficazmente o impacto dos falsos sinais através da coordenação de vários indicadores técnicos.
  2. Controlo de risco abrangente: Implementa um mecanismo de stop-loss e take-profit baseado em pontos para controlar efetivamente o risco para cada negociação.
  3. Forte adaptabilidade: A estratégia pode ajustar dinamicamente os níveis de Fibonacci para se adaptar a diferentes ambientes de mercado.
  4. Sinais claros: os sinais de negociação são claros, fáceis de compreender e executar.

Riscos estratégicos

  1. Risco de volatilidade do mercado: os pontos de stop-loss podem tornar-se demasiado flexíveis em mercados com forte volatilidade.
  2. O atraso do sinal: devido à utilização de médias móveis e outros indicadores técnicos, os sinais podem apresentar algum atraso.
  3. Risco de gestão de fundos: Os níveis fixos de stop-loss e take-profit podem não ser adequados para todos os ambientes de mercado.

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

  1. O mecanismo de stop-loss e take-profit dinâmico: sugere a alteração do stop-loss e take-profit de ponto fixo para um mecanismo dinâmico baseado no indicador ATR.
  2. Filtragem do ambiente de mercado: adicionar um filtro de força de tendência para ajustar os parâmetros da estratégia em diferentes ambientes de mercado.
  3. Optimização do sinal: considere adicionar indicadores de volume para ajudar na confirmação dos sinais de negociação.
  4. Optimização de parâmetros: Recomenda-se a otimização dos parâmetros WaveTrend e RSI para adaptá-los a diferentes instrumentos e prazos de negociação.

Resumo

Esta é uma estratégia de negociação quantitativa bem concebida com lógica clara. Através do uso combinado de múltiplos indicadores técnicos, pode efetivamente capturar oportunidades de mercado enquanto controla riscos. As principais vantagens da estratégia estão em seu sistema de sinal confiável e mecanismo abrangente de controle de risco. Através das direções de otimização sugeridas, a estabilidade e adaptabilidade da estratégia podem ser ainda melhoradas.


/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy(title="Şinasi Özel Tarama", shorttitle="Şinasi Tarama", overlay=true)

// LazyBear WaveTrend Göstergesi
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")

ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red)
plot(osLevel2, color=color.green)

plot(wt1, color=color.green)
plot(wt2, color=color.red)
plot(wt1 - wt2, color=color.blue, style=plot.style_area, transp=80)
plot(ta.crossover(wt1, wt2) ? wt2 : na, color=color.black, style=plot.style_circles, linewidth=3)
plot(ta.crossover(wt1, wt2) ? wt2 : na, color=(wt2 - wt1 > 0 ? color.red : color.lime), style=plot.style_circles, linewidth=2)
barcolor(ta.crossover(wt1, wt2) ? (wt2 - wt1 > 0 ? color.aqua : color.yellow) : na)

// Fibonacci seviyelerini çizmek için yeni en yüksek ve en düşük fiyatları her yeni mumda güncelleme
var float fibLow = na
var float fibHigh = na

// Fibonacci seviyelerini yeniden hesapla
if (na(fibLow) or na(fibHigh))
    fibLow := low
    fibHigh := high
else
    fibLow := math.min(fibLow, low)
    fibHigh := math.max(fibHigh, high)

fib38 = fibLow + 0.382 * (fibHigh - fibLow)
fib50 = fibLow + 0.5 * (fibHigh - fibLow)
fib618 = fibLow + 0.618 * (fibHigh - fibLow)

plot(fib38, color=color.orange, linewidth=1, title="Fibonacci 38.2%")
plot(fib50, color=color.purple, linewidth=1, title="Fibonacci 50%")
plot(fib618, color=color.blue, linewidth=1, title="Fibonacci 61.8%")

// RSI hesaplama
rsiPeriod = input(14, title="RSI Length")
rsiValue = ta.rsi(close, rsiPeriod)
plot(rsiValue, color=color.blue, title="RSI")

// Buy ve Sell sinyalleri

// Buy sinyali
buyCondition = rsiValue < 30 and close < fib38 and close < fib50 and close < fib618 and ta.crossover(wt1, wt2)
plotshape(buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Sell sinyali
sellCondition = rsiValue > 70 and close > fib38 and close > fib50 and close > fib618 and ta.crossunder(wt1, wt2)
plotshape(sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Strateji giriş ve çıkış
// Buy (Alım) işlemi
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Sell (Satım) işlemi
if (sellCondition)
    strategy.entry("Sell", strategy.short)

// TP (Take Profit) seviyesinin 3500 pip olarak ayarlanması
// SL (Stop Loss) seviyesinin 7000 pip olarak ayarlanması

pipValue = syminfo.mintick * 10 // Pip değeri

// Buy TP (Alım TP) seviyesi
buyTPCondition = buyCondition
strategy.exit("Buy Exit", "Buy", limit=close + 300 * pipValue, stop=close - 700 * pipValue)

// Sell TP (Satım TP) seviyesi
sellTPCondition = sellCondition
strategy.exit("Sell Exit", "Sell", limit=close - 3500 * pipValue, stop=close + 7000 * pipValue)


Relacionados

Mais.