Uma estratégia de ruptura de impulso

Autora:ChaoZhang, Data: 2023-10-09 15:15:22
Tags:

Resumo

Esta é uma estratégia de negociação intradiária que utiliza indicadores de impulso e níveis de suporte / resistência chave para negociação de ruptura.

Estratégia lógica

A estratégia usa o índice de Choppiness para identificar tendências.

Para os sinais de entrada, ele calcula os principais níveis de suporte/resistência intradiários, incluindo H4, H5 etc. Vai longo quando o preço fecha acima de H4 e vai curto quando o preço fecha abaixo de L4.

Em especial, calcula os seguintes níveis intradiários:

  • Pivot = (Alto + Baixo + Próximo) / 3
  • Intervalo = Alto - Baixo
  • H1-H6 = Pivot + Intervalo * Relação
  • L1-L6 = Pivot - Intervalo * Relação

Depois de calcular estes níveis, ele usa H4 e L4 como os níveis de ruptura chave.

Quando o preço quebra acima do H4, ele sinaliza um crescente impulso de alta e a estratégia vai longo.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. Usar Choppiness para identificar tendências claras evita problemas na consolidação.

  2. Os níveis de suporte/resistência calculados são geralmente significativos.

  3. Os intervalos de negociação de H4 e L4 que se encontram próximos do preço de fechamento captam intervalos intradiários importantes.

  4. Os sinais de ruptura têm uma taxa de vitória muito alta.

  5. Lógica simples e clara, fácil de entender e implementar para iniciantes.

Análise de riscos

Os riscos desta estratégia incluem:

  1. Confiar no Choppiness para a identificação de tendências pode falhar e interpretar erroneamente as tendências.

  2. Os níveis calculados podem não se manter e o preço pode romper, causando paradas.

  3. Os sinais de fuga podem ser falsos com inversões rápidas.

  4. Sem considerar a tendência geral, as perdas podem acumular-se em mercados agitados.

  5. Sem stop loss significa que uma grande perda de comércio único é possível em movimentos extremos.

Soluções:

  1. Adicionar outros indicadores para confirmação cruzada e melhorar a precisão.

  2. Implementar movimentos de stop loss para controlar a perda de uma única transação.

  3. Incorporar um filtro de tendência de longo prazo para evitar transações contra-tendência.

  4. Adicione um sinal de reentrada para evitar perseguir falsas fuga.

Orientações de otimização

Esta estratégia pode ser melhorada através de:

  1. Otimizar parâmetros de Choppiness para encontrar melhores valores.

  2. Testando diferentes níveis de fuga como H3 e L3 para melhor eficiência.

  3. Adicionar stop loss móvel para proteção de lucros e controlo de riscos.

  4. Adicionando sinal de reentrada para evitar perdas por falsas fuga.

  5. Incorporar um filtro de tendência de longo prazo para evitar operações contrárias à tendência.

  6. Otimizar os tempos de negociação, como apenas as sessões de negociação dos EUA ou da Europa.

  7. Adicionar regras de dimensionamento de posição como quantidade fixa ou percentagem fixa.

  8. Analisando dados de backtest para ajuste de parâmetros.

Conclusão

Em resumo, a ideia central é negociar breakouts depois de identificar a tendência. Ele tem lógica simples e probabilidades de vitória decentes. Mas existem riscos e são necessários mais refinamentos para controlar os riscos e melhorar a lucratividade. Com ajuste de parâmetros, stop loss, filtro de tendência, etc. pode se tornar um sistema de breakout intradiário muito prático. Ele fornece uma estrutura de breakout de impulso que é uma estratégia de negociação intradiária eficaz.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Created by AS
strategy(title="ASH1Strategy", shorttitle="AS_H1_Strategy", overlay=true) 
//sd = input(true, title="Show Daily Pivots?")
EMA = ema(close,3)

pivot = (high + low + close ) / 3.0 
range = high - low
h5 = (high/low) * close 
h4 = close + (high - low) * 1.1 / 2.0
h3 = close + (high - low) * 1.1 / 4.0
h2 = close + (high - low) * 1.1 / 6.0
h1 = close + (high - low) * 1.1 / 12.0
l1 = close - (high - low) * 1.1 / 12.0
l2 = close - (high - low) * 1.1 / 6.0
l3 = close - (high - low) * 1.1 / 4.0
l4 = close - (high - low) * 1.1 / 2.0
h6 = h5 + 1.168 * (h5 - h4) 
l5 = close - (h5 - close)
l6 = close - (h6 - close)

// Daily line breaks
//sopen = request.security(syminfo.tickerid, "D", open [1])
//shigh = request.security(syminfo.tickerid, "D", high [1])
//slow = request.security(syminfo.tickerid, "D", low [1])
//sclose = request.security(syminfo.tickerid, "D", close [1])
//
// Color
//dcolor=sopen != sopen[1] ? na : black
//dcolor1=sopen != sopen[1] ? na : red
//dcolor2=sopen != sopen[1] ? na : green

//Daily Pivots 
dtime_pivot = request.security(syminfo.tickerid, 'D', pivot[1]) 
dtime_h6 = request.security(syminfo.tickerid, 'D', h6[1]) 
dtime_h5 = request.security(syminfo.tickerid, 'D', h5[1]) 
dtime_h4 = request.security(syminfo.tickerid, 'D', h4[1]) 
dtime_h3 = request.security(syminfo.tickerid, 'D', h3[1]) 
dtime_h2 = request.security(syminfo.tickerid, 'D', h2[1]) 
dtime_h1 = request.security(syminfo.tickerid, 'D', h1[1]) 
dtime_l1 = request.security(syminfo.tickerid, 'D', l1[1]) 
dtime_l2 = request.security(syminfo.tickerid, 'D', l2[1]) 
dtime_l3 = request.security(syminfo.tickerid, 'D', l3[1]) 
dtime_l4 = request.security(syminfo.tickerid, 'D', l4[1]) 
dtime_l5 = request.security(syminfo.tickerid, 'D', l5[1]) 
dtime_l6 = request.security(syminfo.tickerid, 'D', l6[1]) 

//offs_daily = 0
//plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",color=dcolor, linewidth=2)
//plot(sd and dtime_h6 ? dtime_h6 : na, title="Daily H6", color=dcolor2, linewidth=2)
//plot(sd and dtime_h5 ? dtime_h5 : na, title="Daily H5",color=dcolor2, linewidth=2)
//plot(sd and dtime_h4 ? dtime_h4 : na, title="Daily H4",color=dcolor2, linewidth=2)
//plot(sd and dtime_h3 ? dtime_h3 : na, title="Daily H3",color=dcolor1, linewidth=3)
//plot(sd and dtime_h2 ? dtime_h2 : na, title="Daily H2",color=dcolor2, linewidth=2)
//plot(sd and dtime_h1 ? dtime_h1 : na, title="Daily H1",color=dcolor2, linewidth=2)
//plot(sd and dtime_l1 ? dtime_l1 : na, title="Daily L1",color=dcolor2, linewidth=2)
//plot(sd and dtime_l2 ? dtime_l2 : na, title="Daily L2",color=dcolor2, linewidth=2)
//plot(sd and dtime_l3 ? dtime_l3 : na, title="Daily L3",color=dcolor1, linewidth=3)
//plot(sd and dtime_l4 ? dtime_l4 : na, title="Daily L4",color=dcolor2, linewidth=2)
//plot(sd and dtime_l5 ? dtime_l5 : na, title="Daily L5",color=dcolor2, linewidth=2)
//plot(sd and dtime_l6 ? dtime_l6 : na, title="Daily L6",color=dcolor2, linewidth=2)

longCondition = close >dtime_h4
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
    


shortCondition = close <dtime_l4
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)
    


Mais.