A estratégia de ruptura de momento baseia-se no conceito proposto por Richard Bookstaber em 1984 de que, uma vez que há um grande movimento volátil, o mercado tende a segui-lo.
A estratégia primeiro calcula o indicador ATR para medir a volatilidade do mercado. Em seguida, calcula o valor absoluto da mudança do preço de fechamento diário. Quando a mudança do preço de fechamento excede o valor ATR em vários múltiplos, são gerados sinais de negociação. Especificamente, se o preço de fechamento subir mais do que o trilho superior ATR, vá longo; se o preço de fechamento cair mais do que o trilho superior ATR, vá curto.
A estratégia usa o indicador ATR para determinar dinamicamente o limiar de ruptura. Quando a volatilidade do mercado aumenta, o limiar aumentará para reduzir os negócios errados. Quando a volatilidade do mercado diminui, o limiar diminuirá para capturar oportunidades de ruptura em tempo hábil.
Considere a combinação de outros indicadores para selecionar oportunidades de negociação para melhorar a eficiência. Também selecione parâmetros ideais com base nas características do produto. Use técnicas como a Martingale para controlar a frequência de negociação.
A estratégia de breakout de momento é simples e direta, gerando sinais de negociação a partir de breakouts. A estratégia de stop loss ATR permite que ela se adapte à volatilidade do mercado. A estratégia depende da otimização de parâmetros para resultados decentes. Mas também há alguns problemas como falta de breakouts iniciais, negociação frequente, etc. Mais melhorias por combinação com outras técnicas são necessárias para lucros estáveis em mercados complexos.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h 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/ // © EduardoMattje //@version=5 strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, process_orders_on_close=true, initial_capital=20000) // Inputs var averageLength = input.int(14, "Average length", 2) var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1) // Calculations atr = ta.atr(averageLength) * multiplier closingChange = ta.change(close, 1) atrPenetration(int signal) => res = closingChange * signal > atr[1] longCondition = atrPenetration(1) shortCondition = atrPenetration(-1) // Order calls if (longCondition) strategy.entry(strategy.direction.long, strategy.long) if (shortCondition) strategy.entry(strategy.direction.short, strategy.short) // Visuals plot(atr, "ATR", color.white, 2) plot(math.abs(closingChange), "Absolute close change", color.red)