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


Data de criação: 2023-10-24 10:56:08 última modificação: 2023-10-24 10:56:08
cópia: 0 Cliques: 589
1
focar em
1617
Seguidores

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

Visão geral

A estratégia utiliza principalmente a dupla média móvel como um sinal de compra e venda, ganhando quando a tendência se inverte. Fazer mais quando atravessado a média móvel de curto prazo acima da média móvel de curto prazo, e fechar mão quando atravessado a média móvel de longo prazo abaixo da média móvel de curto prazo, pertence a estratégia de tracking stop loss comum.

Princípio da estratégia

A estratégia começa com a criação de duas médias móveis, uma média de 20 dias de curto prazo e uma média de 60 dias de longo prazo. A entrada é determinada pelo cruzamento das médias de curto prazo e de longo prazo.

Especificamente, quando a média curta é atravessada pela média de longo prazo, significa que a tendência atual é ascendente, fazendo mais; quando a média curta é atravessada pela média de longo prazo, significa que a tendência atual é descendente, fazendo espaço.

A forma de trailing stop é trailing stop, ou seja, um trailing stop baseado no preço mais alto e no preço mais baixo, que permite travar o máximo de lucro.

A lógica principal do código é a seguinte:

  1. Calcule o EMA de 20 dias e o EMA de 60 dias
  2. Se for o caso, faça mais.
  3. Se for o caso, deixe de lado.
  4. Depois de entrar em uma posição multi, use o máximo de 3% como linha de stop loss
  5. Depois de entrar em uma posição de curto prazo, use 3% do preço mínimo como linha de stop loss
  6. Ajuste contínuo da linha de stop loss durante a manutenção da posição

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A ideia é simples, fácil de entender e de implementar.
  2. A dupla linha de equilíbrio permite a filtragem eficaz de falhas.
  3. A utilização de um tracking stop loss permite o bloqueio do lucro máximo.
  4. O sistema de detecção de sinais de mudança de tendência é capaz de capturar sinais em tempo hábil.
  5. A retirada foi bem controlada e estável.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Quando a tendência não é visível, a dupla linha média pode ocorrer com frequência, resultando em perdas de negociação frequentes.
  2. A configuração inadequada do limiar de perda pode levar a um limiar de perda muito relaxado ou muito radical.
  3. Se os parâmetros forem ajustados de forma errada, o período pode causar a perda de um ponto de sinal crítico.
  4. As taxas de transação são mais elevadas e afetam a margem de lucro.

Otimizar para o risco pode ser feito da seguinte forma:

  1. Quando a tendência não é visível, use um sistema de filtragem para evitar negociações cegas.
  2. Otimizar o teste de suspensão e definir a suspensão apropriada.
  3. Otimizar o parâmetro de configuração para encontrar o melhor parâmetro através da retomada e do ajuste de parâmetros.
  4. A redução apropriada do número de corretores e a redução das taxas de transação.

Otimização de ideias

A estratégia pode ser melhorada em alguns aspectos:

  1. Adicionar filtragem de outros indicadores, formando um mecanismo de entrada de múltiplos requisitos, evitando falsas rupturas. Por exemplo, pode ser adicionado um indicador de determinação RSI.

  2. Otimizar os parâmetros de ciclo da média móvel para encontrar a melhor combinação de parâmetros. Os diferentes parâmetros de ciclo podem ser testados por meio de passagens a passo.

  3. Optimizar o limite de perda. O limite de perda ideal pode ser calculado a partir de dados de retrospectiva. O limite de perda dinâmico também pode ser definido.

  4. Configuração de mecanismos de reentrada. Após a saída de stop loss, é possível configurar uma lógica de reentrada razoável, reduzindo o número de transações.

  5. Combinando indicadores de tendência, suspender a negociação quando a tendência não é visível, para evitar negociações inválidas.

  6. Adesão ao mecanismo de gerenciamento de posições, ajustando posições e limites de parada de acordo com a dinâmica do mercado.

Resumir

A estratégia de inversão de média móvel dupla é simples e prática em geral, e é um método comum e eficaz para determinar os pontos de reversão de tendência através de duas linhas de equilíbrio. Mas há um certo risco, que requer testes de otimização de configuração de parâmetros e limites de parada, e combinação com outros indicadores de filtragem para maximizar a eficácia da estratégia. Se for cuidadosamente otimizada e com um rigoroso gerenciamento de risco, a estratégia pode ser uma estratégia de negociação de bandos de onda com ganhos estáveis.

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


//@version=2
strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
needdb = input(true, defval = true, title = "Double Body")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2
candle = high - low

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)