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

Sistema de negociação de intervalo adaptativo baseado em indicadores de RSI duplos

Autora:ChaoZhang, Data: 2024-12-13 11:57:17
Tags:RSISLTPMMATRRR

img

Resumo

Esta estratégia é um sistema de negociação adaptativo baseado em indicadores duplos de RSI (Índice de Força Relativa). Combina indicadores de RSI de diferentes prazos para identificar tendências de mercado e oportunidades de negociação, ao mesmo tempo em que otimiza o desempenho de negociação através de mecanismos de gestão de dinheiro e controle de risco.

Princípios de estratégia

A estratégia usa um indicador de RSI de 7 períodos como o sinal de negociação principal, combinado com um RSI diário como um filtro de tendência. Uma posição longa é iniciada quando o RSI de curto período ultrapassa 40 e o RSI diário é superior a 55. Se o preço cair abaixo do preço de entrada inicial durante uma posição, o sistema adiciona automaticamente à posição para reduzir o custo médio. As posições são fechadas quando o RSI ultrapassa 60.

Vantagens da estratégia

  1. A combinação de RSI de vários períodos melhora a confiabilidade do sinal
  2. Mecanismo de média de posições adaptativo reduz eficazmente os custos de detenção
  3. Sistema abrangente de gestão de fundos que ajusta as posições com base na preferência de risco
  4. A proteção fixa de stop-loss controla estritamente o risco por transação
  5. Considera os custos de negociação para condições comerciais mais realistas

Riscos estratégicos

  1. Os indicadores RSI podem gerar falsos sinais em mercados voláteis
  2. O mecanismo de média de posições pode conduzir a perdas significativas em tendências descendentes contínuas
  3. O percentual fixo de stop loss pode ser demasiado conservador em períodos de alta volatilidade
  4. Os custos de negociação podem afetar significativamente os rendimentos durante a negociação frequente
  5. A execução da estratégia requer liquidez suficiente

Orientações de otimização

  1. Incorporar indicadores de volatilidade (como ATR) para o ajustamento dinâmico de stop-loss
  2. Adicionar filtros de força de tendência para reduzir falsos sinais em mercados variados
  3. Otimizar a lógica de média de posições com ajustamentos dinâmicos baseados na volatilidade do mercado
  4. Incluir confirmações de RSI de prazos adicionais
  5. Desenvolver um sistema de dimensionamento de posição adaptativo

Resumo

Este é um sistema de negociação completo que combina análise técnica e gerenciamento de riscos. Ele gera sinais de negociação através da coordenação de RSI de vários períodos, enquanto controla o risco através de gerenciamento de dinheiro e mecanismos de stop-loss. A estratégia é adequada para mercados de tendência, mas requer otimização de parâmetros com base nas condições reais do mercado. A boa extensão do sistema deixa espaço para otimização adicional.


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

//@version=5
strategy("Dual RSI with Rebuy Logic + Capital, Commission, and Stop Loss", overlay=true)

// Parameter
rsi_length = input.int(7, title="RSI Length")
daily_rsi_length = input.int(7, title="Daily RSI Length")
capital = input.float(10000, title="Initial Capital", minval=0)  // Kapital
risk_per_trade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=1.0)  // Risikogröße in Prozent
commission = input.float(0.1, title="Commission (%)", minval=0, maxval=100)  // Kommission in Prozent
stop_loss_pct = input.float(5, title="Stop Loss (%)", minval=0.1, maxval=100)  // Stop-Loss in Prozent

// Ordergröße berechnen
risk_amount = capital * risk_per_trade
order_size = risk_amount / close  // Größe der Order basierend auf Risikogröße und Preis

// Daily RSI
day_rsi = request.security(syminfo.tickerid, "D", ta.rsi(close, daily_rsi_length), lookahead=barmerge.lookahead_on)

// RSI auf aktuellem Timeframe
rsi = ta.rsi(close, rsi_length)

// Kauf- und Verkaufsbedingungen
buy_condition = rsi[1] < 40 and rsi > rsi[1] and day_rsi > 55
sell_condition = rsi[1] > 60 and rsi < rsi[1]

// Variablen, um den Preis des ersten Kaufs zu speichern
var float first_buy_price = na
var bool is_position_open = false

// Kauf-Logik
if buy_condition
    if not is_position_open
        // Initiales Kaufsignal
        strategy.entry("Buy", strategy.long, qty=1)
        first_buy_price := close
        is_position_open := true
    else if close < first_buy_price
        // Rebuy-Signal, nur wenn Preis niedriger als erster Kaufpreis
        strategy.entry("Rebuy", strategy.long, qty=1)

// Verkaufs-Logik
if sell_condition and is_position_open
    strategy.close("Buy")
    strategy.close("Rebuy")
    first_buy_price := na  // Zurücksetzen des Kaufpreises
    is_position_open := false

// Stop-Loss-Bedingung
if is_position_open
    // Stop-Loss-Preis berechnen (5% unter dem Einstiegspreis)
    stop_loss_price = first_buy_price * (1 - stop_loss_pct / 100)
    
    // Stop-Loss für "Buy" und "Rebuy" festlegen
    strategy.exit("Stop Loss Buy", from_entry="Buy", stop=stop_loss_price)
    strategy.exit("Stop Loss Rebuy", from_entry="Rebuy", stop=stop_loss_price)

// Performance-Metriken berechnen (mit Kommission)
gross_profit = strategy.netprofit / capital * 100
commission_cost = commission / 100 * strategy.closedtrades
net_profit = gross_profit - commission_cost

// Debug-Plots
plot(first_buy_price, title="First Buy Price", color=color.blue, linewidth=1)
plotchar(buy_condition, title="Buy Condition", char='B', location=location.abovebar, color=color.green)
plotchar(sell_condition, title="Sell Condition", char='S', location=location.belowbar, color=color.red)

// Debugging für Performance



Relacionados

Mais.