Estratégia de negociação de média móvel Golden Cross clássica


Data de criação: 2023-12-11 11:37:36 última modificação: 2023-12-11 11:37:36
cópia: 0 Cliques: 606
1
focar em
1621
Seguidores

Estratégia de negociação de média móvel Golden Cross clássica

Visão geral

A estratégia de negociação de média móvel de cruz de ouro é uma estratégia de negociação quantitativa mais clássica. A estratégia usa médias móveis de diferentes períodos para determinar a tendência do mercado de fazer mais curto. Quando a média móvel de curto prazo cruza a média móvel de período mais longo, é considerada um sinal de compra; Quando a média móvel de curto prazo cruza a média móvel de longo prazo, é considerada um sinal de venda.

Princípio da estratégia

A estratégia baseia-se em uma média móvel simples (SMA) de três períodos diferentes: linha de 50 dias, linha de 100 dias e linha de 200 dias. A lógica de negociação específica é a seguinte:

  1. O sinal de entrada: quando a média móvel de 50 dias for usada na média móvel de 100 dias, faça mais entrada.

  2. Sinais de saída: quando a média móvel de 50 dias atravessa a média móvel de 100 dias, saia da posição; ou quando o preço de fechamento for abaixo da média móvel de 100 dias, saia; ou quando a média móvel de 100 dias atravessa a média móvel de 200 dias, saia.

  3. Stop loss: configuração de stop loss móvel e stop loss fixo.

A estratégia utiliza a característica de que as médias móveis são capazes de julgar eficazmente o preço médio do mercado. Quando as médias de curto prazo atravessam as médias de longo prazo, são consideradas um sinal de que o mercado entrou em uma tendência ascendente e, portanto, fez mais; Quando as médias de curto prazo atravessam as médias de longo prazo, são consideradas um canal descendente e, portanto, saíram do mercado.

Vantagens estratégicas

  1. A operação é simples e fácil de implementar. A lógica da estratégia pode ser construída usando apenas três médias móveis de diferentes períodos.

  2. Com uma forte estabilidade. As médias móveis têm a função de silenciar o ruído, eliminando efetivamente a influência das flutuações aleatórias do mercado sobre a negociação, tornando o sinal mais estável e confiável.

  3. A média móvel pode refletir eficazmente a tendência de mudança de preços médios do mercado, julgando as grandes mudanças de mercado através do cruzamento de linhas de curto e longo período.

  4. Alta customização. Pode determinar a combinação periódica das médias móveis, permitindo diferentes níveis de controle de risco.

Risco estratégico

  1. Pode-se gerar um número maior de falsos sinais. Quando as médias móveis de curto e longo prazo se aproximam muito, pode-se produzir um cruzamento frequente, gerando uma grande quantidade de sinais inválidos.

  2. Incapacidade de responder rapidamente a surpresas. A média móvel responde lentamente às mudanças de preço e não pode reagir em tempo real a notícias surpreendentes e eventos importantes no mercado.

  3. A ausência de ganhos de pequenas oscilações no mercado. A ausência de ruído das médias móveis também significa a impossibilidade de capturar pequenos ganhos de pequenas oscilações no mercado.

  4. A configuração dos parâmetros é mais subjetiva. A escolha do ciclo da média móvel é mais subjetiva, sendo necessário determinar os melhores parâmetros de acordo com os diferentes mercados.

Direção de otimização da estratégia

  1. Aumentar as condições de filtragem para evitar a geração de muitos falsos sinais. Por exemplo, configurar uma faixa de flutuação de preços como um filtro, que só produz um sinal de negociação quando se rompe uma certa amplitude.

  2. Em combinação com outros indicadores, como os indicadores de taxa de flutuação e volume de transação, pode aumentar a precisão do sinal.

  3. Adição de módulos de otimização de adaptação. Otimizar dinamicamente os parâmetros periódicos das médias móveis por meio de tecnologias como aprendizado de máquina, para que elas possam se adaptar às mudanças no ambiente de mercado externo.

  4. Combinação de modelos de aprendizagem profunda. Usar modelos de aprendizagem profunda mais avançados para substituir as médias móveis, com mais poderosa extração de características e capacidade de modelagem.

Resumir

A estratégia de negociação de linha de equilíbrio cruzada do ouro é uma estratégia de acompanhamento de tendências mais típica. Ela reflete a tendência média de mudança dos preços do mercado, é simples e prática, adequada para os iniciantes.

Código-fonte da estratégia
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1m
basePeriod: 1m
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/
// © CJDeegan

//@version=4
strategy(title = "[LIVE] Golden Cross", overlay=true)

// ------------Functions------------

//Percent to Decimal Conversion
perToDec(a) => a * 0.01
//Price Difference to Tick
diffToTick(a,b) => (a - b) / syminfo.mintick 

    
// ------------Strategy Inputs------------
takeProfitInput = input(300, "Take Profit Price (% Gain)")
stopLossInput = input(25, "Stop Loss (% Loss)")


startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2018, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=1, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2031, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear,
         startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
     

// ------------Populate Indicators------------

//EMA
sma50 = sma(close,50)
sma100 = sma(close,100)
sma200 = sma(close,200)


// ------------Entry Logic------------
//Guards
entryGuard = true
//Triggers
entryTrigger = crossover(sma50,sma100)
//Conditions
entryCondition = entryGuard and entryTrigger
//Calculations
//Execution
if (inDateRange and entryCondition)
    strategy.entry("Long", strategy.long, when = entryCondition, comment = "Entry")

//------------Exit Logic------------

//Guards
//Triggers
exitTrigger = crossunder(sma50,sma100) or close < sma100 or crossunder(sma100,sma200)
//Conditions
exitCondition = exitTrigger

//Calculations
//Take Profit
takeProfitPrice = strategy.position_avg_price + (strategy.position_avg_price * perToDec(takeProfitInput))
//Take Profit Ticks
takeProfitTicks = diffToTick(takeProfitPrice, strategy.position_avg_price)
//StopLoss
stopLossPrice = strategy.position_avg_price - (strategy.position_avg_price * perToDec(stopLossInput))

//Execution
if (inDateRange)
    strategy.close("Long", when = exitCondition, comment = "Sell Trigger")
    strategy.exit("Exit", "Long", comment="Stop", profit=takeProfitTicks, stop=stopLossPrice)

//Plots
plot(sma50, "SMA 50", color = color.blue)
plot(sma100, "SMA 100", color = color.green)
plot(sma200, "SMA 200", color = color.yellow)
entry = plot(strategy.position_size <= 0 ? na : strategy.position_avg_price, "Entry Price", color = color.yellow, style = plot.style_linebr)
profit = plot(strategy.position_size <= 0 ? na : takeProfitPrice, "Take Profit (Price)", color = color.green, style = plot.style_linebr)
stop = plot(strategy.position_size <= 0 ? na : stopLossPrice, "Stop Loss", color = color.red, style = plot.style_linebr)
fill(entry,profit, color=color.green)
fill(entry,stop, color=color.red)