Estratégia de Dispositivo Aberto

Autora:ChaoZhang, Data: 2023-10-23 15:13:49
Tags:

img

Resumo

A estratégia de open drive observa o comportamento dos preços nos primeiros 30 minutos após a abertura do mercado a cada dia de negociação, identifica fortes breakouts direcionais e entra em negociações de tendência nessa direção.

Estratégia lógica

  1. Use barras de 30 minutos, pois precisa haver tempo suficiente para medir movimentos extremos de preços após a abertura.

  2. Identifique os bares abertos durante estes períodos de tempo: 0700-0715, 0800-0815, 1300-1315, 1430-1445.

  3. Verifique se a barra aberta satisfaz:

    • Abrir perto da barra baixa, fechar perto da barra alta (barra acima)

    • Ou aberto perto de barra alta, fechado perto de barra baixa (baixo barra)

    • E alta excede a anterior alta de 5 bares por 1 x intervalo de 5 bares, ou baixa quebra a anterior baixa de 5 bares por 1 x intervalo de 5 bares (breakout)

  4. Se as condições acima estiverem preenchidas, introduzir a negociação de tendência nessa direção 3 barras após a barra de sinal.

  5. Configurar stop loss em alto/baixo da barra de entrada.

  6. Mantenha a posição durante 3 bares (90 minutos), depois saia.

Análise das vantagens

  • Captura fortes movimentos direcionais resultantes de alta liquidez após abertura
  • Os filtros de fuga evitam sinais falsos de condições agitadas
  • Um prazo mais longo reduz o excesso de negociação
  • Stop loss evita perdas excessivas

Análise de riscos

  • Períodos de abertura fixos com risco de ausência de rupturas de tendência
  • Um limiar de ruptura insuficiente pode filtrar sinais válidos
  • Tempo de retenção fixo não pode adaptar-se a condições específicas
  • Nenhuma paragem final não segue as tendências

Veja o seguinte:

  • Determinar dinamicamente o período aberto com mais parâmetros
  • Otimizar o limiar de ruptura
  • Ajustar o tempo de retenção com base na volatilidade
  • Adicionar procedimentos de trailing stop

Orientações para melhorias

  • Incorporar mais indicadores para melhorar a qualidade do sinal
  • Insira transações em prazos mais curtos para mais frequência
  • Otimizar parâmetros como período aberto, limiar de ruptura, paradas etc. com base em backtests
  • Considere paradas de atraso, reentrada etc. para aumentar os lucros
  • Testes de retrocesso em vários produtos para encontrar o melhor ajuste

Resumo

A estratégia de drive aberto segue a tendência, capturando fortes quebras direcionais após a abertura. Em comparação com as entradas aleatórias, fornece melhores características de risco-recompensa. A chave é a ajuste adequado dos parâmetros, a seleção do instrumento e o equilíbrio de frequência e lucratividade.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-10-22 00:00:00
period: 10m
basePeriod: 1m
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/
// © Marcns_

//@version=5
// a script that highlights open drives around cash market opens throughout the day
// this indicator identifies the following cash open, open drives 0700 - 0715 / 0800 - 0815 / 1300 - 1315 / 1430 - 1445 
// an open drive is when a cash market opens and price runs either up or down away from the opening price, often this will be the high or the low the remainer of the session or day
// and often identify a trend session
strategy("Open Drive", commission_type =  strategy.commission.cash_per_contract, commission_value = 3.8 )

// open drive filter times - all times GMT
eu_sev = time(timeframe.period, "0700-0715", "GB")
eu_eig = time(timeframe.period, "0800-0815", "GB")
us_one = time(timeframe.period, "1300-1315", "GB")
us_two = time(timeframe.period, "1430-1445", "GB")


// identify bar that opens at low and closes at high + vice versa 
// bar needs to open at one extreme and close at another 
TrndExThreshold_Open = 0.15
TrndExThreshold_Close = 0.15

// add a bar range expansion filter - range of bar correlates to volume, high volume = wider range. This script will be able to filter for a break of a 5 bar range +100% or -100%

fbhi = ta.highest(5)
fblo = ta.lowest(5)

fbr = (fbhi - fblo)

RangeEx_up = 0.0

if high >= (fbhi[1] + fbr[1])
    RangeEx_up := 1.0
else
    na

// range ex down

RangeEx_do = 0.0

if low <= (fblo[1] - fbr[1]) 
    RangeEx_do := 1.0
else
    na


//#1 open within 5% of low

OpenAtLow = 0.0 

if (close > open) and (open-low) / (high-low) < TrndExThreshold_Open
    OpenAtLow := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtHigh = 0.0

if (close > open) and (high-close) / (high-low) < TrndExThreshold_Close
    CloseAtHigh := 1.0
else
    na 

OD_Up = 0.0

if (OpenAtLow + CloseAtHigh + RangeEx_up == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Up := 1
else
    na

plot(OD_Up, title = "OD_up")



OpenAtHigh = 0.0 

if (close < open) and (high-open) / (high-low) < TrndExThreshold_Open
    OpenAtHigh := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtLow = 0.0

if (close < open) and (close-low) / (high-low) < TrndExThreshold_Close
    CloseAtLow := 1.0
else
    na 

OD_Down = 0.0

if (OpenAtHigh + CloseAtLow + RangeEx_do == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Down := -1
else
    na

plot(OD_Down, title = "OD_down", color = color.red)


//3sma

ma = ta.sma(close,3)

// one time framing - highlight bars the make a series of lower highs or higher lows to identify trend 
// one time frame up 
otf_u = 0.0

if close > ma and close[1] > ma[1]
    otf_u := 1
else
    na
// one time frame down 
otf_d = 0.0

if close < ma and close[1] < ma[1]
    otf_d := 1
else
    na


//bgcolor(otf_u ? color.rgb(76, 175, 79, 70) : na)
//bgcolor(otf_d ? color.rgb(255, 82, 82, 66) : na)

// record high and low of entry bar into variable for absolute stop
// buy stop
bs = 0.0

if OD_Up
    bs := low[1]
else
    na

// sell stop
ss = 0.0

if OD_Down
    ss := high[1]
else
    na




// strategy entry and exits 
// long
if OD_Up
    strategy.entry("el", strategy.long, 2)
if ta.barssince(OD_Up)> 3 
    strategy.exit(id = "ex" , from_entry = "el", limit = close)

// short 
if OD_Down
    strategy.entry("es", strategy.short, 2)
if ta.barssince(OD_Down)> 3
    strategy.exit(id = "ex" , from_entry = "es", limit = close)



Mais.