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.
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.
A estratégia apresenta as seguintes vantagens:
Uma base teórica simples e fiável, baseada no conhecido princípio do cruzamento da média móvel.
São utilizadas apenas duas médias móveis, com uma simples selecção de parâmetros e uma fácil aplicação.
As linhas rápidas e lentas trabalham juntas de forma eficaz para identificar tendências e filtrar o ruído do mercado.
Os diferentes prazos são registados através de MAs de períodos diferentes, detectando mudanças de tendência em múltiplas escalas.
Implementação simples com lógica clara e fácil de entender.
Os sinais visualizados são claros e intuitivos para decidir negócios.
Há também alguns riscos:
São propensos a sinais falsos, dependendo apenas de cruzes MA.
Incapacidade de julgar a força da tendência de forma eficaz, causando freqüentes stop loss em mercados variados.
Os períodos fixos de MA não podem adaptar-se às alterações do mercado, exigindo a otimização dos parâmetros.
Os níveis de entrada e saída não estão claros, com alguns riscos.
Uma base teórica simplista pode comprometer o desempenho e o potencial de lucro.
A estratégia pode ser melhorada nos seguintes aspectos:
Adicionar outros indicadores para determinar os níveis de entrada e saída, tais como KDJ para sobrecompra/supervenda.
Implementar mecanismos de stop loss como trailing stop para limitar as perdas.
Otimizar os períodos de MA para se adaptarem aos diferentes ciclos de mercado.
Adicione o filtro de volume para evitar falsos escapes.
Avalie a força da tendência, por exemplo, a inclinação MA, para dimensionar o tamanho da posição.
Incorporar vários prazos para uma melhor continuidade da tendência.
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())