
A estratégia gerencia o risco através do cálculo do indicador ATR como uma linha de stop loss, gerando um sinal de compra quando o preço atravessa uma EMA acima, gerando um sinal de venda quando o preço atravessa uma EMA abaixo e usando um stop loss dinâmico.
A lógica central da estratégia é:
Calcular o indicador ATR como uma linha de stop loss, o valor ATR é usado para calcular a distância de stop loss nLoss
De acordo com a opção de fechamento de Heikin Ashi h para determinar a origem do preço, o preço de fechamento de fechamento é usado por padrão, se a opção de fechamento de Heikin Ashi for selecionada, o preço de fechamento do fechamento é usado
Definir o xATRTrailingStop como um stop trailing line dinâmico, baseado na comparação do preço com o stop da linha K anterior, para determinar o stop da linha K atual
Definir posições pos, quando o preço atravessa a linha de parada acima é definido como 1 (fazer mais), quando o preço atravessa a linha de parada abaixo é definido como -1 (fazer menos), ou então é definido como 0 (posição vazia)
Calcule o valor médio da linha EMA de uma linha K, definindo o indicador de ponta (sinal de compra) e ponta (sinal de venda)
Configurar entrada e saída de transação quando ocorrem sinais de compra e venda
A função barcolor marca a cor da linha K de acordo com a posição
Sinais de marcação de compra e venda com plotshape
A estratégia gerencia o risco através de um stop dinâmico ATR, que permite a entrada em tempo hábil quando a tendência aparece e o stop atempado quando a linha de stop é acionada.
A estratégia tem as seguintes vantagens:
O uso de um ATR de stop-loss dinâmico permite ajustar a distância de stop-loss de acordo com a volatilidade do mercado, garantindo um stop-loss e evitando um stop-loss excessivamente radical desencadeado por flutuações de preços de curto prazo.
A EMA é usada para gerar sinais de negociação e filtrar transações desnecessárias causadas por brechas falsas.
Permite escolher o Heikin Ashi como fonte de preços e filtra o ruído para identificar tendências
Gerenciamento de posições com clareza, fazer mais posições em branco com clareza, evitar o rastreamento de transações frequentes resultantes de stop loss
Sinais de negociação e paradas visuais através de linhas, marcas e cores
A lógica da estratégia é simples, clara, fácil de entender e modificar.
Ciclo ATR personalizável e multiplicador de stop loss ATR para adaptar-se a diferentes condições de mercado
Em suma, a estratégia integra a tecnologia de rastreamento de tendências e stop loss dinâmico, permitindo a identificação eficaz de tendências e gerenciamento de riscos, e é adequada para negociações que seguem tendências de linha média-longa.
A estratégia também tem riscos:
A EMA média gerou um sinal de negociação que pode ter atrasado e perdido uma oportunidade de curto prazo
A distância de stop loss é determinada pela ATR e é freqüentemente stop loss em momentos de turbulência no mercado.
As comissões bilaterais nas transações reais, sem considerar os custos, afetam os lucros
Não existem controlos de posição adequados e há melhorias a serem feitas na gestão de fundos
O efeito depende da otimização de parâmetros, os parâmetros precisam ser ajustados para diferentes mercados
É fácil ser preso em um mercado em forte turbulência
Monitorar, intervir ou interromper estratégias em tempo hábil
Pode-se reduzir o risco por meio de métodos de otimização adequada dos parâmetros, configuração de controle de posição, em combinação com outros sinais de filtragem de indicadores. No comércio de ativos, o tamanho da posição deve ser controlado, o efeito da estratégia deve ser continuamente monitorado e, se necessário, a intervenção manual ou o fechamento.
A estratégia pode ser melhorada em vários aspectos:
Ajustar os parâmetros do ATR para tornar a distância de parada mais racional em diferentes mercados
Testar diferentes indicadores de uniformidade para filtrar ainda mais os falsos sinais
Aumentar os indicadores de tendência, identificar a direção da tendência e depois entrar
Configuração de controle de posição para limitar o número de posições unidirecionais
Aumentar as condições de abertura de posição, como volume de transação, preço de fechamento longe da linha média, etc.
Considerando os fatores de custo, estabeleça a distância de parada de acordo com a taxa de pagamento
Optimizar o momento de compra e venda, combinando vários sinais e indicadores
Parar parcialmente ou mover o travão
Adição de função de otimização de parâmetros para otimização automática de parâmetros de teste
A estratégia pode ser aperfeiçoada ainda mais com a aplicação integrada de vários indicadores técnicos e métodos de otimização, para obter um efeito mais estável em mais mercados.
A estratégia integra a tecnologia de parada dinâmica e de acompanhamento de tendências, com vantagens como parada eficaz, acompanhamento suave e fácil de entender e otimizar. Aplica-se ao modelo de tendência de linha média e longa. Mas também tenha em conta o controle de risco e os parâmetros de otimização. Se a estratégia for bem usada, pode obter bons resultados em mercados com tendências evidentes.
/*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)