Estratégia de ruptura da tendência intradiária

Autora:ChaoZhang, Data: 2023-09-18 13:11:51
Tags:

Resumo

Trata-se de uma tendência intradiária de curto prazo seguindo uma estratégia baseada no indicador Supertrend. Os utilizadores podem definir a sessão de negociação intradiária durante a qual a estratégia será executada.

A estratégia inverte a posição usando a quantidade dupla quando o sinal muda.

Estratégia lógica

  1. Calcular o indicador Supertrend com base no multiplicador definido pelo utilizador e no período ATR.

  2. Trace a linha Supertrend como o suporte e a resistência.

  3. Determine condições longas/cortas. Fechar acima da linha Supertrend é uma condição longa. Fechar abaixo da linha Supertrend é uma condição curta.

  4. Verifique se a barra atual está dentro da sessão intradiária definida pelo utilizador.

  5. Emissão de sinais long/short apenas quando a sessão intradiária estiver ativa e estiverem preenchidas as condições long/short.

  6. Posição inversa tomando o comércio oposto com quantidade dupla quando a direção da Supertrend muda.

  7. Quadrar as posições abertas quando a direção da Supertrend não for alterada e a sessão intradiária terminar.

Análise das vantagens

  1. Supertrend identifica tendência e reduz sinais falsos.

  2. Combinando Supertrend com preço próximo evita ser interrompido prematuramente.

  3. Reverter a posição em tempo hábil reduz as perdas.

  4. A sessão intradiária evita o risco da noite.

  5. A saída forçada evita o risco de se esquecerem de marcar.

Análise de riscos

  1. Parâmetros de Supertrend inadequados podem levar a um mau desempenho da estratégia.

  2. A reversão da posição aumenta a frequência e os custos do comércio.

  3. A saída forçada no final da sessão pode levar a perdas.

  • O risco 1 pode ser atenuado através da otimização de parâmetros.

  • O risco 2 pode ser controlado através de stop loss.

  • O risco 3 pode ser evitado utilizando o filtro de stop loss ou de tendência.

Oportunidades de melhoria

  1. Teste diferentes indicadores de tendência, como MA, KDJ, etc.

  2. Adicione a lógica de stop loss.

  3. Adicionar filtro de tendência para evitar perdas de saída forçada.

  4. Otimizar os parâmetros do multiplicador e do período ATR.

  5. Teste em diferentes instrumentos.

Conclusão

Esta estratégia combina Supertrend e gerenciamento de sessões intradiárias para capitalizar as quebras de tendência de curto prazo.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 1h
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/
// © Pritesh-StocksDeveloper

//@version=4
strategy("Supertrend - Intraday", overlay=true, calc_on_every_tick = true)

// ********** 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)

var float i_multiplier = input(title = "Multiplier", type = input.float, 
     defval = 4, confirm=true)

var int i_atrPeriod = input(title = "ATR Period", type = input.integer, 
     defval = 14, confirm=true)

// ********** 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

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


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

[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)

colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)

plot(superTrend, color = colResistance, linewidth=2)
plot(superTrend, color = colSupport, linewidth=2)

// Long/short condition
longCondition = close > superTrend
shortCondition = close < superTrend

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active
 
// Long position
// When longCondition and intradaySession both are true
strategy.entry(id = "Long", long = strategy.long, 
     when = longCondition and intradaySession)
 
// Short position
// When shortCondition and intradaySession both are true
strategy.entry(id = "Short", long = strategy.short, 
     when = shortCondition and intradaySession)
 
// 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.