O recurso está a ser carregado... Carregamento...

Estratégia de saída da campanha de abertura

Autora:ChaoZhang, Data: 2023-12-01 14:32:48
Tags:

img

Resumo

Esta estratégia implementa longo e curto com base em crossovers da média móvel, e sai apenas à tarde com base em estatísticas iniciais de lucro para evitar ser preso por alta volatilidade de abertura.

Estratégia lógica

A estratégia usa 3 médias móveis com parâmetros diferentes: linhas de 14 dias, 28 dias e 56 dias. Ela fica longa quando a linha de 14 dias cruza acima da linha de 56 dias e fica curta quando cruza abaixo. Esta abordagem básica rastreia tendências de longo prazo. Para filtrar algum ruído, a linha de 28 dias é adicionada como referência, de modo que os sinais são acionados apenas quando a linha de 14 dias também está acima ou abaixo da linha de 28 dias.

A inovação chave é que ele para a perda e obtém lucro apenas entre as 16h e as 17h. As estatísticas mostram 70% de chance de alta / baixa diária acontecer na primeira hora após a abertura.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. Seguir as tendências a médio e longo prazo, evitar ruído excessivo
  2. Utilizar estatísticas da volatilidade de abertura para a lógica de stop loss para evitar falsos breakouts
  3. Lógica simples e intuitiva, fácil de entender e modificar

Riscos e soluções

Há também alguns riscos:

  1. Perder oportunidades se a reversão acontecer no início do dia.
  2. Ainda há riscos de ficarem presos depois das horas de trabalho.
  3. Mal ajuste do período de backtest levando a sobreajuste.

Oportunidades de melhoria

Algumas formas de otimizar ainda mais a estratégia:

  1. Teste diferentes combinações de médias móveis para encontrar parâmetros ótimos
  2. Intervalo de paralisação de perdas baseado em padrões de volatilidade de ações específicas
  3. Adicionar filtro de volume para evitar armadilhas
  4. Adicionar paradas dinâmicas para trail pullbacks após breakouts

Conclusão

A estratégia tem uma lógica clara e simples, efetivamente usa recursos de abertura para stop loss para evitar armadilhas de volatilidade. Mas existem riscos de perder chances e ficar preso. Os parâmetros devem ser ajustados por ação.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MAC 1st Trading Hour Walkover", overlay=true)

// Setting up timeperiod for testing
startPeriodYear = input(2014, "Backtest Start Year")
startPeriodMonth = input(1, "Backtest Start Month")
startPeriodDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0)

stopPeriodYear = input(2025, "Backtest Stop Year")
stopPeriodMonth = input(12, "Backtest Stop Month")
stopPeriodDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0)

// Moving Averages
ema14 = ema(close, 14)
ema28 = ema(close, 28)
sma56 = sma(close, 56)

// Plot
plot(ema14, title="ema14", linewidth=2, color=green)
plot(ema28, title="ema28", linewidth=2, color=red)
plot(sma56, title="sma56", linewidth=3, color=blue)

// Strategy
goLong = cross(ema14, sma56) and ema14 > ema28
goShort = cross(ema14, sma56) and ema14 < ema28

// Strategy.When to enter
if time >= testPeriodStart
    if time <= testPeriodStop
        strategy.entry("Go Long", strategy.long, 1.0, when=goLong)
        strategy.entry("Go Short", strategy.short, 1.0, when=goShort)

// Strategy.When to take profit 
if time >= testPeriodStart 
    if time <= testPeriodStop 
        strategy.exit("Close Long", "Go Long", profit=2000) 
        strategy.exit("Close Short", "Go Short", profit=2000) 

// Strategy.When to stop out 
// Some studies show that 70% of the days high low happen in the first hour 
// of trading. To avoid having that volatility fire our loss stop we 
// ignore price action in the morning, but allow stops to fire in the afternoon. 
if time("60", "1000-1600") 
    strategy.exit("Close Long", "Go Long", loss=500) 
    strategy.exit("Close Short", "Go Short", loss=500)

Mais.