Estratégia de recuperação de impulso

Autora:ChaoZhang, Data: 2024-01-23 15:23:14
Tags:

img

Resumo

Esta estratégia visa identificar potenciais oportunidades de retração no mercado. Emprega um sistema de média móvel dupla com uma média móvel de longo prazo (MA1) e uma média móvel de curto prazo (MA2). O principal objetivo é ir longo quando o preço de fechamento está abaixo da MA1 mas acima da MA2, sinalizando um potencial retração dentro da tendência geral.

Estratégia lógica

A estratégia utiliza duas médias móveis: MA1 (a longo prazo) e MA2 (a curto prazo). A lógica é que, se os preços recuarem brevemente para testar o suporte da tendência de longo prazo, pode apresentar uma oportunidade longa. Especificamente, se o preço de fechamento permanecer acima do suporte de longo prazo (MA1), a tendência principal permanece intacta. Mas se o preço de fechamento quebrar abaixo do MA (MA2) de curto prazo, mas ainda se mantiver acima do MA (MA1) de longo prazo, isso sinaliza uma configuração de pullback do livro.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. Simples de implementar e fácil de entender com ajuste flexível de parâmetros
  2. Aproveita MAs duplas para identificar tendências principais e evitar operações contrárias às tendências
  3. Filtros de tempo personalizáveis para evitar períodos anormais
  4. Dimensão ajustável das posições para atender às diferentes preferências de risco
  5. Mecanismo de stop-loss para limitar o risco de queda

Análise de riscos

Os riscos a tomar em consideração:

  1. Recurso fracassado se os preços continuarem a diminuir e o stop-loss for atingido
  2. Reversão de tendência importante se a área de suporte principal for quebrada
  3. Flexões e divergências com ação de preços voláteis
  4. Transações em falta de filtros de tempo subótimos

Algumas formas de otimizar e mitigar os riscos:

  1. Otimizar os parâmetros MA para melhorar a qualidade do sinal
  2. Ajustar os níveis de stop-loss para maximizar os lucros e minimizar os riscos
  3. Ajustar os filtros de tempo para se concentrar nos melhores períodos de negociação
  4. Teste em diferentes instrumentos e ambientes de mercado

Oportunidades de melhoria

Algumas formas de melhorar a estratégia:

  1. Otimizar parâmetros MA para encontrar as melhores combinações
  2. Teste diferentes mecanismos de stop-loss, como trailing ou chandelier stops
  3. Adicionar filtros adicionais como volume ou volatilidade
  4. Incorporar regras de dimensionamento de posição como adicionar em cruzes de ouro e reduzir em cruzes da morte
  5. Construir um mecanismo automatizado de obtenção de lucros
  6. Backtest para analisar métricas-chave e finalizar parâmetros

Conclusão

Em resumo, esta é uma estratégia de pullback de reversão de média direta. Identifica configurações de pullback com a abordagem de MA dupla e gerencia o risco com paradas adaptativas. A estratégia é fácil de entender e implementar com ajuste flexível. Os próximos passos são otimizações adicionais em torno de elementos como parâmetros de MA, stop-loss, filtros para tornar a estratégia mais robusta.


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter =true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Mais.