Estratégia para rastreamento de tendências SAR parabólica

Autora:ChaoZhang, Data: 2024-01-18 12:21:17
Tags:

img

Resumo

Esta estratégia utiliza o indicador Parabolic SAR (Stop and Reverse) combinado com a filtragem EMA para melhorar a precisão do sinal.

Estratégia lógica

Um sinal longo é desencadeado quando o SAR está abaixo do preço e o preço está acima da EMA lenta mais offset. Um sinal curto é desencadeado quando o SAR está acima do preço e o preço está abaixo da EMA lenta menos offset. O cruzamento entre a EMA rápida e a EMA lenta fornece filtragem adicional. Isso evita sinais falsos quando se usa o SAR sozinho.

Especificamente, as condições de entrada de longo prazo são:

  1. SAR é inferior ao fechamento anterior e superior ao fechamento atual;
  2. O fechamento atual está acima da EMA lenta mais o deslocamento ou a EMA rápida cruza-se abaixo da EMA lenta;
  3. O fechamento atual está acima do valor SAR e a EMA lenta mais o deslocamento.

As condições de entrada são:

  1. O SAR é superior ao fechamento anterior e inferior ao fechamento atual;
  2. O fechamento atual está abaixo da EMA lenta menos o deslocamento ou a EMA rápida cruza acima da EMA lenta;
  3. O fechamento atual está abaixo do valor SAR e a EMA lenta menos o deslocamento.

Análise das vantagens

Combinando a filtragem SAR e EMA, esta estratégia pode identificar bem a direcção da tendência e reduzir os falsos sinais.

As vantagens são:

  1. O SAR pode responder rapidamente às alterações de preços e identificar pontos de reversão da tendência.
  2. A filtragem da EMA confirma ainda mais a direcção da tendência e evita falsos sinais quando se utiliza somente o SAR.
  3. O cruzamento entre a EMA rápida e lenta fornece precisão adicional do sinal.
  4. A rentabilidade pode ser melhorada através da otimização de parâmetros.

Análise de riscos

Há alguns riscos nesta estratégia:

  1. SAR e EMA podem gerar sinais incorretos durante os mercados de intervalo, afetando a lucratividade.
  2. O EMA tem um efeito de atraso e pode perder os melhores pontos de entrada quando a tendência se inverte.
  3. O intervalo de stop loss pode ser atingido facilmente durante a alta volatilidade, causando perdas maiores.

Orientações de otimização

Esta estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Optimize os parâmetros SAR como passo e máximo para torná-lo mais sensível.
  2. Otimizar períodos de EMA lentos e rápidos para encontrar combinações ideais.
  3. Otimizar o deslocamento da EMA para reduzir os falsos sinais.
  4. Adicionar outros indicadores como MACD e KDJ para filtragem e precisão adicionais.
  5. Otimizar a estratégia de stop loss para reduzir as perdas por negociação.

Conclusão

Esta estratégia combina os pontos fortes do SAR e do EMA para projetar um sistema flexível de tendência. Em geral, tem boa capacidade de detecção de tendências e funciona bem no rastreamento de tendências.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("SAR Trend Trader Strategy By: jhanson107", shorttitle="SAR Trend Trader Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


SlowEMALength = input(100, "Slow EMA Length")
FastEMALength = input(10, "Fast EMA Length")
emaoffset = input(1.00, "EMA Offset %")
start = input(0.01)
increment = input(0.005)
maximum = input(0.08)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

psar = sar(start, increment, maximum)
ema = ema(close, SlowEMALength)
fastema = ema(close, FastEMALength)
offset = (emaoffset / 100) * ema

// Signals
long = high[1] < psar[2] and high >= psar[1] and close > ema + offset or crossunder(ema, fastema) and close > psar and close > ema + offset
short = low[1] > psar[2] and low <= psar[1] and close < ema - offset or crossover(ema, fastema) and close < psar and close < ema - offset

// Plot PSAR
plot(psar, title="PSAR", color = low < psar and not long ? green : red, trackprice=true)

//Barcolor
barcolor(close > psar and close > ema + offset and fastema > ema ? green : na)
barcolor(close > psar and close < ema + offset or close > psar and fastema < ema ? white : na)
barcolor(close < psar and close < ema - offset and fastema < ema and close? red : na)
barcolor(close < psar and close > ema - offset or close < psar and fastema > ema ? white : na)

//Plot EMA
plot(ema, color=blue, linewidth=1, transp=0, title="Slow EMA")
plot(fastema, color=purple, linewidth=1, transp=0, title="Fast EMA")


if(high > psar)
    strategy.close("Short")
    
if(low < psar)
    strategy.close("Long")
    
if(long and time_cond)
    strategy.entry("Long", strategy.long, comment="Long")
   
if(short and time_cond)
    strategy.entry("Short", strategy.short, comment="Short")

if (not time_cond)
    strategy.close_all()

Mais.