Estratégia de negociação de retrocesso de tendência baseada no indicador RSI

Autora:ChaoZhang, Data: 2023-09-13 15:33:26
Tags:

Esta estratégia é chamada Estratégia de negociação de retracement de tendência baseada no indicador RSI. Ele usa o indicador RSI para medir os níveis de sobrecompra / sobrevenda e combina configurações de parâmetros otimizadas para negociar pullbacks e capturar inversões locais dentro de tendências fortes.

O indicador RSI julga se os preços estão sobrecomprados ou sobrevendidos. RSI acima de 70 sugere estado de sobrecompra, enquanto abaixo de 30 é sobrevendido. Esta estratégia gera sinais de venda quando o RSI atinge 96, e sinais de compra quando o RSI quebra abaixo de 4. Estes parâmetros otimizados são mais adequados para capturar inversões temporárias dentro de tendências fortes em comparação com os níveis tradicionais do RSI.

Após a entrada, a estratégia utiliza mecanismos de captação de lucro e stop loss. As posições longas são fechadas quando o RSI se recupera para 80 após a reversão, e as posições curtas são fechadas quando o RSI cai para 20, bloqueando efetivamente os lucros de retração.

A vantagem desta estratégia consiste em utilizar a sensibilidade do RSI para avaliar os retrocessos e reversões da tendência e melhorar o desempenho através da otimização dos parâmetros e da tomada/paragem de lucro.

Em conclusão, o RSI é uma ferramenta simples e prática para medir as condições de sobrecompra / sobrevenda. Através da otimização de parâmetros e do rigoroso gerenciamento de riscos, sua eficácia pode ser aprimorada para negociação de retracement de tendência.


/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © corderomoraj


//@version=5
strategy("Good Mode RSI v2", overlay=true)

// Parámetros de la estrategia
rsiPeriod = input(2, "RSI Period")
sellLevel = input(96, "Sell Level")
buyLevel = input(4, "Buy Level")
takeProfitLevelSell = input(20, "Take Profit Level Sell")
takeProfitLevelBuy = input(80, "Take Profit Level Buy")
var float trailingStopPrice = na
var float trailingStopOffset = input(100, "Trailing Stop Offset (pips)")

// Capital inicial
initialCapital = 250
positionSize = initialCapital * 0.015

// Condiciones de entrada y salida
rsi = ta.rsi(close, rsiPeriod)

// Condiciones de entrada y salida para la orden de venta
sellCondition = rsi > sellLevel
closeSellCondition = rsi < takeProfitLevelSell

// Condiciones de entrada y salida para la orden de compra
buyCondition = rsi < buyLevel
closeBuyCondition = rsi > takeProfitLevelBuy

// Trailing Stop para las posiciones de venta
if strategy.position_size < 0
    if low < trailingStopPrice
        trailingStopPrice := low
    strategy.exit("Sell", "Sell", trail_offset = trailingStopOffset * syminfo.mintick, trail_price = trailingStopPrice)

// Trailing Stop para las posiciones de compra
if strategy.position_size > 0
    if high > trailingStopPrice
        trailingStopPrice := high
    strategy.exit("Buy", "Buy", trail_offset = trailingStopOffset * syminfo.mintick, trail_price = trailingStopPrice)

// Ejecutar orden de venta
if (sellCondition)
    strategy.entry("Sell", strategy.short, qty = positionSize)
    trailingStopPrice := high

// Cerrar orden de venta
if (closeSellCondition)
    strategy.close("Sell")

// Ejecutar orden de compra
if (buyCondition)
    strategy.entry("Buy", strategy.long, qty = positionSize)
    trailingStopPrice := low

// Cerrar orden de compra
if (closeBuyCondition)
    strategy.close("Buy")


Mais.