O recurso está a ser carregado... Carregamento...

Breakout Scalper - Capturando mudanças de tendência rapidamente

Autora:ChaoZhang, Data: 2023-10-25 17:58:11
Tags:

img

Resumo

A estratégia do Breakout Scalper é uma estratégia de negociação de breakout que utiliza médias móveis rápidas e lentas para identificar mudanças de tendência. Ela define paradas de entrada e paradas de saída para gerenciamento de riscos. A estratégia fecha posições manualmente quando o mercado vai para o lado. É adequado para instrumentos voláteis para capitalizar mudanças rápidas de tendência.

Estratégia lógica

A estratégia emprega uma janela rápida e uma janela lenta. Os períodos padrão são 13 e 52 respectivamente. A janela rápida capta tendências de curto prazo, enquanto a janela lenta determina a direção geral do mercado. Os preços médios das duas janelas são traçados. Quando o preço médio rápido cruza acima do preço médio lento, uma tendência de alta pode estar se formando. Quando o preço médio rápido cruza abaixo do lento, uma tendência de queda pode estar começando.

Quando o preço médio rápido está acima do preço médio lento, e o preço instantâneo também está acima do preço médio rápido, um sinal de compra é gerado. A parada de entrada é colocada no preço mais alto da janela lenta. Quando o preço médio rápido está abaixo do lento e o preço instantâneo está abaixo do preço médio rápido, um sinal de venda é acionado, com a parada de entrada no preço mais baixo da janela lenta.

Além disso, as paradas de saída são definidas para controle de risco. A parada de saída longa é o máximo dos preços mais baixos das janelas rápidas e lentas. A parada de saída curta é o mínimo dos preços mais altos das janelas rápidas e lentas. Isso garante que as paradas sejam colocadas fora da direção da tendência atual para mitigação de riscos.

As posições são fechadas quando as condições de entrada deixam de ser válidas, evitando perdas desnecessárias durante os mercados laterais.

Análise das vantagens

As principais vantagens desta estratégia incluem:

  1. A combinação de janelas rápidas e lentas permite a detecção rápida de mudanças de tendência.

  2. Gerenciamento eficaz do risco através de paradas razoáveis.

  3. Lógica simples e clara baseada em cruzes e paradas de média móvel.

  4. Facilmente otimizável e extensivel, pode ajustar parâmetros e adicionar mais indicadores.

Análise de riscos

Os principais riscos são:

  1. O ruído do mercado pode gerar sinais incorretos.

  2. O atraso da janela é lento, os pontos de viragem podem ser detectados tarde.

  3. Paradas muito próximas do mercado Paradas baseadas diretamente nos preços da janela podem ser demasiado apertadas.

  4. Os mercados laterais levam a desacelerações, os mercados agitados geram falsos sinais.

Atenuantes:

  1. Otimize a janela rápida e adicione filtros.

  2. Melhorar a janela lenta e adicionar indicadores de confirmação.

  3. Paradas de amortização do preço de mercado.

  4. Detecte o lado e evite sinais.

Oportunidades de otimização

A estratégia pode ser reforçada em vários aspectos:

  1. Otimizar os períodos de janela para diferentes ativos.

  2. Adicionar dimensionamento de posições para melhor controlo do risco.

  3. Implementar mecanismos de obtenção de lucros.

  4. Adicione mais filtros para criar sinais robustos.

  5. Incorporar a detecção de padrões como triângulos e divergências.

  6. Utilize o aprendizado de máquina para otimizar parâmetros.

Conclusão

O Breakout Scalper visa capturar mudanças de tendência rapidamente com base em cruzes médias móveis rápidas e lentas. É adequado para mercados voláteis como o ouro. As paradas fornecem gerenciamento de risco. A lógica simples torna fácil de entender e otimizar. Os riscos e melhorias identificados oferecem maneiras de melhorar ainda mais a estratégia.


/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Breakout Scalper", overlay=true)

fast_window = input(title="Fast Window",  defval=13, minval=1)
slow_window = input(title="Slow Window",  defval=52, minval=1)
instant_period = input(title="Instant Period",  defval=3, minval=1)

fast_low = lowest(fast_window)
fast_high = highest(fast_window)
fast_mid = (fast_low + fast_high) / 2

slow_low = lowest(slow_window)
slow_high = highest(slow_window)
slow_mid = (slow_low + slow_high) / 2

instant_price = ema(close, instant_period)

plot(instant_price, title="Instant Price", color=black, transp=50)
fp = plot(fast_mid, title="Fast Mid", color=green)
sp = plot(slow_mid, title="Slow Mid", color=red)
fill(fp, sp, color=(fast_mid > slow_mid ? green : red))

is_buy_mode = (instant_price > fast_mid) and (fast_mid > slow_mid)
is_sell_mode = (instant_price < fast_mid) and (fast_mid < slow_mid)
entry_color = is_buy_mode ? green : (is_sell_mode ? red : na)
exit_color = is_buy_mode ? red : (is_sell_mode ? green : na)

entry_buy_stop = slow_high
entry_sell_stop = slow_low
exit_buy_stop = max(fast_low, slow_low)
exit_sell_stop = min(fast_high, slow_high)
strategy.entry("long", strategy.long, stop=entry_buy_stop, when=is_buy_mode)
strategy.exit("stop", "long", stop=exit_buy_stop)
strategy.entry("short", strategy.short, stop=entry_sell_stop, when=is_sell_mode)
strategy.exit("stop", "short", stop=exit_sell_stop)
strategy.close("long", when=(not is_buy_mode))
strategy.close("short", when=(not is_sell_mode))

entry_buy_stop_color = (strategy.position_size == 0) ? (is_buy_mode ? green : na) : na
plotshape(entry_buy_stop, location=location.absolute, color=entry_buy_stop_color, style=shape.circle)
entry_sell_stop_color = (strategy.position_size == 0) ? (is_sell_mode ? red : na) : na
plotshape(entry_sell_stop, location=location.absolute, color=entry_sell_stop_color, style=shape.circle)
exit_buy_stop_color = (strategy.position_size > 0) ? red : na
plotshape(exit_buy_stop, location=location.absolute, color=exit_buy_stop_color, style=shape.xcross)
exit_sell_stop_color = (strategy.position_size < 0) ? green : na
plotshape(exit_sell_stop, location=location.absolute, color=exit_sell_stop_color, style=shape.xcross)


Mais.