Estratégia de negociação de crossover de tendência


Data de criação: 2023-10-07 09:56:30 última modificação: 2023-10-07 09:56:30
cópia: 0 Cliques: 637
1
focar em
1617
Seguidores

Visão geral

A estratégia usa o princípio de cruzamento de médias móveis para determinar a direção da tendência através do cruzamento de linhas rápidas e lentas, para emitir sinais de compra e venda. A estratégia é simples e confiável e é adequada para investidores que buscam ganhos estáveis.

Princípios

A estratégia usa duas médias móveis, a média de 7 dias como linha rápida e a média de 5 meses como linha lenta. A linha rápida capta as mudanças de preço mais rapidamente, a linha lenta elimina o ruído e determina a direção da tendência. Quando a linha rápida quebra a linha lenta a partir da direção inferior, considere um sinal de mercado de touros e faça mais; quando a linha rápida cai da direção superior e quebra a linha lenta, considere um sinal de mercado de bezeros e faça um espaço.

Especificamente, a estratégia gera um sinal de compra quando a linha de 7o dia atravessa a linha de 5o dia de baixo para cima e gera um sinal de venda quando a linha de 7o dia atravessa a linha de 5o dia de cima para baixo. A estratégia também marca visualmente o momento em que o sinal é produzido.

Vantagens

A estratégia tem as seguintes vantagens:

  1. A teoria é simples e confiável, baseada no conhecido princípio de cruzamento de médias móveis.

  2. Usando apenas duas médias móveis, a seleção de parâmetros é simples e fácil de implementar.

  3. A combinação de linhas rápidas e lentas permite identificar as tendências e filtrar o ruído do mercado.

  4. O uso de diferentes médias periódicas permite capturar mudanças de tendência em diferentes escalas de tempo.

  5. A implementação é simples, o código é fácil de entender e a lógica é clara.

  6. Os sinais visuais sugerem uma visão clara e intuitiva, e as decisões operacionais são mais claras.

Riscos

A estratégia também apresenta alguns riscos:

  1. A operação baseia-se apenas em um cruzamento homogêneo e é propensa a gerar um sinal de disparo errado.

  2. Não é possível avaliar com precisão se a tendência é forte ou fraca, e pode ser interrompida com frequência em situações de turbulência.

  3. O ciclo de média fixa não pode se adaptar às mudanças do mercado e precisa de parâmetros otimizados.

  4. Não é possível determinar o ponto de compra e venda, existindo um certo risco de operação de mercado.

  5. A base teórica mais simples, o efeito pode ser um desconto, com uma margem de lucro limitada.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Adicionar outros indicadores para determinar pontos de compra e venda, como o indicador KDJ para determinar sobrecompra e sobrevenda.

  2. Adicionar mecanismos de parada, como o rastreamento de parada, para evitar a expansão de perdas.

  3. Optimizar os parâmetros do ciclo da linha média para que possam ser adaptados a diferentes ciclos de circunstâncias.

  4. Aumentar a filtragem de tráfego para evitar falsas brechas.

  5. Avaliação de tendências fortes e fracas, como cálculo da inclinação da linha média, operação de diferentes intensidades.

  6. A análise de tendências, combinada com uma análise de períodos de tempo, permite avaliar a continuidade das tendências.

Resumir

A estratégia baseia-se no princípio de cruzamento de médias móveis, identificando de forma simples e confiável as tendências de alta e baixa. A vantagem é a facilidade de operação, a desvantagem é o risco de seguir a tendência de forma cega. Os métodos de otimização de parâmetros, adição de indicadores auxiliares e outros podem aumentar a eficácia da estratégia.

Código-fonte da estratégia
/*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())