O recurso está a ser carregado... Carregamento...

Tendência seguindo a estratégia de trail stop de alcance verdadeiro médio

Autora:ChaoZhang, Data: 2024-05-24 18:12:01
Tags:ATRTS

img

Resumo

Esta estratégia usa o Average True Range (ATR) como base para um Trailing Stop (TS), ajustando dinamicamente a posição de stop-loss para seguir a tendência. Quando o preço se move em uma direção favorável, a posição de stop-loss é ajustada de acordo para bloquear os lucros; quando o preço se move em uma direção adversa, a posição de stop-loss permanece inalterada e, uma vez que o preço atinge o preço de stop-loss, a posição é fechada. A chave para esta estratégia está no ajuste dinâmico da posição de stop-loss, que pode proteger os lucros e permitir que os lucros se expandam à medida que a tendência continua.

Princípio da estratégia

  1. Calcular o ATR como base para o trailing stop.
  2. Calcule a distância de stop-loss nLoss com base no parâmetro ATR e no parâmetro KeyValue.
  3. Calcule a posição de trailing stop dinâmica xATRTrailingStop. Para uma posição longa, ela é definida como o maior de o preço mais alto da vela anterior e (fechar - nLoss) ; para uma posição curta, ela é definida como o menor de o preço mais baixo da vela anterior e (fechar + nLoss) .
  4. Gerar sinais de entrada. Quando o preço de fechamento cruza acima xATRTrailingStop, vá longo; quando o preço de fechamento cruza abaixo xATRTrailingStop, vá curto.

Análise das vantagens

  1. A posição de stop-loss é ajustada dinamicamente com as flutuações de preços, permitindo que os lucros sejam bloqueados e também permitindo que os lucros se expandam à medida que a tendência continua.
  2. A posição de stop-loss baseia-se no cálculo do ATR, que pode refletir objectivamente a volatilidade do mercado e é mais flexível e eficaz em comparação com as posições de stop-loss fixas definidas subjetivamente.
  3. Ao amplificar o ATR com o parâmetro KeyValue, você pode definir uma distância de stop-loss apropriada com base em suas preferências de risco.

Análise de riscos

  1. As estratégias que seguem tendências apresentam um desempenho fraco em mercados instáveis e, quando a tendência unilateral não é clara, freqüentes stop-losses podem levar a uma rápida perda de fundos.
  2. O tempo de entrada depende do sinal cruzado entre o preço de fechamento e a linha dinâmica de stop-loss, o que pode resultar em pequenas stop-loss consecutivas num mercado agitado.
  3. As estratégias de trailing stop não podem evitar lacunas causadas por notícias significativas de baixa ou alta, e a velocidade de ajustamento da posição stop-loss não pode acompanhar a velocidade de mudança de preço, resultando em perdas reais muito maiores do que as perdas controladas esperadas.

Direcção de otimização

  1. Os indicadores de avaliação da tendência, tais como sistemas de médias móveis e indicadores de impulso, podem ser adicionados à estratégia para entrar no mercado apenas quando a tendência for clara, evitando a negociação frequente em mercados agitados.
  2. Pode ser considerada uma estratégia de take-profit, como o cálculo dos tamanhos das posições com base na fórmula Kelly, a fixação de pontos de lucro fixos para o retracement stop-profits, etc., para reduzir a possibilidade de potenciais retornos de lucro no final de uma tendência.
  3. Para as aberturas de gap, pode ser definido um limite máximo de stop-loss, como um montante fixo ou uma percentagem fixa.

Resumo

A estratégia ATR trailing stop pode ajustar dinamicamente a posição de stop-loss com base na magnitude das flutuações de preços e pode alcançar bons resultados em mercados de tendência. No entanto, esta estratégia também tem riscos como incapacidade de lidar com mercados agitados, freqüência excessiva de stop-loss e dificuldade em evitar aberturas de lacuna. Para resolver essas deficiências, a estratégia pode ser otimizada e melhorada em termos de julgamento de tendência, estratégias de take-profit e limites máximos de stop-loss. Com esses ajustes, a adaptabilidade e lucratividade da estratégia podem ser melhoradas.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')


Relacionados

Mais.