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

Paragem avançada de tracção dinâmica com estratégia de segmentação de risco-recompensa

Autora:ChaoZhang, Data: 2024-12-11 14:57:09
Tags:RSIATRSMA

img

Resumo

Esta estratégia é um sistema de negociação avançado que combina trailing stops dinâmicos, rácios risco-recompensa e saídas extremas do RSI. Ele identifica padrões específicos (padrões de barra paralela e padrões de barra de pin) para entrada no comércio, enquanto utiliza ATR e mínimos recentes para colocação dinâmica de stop loss, e determina metas de lucro com base em rácios risco-recompensa pré-definidos.

Princípios de estratégia

A lógica do núcleo inclui vários componentes-chave:

  1. Os sinais de entrada baseiam-se em dois padrões: padrão de barras paralelas (grande barra de alta seguindo uma grande barra de baixa) e padrão de barras de pin duplo.
  2. O valor da taxa de câmbio é o valor da taxa de câmbio da taxa de câmbio da taxa de câmbio.
  3. Objetivos de lucro fixados com base em rácios de risco/recompensa fixa, calculados utilizando o valor de risco ® para cada operação.
  4. A classificação das posições calculada dinamicamente com base no montante do risco fixo e no valor do risco por transação.
  5. O mecanismo de saída extrema do RSI desencadeia o fechamento de posições nos extremos do mercado.

Vantagens da estratégia

  1. Gestão dinâmica do risco: os níveis de stop loss ajustam-se dinamicamente à volatilidade do mercado através de uma combinação de ATR e mínimos recentes.
  2. Controlo preciso das posições: o dimensionamento das posições com base no montante do risco fixo garante um risco constante por transação.
  3. Mecanismo de saída multidimensional: Combina paradas de atraso, metas de lucro fixas e extremos do RSI.
  4. O valor da posição em risco é o valor da posição em risco da posição em risco.
  5. Configuração clara de risco-recompensa: índices de risco-recompensa pré-determinados definem metas de lucro claras para cada negociação.

Riscos estratégicos

  1. Risco de precisão do reconhecimento de padrões: Identificação potencialmente falsa de barras paralelas e barras de pin.
  2. Risco de deslizamento no ponto de paragem: pode sofrer deslizamento significativo em mercados voláteis.
  3. Saída prematura do RSI: Pode levar a saídas antecipadas em mercados de forte tendência.
  4. Limitações fixas do rácio risco-retorno: os rácios risco-retorno ideais podem variar consoante as condições de mercado.
  5. Risco de sobreajuste de otimização de parâmetros: múltiplas combinações de parâmetros podem levar a uma otimização excessiva.

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

  1. Aumentar o sinal de entrada: adicionar mais indicadores de confirmação de padrão, como indicadores de volume e tendência.
  2. Relatório dinâmico risco/recompensa: ajustar os rácios risco/recompensa com base na volatilidade do mercado.
  3. Adaptação de parâmetros inteligentes: introduzir algoritmos de aprendizagem de máquina para otimização de parâmetros dinâmicos.
  4. Confirmação em vários prazos: adicionar mecanismos de confirmação de sinal em vários prazos.
  5. Classificação do ambiente de mercado: aplicar diferentes conjuntos de parâmetros para diferentes condições de mercado.

Resumo

Esta é uma estratégia de negociação bem concebida que combina vários conceitos de análise técnica madura para construir um sistema de negociação completo. Os pontos fortes da estratégia estão em seu sistema abrangente de gerenciamento de riscos e regras de negociação flexíveis, enquanto a atenção precisa ser dada à otimização de parâmetros e adaptabilidade do mercado. Através das direções de otimização sugeridas, há espaço para melhoria adicional da estratégia.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading | www.TheArtOfTrading.com
// @version=5
strategy("Trailing stop 1", overlay=true)

// Get user input 
int     BAR_LOOKBACK    = input.int(10, "Bar Lookback")
int     ATR_LENGTH      = input.int(14, "ATR Length")
float   ATR_MULTIPLIER  = input.float(1.0, "ATR Multiplier")
rr                      = input.float(title="Risk:Reward", defval=3)

// Basic definition
var float shares=na
risk = 1000
var float R=na
E = strategy.position_avg_price

// Input option to choose long, short, or both
side = input.string("Long", title="Side", options=["Long", "Short", "Both"])

// RSI exit option
RSIexit = input.string("Yes", title="Exit at RSI extreme?", options=["Yes", "No"])
RSIup = input(75)
RSIdown = input(25)

// Get indicator values 
float atrValue = ta.atr(ATR_LENGTH)

// Calculate stop loss values
var float trailingStopLoss = na 
float longStop  = ta.lowest(low, BAR_LOOKBACK) - (atrValue * ATR_MULTIPLIER)
float shortStop = ta.highest(high, BAR_LOOKBACK) + (atrValue * ATR_MULTIPLIER)

// Check if we can take trades 
bool canTakeTrades = not na(atrValue)
bgcolor(canTakeTrades ? na : color.red)

//Long pattern
    //Two pin bar
onepinbar = (math.min(close,open)-low)/(high-low)>0.6 and math.min(close,open)-low>ta.sma(high-low,14)
twopinbar = onepinbar and onepinbar[1]
notatbottom = low>ta.lowest(low[1],10)
    // Parallel
bigred = (open-close)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
biggreen = (close-open)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
parallel = bigred[1] and biggreen  
atbottom = low==ta.lowest(low,10)

// Enter long trades (replace this entry condition)
longCondition = parallel 
if (longCondition and canTakeTrades and  strategy.position_size == 0 and (side == "Long" or side == "Both"))
    R:= close-longStop
    shares:= risk/R
    strategy.entry("Long", strategy.long,qty=shares)

// Enter short trades (replace this entry condition)
shortCondition = parallel
if (shortCondition and canTakeTrades and strategy.position_size == 0 and (side == "Short" or side == "Both"))
    R:= shortStop - close
    shares:= risk/R
    strategy.entry("Short", strategy.short,qty=shares)

// Update trailing stop
if (strategy.position_size > 0)
    if (na(trailingStopLoss) or longStop > trailingStopLoss)
        trailingStopLoss := longStop
else if (strategy.position_size < 0)
    if (na(trailingStopLoss) or shortStop < trailingStopLoss)
        trailingStopLoss := shortStop
else
    trailingStopLoss := na

// Exit trades with trailing stop
strategy.exit("Long Exit",  "Long",  stop=trailingStopLoss, limit = E + rr*R )
strategy.exit("Short Exit", "Short", stop=trailingStopLoss, limit = E - rr*R)

//Close trades at RSI extreme
if ta.rsi(high,14)>RSIup and RSIexit == "Yes"
    strategy.close("Long")
if ta.rsi(low,14)<RSIdown and RSIexit == "Yes"
    strategy.close("Short")

// Draw stop loss 
plot(trailingStopLoss, "Stop Loss", color.red, 1, plot.style_linebr)

Relacionados

Mais.