Estratégia de negociação cruzada tendência touro/urso

Autora:ChaoZhang, Data: 2023-10-07 09:56:30
Tags:

Resumo

Esta estratégia utiliza o princípio do cruzamento da média móvel para determinar a direção da tendência e gerar sinais de compra e venda.

Princípio

A estratégia emprega duas médias móveis, uma MA de 7 dias como linha rápida e uma MA de 5 meses como linha lenta. A linha rápida capta as mudanças de preço rapidamente, enquanto a linha lenta filtra o ruído e determina a direção da tendência. Quando a linha rápida quebra acima da linha lenta de baixo, é considerado um sinal de alta para ir longo. Quando a linha rápida quebra a linha lenta de cima, é considerado um sinal de baixa para ir curto.

Especificamente, a estratégia calcula a média móvel simples de 7 dias (SMA) e a SMA de 5 meses, traçando-as no gráfico de preços. Quando a linha de 7 dias cruza acima da linha de 5 meses de baixo, um sinal de compra é gerado. Quando a linha de 7 dias cruza abaixo da linha de 5 meses de cima, um sinal de venda é desencadeado. A estratégia também visualiza os períodos de sinal.

Vantagens

A estratégia apresenta as seguintes vantagens:

  1. Uma base teórica simples e fiável, baseada no conhecido princípio do cruzamento da média móvel.

  2. São utilizadas apenas duas médias móveis, com uma simples selecção de parâmetros e uma fácil aplicação.

  3. As linhas rápidas e lentas trabalham juntas de forma eficaz para identificar tendências e filtrar o ruído do mercado.

  4. Os diferentes prazos são registados através de MAs de períodos diferentes, detectando mudanças de tendência em múltiplas escalas.

  5. Implementação simples com lógica clara e fácil de entender.

  6. Os sinais visualizados são claros e intuitivos para decidir negócios.

Riscos

Há também alguns riscos:

  1. São propensos a sinais falsos, dependendo apenas de cruzes MA.

  2. Incapacidade de julgar a força da tendência de forma eficaz, causando freqüentes stop loss em mercados variados.

  3. Os períodos fixos de MA não podem adaptar-se às alterações do mercado, exigindo a otimização dos parâmetros.

  4. Os níveis de entrada e saída não estão claros, com alguns riscos.

  5. Uma base teórica simplista pode comprometer o desempenho e o potencial de lucro.

Reforço

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Adicionar outros indicadores para determinar os níveis de entrada e saída, tais como KDJ para sobrecompra/supervenda.

  2. Implementar mecanismos de stop loss como trailing stop para limitar as perdas.

  3. Otimizar os períodos de MA para se adaptarem aos diferentes ciclos de mercado.

  4. Adicione o filtro de volume para evitar falsos escapes.

  5. Avalie a força da tendência, por exemplo, a inclinação MA, para dimensionar o tamanho da posição.

  6. Incorporar vários prazos para uma melhor continuidade da tendência.

Conclusão

A estratégia identifica tendências de alta/baixa de forma simples e confiável com base na teoria do cruzamento de MA. Os prós são simplicidade e facilidade de uso, enquanto os contras são riscos inerentes à tendência. Parâmetros de ajuste fino, adição de indicadores auxiliares etc. podem melhorar o desempenho da estratégia. Os investidores podem optar por usá-lo com base em seu apetite por risco.


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dadashkadir

//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma
    ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al  = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al,  title = "Giriş",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

FromDay    = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear   = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay      = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if al
    strategy.entry("Al", strategy.long, when=Timerange())
if sat
    strategy.entry("Sat", strategy.short, when=Timerange())


Mais.