Estratégia de fuga de consolidação

Autora:ChaoZhang, Data: 15 de dezembro de 2023 11:59:08
Tags:

img

Resumo

Esta estratégia é um indicador de ruptura de consolidação de consolidação intradiário para os mercados indianos. Incorpora condições de tempo, comissão e rastreamento de stop-loss. As vantagens desta estratégia incluem lógica clara, ajuste flexível de parâmetros e adaptação à dinâmica do mercado. No entanto, existem certos riscos e precisam de otimização adicional.

Estratégia lógica

A estratégia básica é baseada em Bollinger Bands. Ela usa uma média móvel simples de período LENGTH, pois as bandas de linha média e de alta/baixa são desvios padrão +MULT/-MULT. Os sinais de compra são gerados quando as quebras fecham acima da banda superior e os sinais de venda são gerados quando as quebras fecham abaixo da banda inferior, formando uma estratégia de quebra de faixa.

Para controle de risco, ele usa ATR para linha de stop loss. Ele também considera os horários de negociação do mercado indiano e fecha todas as posições às 14:57 todos os dias.

Análise das vantagens

As vantagens desta estratégia:

  1. Lógica clara, fácil ajuste de parâmetros, adaptação flexível
  2. Incorporar controlo de stop loss e de cronometragem para a gestão de riscos
  3. Considere as especificidades dos mercados indianos para localização
  4. Frequência razoável de negociação, evitar excesso de negociação
  5. Boa extensibilidade para otimização adicional

Análise de riscos

Os riscos desta estratégia:

  1. As bandas de Bollinger baseiam-se no ajuste de parâmetros baseado na experiência
  2. Indicador único suscetível a falsos sinais
  3. O ATR pode controlar apenas riscos limitados
  4. Eventos de cisne negro não considerados

Os riscos podem ser reduzidos:

  1. Combinação de múltiplos indicadores para filtragem de sinais
  2. Otimização de regras de ajuste de parâmetros
  3. Incorporação de lógica de negociação de gap
  4. Aumentar a robustez do stop loss
  5. Combinação de índices de sentimento de mercado

Orientações de otimização

A estratégia pode ser otimizada em várias direcções:

  1. Optimizar o ajuste de parâmetros para melhor adaptabilidade
  2. Adicionar mais indicadores para evitar falsos sinais
  3. Aumentar a robustez do stop loss
  4. Incorporar mais análises para a detecção de tendências
  5. Considere dimensionamento de posição automática

Com a otimização do modelo e do algoritmo, as capacidades de sintonização de parâmetros e filtragem de sinal podem ser melhoradas para uma adaptação mais ampla e uma maior tolerância ao risco.

Conclusão

Em resumo, esta é uma estratégia de ruptura intradiária direta. Aborda as especificidades do mercado indiano e controla os riscos comerciais. Com melhorias adicionais no sintonização de parâmetros e filtragem de sinal, esta estratégia pode atender às exigências de comercialização.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Consolidation Breakout [Indian Market Timing]",overlay = true , pyramiding = 0 ,initial_capital = 50000, default_qty_value=5, currency = currency.NONE,commission_type = strategy.cash, commission_value = 30, slippage = 1 )


// ══════════════════════════════════//
// ————————> INPUT VALUES <————————— //
// ══════════════════════════════════//

LENGTH = input.int(title='LENGTH', defval = 75, minval = 10 ,maxval = 300)
MULT = input.float(title='MULT_STDEV',defval = 3.2 , minval = 1 , maxval = 7 , step =0.1)

//EMA1 = input.int(title='EMA1', defval = 50, minval = 10 ,maxval = 550)
//EMA2 = input.int(title='EMA2', defval = 135, minval = 10 ,maxval = 550)
factor_tr = input.float(title = "ATR TRAIL", defval = 10, step = 0.1)

// ══════════════════════════════════//
// ————————> DAY TIME LIMIT <——————— //
// ══════════════════════════════════//

t = time(timeframe.period, '0935-1430:1234567')
time_condition = not na(t)

//**********************// ════════════════════════════════//
//**********************// ————————> ATR & PLOT <————————— //
//**********************// ════════════════════════════════//
//ema1 = ta.ema(close,EMA1)
//ema2 = ta.ema(close,EMA2)

//plot(ema1, color=color.new(color.blue, 0), style=plot.style_linebr, title='ema1')
//plot(ema2, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema2')

atr_tr = ta.atr(16)*factor_tr

longStop = close - atr_tr
shortStop = close + atr_tr

Entry = close
length = LENGTH
mult = MULT
basis = ta.sma(Entry , length)
dev = mult * ta.stdev(Entry , length)
upper = (basis + dev)
lower = (basis - dev)
buyEntry = ta.crossover(Entry , upper)
sellEntry = ta.crossunder(Entry , lower)

//plot(upper, color=color.new(color.red, 0), style=plot.style_linebr, title="short stop")
//plot(lower, color=color.new(color.green, 0), style=plot.style_linebr, title="Long stop")

plot(upper, color=close[1] > upper and close > upper ? color.green : color.red, linewidth=2)
plot(lower, color=close[1] > lower and close > lower ? color.green : color.red, linewidth=2)




// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( buyEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
    
plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = longStop , comment='S')

// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( sellEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "S") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 57)






    

Mais.