Estratégia de negociação de consolidação de mercado indiano


Data de criação: 2023-12-15 11:59:08 última modificação: 2023-12-15 11:59:08
cópia: 1 Cliques: 610
1
focar em
1621
Seguidores

Estratégia de negociação de consolidação de mercado indiano

Visão geral

A estratégia é uma estratégia de indicação de ruptura integrada para o mercado de ações da Índia. Ela combina condições de tempo, comissões delegadas e rastreamento de stop loss. A vantagem da estratégia é a clareza lógica, a flexibilidade de ajuste de parâmetros e a capacidade de se adaptar às mudanças do mercado.

Princípio da estratégia

A lógica central da estratégia é baseada no indicador de cordas de Brin. Ela usa uma média móvel simples de comprimento como LENGTH como eixo central, e as faixas superiores e inferiores são calculadas com um diferencial padrão multiplicado por MULT. A estratégia de negociação de Range Breakout é formada quando o preço de fechamento gera um sinal de compra quando ele entra na faixa de baixo e quando o preço de fechamento gera um sinal de venda quando ele entra na faixa de cima.

Para controlar o risco, ele combinou o indicador ATR para calcular a linha de stop loss. Ao mesmo tempo, tendo em conta o tempo de negociação do mercado de ações da Índia, todas as posições foram liquidadas em 14:57 minutos.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A lógica é clara, os parâmetros são flexíveis e adaptam-se às condições do mercado
  2. Integração de lógica de stop loss e tempo de controle para controlar o risco de forma eficaz
  3. Compatível com os mecanismos de negociação especiais das bolsas indianas e adaptado ao contexto local
  4. Frequência de transação moderada, evitando transações excessivas
  5. Scalabilidade para otimização de algoritmos

Análise de Riscos

A estratégia também traz alguns riscos:

  1. A configuração de parâmetros de Brinbelt depende da experiência e não é adequada para todos os ambientes
  2. Indicadores individuais podem gerar falsos sinais
  3. A paralisação do ATR só pode controlar parte do risco
  4. Não se considera o impacto do Grande Cisne Negro

Os riscos podem ser reduzidos através das seguintes medidas:

  1. Combinação de múltiplos indicadores de filtragem
  2. Regras de configuração de parâmetros de otimização
  3. Combinado com o julgamento de aberturas de salto
  4. Aumentar a robustez dos algoritmos de stop loss
  5. Combinado com indicadores de sentimento de mercado

Direção de otimização

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

  1. Otimização de regras de configuração de parâmetros para torná-los mais adaptáveis
  2. Adição de vários indicadores de julgamento para evitar sinais falsos
  3. Otimizar e aumentar a robustez de algoritmos de stop loss
  4. A análise de tendências, combinada com mais métodos de análise
  5. Considere ajustar o tamanho da posição automaticamente

Otimizando algoritmos e modelos, a capacidade de Parameter Tuning e Signal Filtering da estratégia pode ser aprimorada para se adaptar a um ambiente de mercado mais amplo e suportar maiores riscos.

Resumir

A estratégia é, em geral, uma estratégia de negociação de ruptura diária clara e fácil de entender. Ela considera as características do mercado indiano e controla o risco de negociação. A estratégia tem certas vantagens e também há espaço para otimização.

Código-fonte da estratégia
/*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)