Estratégia de reversão da média móvel


Data de criação: 2023-12-21 15:45:23 última modificação: 2023-12-21 15:45:23
cópia: 1 Cliques: 733
1
focar em
1623
Seguidores

Estratégia de reversão da média móvel

Esta estratégia é chamada de estratégia de reversão de reversão de média baseada em média móvel, e sua principal idéia é comprar depois de cair a média crítica e parar depois de atingir o objetivo de lucro predeterminado.

O principal princípio da estratégia é usar a reversão da linha média de curto prazo para capturar oportunidades de rebatimento em situações de liquidação. Concretamente, quando os preços caem abaixo da linha média de períodos mais longos (como a linha de 20 dias, 50 dias, etc.) e mostram fortes sinais de superação, os preços geralmente produzem um certo grau de rebatimento devido à característica de reversão média da volatilidade do mercado.

A lógica de compra específica da estratégia é: comprar 1 mão após a queda do preço abaixo da linha de 20 dias, adicionar 1 mão após a queda da linha de 50 dias, adicionar 1 mão após a queda da linha de 100 dias, adicionar até 1 mão após a queda da linha de 200 dias, fazer mais 4 mãos. Depois de atingir o alvo de parada predefinido.

Análise de vantagens

  1. Utilizando a característica de retorno da linha média, é possível identificar oportunidades de rebote em curto prazo.
  2. Construção em lotes para reduzir o risco de um único lote
  3. Configure condições de parada para bloquear o lucro
  4. Filtragem para evitar falsas rupturas usando preços de abertura e baixas anteriores

Análise de Riscos

  1. O risco de reversão pode ser maior se mantido por um longo período.
  2. Sinais de linha média podem causar falhas e, consequentemente, perdas
  3. A meta de parada definida pode não ser atingida, não pode ser parada total ou parcialmente

Direção de otimização

  1. Performance e estabilidade podem ser testadas sob diferentes parâmetros
  2. Pode ser considerado em combinação com outros indicadores como MACD, KD etc.
  3. Pode escolher um período de linha média adequado ao seu estilo de negociação de acordo com as características de diferentes variedades
  4. Algoritmos de aprendizagem de máquina podem ser introduzidos para otimizar dinamicamente os parâmetros

Resumir

Esta estratégia é, no geral, uma estratégia de negociação equitativa mais clássica e generalizada. Ela usa corretamente a característica de smooting equitativa, ao mesmo tempo em que combina várias linhas de equilíbrio para identificar oportunidades de compra em curto prazo.

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

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)