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.
A lógica chave é:
Calcular o ATR como linha de stop loss, o valor ATR determina a distância de stop nLoss
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
xATRTrailingStop segue a linha dinâmica de stop loss com base na comparação de preços com a parada anterior
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
Sinais de cruzamento da EMA, acima da EMA é sinal de compra, abaixo é sinal de venda
Entrar em negociações com sinais de compra/venda, sair com sinais opostos
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.
As vantagens são:
A parada dinâmica baseada no ATR adapta-se à volatilidade do mercado
O filtro EMA reduz os falsos sinais do ruído
Opcional Heikin Ashi filtra ruído e identifica tendência
Clear long/short position avoids whipsaws from trailing stop Ordem de parar de trair
Auxílios visuais como linhas, rótulos e corantes
Simples e fácil de entender lógica para modificar
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.
Há alguns riscos a considerar:
Os sinais da EMA podem atrasar os movimentos a curto prazo
Ativadores de stop loss frequentes possíveis em mercados agitados
Nenhuma consideração de custos como comissões
Falta de controlo do dimensionamento da posição
O desempenho depende do ajuste dos parâmetros
Risco de falhas em mercados variados
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.
Algumas formas de melhorar a estratégia:
Ajustar os parâmetros ATR para os diferentes mercados
Teste outras médias móveis para filtrar sinais
Adicionar indicadores de filtro de tendência para maior probabilidade
Implementar limites de dimensionamento da posição
Adicionar condições de entrada como volume, distância da MA
Incorporar custos como comissões em paradas
Otimizar o tempo de entrada e saída com mais sinais
Introduzir paralisações de lucro ou paralisações
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.
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)