
Esta estratégia é conhecida como estratégia de ruptura de dupla trajetória baseada no indicador RSI. Esta estratégia usa a combinação de duas trajetórias do indicador RSI para julgar e alcançar o objetivo de compra e venda baixas. Quando o indicador RSI está abaixo da trajetória baixa definida (default 40), é considerado um sinal de compra, quando o RSI10 é menor que o RSI14, a compra é confirmada ainda mais. Quando o indicador RSI está acima da trajetória alta definida (default 70), é considerado um sinal de venda, quando o RSI10 é maior que o RSI14, a venda é confirmada ainda mais.
A lógica central desta estratégia é usar o binário do indicador RSI para julgar. O indicador RSI geralmente é configurado para 14 ciclos, representando a forte e fraca situação das ações nos últimos 14 dias. Esta estratégia adiciona o RSI10 como um indicador de julgamento auxiliar.
Quando o RSI 14 quebra a faixa de 40, acredita-se que o preço da ação caiu para o lado fraco, possivelmente formando uma oportunidade de rebote de suporte. Neste momento, se o RSI 10 for menor que o RSI 14, o que indica que a tendência de curto prazo ainda é para baixo, pode confirmar ainda mais o sinal de baixa. Portanto, quando o RSI 14 <= 40 e o RSI 10 < RSI 14 são atendidos, um sinal de compra é gerado.
Quando o RSI14 ultrapassa a faixa de 70, acredita-se que o preço da ação entra em uma área de força de curto prazo, e pode haver uma oportunidade de ajuste de retorno. Neste momento, se o RSI10 for maior que o RSI14, o que indica que a tendência de curto prazo continua a subir, o sinal de bullish pode ser confirmado ainda mais.
Assim, o julgamento de combinação entre RSI14 e RSI10 constitui a lógica central da estratégia de duas vias.
Para aproveitar ao máximo esta estratégia, é possível ajustar adequadamente os parâmetros do RSI, controlar rigorosamente as posições de stop loss, evitar operações excessivamente densas e buscar uma rentabilidade estável e duradoura.
Esta estratégia baseia-se no pensamento de duas vias do RSI, filtrando alguns sinais de ruído até certo ponto. Mas nenhuma estratégia de indicador individual pode ser perfeita, o indicador RSI é fácil de enganar e deve ser visto com cautela. Esta estratégia inclui um mecanismo móvel de parada e parada para controlar o risco, o que é muito necessário.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 1m
basePeriod: 1m
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/
// © DojiEmoji
//@version=4
strategy("[KL] RSI 14 + 10 Strategy",overlay=true)
backtest_timeframe_start = input(defval = timestamp("01 Jan 2015 13:30 +0000"), title = "Backtest Start Time", type = input.time)
//backtest_timeframe_end = input(defval = timestamp("19 Mar 2021 19:30 +0000"), title = "Backtest End Time", type = input.time)
TARGET_PROFIT_MODE = input(false,title="Exit when Risk:Reward met")
REWARD_RATIO = input(3,title="Risk:[Reward] (i.e. 3) for exit")
// Trailing stop loss {
TSL_ON = input(true,title="Use trailing stop loss")
var entry_price = float(0)
ATR_multi_len = 26
ATR_multi = input(2, "ATR multiplier for stop loss")
ATR_buffer = atr(ATR_multi_len) * ATR_multi
plotchar(ATR_buffer, "ATR Buffer", "", location = location.top)
risk_reward_buffer = (atr(ATR_multi_len) * ATR_multi) * REWARD_RATIO
take_profit_long = low > entry_price + risk_reward_buffer
take_profit_short = low < entry_price - risk_reward_buffer
var bar_count = 0 //number of bars since entry
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
stop_loss_price := max(stop_loss_price, close - trailing_SL_buffer)
// plot TSL line
trail_profit_line_color = color.green
showLine = strategy.position_size == 0
if showLine
trail_profit_line_color := color.black
stop_loss_price := close - trailing_SL_buffer
plot(stop_loss_price,color=trail_profit_line_color)
// }
// RSI
RSI_LOW = input(40,title="RSI entry")
RSI_HIGH = input(70,title="RSI exit")
rsi14 = rsi(close, 14)
rsi10 = rsi(close, 10)
if true// and time <= backtest_timeframe_end
buy_condition = rsi14 <= RSI_LOW and rsi10 < rsi14
exit_condition = rsi14 >= RSI_HIGH and rsi10 > rsi14
//ENTRY:
if strategy.position_size == 0 and buy_condition
entry_price := close
trailing_SL_buffer := ATR_buffer
stop_loss_price := close - ATR_buffer
strategy.entry("Long",strategy.long, comment="buy")
bar_count := 0
else if strategy.position_size > 0
bar_count := bar_count + 1
//EXIT:
// Case (A) hits trailing stop
if TSL_ON and strategy.position_size > 0 and close <= stop_loss_price
if close > entry_price
strategy.close("Long", comment="take profit [trailing]")
stop_loss_price := 0
else if close <= entry_price and bar_count
strategy.close("Long", comment="stop loss")
stop_loss_price := 0
bar_count := 0
// Case (B) take targeted profit relative to risk
if strategy.position_size > 0 and TARGET_PROFIT_MODE
if take_profit_long
strategy.close("Long", comment="take profits [risk:reward]")
stop_loss_price := 0
bar_count := 0
// Case (C)
if strategy.position_size > 0 and exit_condition
if take_profit_long
strategy.close("Long", comment="exit[rsi]")
stop_loss_price := 0
bar_count := 0