Estratégia de rompimento de cruzamento de média móvel dupla


Data de criação: 2023-11-27 16:21:45 última modificação: 2023-11-27 16:21:45
cópia: 0 Cliques: 553
1
focar em
1617
Seguidores

Estratégia de rompimento de cruzamento de média móvel dupla

Visão geral

A estratégia calcula a média móvel rápida de 30 dias e a média móvel lenta de 33 dias das ações, fazendo uma entrada LONG ou SHORT quando elas ocorrem em um golden fork ou em um dead fork. A parada imediata ocorre quando um sinal contrário. Isso pode efetivamente capturar mudanças na tendência.

Princípio da estratégia

O núcleo da estratégia é calcular a média rápida de 30 dias e a média lenta de 33 dias. A linha rápida responde mais rapidamente às mudanças de preço, enquanto a linha lenta tem um efeito de onda melhor. Quando a linha rápida se eleva a partir da linha lenta, ela gera um sinal de compra.

Através deste design de cruzamento de linha média rápida e lenta, pode-se gerar um sinal de negociação no início da tendência e parar quando o sinal oposto aparece, capturando efetivamente a tendência de preço da linha média e longa. Ao mesmo tempo, evita-se ser confundido com as excessivas flutuações do mercado.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Usar uma média móvel simples, fácil de entender e de implementar
  2. A combinação de linhas rápidas e lentas tem um efeito de filtração, respondendo rapidamente às mudanças de preço
  3. Os sinais de forquilha de ouro e forquilha morta são simples, claros e fáceis de operar
  4. Captura de tendências médias e longas
  5. Risco controlado de parada rápida em sinal de reversão

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Quando os preços estão em um estado de agitação, pode haver vários sinais falsos que levam a negociações excessivamente frequentes
  2. A falta de capacidade para lidar com as mudanças bruscas de preços provocadas por eventos inesperados
  3. Os parâmetros selecionados, como o período de mediana, podem precisar de otimização, e a configuração inadequada pode afetar o desempenho da política
  4. As taxas de transação têm um impacto nos lucros.

Estes riscos podem ser controlados e reduzidos por meio de métodos como otimização de parâmetros, configuração de pontos de parada e negociação apenas quando a tendência é clara.

Direção de otimização

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

  1. Optimizar o ciclo de média e o tipo de cruzamento para encontrar a combinação de parâmetros ideal
  2. Adicionar filtros para outros indicadores técnicos, como volume de negociação, MACD, etc., reduzindo os falsos sinais
  3. Adição de um mecanismo de stop-loss adaptativo, em vez de um simples stop-loss de sinal inverso
  4. Combinação de parâmetros de projeto e regras de parada para diferentes produtos
  5. Parâmetros de ajuste dinâmico em combinação com métodos de aprendizado de máquina

Através de testes e otimização, é possível melhorar continuamente as regras da estratégia, obtendo sinais de negociação mais confiáveis em diferentes ambientes de mercado.

Resumir

A estratégia de ruptura de cruzamento de dupla linha de equilíbrio é simples e prática em geral. A combinação de linha de equilíbrio rápida e linha de equilíbrio lenta permite identificar efetivamente o início da tendência de linha média e longa, gerando um sinal de negociação mais confiável.

Código-fonte da estratégia
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.




testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    //true
    time >= testPeriodStart and time <= testPeriodEnd ? true : false

fast_length = 30
slow_length = 33

ema1 = 0.0
ema2 = 0.0

volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)

//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 :=  ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 :=  ema(close,slow_length)



plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)

go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)

if testPeriod()
    strategy.entry("long_ride", strategy.long, when=go_long)
    strategy.entry("short_ride", strategy.short,when=go_short)
    
        
    strategy.close("long_ride",when=go_short)
    strategy.close("short_ride",when=go_long)