Tendência do Traders Bands Backtest Estratégia Baseada na Tendência do Traders Moving Average

Autora:ChaoZhang, Data: 2023-12-11 13:12:44
Tags:

img

Resumo

A ideia principal desta estratégia é julgar as tendências de preços e gerar sinais de negociação usando médias móveis e bandas de Bollinger. Especificamente, primeiro calcula a faixa média verdadeira (ATR) durante um determinado período para obter a faixa de volatilidade, e depois combina os preços mais altos e mais baixos para formar um canal limitante. Se o preço atravessa esse canal, o preço de fechamento é definido como o preço do canal. Depois disso, ele calcula a média móvel dos preços de fechamento limitados, que é chamada média móvel de Trend Trader (AVR).

Estratégia lógica

A estratégia primeiro calcula a faixa ATR e forma um canal limitante combinado com os preços mais altos e mais baixos. O preço de fechamento será limitado ao preço do canal somente quando ele atravessar o canal. Depois disso, ele calcula a média móvel do Trend Trader dos preços de fechamento limitados, que reflete a direção da tendência de médio e longo prazo. Finalmente, desenhe uma faixa superior e uma faixa inferior paralelas à média móvel do Trend Trader como bandas de Bollinger.

O núcleo da tendência de julgamento está na média móvel do Trend Trader, que incorpora a direção da tendência de médio e longo prazo.

Vantagens

  1. ATR e faixa de preços criam um canal adaptativo para acompanhar a volatilidade do mercado
  2. A Trend Trade AVR avalia claramente a tendência a médio e longo prazo
  3. Bandas de Bollinger filtram falhas e melhoram a qualidade do sinal
  4. O sistema reflete uma forte tendência, a detenção longa pode obter bons retornos

Riscos

  1. A detenção prolongada pode sofrer grandes perdas devido a alguns eventos repentinos.
  2. A definição inadequada dos parâmetros pode conduzir a um excesso de negociação, aumento dos custos de transacção e deslizamento
  3. O desempenho depende muito do ajuste dos parâmetros

Soluções:

  1. Reduzir adequadamente o período de retenção e definir o stop loss
  2. Otimizar parâmetros para dar sinais suficiente buffer
  3. Utilize dados históricos e negociação ao vivo para ajuste de parâmetros

Orientações de otimização

  1. Configuração dos parâmetros de investigação em diferentes mercados e prazos
  2. Teste se outros indicadores podem filtrar falhas
  3. Tente incorporar stop loss para limitar a perda por negociação

Conclusão

A estratégia é, em geral, um forte sistema de tendência seguinte. Pode julgar a tendência de médio e longo prazo e gerar sinais de negociação combinados com bandas de Bollinger. Através da otimização de parâmetros, pode obter alfa estável. Mas o controle de risco também é importante para evitar grandes perdas devido a alguns eventos repentinos ao segurar a longo prazo.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/10/2018
// This is plots the indicator developed by Andrew Abraham 
// in the Trading the Trend article of TASC September 1998  
// It was modified, result values wass averages.
// And draw two bands above and below TT line.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader Bands Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
BandStep = input(20),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret :=  iff(close > hiLimit and close > loLimit, hiLimit,
         iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)        
pos = 0.0
pos := iff(close < nResMA - BandStep , -1,
       iff(close > nResMA + BandStep, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(nResMA, color= blue , title="Trend Trader AVR")
plot(nResMA+BandStep, color= red , title="Trend Trader UpBand")
plot(nResMA-BandStep, color= green, title="Trend Trader DnBand")

Mais.