Estratégia de ruptura média de alcance verdadeiro com proporção de ouro

Autora:ChaoZhang, Data: 2024-02-26 15:02:26
Tags:

img

Resumo

Esta é uma estratégia de breakout que utiliza o indicador ATR para gerar sinais de negociação. A estratégia emprega um sistema de média móvel para produzir sinais de entrada e um canal ATR amplificado baseado na proporção de ouro para construir posições longas e curtas.

Princípios

O código calcula o ATR durante um período de preços de fechamento, amplificando-o em 1.618 como a faixa superior e 2.618 como a faixa inferior. Combinado com a EMA, ele forma um sistema de ruptura do canal de Bollinger.

Vantagens

  1. O indicador ATR capta eficazmente a volatilidade do mercado e constrói faixas de negociação adaptáveis, evitando o sobreajuste causado por parâmetros estáticos.
  2. As bandas ATR amplificadas pela proporção dourada aumentam o potencial de lucro sem aumentar a frequência de negociação.
  3. O sistema de média móvel filtra ruídos de curto prazo e coopera com o canal ATR para identificar tendências de médio a longo prazo.

Riscos

  1. O indicador ATR pode apresentar atrasos em condições de mercado extremas.
  2. Múltiplos de ampliação inadequados levarão a uma frequência excessivamente elevada de negociação.
  3. Os sinais de mudança das médias móveis de longo período apresentam atrasos.

Optimização

  1. O ATR pode incorporar o VIX ou ajustar a ampliação.
  2. Empregar EMAs de vários prazos para construir sistemas adaptativos.
  3. Definir stop losses para limitar a perda máxima por transação.

Resumo

Esta estratégia integra a filtragem da média móvel, o rastreamento do canal ATR e a metodologia da proporção de ouro, que pode seguir efetivamente as tendências de médio a longo prazo com boa estabilidade.


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

//@version=4
strategy("ATR Long Only Strategy lower band buy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(52, type=input.integer, minval=1, title="Length")
mul = input(1.618, type=input.float, minval=0, title="Length")
mullow = input(2.618, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  //strategy.entry("Sell", strategy.short, when=bear_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Mais.