Estratégia de negociação de ruptura

Autora:ChaoZhang, Data: 2023-11-02 16:40:26
Tags:

img

Resumo

Esta estratégia baseia-se na teoria do breakout, comparando as médias móveis dos preços mais altos e mais baixos para determinar se a tendência está se revertendo, a fim de encontrar pontos de ruptura potenciais e negociar quando o breakout ocorre.

Estratégia lógica

Esta estratégia primeiro calcula as médias móveis dos preços mais altos e mais baixos dentro de um período definido pelo usuário. A média móvel de preço mais alta representa a faixa superior, e a média móvel de preço mais baixa representa a faixa inferior. Quando o preço atravessa a faixa superior, ele sinaliza uma tendência de alta, e a estratégia abrirá uma posição longa. Quando o preço atravessa a faixa inferior, ele sinaliza uma tendência de queda, e a estratégia abrirá uma posição curta. Os usuários podem configurar apenas longo ou apenas curto.

A estratégia também fornece configurações opcionais de stop loss e take profit. Quando longo, o stop loss é definido na banda superior; quando curto, o stop loss é definido na banda inferior. Isso reduz as perdas. Os usuários também podem optar por definir o stop loss no ponto de ruptura, ou seja, quando longo, o stop loss é a banda inferior e quando curto, o stop loss é a banda superior. Isso permite mais potencial de lucro.

Vantagens

As vantagens desta estratégia são as seguintes:

  1. A lógica é simples e direta, fácil de entender e implementar.

  2. Pode captar rapidamente os pontos de inversão da tendência e ajustar as posições em conformidade.

  3. Proporciona configurações opcionais de stop loss e take profit para se adequarem às preferências pessoais de risco.

  4. Os sinais comerciais são claros, sem muitos falsos sinais.

  5. Há poucos parâmetros configuráveis, fáceis de usar.

  6. Flexibilidade para configurar apenas o longo ou apenas o curto.

Riscos

Os riscos desta estratégia incluem:

  1. O sinal de fuga pode ser falso e não pode ser mantido.

  2. A definição inadequada do período de ruptura pode fazer com que as tendências a longo prazo não sejam observadas.

  3. Não considera o volume na ruptura, pode causar perseguições de altos e baixos de morte.

  4. Há certo atraso, pode perder boa parte do movimento.

  5. No mercado volátil, o stop loss pode ser atingido.

  6. Depende apenas de uma fuga para negociar, o lucro é incerto.

Melhorias

A estratégia pode ser reforçada nos seguintes aspectos:

  1. Incorporar um indicador de volume para evitar falhas, por exemplo, aumento de volume na validade dos sinais de ruptura.

  2. Otimize o parâmetro da média móvel do período para corresponder às mudanças de tendência em diferentes ciclos.

  3. Definir um limite de retração após a fuga para confirmação adicional para evitar uma fuga falsa.

  4. Adicionar Bandas de Bollinger, etc. em cima da base de ruptura para uma orientação mais direcional.

  5. Incorporar outros indicadores como RSI, MACD para sinais de negociação adicionais e melhorar a precisão.

  6. Otimizar as estratégias de stop loss e de lucro para lidar melhor com as flutuações do mercado, controlando simultaneamente o risco.

Resumo

A estratégia de negociação de breakout tem uma lógica clara de rastreamento da quebra de preço das faixas superior e inferior para entrada e saída. Há grande espaço para aprimoramento, incorporando mais informações de indicadores e otimizando parâmetros para fortalecer a estratégia. Depois de se familiarizar com a lógica básica, os traders podem personalizar parâmetros com base em suas necessidades e obter bons resultados de negociação.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Brakeout Strategy v2.0", shorttitle = "Brakeout str 2.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(4, defval = 4, minval = 1, maxval = 1000, title = "Length")
bod = input(false, defval = false, title = "Body mode")
rev = input(false, defval = false, title = "Revers")
showlines = input(true, defval = true, title = "Show Lines?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Extremums
min = bod ? min(open, close) : low
max = bod ? max(open, close) : high
upex = highest(max, len) + syminfo.mintick * 10
dnex = lowest(min, len) - syminfo.mintick * 10
col = showlines ? blue : na
plot(upex, color = col, linewidth = 2)
plot(dnex, color = col, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[len])) and rev == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = upex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnex)
    
if (not na(close[len])) and rev == true
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mais.