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

Autora:ChaoZhang, Data: 23 de dezembro de 2021
Tags:

img

A estratégia é chamada de Mean Reversion Reverse Strategy Based on Moving Average. A ideia principal é comprar quando o preço atravessa as principais médias móveis e tirar lucro ao atingir metas pré-estabelecidas.

O principal princípio desta estratégia é capturar oportunidades de rebote em mercados de faixa usando a reversão de médias móveis de curto prazo. Especificamente, quando os preços atravessam médias móveis de ciclo mais longo (como MA de 20 dias e 50 dias) e mostram sinais de forte sobrevenda, os preços tendem a se recuperar em certa medida devido à característica de reversão média das flutuações do mercado. Neste momento, se médias móveis de ciclo mais curto (como MA de 10 dias) mostrarem sinal de reversão ascendente, seria um bom momento para comprar. Nesta estratégia, ele comprará quando o preço de fechamento estiver abaixo de MA de 20 dias, enquanto acima de MA de 50 dias, a fim de capturar seu rebote com reversão de MA de curto prazo.

A lógica de entrada específica é: Compre 1 lote quando o preço atravessa a MA de 20 dias, adicione 1 lote quando atravessa a MA de 50 dias, continue adicionando 1 lote quando atravessa a MA de 100 dias e adicione até 1 lote quando atravessa a MA de 200 dias, para um máximo de 4 lotes. Tome lucro após atingir as metas pré-definidas. Também define o tempo e as condições de stop loss.

Análise das vantagens

  1. Identificar eficazmente oportunidades de recuperação a curto prazo utilizando as características de reversão das médias móveis
  2. Reduzir os riscos de um único ponto através de ordens piramidais
  3. Fixar os lucros através da definição de metas de lucro
  4. Evitar falhas usando filtros de preço aberto e preços baixos anteriores

Análise de riscos

  1. Os riscos de reversão em períodos de detenção longos podem aumentar se o mercado continuar a cair.
  2. Os sinais MA podem dar sinais falsos, levando a perdas
  3. Pode não obter lucros inteiros ou parciais se o objetivo de lucro não for atingido

Orientações de otimização

  1. Teste a rendibilidade e a estabilidade sob diferentes parâmetros
  2. Considere a combinação de outros indicadores como MACD, KD para decidir entradas
  3. Escolher períodos de MA adequados com base nas características dos diferentes produtos
  4. Introduzir algoritmos de aprendizagem de máquina para otimizar dinamicamente parâmetros

Resumo

Em geral, esta é uma estratégia de negociação de MA clássica e universal. Ele utiliza corretamente a característica de suavização de MA, combinada com vários MA para identificar oportunidades de compra de curto prazo. Ele controla os riscos por ordens de pirâmide e tomada de lucro oportuna. Mas sua resposta a eventos de mercado como notícias políticas significativas pode ser mais passiva. Isso é algo que pode ser otimizado ainda mais.


/*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)

Mais.