Uma estratégia de negociação quantitativa de ruptura do canal ATR

Autora:ChaoZhang, Data: 2024-01-23 12:00:04
Tags:

img

Resumo

Estratégia lógica

Intervalo superior = SMA + Valor ATR × Coeficiente de Intervalo superior (padrão 4) Intervalo inferior = SMA - Valor ATR × Coeficiente de Intervalo inferior (padrão 4)

Vantagens

  1. Os parâmetros podem ser otimizados para maximizar a captura de movimentos de preços para cima e para baixo para lucros de negociação de tendência.

Análise de riscos

  1. Os parâmetros de ATR e os coeficientes de configuração inadequados podem resultar em intervalos de canais irracionais.

  2. Perdas curtas persistentes em tendências ascendentes do mercado de alta e perdas longas persistentes em tendências descendentes do mercado de baixa.

Possíveis soluções:

  1. Ajustar a frequência de negociação ou adicionar filtros para evitar perdas de falhas.

Oportunidades de melhoria

Algumas formas de melhorar esta estratégia:

  1. Otimizar o período de ATR e o coeficiente de canal para se adequarem às condições atuais de volatilidade do mercado através de um extenso backtesting.

  2. Incorporar stop loss automatizado para controlar a perda máxima por negociação.

  3. Cortar perdas rapidamente quando o preço diverge da linha de base da SMA.

Resumo


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="ATR Channel Breakout")

smaLength = input.int(150, title="SMA Length")
atrLength = input.int(30, title="ATR Length")

ubOffset = input.float(4, title="Upperband Offset", step=0.50)
lbOffset = input.float(4, title="Lowerband Offset", step=0.50)


smaValue = ta.sma(close, smaLength)
atrValue = ta.atr(atrLength)

upperBand = smaValue + (ubOffset * atrValue)
lowerBand = smaValue - (lbOffset * atrValue)


plot(smaValue, title="SMA", color=color.orange)
plot(upperBand, title="UB", color=color.green, linewidth=2)
plot(lowerBand, title="LB", color=color.red, linewidth=2)


enterLong = ta.crossover(close, upperBand)
exitLong  = ta.crossunder(close, smaValue)


enterShort = ta.crossunder(close, lowerBand)
exitShort  = ta.crossover(close, smaValue)


if enterLong
    strategy.entry("Long", strategy.long)

if enterShort
    strategy.entry("Short", strategy.short)


if exitLong
    strategy.close("Long", "Close Long")

if exitShort
    strategy.close("Short", "Close Short")

Mais.