Tendência Seguindo a Estratégia com Paradas Dinâmicas

Autora:ChaoZhang, Data: 2023-11-01 13:46:28
Tags:

img

Resumo

Esta estratégia gera sinais de negociação quando o preço cruza a EMA e utiliza o ATR como um stop loss dinâmico para gerir os riscos.

Como funciona

A lógica chave é:

  1. Calcular o ATR como linha de stop loss, o valor ATR determina a distância de stop nLoss

  2. A fonte de preço é o preço de fechamento por padrão, use o Heikin Ashi close se a opção Heikin Ashi h estiver ativada

  3. xATRTrailingStop segue a linha dinâmica de stop loss com base na comparação de preços com a parada anterior

  4. A posição pos é 1 para longo quando o preço cruza acima da linha de stop loss, -1 para curto quando cruza abaixo, caso contrário 0

  5. Sinais de cruzamento da EMA, acima da EMA é sinal de compra, abaixo é sinal de venda

  6. Entrar em negociações com sinais de compra/venda, sair com sinais opostos

  7. Barras de cor baseadas na posição, sinais de marcação e linhas de stop loss

Esta estratégia segue as tendências com paradas dinâmicas baseadas no ATR. Pode identificar tendências e gerir os riscos de forma eficaz.

Vantagens

As vantagens são:

  1. A parada dinâmica baseada no ATR adapta-se à volatilidade do mercado

  2. O filtro EMA reduz os falsos sinais do ruído

  3. Opcional Heikin Ashi filtra ruído e identifica tendência

  4. Clear long/short position avoids whipsaws from trailing stop Ordem de parar de trair

  5. Auxílios visuais como linhas, rótulos e corantes

  6. Simples e fácil de entender lógica para modificar

  7. Período ATR e multiplicador personalizáveis para diferentes mercados

Em resumo, ao combinar seguimento de tendências e paradas dinâmicas, esta estratégia pode capturar tendências e gerir bem os riscos para o swing trading.

Riscos

Há alguns riscos a considerar:

  1. Os sinais da EMA podem atrasar os movimentos a curto prazo

  2. Ativadores de stop loss frequentes possíveis em mercados agitados

  3. Nenhuma consideração de custos como comissões

  4. Falta de controlo do dimensionamento da posição

  5. O desempenho depende do ajuste dos parâmetros

  6. Risco de falhas em mercados variados

  7. Requer controlo e intervenção

Os riscos podem ser reduzidos por otimização de parâmetros, adição de filtros, dimensionamento de posições corretamente, monitoramento do desempenho e intervenção quando necessário.

Optimização

Algumas formas de melhorar a estratégia:

  1. Ajustar os parâmetros ATR para os diferentes mercados

  2. Teste outras médias móveis para filtrar sinais

  3. Adicionar indicadores de filtro de tendência para maior probabilidade

  4. Implementar limites de dimensionamento da posição

  5. Adicionar condições de entrada como volume, distância da MA

  6. Incorporar custos como comissões em paradas

  7. Otimizar o tempo de entrada e saída com mais sinais

  8. Introduzir paralisações de lucro ou paralisações

  9. Optimização automática de parâmetros

Ao combinar mais técnicas para entradas, saídas, filtros e ajuste de parâmetros, a estratégia pode ser ainda mais robusta.

Conclusão

Esta estratégia combina paradas dinâmicas e tendência seguindo bem. Com paradas eficazes, rastreamento de tendência suave, facilidade de uso e personalização, é adequado para as tendências de negociação swing. Mas é necessário um gerenciamento de risco adequado, monitoramento e ajuste de parâmetros. Quando aplicado bem em mercados de tendência, bons resultados podem ser alcançados.


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

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 

// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")

xATR  = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

strategy.entry("long",   true, when = buy)
strategy.entry("short", false, when = sell)

Mais.