Estratégia de Crossover de Três Médias Móveis


Data de criação: 2023-11-06 09:48:33 última modificação: 2023-11-06 09:48:33
cópia: 0 Cliques: 661
1
focar em
1617
Seguidores

Estratégia de Crossover de Três Médias Móveis

Visão geral

A estratégia de cruzamento de três linhas usa o cruzamento de médias móveis de diferentes períodos de tempo como um sinal de compra e venda, e é uma estratégia de acompanhamento de tendências. A estratégia usa três médias móveis, incluindo médias móveis de curto prazo, médias móveis de médio prazo e médias móveis de longo prazo, para formar um sinal de negociação com base em sua cruz.

Princípio da estratégia

A estratégia primeiro calcula a média móvel de curto prazo (default 7 dias), a média móvel de médio prazo (default 25 dias) e a média móvel de longo prazo (default 99 dias) e gera um sinal de negociação de acordo com as seguintes regras:

  1. Quando uma média móvel de curto prazo atravessa uma média móvel de médio prazo, um sinal de compra é gerado.

  2. Quando a média móvel de curto prazo atravessa a média móvel de médio prazo, um sinal de venda é gerado.

  3. Quando uma média móvel de curto prazo é atravessada por uma média móvel de longo prazo, um sinal de compra rápida é gerado.

  4. Quando a média móvel de curto prazo atravessa a média móvel de longo prazo, um sinal de venda rápida é gerado.

A estratégia considera que a transição entre a média móvel e a média móvel de curto prazo indica que a tendência do mercado se transformou em alta e, portanto, produz um sinal de compra; e a transição entre a média móvel de curto prazo e a média móvel de curto prazo indica que a tendência do mercado se transformou em baixa e, portanto, produz um sinal de venda. Da mesma forma, o cruzamento entre a média móvel de curto prazo e a média móvel de longo prazo também produz um sinal de negociação rápido para capturar a mudança de tendência da linha mais longa.

Análise de vantagens

  • A lógica da estratégia é simples, clara, fácil de entender e de implementar.
  • A análise de múltiplos períodos de tempo permite capturar de forma eficaz as mudanças nas tendências do mercado.
  • Os parâmetros da estratégia podem ser otimizados ajustando a periodicidade das médias móveis.
  • Os sinais de cruzamento visuais refletem de forma intuitiva as mudanças de tendência.

Análise de Riscos

  • A média móvel está atrasada e pode ter perdido o ponto de viragem.
  • No mercado de capitais, pode haver muitos sinais falsos nas linhas curtas e longas.
  • No mercado aéreo, pode haver muitos sinais falsos que atravessam a linha longa sob a linha curta.
  • Os sinais rápidos de compra e venda podem ser muito sensíveis, aumentando o número de transações e as comissões.

Pode-se reduzir os falsos sinais através de ajustes apropriados no ciclo da média móvel, ou adicionar condições de filtragem para otimizar. Também pode-se reduzir apropriadamente o ciclo de negociação rápida e reduzir a frequência de negociação.

Direção de otimização

  • A adição de condições de filtragem, por exemplo, só gera um sinal se for maior do que um determinado volume de transação ou porcentagem de mudança de preço.
  • Combinação de filtros de outros indicadores, como MACD, KDJ, etc., para evitar erros de negociação quando não há uma tendência clara.
  • Otimizar a combinação de períodos de média móvel para reduzir falsos sinais.
  • Distinguir entre mercados de ativos e ativos balísticos, e otimizar os parâmetros de compra e venda.
  • Considere os custos de transação, ajuste os parâmetros de transação rápida, controle da frequência de transação.

Resumir

A estratégia de cruzamento de três equilíbrios é mais simples e direta, determinando a direção da tendência através do cruzamento de equilíbrios de diferentes períodos de tempo para gerar um sinal de negociação. A estratégia é fácil de implementar, o ajuste de parâmetros é flexível e pode capturar mudanças na tendência.

Código-fonte da estratégia
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
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("Üç Hareketli Ortalama Str.", overlay=true, initial_capital=10000, commission_value=0.047, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, calc_on_order_fills=true)

kisa = input(title = "Kısa Vade - Gün", defval = 7,  minval = 1)
orta = input(title = "Orta Vade - Gün", defval = 25, minval = 1)
uzun = input(title = "Uzun Vade - Gün", defval = 99, minval = 1)

sma7  = sma(close, kisa)
sma25 = sma(close, orta)
sma99  = sma(close, uzun)

alTrend  = plot (sma7, color=#2323F1, linewidth=2, title="Har.Ort. Kısa Vade", transp=0)
satTrend = plot (sma25, color=#FF0C00, linewidth=3, title="Har.Ort. Orta Vade", transp=0)
ort99    = plot (sma99, color=#DFB001, linewidth=3, title="Har.Ort. Uzun Vade", transp=0)

zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")

al  = crossover (sma7, sma25) and zamanaralik <= year
sat = crossover (sma25, sma7) and zamanaralik <= year

hizlial = crossover (sma7, sma99) and zamanaralik <= year
hizlisat = crossover (sma99, sma7) and zamanaralik <= year

alkosul  = sma7 >= sma25
satkosul = sma25 >= sma7

hizlialkosul  = sma7 >= sma99
hizlisatkosul = sma99 >= sma7

plotshape(al,  title = "Buy",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Sell", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

plotshape(hizlial,  title = "Hızlı Al",  text = 'Hızlı Al',  style = shape.labelup,   location = location.belowbar, color= color.blue, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(hizlisat, title = "Hızlı Sat", text = 'Hızlı Sat', style = shape.labeldown, location = location.abovebar, color= #6106D6 , textcolor = color.white, transp = 0, size = size.tiny)

fill (alTrend, satTrend, color = sma7 >= sma25? #4DFF00 : #FF0C00, transp=80, title="Al-Sat Aralığı")
//fill (ort99, satTrend, color = sma7 >= sma25? #6106D6 : color.blue, transp=80, title="Hızlı Al-Sat Aralığı")

if (al)
    strategy.entry("LONG", strategy.long)
if (sat)
    strategy.entry("SHORT", strategy.short)
//if (hizlial)
//    strategy.entry("My Short Entry Id", strategy.long)
//if (hizlisat)
//    strategy.entry("My Short Entry Id", strategy.short)