Estratégia de negociação da Bugra baseada na média móvel cinética dupla

Autora:ChaoZhang, Data: 2024-02-19 14:36:37
Tags:

img

Resumo

A estratégia de negociação Bugra é uma estratégia que combina o indicador OTT desenvolvido pelo meu querido professor Anıl Özekşi e o indicador Wavetrend Oscillator do lonestar108.

Princípio da estratégia

A estratégia de negociação Bugra primeiro calcula a linha média das Bandas de Bollinger, que é a linha média móvel MAvg. Em seguida, com base no intervalo percentual e no período definido pelo usuário, calcula a longa stop loss longStop e a curta stop loss shortStop. Quando o preço atravessa o trilho superior, vá longo. Quando atravessa o trilho inferior, vá curto. O sinal de fechamento é quando o preço volta ao redor da média móvel.

Especificamente, o indicador central desta estratégia é o indicador OTT. O indicador OTT consiste em uma média móvel e linhas de limite. Ele ajusta a posição das linhas de limite de acordo com a volatilidade do mercado com base em certos algoritmos. Quando o preço atravessa a linha de limite inferior OTT, vá curto. Quando atravessa a linha de limite superior OTT, vá longo.

Esta estratégia também usa o indicador Wavetrend para determinar a direção da tendência do preço. Se for julgado uma tendência de queda, vá apenas curto, não longo. Se for julgado uma tendência de alta, vá apenas longo, não curto.

Análise das vantagens

A estratégia de negociação Bugra combina as vantagens de médias móveis, Bandas de Bollinger e indicadores OTT. Pode ajustar automaticamente as posições de stop loss e reduzir a probabilidade de ação de stop loss. Ao mesmo tempo, incorporando indicadores de julgamento de tendência, evita ser preso em tendências oscilantes.

Especificamente, as principais vantagens desta estratégia são:

  1. Pode ajustar automaticamente as posições de stop loss para controlar eficazmente os riscos.
  2. O indicador OTT pode determinar com relativa precisão os pontos de reversão.
  3. Ao incorporar indicadores de julgamento de tendências, evita ficar preso em mercados oscilantes.
  4. As suas regras são relativamente simples e claras, fáceis de compreender e aplicar.

Análise de riscos

A estratégia comercial da Bugra apresenta também alguns riscos, principalmente nos seguintes aspectos:

  1. Em condições de mercado violentas, o stop loss pode ser quebrado, causando perdas maiores.
  2. Os sinais de inversão avaliados pelo indicador OTT podem não ser precisos e podem ocorrer sinais defeituosos.
  3. Os julgamentos da tendência também podem ser errados.
  4. Ajustes de parâmetros inadequados também afetarão o desempenho da estratégia.

As contra-medidas são principalmente as seguintes:

  1. Afrouxar adequadamente o intervalo de perda de parada para garantir que as linhas de perda de parada não sejam facilmente ativadas.
  2. Combinar com outros indicadores para avaliar a fiabilidade dos sinais OTT para evitar sinais falsos.
  3. Ajustar adequadamente os parâmetros para tornar os julgamentos da tendência mais fiáveis.
  4. Otimize os parâmetros para encontrar a melhor combinação de parâmetros.

Orientações de otimização

A estratégia de negociação da média móvel cinética dupla ainda pode ser melhorada:

  1. Considere a combinação com outros indicadores para melhorar a precisão do julgamento do sinal.
  2. Estudar algoritmos de stop loss adaptativos para que as linhas de stop loss possam ser ajustadas de acordo com a volatilidade do mercado.
  3. Adicionar indicadores de volume de negociação para evitar falsos breakouts com baixo volume.
  4. Teste diferentes tipos de médias móveis para encontrar a média móvel mais adequada.
  5. Tente aprendizado de máquina e outros métodos para otimizar automaticamente parâmetros.

Resumo

A estratégia de negociação de média móvel dinâmica dupla integra as vantagens de vários indicadores. Ela pode ajustar automaticamente as posições de stop loss, julgar sinais de reversão e identificar direções de tendência. Ela tem vantagens como fortes capacidades de controle de risco e fácil de entender e usar. Mas também tem riscos como ficar preso e sinais imprecisos. Esta estratégia pode ser otimizada ainda mais combinando com outros indicadores, estudando algoritmos adaptativos, etc. Em geral, a estratégia de negociação de média móvel dinâmica dupla é uma estratégia de negociação prática de ruptura.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bugra trade strategy", shorttitle="Bugra trade strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true
// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")


Mais.