Estratégia de baixa ruptura de reversão média

Autora:ChaoZhang, Data: 2023-11-02 15:34:22
Tags:

img

Resumo

A ideia principal desta estratégia é detectar se o preço quebra o preço mais baixo em um período especificado e vai longo, esperando que o preço volte para a média.

Estratégia lógica

A estratégia obtém o preço mais baixo em um período especificado lowestLow usando o método ta.lowest do Pine Script e o compara com o preço mais baixo do período anterior prevLow.

Se o preço mais baixo do último período 's lowestLow é menor que o preço mais baixo do período anterior 's lowestprevLow, um sinal longo é acionado. Depois de ir longo, ele é comparado com o preço mais alto do período especificado highestHigh. Se o preço mais alto do último período 's é maior que o preço mais alto anterior, ele fecha a posição.

A estratégia permite escolher a condição de desencadeamento, ou seja, o preço mais baixo precisa romper 1, 2, 3 ou 4 preços mais baixos anteriores consecutivamente, para controlar a frequência de negociação.

Também traça a linha de preço mais baixa mais baixa e a linha de preço mais alta mais alta no gráfico para exibir visualmente a mudança de tendência.

Análise das vantagens

  • A estratégia capta a tendência de reversão depois de quebrar novos mínimos com uma taxa de vitória relativamente alta.

  • Permite escolher o número de preços mais baixos quebrados para controlar a frequência de negociação.

  • Desenhar as linhas ajuda a determinar visualmente os pontos de mudança de tendência.

  • Uma lógica estratégica simples e clara, fácil de compreender e implementar.

  • Pode ser configurado e otimizado em diferentes estoques e períodos de tempo.

Análise de riscos

  • A quebra do fundo falso não pode determinar pontos de inversão da tendência, pode levar a perdas.

  • Precisa de testar diferentes combinações de parâmetros para otimizar as configurações, caso contrário a frequência de negociação pode ser muito alta ou muito baixa.

  • Os parâmetros devem ser ajustados para diferentes unidades populacionais e não devem ser aplicados de forma mecânica.

  • O período de ensaio posterior insuficiente pode causar sobreajuste.

  • O preço pode atingir novos mínimos após a ruptura, necessidade de definir stop loss para controlar os riscos.

Orientações de otimização

  • Adicione mecanismos de stop loss como stop loss em movimento, stop loss de trail, para limitar a perda por comércio.

  • Otimizar o número de breakouts para equilibrar a frequência de negociação e a qualidade do sinal.

  • Parâmetros de ensaio em diferentes unidades populacionais e períodos de tempo.

  • Adicionar filtros para evitar negociações frequentes em mercados variados.

  • Considere a adição de indicadores de tendência para evitar a negociação contra tendência.

  • Teste diferentes sinais de saída.

Conclusão

A estratégia capta oportunidades de reversão monitorando breakouts de preços mais baixos, uma típica estratégia de reversão de breakout de média. As vantagens são simplicidade, frequência controlável e aplicabilidade a várias ações. Mas também tem alguns riscos de falha de breakout. Adicionar filtros e otimização é necessário, bem como controlar riscos. Com testes e otimização abrangentes, pode se tornar um sistema de negociação estável e confiável.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © merovinh

//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
     overlay = true,
     default_qty_type = strategy.percent_of_equity,
     initial_capital = 10000,
     default_qty_value = 10,
     commission_type = strategy.commission.percent,
     slippage = 1,
     commission_value = 0.04)

GR_TIME = 'Time Period'

bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")

numberOfLows  = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])

//Period

var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0

truetime = true


highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)

if numberOfLows == 'One'
    if truetime and prevLow > 0 and lowestLow < prevLow
        strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
        strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
        strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
        strategy.entry('long', strategy.long)

if truetime and prevHigh > 0 and highestHigh > prevHigh
    strategy.close('long')


if prevLow != lowestLow
    prevLow4 := prevLow3
    prevLow3 := prevLow2
    prevLow2 := prevLow
    prevLow := lowestLow
prevHigh := highestHigh

plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")




Mais.