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

A taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação.

Autora:ChaoZhang, Data: 2024-11-29 16:18:55
Tags:RSISMAATRTPSL

img

Resumo

Esta estratégia é um sistema de negociação quantitativo baseado em sinais de sobrevenda do RSI e stop-loss dinâmico do ATR. Usando dados diários, ele combina sinais de sobrevenda do RSI com um filtro de tendência média móvel de 200 dias para capturar oportunidades de rebote em condições de mercado de sobrevenda.

Princípios de estratégia

A lógica de base inclui os seguintes elementos-chave:

  1. Sinal de entrada: o sistema gera sinais longos quando o RSI ((5) cai abaixo do nível de sobrevenda de 30 e o preço está acima da média móvel de 200 dias.
  2. Mecanismo de stop-loss: Combina um stop-loss dinâmico de 1,5x ATR ((20) com um stop-loss fixo de 25%.
  3. Objetivos de lucro: estabelece três objetivos de 5%, 10% e 15%, reduzindo a posição em 33%, 66% e 100%, respectivamente.
  4. Gerenciamento de posições: Recomenda-se a utilização de uma posição de 59,13% calculada de acordo com o critério Kelly ou de uma posição conservadora de 75%.

Vantagens da estratégia

  1. Confirmação de tendência dupla: Valida as negociações através do RSI sobrevendido e da tendência média móvel, melhorando a taxa de ganho.
  2. Controlo de risco flexível: o sistema de stop loss ATR dinâmico adapta-se à volatilidade do mercado, enquanto o sistema de stop loss fixo oferece uma proteção máxima.
  3. Gerenciamento inteligente dos lucros: os objetivos triplos com redução gradual das posições garantem lucros, mantendo o potencial de crescimento.
  4. Gerenciamento de capital científico: otimiza o dimensionamento das posições utilizando o critério Kelly, equilibrando risco e recompensa.

Riscos estratégicos

  1. Dependência da tendência: a estratégia pode desencadear paradas frequentes em mercados variados. Sugestão: Adicione filtros de oscilador para reduzir os sinais falsos.

  2. A taxa de prejuízo fixa de 25% pode resultar em grandes perdas de transação única. Sugestão: ajustar a percentagem de stop-loss com base na tolerância pessoal ao risco.

  3. Risco de retração: a obtenção de lucros por etapas pode reduzir as posições demasiado cedo em caso de tendências fortes. Sugestão: Considere metas de lucro dinâmicas ou mantenha uma porção para seguir a tendência.

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

  1. Optimização do sinal:
  • Adicionar confirmação de volume
  • Incorporar indicadores de tendência como o MACD
  • Implementar filtros de volatilidade
  1. Optimização de Stop-Loss:
  • Implementar percentagens dinâmicas de stop-loss
  • Adicionar paradas baseadas no tempo
  • Incluir filtros de risco-recompensa
  1. Optimização de lucro:
  • Estabelecer objetivos dinâmicos baseados no ATR
  • Implementar paradas de trail
  • Otimizar as taxas de redução da posição

Resumo

Esta estratégia constrói um sistema de negociação completo, combinando sinais de sobrevenda do RSI com filtragem de tendência média móvel, complementada por metas dinâmicas de stop-loss e triplo lucro do ATR. Seus pontos fortes estão no controle de risco flexível e na gestão racional de lucros, embora a otimização baseada nas condições do mercado e na preferência de risco pessoal seja necessária. Através da melhoria contínua do sistema de sinal, do mecanismo de stop-loss e da estratégia de captação de lucro, o sistema mostra potencial para um melhor desempenho na negociação ao vivo.


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

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef

Relacionados

Mais.