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

Estratégia avançada de seguimento da tendência com parada de rastreamento adaptativa

Autora:ChaoZhang, Data: 2024-12-20 14:12:05
Tags:ATRSLTS

img

Resumo

Esta é uma estratégia de seguimento de tendência baseada no indicador Supertrend, combinada com um mecanismo adaptativo de stop loss. A estratégia usa principalmente o indicador Supertrend para identificar a direção da tendência do mercado e emprega paradas de seguimento ajustadas dinamicamente para gerenciar o risco e otimizar o tempo de saída. Ele suporta vários métodos de stop loss, incluindo paradas baseadas em porcentagem, baseadas em ATR e ponto fixo, permitindo ajuste flexível de acordo com diferentes condições do mercado.

Princípios de estratégia

A lógica central da estratégia baseia-se nos seguintes elementos-chave:

  1. Utiliza o indicador Supertrend como base primária para a determinação da tendência, que combina o ATR (Average True Range) para medir a volatilidade do mercado
  2. Os sinais de entrada são desencadeados por mudanças de direção da Supertrend, apoiando a negociação longa, curta ou bilateral
  3. O mecanismo de stop loss emprega paradas de trailing adaptativas que se ajustam automaticamente com base na volatilidade do mercado
  4. O sistema de gestão de negociações inclui mecanismos de dimensionamento das posições (default 15% do capital da conta) e de filtragem do tempo

Vantagens da estratégia

  1. Forte capacidade de captura de tendências: identifica efetivamente as principais tendências através do indicador Supertrend, reduzindo os falsos sinais
  2. Controlo de risco abrangente: emprega diversos mecanismos de stop loss adequados a diferentes ambientes de mercado
  3. Alta flexibilidade: Suporta a configuração de múltiplas direcções de negociação e métodos de stop loss
  4. Forte capacidade de adaptação: as paradas de atraso ajustam-se automaticamente em função da volatilidade do mercado, aumentando a adaptabilidade da estratégia
  5. Sistema completo de backtesting: funcionalidade de filtragem de tempo integrada para análise de desempenho histórico

Riscos estratégicos

  1. Risco de inversão de tendência: podem ocorrer sinais falsos em mercados altamente voláteis
  2. Risco de deslizamento: a execução do trailing stop pode ser afectada pela liquidez do mercado
  3. Sensibilidade dos parâmetros: o fator de supertendência e as configurações do período ATR têm um impacto significativo no desempenho da estratégia
  4. Dependência do ambiente de mercado: a frequência das negociações em mercados variados pode aumentar os custos

Orientações para a otimização da estratégia

  1. Optimização da filtragem de sinais: podem ser adicionados indicadores técnicos adicionais para filtrar falsos sinais
  2. Optimização da gestão de posições: o tamanho da posição pode ser ajustado dinamicamente com base na volatilidade do mercado
  3. Melhoria do mecanismo de stop loss: pode ser projetada uma lógica de stop loss mais complexa, incorporando o preço médio de custo
  4. Optimização do tempo de entrada: análise da estrutura de preços pode ser adicionada para melhorar a precisão da entrada
  5. Melhoria do sistema de backtesting: podem ser adicionados mais indicadores estatísticos para avaliar o desempenho da estratégia

Resumo

Esta é uma tendência bem projetada seguindo uma estratégia com risco controlável. Combinando o indicador Supertrend com mecanismos flexíveis de stop loss, a estratégia pode manter alta lucratividade enquanto controla efetivamente o risco. A estratégia é altamente configurável e adequada para uso em diferentes ambientes de mercado, mas requer otimização completa de parâmetros e verificação de backtesting. Melhorias futuras podem ser feitas adicionando mais ferramentas de análise técnica e medidas de controle de risco para melhorar ainda mais a estabilidade e a lucratividade da estratégia.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")


Relacionados

Mais.