Esta estratégia usa o indicador RSI para determinar se uma criptomoeda está sobrevendida, e compra quando o RSI está abaixo de 30, o que é considerado sobrevendido.
A estratégia usa o indicador RSI para identificar sinais de entrada. O RSI mede a velocidade e a magnitude das mudanças de preço para determinar se um ativo está sobrecomprado ou sobrevendido. O RSI varia de 0 a 100, com acima de 70 considerados sobrecomprados e abaixo de 30 sobrevendidos.
Quando o RSI cai abaixo de 30, a estratégia entra numa posição longa, apostando numa inversão de tendência.
Após a abertura da posição, um stop loss e take profit são definidos. O stop loss é definido 1% abaixo do preço de entrada. O take profit é definido 7% acima do preço de entrada.
Se o preço cair abaixo do stop loss, a posição é fechada. Se o preço subir acima do take profit, a posição é fechada para lucro.
Usar o RSI para identificar condições de sobrevenda fornece bons pontos de entrada em mínimos relativos.
O stop loss restrito controla o risco em uma base por negócio.
O lucro do take-profit bloqueia os lucros de grandes movimentos ascendentes.
Esta estratégia tem um forte controlo da utilização e um menor risco global.
Os sinais de sobrevenda do RSI nem sempre levam a uma reversão, os preços podem continuar a cair levando a um stop loss.
O stop loss pode ser demasiado apertado, levando a paradas prematuras se o drawdown for elevado.
O lucro pode ser muito grande, fechando os lucros mais cedo e não deixando os vencedores correrem.
A estratégia pode enfrentar grandes perdas durante os mercados laterais agitados.
A combinação do RSI com outros indicadores como o KDJ poderia melhorar a precisão do sinal e evitar falsos sinais.
Otimizar as percentagens de stop loss e take profit com base na volatilidade de diferentes moedas.
Testando diferentes parâmetros de tempo para encontrar combinações ideais.
Otimizar o dimensionamento da posição com base nos resultados dos backtests.
No geral, esta é uma estratégia de ruptura de sobrevenda bastante robusta. Tomar posições após sinais de sobrevenda do RSI fornece bons pontos de entrada a preços relativamente baixos. A mecânica de stop loss e take profit ajuda a controlar o risco e bloquear os lucros. Os drawdowns são gerenciáveis, o que o torna adequado para participações de longo prazo. Os parâmetros podem ser otimizados de acordo com as condições de mercado em mudança para um melhor desempenho.
/*backtest start: 2023-09-18 00:00:00 end: 2023-09-25 00:00:00 period: 15m basePeriod: 5m 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/ // © brodieCoinrule //@version=4 strategy(shorttitle='Oversold RSI with tight SL',title='Oversold RSI with tight SL Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" perc_change(lkb) => overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100 // RSI inputs and calculations lengthRSI = 14 RSI = rsi(close, lengthRSI) oversold= input(30) //Entry strategy.entry(id="long", long = true, when = RSI< oversold and window()) //Exit Stop_loss= ((input (1))/100) Take_profit= ((input (7)/100)) longStopPrice = strategy.position_avg_price * (1 - Stop_loss) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())