Com base na estratégia de média móvel dupla golden cross e death cross


Data de criação: 2024-02-27 16:21:02 última modificação: 2024-02-27 16:21:02
cópia: 0 Cliques: 686
1
focar em
1617
Seguidores

Com base na estratégia de média móvel dupla golden cross e death cross

Visão geral

Esta estratégia é uma típica estratégia de cruzamento de médias móveis, que usa dois conjuntos de médias médias, um conjunto de médias médias rápidas e um conjunto de médias médias lentas ao mesmo tempo. Quando a média rápida atravessa a média lenta, gera um sinal de compra; Quando a média rápida atravessa a média lenta, gera um sinal de venda.

Princípio da estratégia

A lógica principal da estratégia é baseada no cruzamento de dois conjuntos de linhas médias rápidas e lentas para determinar o tempo de entrada e saída.

Em primeiro lugar, calculemos dois conjuntos de medias rápidas e lentas:

  • Primeiro grupo de EMAs rápidos, com duração de 8 dias
  • O segundo grupo de EMAs rápidos, com duração de 21 dias
  • O primeiro grupo de SMAs lentas, com duração de 50 dias
  • O segundo grupo de SMAs lentas, com duração de 200 dias

Então, julgue se o EMA rápido é o SMA de ouro ou o SMA de forquilho:

  • Se a EMA de 8 dias atravessasse a SMA de 50 dias, seria um sinal de Goldilocks.
  • Se o EMA de 8 dias for abaixo do SMA de 50 dias, o sinal de forca morta

Para filtrar os sinais falsos, foi adicionado um segundo grupo de confirmações de EMA e SMA:

  • O sinal de negociação só é emitido quando a EMA de 21 dias também está acima ou abaixo da SMA de 50 dias

Assim, através de dois conjuntos de confirmação de equilíbrio rápido e lento, muitos falsos sinais podem ser filtrados, aumentando a confiabilidade do sinal.

Quando o julgamento produz um sinal de compra, faça mais entrada; Quando o julgamento produz um sinal de venda, faça entrada em branco.

Além disso, a estratégia também configura uma lógica de stop-loss. Quando a posição é mantida, o preço de stop-loss e stop-loss é monitorado de acordo com a taxa de ganho e perda definida.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Utilizando combinações de duplas equações, pode filtrar eficazmente os falsos sinais e melhorar a precisão do sinal
  2. Uma combinação de EMA e SMA, combinando a sensibilidade da EMA às últimas variações de preços e a suavidade da SMA
  3. Estabelecer um stop loss para bloquear o lucro e controlar o risco
  4. Princípios simples e claros, fáceis de entender e modificar
  5. Parâmetros personalizáveis para diferentes cenários de mercado

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. A estratégia de linha média é mais propensa a produzir pequenos lucros e pequenos prejuízos com mais oscilações
  2. Os investidores podem ter grandes perdas quando as tendências mudam drasticamente
  3. Parâmetros mal definidos também podem prejudicar a rentabilidade

Para controlar os riscos, recomenda-se:

  1. Ajustar adequadamente o conjunto de parâmetros para adaptá-los a diferentes circunstâncias de mercado
  2. Parâmetros de otimização com base nos resultados da retrospectiva para tornar a estratégia mais adequada ao mercado-alvo
  3. Configuração de stop loss para controlar o tamanho da perda individual

Direção de otimização

A estratégia também pode ser melhorada em alguns aspectos:

  1. Teste mais combinações de equilíbrio rápido e lento para encontrar a melhor combinação de parâmetros
  2. Parâmetros de busca automática de otimização usando aprendizado de máquina ou algoritmos genéticos
  3. Aumentar os indicadores de tendência e evitar negociações adversas
  4. Aumentar o stop-loss móvel ou stop-loss itinerante para melhor bloquear os lucros
  5. Reforço da fiabilidade do sinal em combinação com volume de negócios ou indicadores de volatilidade
  6. Combinações de estratégias/variedades múltiplas, que utilizam a dispersão do risco sem correlação

Resumir

Em geral, a estratégia de duplo equilíbrio de forquilhos e forquilhos forma um sinal de negociação através do cruzamento de equilíbrios rápidos e lentos, configura um risco de controle de parada e perda, tem características simples, intuitivas e fáceis de implementar. A estratégia pode ser otimizada por parâmetros de acordo com o mercado e a demanda, e também pode ser usada com outros indicadores técnicos ou combinações de estratégias.

Código-fonte da estratégia
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 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/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)