Estratégias avançadas de acompanhamento de tendências e trailing stop adaptáveis

ATR SL TS
Data de criação: 2024-12-20 14:12:05 última modificação: 2024-12-20 14:12:05
cópia: 1 Cliques: 418
1
focar em
1617
Seguidores

Estratégias avançadas de acompanhamento de tendências e trailing stop adaptáveis

Visão geral

Esta é uma estratégia de rastreamento de tendências baseada no indicador Supertrend, combinada com um mecanismo de parada de rastreamento adaptável. A estratégia identifica principalmente a direção da tendência do mercado através do indicador Supertrend e usa o rastreamento de parada de ajuste dinâmico para gerenciar o risco e otimizar o tempo de saída.

Princípio da estratégia

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

  1. Usando o indicador Supertrend como base principal para determinar a tendência, que combina o ATR (Average True Rate) para medir a volatilidade do mercado
  2. Os sinais de entrada são acionados pela mudança de direção da Supertrend, com suporte para fazer mais, fazer menos ou negociar de forma bidirecional
  3. O mecanismo de stop loss usa um stop loss de rastreamento adaptativo, que pode ajustar automaticamente a posição de stop loss de acordo com as flutuações do mercado
  4. O sistema de gerenciamento de transações inclui gerenciamento de posições (default 15% de posições da conta) e mecanismo de filtragem de tempo

Vantagens estratégicas

  1. Captação de tendências: com o indicador Supertrend, é possível identificar as principais tendências e reduzir os julgamentos errados
  2. Controle de risco perfeito: Mecanismos de stop loss diversificados para adaptar-se a diferentes cenários de mercado
  3. Alta flexibilidade: configuração com suporte a várias direções de negociação e métodos de parada
  4. Adaptabilidade: O tracking stop loss ajusta-se automaticamente às flutuações do mercado, aumentando a adaptabilidade da estratégia
  5. Sistema de retrospecção completo: função de filtragem de tempo embutida para facilitar a análise de desempenho histórico

Risco estratégico

  1. Risco de reversão de tendência: Falsos sinais podem surgir em mercados de alta volatilidade
  2. Risco de deslizamento: execução de tracking stop pode ser afetada pela liquidez do mercado
  3. Sensibilidade de parâmetros: os fatores da Supertrend e a configuração do ciclo ATR têm maior influência no desempenho da estratégia
  4. Dependência do cenário do mercado: o aumento de custos pode ser causado por transações frequentes em mercados turbulentos

Direção de otimização da estratégia

  1. Otimização de filtragem de sinais: pode-se adicionar indicadores técnicos adicionais para filtrar sinais falsos
  2. Optimização da gestão de posições: proporção de posições pode ser ajustada de acordo com a dinâmica de volatilidade do mercado
  3. Mecanismos de parada de prejuízo melhorados: podem ser combinados com uma lógica de parada de prejuízo mais complexa no projeto de custo-médio
  4. Otimizaçã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 feedback: mais indicadores estatísticos podem ser adicionados para avaliar o desempenho da estratégia

Resumir

Trata-se de uma estratégia de rastreamento de tendências concebida de forma racional e com risco controlado. Combinando os indicadores Supertrend com um mecanismo de parada de perdas flexível, a estratégia é capaz de controlar o risco de forma eficaz, mantendo uma alta rentabilidade. A estratégia é configurável e adequada para uso em diferentes ambientes de mercado, mas precisa ser bem otimizada em parâmetros e testada de volta.

Código-fonte 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")