Estratégia de tendência de período cruzado com base na média móvel e EMA


Data de criação: 2024-02-21 15:59:43 última modificação: 2024-02-21 15:59:43
cópia: 1 Cliques: 713
1
focar em
1617
Seguidores

Estratégia de tendência de período cruzado com base na média móvel e EMA

Visão geral

Esta estratégia é uma estratégia que utiliza a linha média e a EMA para negociar a tendência entre os quadros de tempo. A estratégia determina a direção da tendência através da combinação de diferentes períodos de SMA, EMA e K-line, permitindo o rastreamento de tendências de baixo risco.

Princípio da estratégia

A estratégia baseia-se principalmente na comparação de três períodos diferentes de médias médias de SMA para determinar a movimentação dos preços. Além disso, é auxiliada pela utilização de EMA para determinar a direção da entidade.

Especificamente, a estratégia usa uma média SMA de 3 ciclos, 3 ciclos, 8 ciclos e 10 ciclos. O preço é considerado em queda quando está abaixo das três médias e emite um sinal de compra quando o preço retorna à média.

Além disso, a estratégia também usa a EMA de 5 ciclos para auxiliar na determinação da direção da entidade da linha K, garantindo que a entidade seja comprada para cima.

No gerenciamento de posições, a estratégia define o número de ganhos ou o período máximo de posições como uma forma de parar os perdas.

Análise de vantagens

A estratégia, combinada com a linha média de diferentes períodos de tempo, permite o julgamento de tendências, filtrando efetivamente o ruído do mercado e rastreando as tendências de linha média e longa. Os parâmetros da estratégia são otimizados e têm um bom desempenho na retrospectiva histórica.

Além disso, a estratégia de incluir o julgamento da EMA pode evitar a compra de uma entidade de linha K para baixo, reduzindo assim a perda de pontos de deslizamento desnecessários.

Em geral, a estratégia é estável, confiável e adequada para rastreamento de linhas médias e longas.

Riscos e soluções

  • A estratégia é sensível aos parâmetros, e a configuração inadequada de 3 ciclos SMA ou ciclos EMA pode levar à diminuição da qualidade do sinal de negociação. A otimização dos parâmetros é necessária para diferentes variedades.

  • A estratégia não leva em consideração grandes saltos ou lacunas. Se houver uma notícia importante que cause um grande salto no preço, um certo prejuízo pode ser causado. Pode-se definir um stop loss para evitar esse risco.

Direção de otimização

  • Pode-se considerar a adição de mais parâmetros de ciclo, formando uma comparação de EMA ou SMA em vários períodos de tempo, para que a estratégia seja mais precisa no julgamento de tendências.

  • É possível testar a configuração de stop loss de um determinado valor, reduzindo os prejuízos em situações extremas, com a garantia de lucro.

  • Pode-se tentar introduzir aprendizado de máquina para otimização dinâmica dos parâmetros, permitindo que os parâmetros da estratégia sejam ajustados de acordo com a situação do mercado em tempo real.

Resumir

A estratégia é robusta e confiável como um todo, usando uma comparação de linhas médias para determinar a direção da tendência, apoiada por sinais de filtragem EMA. Com a otimização de parâmetros e configuração de controle de vento, a taxa de vitória e a taxa de lucro da estratégia podem ser aumentadas. Vale a pena estudar e aplicar ainda mais.

Código-fonte da estratégia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))