Estratégia de fuga em duas etapas

Autora:ChaoZhang, Data: 2023-11-02 15:58:29
Tags:

img

Resumo

Esta estratégia toma decisões de negociação com base na variação percentual do preço de abertura de 5 minutos às 2:00 da manhã de cada dia, usando um breakout de duas etapas para definir diferentes condições de gatilho, com o objetivo de capturar movimentos significativos de preços em mercados variados.

Estratégia lógica

A estratégia calcula a mudança percentual da vela de 5 minutos atual com base em seu preço de abertura em comparação com o preço de abertura da vela de 5 minutos às 2:00 da manhã todos os dias. Quando a mudança percentual excede o limiar de ruptura do primeiro estágio, são tomadas decisões de compra ou venda correspondentes. Os níveis de stop loss e take profit também são definidos para fechar posições.

Se o stop loss for acionado, quando a variação percentual continuar a aumentar e exceder a condição de acionamento do segundo estágio, as ordens anteriores serão canceladas e novas ordens de compra ou venda utilizando o limiar do segundo estágio serão colocadas, continuando a ser rastreado o stop loss e o take profit.

A configuração de breakout de dois estágios filtra algum ruído durante os mercados variáveis, fazendo apenas negociações em movimentos de preço mais significativos.

Vantagens

  • A ruptura de dois estágios com diferentes condições de desencadeamento efetivamente filtra o ruído em mercados variados, negociando apenas em grandes oscilações de preços
  • Ativar o segundo estágio evita que o stop loss seja acionado com demasiada frequência
  • Calcular a variação percentual do preço de abertura utiliza novas tendências após o mercado aberto a cada dia
  • Lógica estratégica simples e clara, fácil de compreender e implementar

Riscos e atenuações

  • A alta volatilidade pode desencadear abertura e encerramento frequentes de posições, aumentando os custos de negociação
  • A fixação da segunda etapa demasiado elevada pode fazer perder boas oportunidades comerciais
  • A definição de níveis demasiado baixos pode desencadear transacções extras desnecessárias

Atenuantes:

  • Otimizar parâmetros para encontrar o melhor equilíbrio
  • Limitar o número máximo de operações por dia para evitar a troca excessiva
  • Usar parâmetros mais agressivos durante tendências óbvias

Oportunidades de melhoria

  • Otimizar os valores para os dois estágios de ruptura para encontrar a melhor combinação
  • Pesquisa de parâmetros ótimos para diferentes produtos e períodos de tempo
  • Incorporar indicador de tendência para utilizar configurações mais agressivas durante tendências fortes
  • Limitar as transacções diárias máximas para evitar o excesso de negociação
  • Otimizar o stop loss e os pontos de lucro para melhor risco-recompensa

Resumo

Esta estratégia capta picos de preços usando uma quebra de dois estágios em mercados variados, filtrando o ruído efetivamente. O conceito é simples e claro e pode alcançar bons resultados através da otimização de parâmetros. O próximo passo é combinar com indicadores de tendência para maximizar o desempenho durante os mercados de tendência.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Auto Entry Bot", overlay=true)

// Define input for the stop loss and take profit levels
stopLossPips = input.int(200, title="Stop Loss Pips", minval=1)
takeProfitPips = input.int(400, title="Take Profit Pips", minval=1)

// Calculate the percentage change from the 5-minute opening candle at 2:00 AM
var float openPrice = na
if (hour == 2 and minute == 0)
    openPrice := open
percentageChange = (close - openPrice) / openPrice * 100

// Track the cumulative percentage change
var float cumulativeChange = 0

// Define input for the percentage change trigger
triggerPercentage1 = input.float(0.25, title="Percentage Change Trigger (%)", minval=0.01, step=0.01)
triggerPercentage2 = input.float(0.35, title="Additional Trigger Percentage (%)", minval=0.01, step=0.01)

// Check for price change trigger
if (percentageChange >= triggerPercentage1)
    // Sell signal
    strategy.entry("Sell", strategy.short)
    strategy.exit("ExitSell", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade

if (percentageChange <= -triggerPercentage1)
    // Buy signal
    strategy.entry("Buy", strategy.long)
    strategy.exit("ExitBuy", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade

// If the price keeps hitting stop loss, activate the second trigger
if (strategy.position_size < 0 and percentageChange <= -triggerPercentage2)
    strategy.cancel("Sell")  // Cancel previous sell order
    strategy.entry("Sell2", strategy.short)
    strategy.exit("ExitSell2", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade

if (strategy.position_size > 0 and percentageChange >= triggerPercentage2)
    strategy.cancel("Buy")  // Cancel previous buy order
    strategy.entry("Buy2", strategy.long)
    strategy.exit("ExitBuy2", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade


Mais.