Estratégia de abertura inversa de engulfing

Autora:ChaoZhang, Data: 2023-11-22 16:05:24
Tags:

img

Resumo

A Estratégia de Engulfimento de Abertura Reversa é uma estratégia de negociação intradiária simples baseada no primeiro candelabro após a abertura. A ideia central desta estratégia é julgar a tendência de alta ou baixa do primeiro candelabro quando ele aparece após a abertura todos os dias e realizar operações de contra. Se o primeiro candelabro for uma linha de yang vermelha, vá longo; se o primeiro candelabro for uma linha de yin verde, vá curto. A estratégia também configura mecanismos de stop loss e take profit para sair de posições.

Estratégia lógica

O princípio por trás desta estratégia é a peculiaridade do primeiro candelabro após a abertura. Quando o mercado abre, as forças de longs e shorts se confrontam mais intensamente, e a probabilidade de uma reversão é relativamente grande.

Especificamente, após a abertura de um novo dia, a estratégia registrará o preço de abertura, o preço de fechamento e a mudança de preço do primeiro candelabro. Se o preço de abertura for maior que o preço de fechamento (linha verde yin), isso significa que os ursos venceram e devemos fazer long; se o preço de abertura for menor que o preço de fechamento (linha vermelha yang), significa que os touros venceram e devemos fazer short. Ao tomar tais operações de contra, a estratégia tenta capturar oportunidades de reversão após a abertura.

Enquanto isso, a estratégia também estabelece mecanismos de stop loss e take profit, incluindo o preço de stop loss longo, o preço de take profit longo, o preço de stop loss curto e o preço de take profit curto, para controlar os riscos e os lucros das posições longas e curtas, evitando perdas excessivas ou a tomada de lucro prematura.

Análise das vantagens

A estratégia de abertura reversa do engulfing tem as seguintes vantagens:

  1. A lógica é simples e clara, fácil de compreender e implementar.
  2. Utiliza o elevado valor preditivo do segmento de abertura para captar oportunidades de reversão.
  3. As configurações de stop loss e take profit podem controlar eficazmente os riscos.
  4. A ideia de estratégia tem universalidade e é adequada para a maioria das ações.
  5. O custo da participação é relativamente baixo e o controlo do capital é fácil.

Análise de riscos

A Estratégia de Abertura Reversa de Engulfing também apresenta alguns riscos, nomeadamente:

  1. Probabilidade de falha da reversão de abertura.
  2. Incapacidade de filtrar efetivamente ações de baixa qualidade.
  3. Incapacidade de controlar eficazmente os riscos sistémicos decorrentes de eventos de cisne negro, como o impacto de notícias significativamente negativas.
  4. As configurações inadequadas de stop loss e take profit podem levar a perdas aumentadas ou a lucros reduzidos.

Orientações de otimização

A estratégia de engulfamento de abertura reversa pode ser otimizada nos seguintes aspectos:

  1. Aumentar o teste de validade dos sinais de reversão de abertura para evitar sinais inválidos, por exemplo, combinar a análise de volume.
  2. Selecionar grupos de stocks integrando a análise fundamental e técnica para filtrar stocks de baixa qualidade.
  3. Adicionar módulos de monitorização para eventos e notícias importantes para controlar os riscos sistémicos.
  4. Usar algoritmos genéticos, aprendizado de máquina e outros métodos para otimizar dinamicamente as configurações de stop loss e take profit.

Resumo

A Estratégia de Engulfamento de Abertura Reversa tenta capturar oportunidades de reversão após a abertura, julgando a direção do primeiro candelabro e realizando operações contrárias. A idéia da estratégia é simples com baixos custos de participação e tem algum valor prático.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-11-21 00:00:00
period: 3h
basePeriod: 15m
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/
// © vikris
//@version=4
strategy("[VJ]First Candle Strategy", overlay = true,calc_on_every_tick = true,default_qty_type=strategy.percent_of_equity,default_qty_value=100,initial_capital=750,commission_type=strategy.commission.percent, 
     commission_value=0.02)


// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01    


// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0



// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


// ********** Supporting functions - End **********


// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
 
// If start of the daily session changed, then it's first bar of the new session
isNewDay = time("D") != time("D")[1]
var firstBarCloseValue = close
var firstBarOpenValue = open
if isNewDay
    firstBarCloseValue := close
    firstBarOpenValue := open


greenCandle = firstBarOpenValue < firstBarCloseValue
redCandle = firstBarOpenValue > firstBarCloseValue

buy = redCandle
sell = greenCandle


// plot(firstBarCloseValue)
// plot(firstBarOpenValue)



//Final Long/Short Condition
longCondition = buy
shortCondition =sell
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

Mais.