Estratégia de ruptura do índice de variação do risco de sobrevenda

Autora:ChaoZhang, Data: 23 de janeiro de 2023
Tags:

Resumo

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.

Como funciona

  1. 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.

  2. Quando o RSI cai abaixo de 30, a estratégia entra numa posição longa, apostando numa inversão de tendência.

  3. 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.

  4. 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.

Análise das vantagens

  1. Usar o RSI para identificar condições de sobrevenda fornece bons pontos de entrada em mínimos relativos.

  2. O stop loss restrito controla o risco em uma base por negócio.

  3. O lucro do take-profit bloqueia os lucros de grandes movimentos ascendentes.

  4. Esta estratégia tem um forte controlo da utilização e um menor risco global.

Análise de riscos

  1. 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.

  2. O stop loss pode ser demasiado apertado, levando a paradas prematuras se o drawdown for elevado.

  3. O lucro pode ser muito grande, fechando os lucros mais cedo e não deixando os vencedores correrem.

  4. A estratégia pode enfrentar grandes perdas durante os mercados laterais agitados.

Optimização

  1. A combinação do RSI com outros indicadores como o KDJ poderia melhorar a precisão do sinal e evitar falsos sinais.

  2. Otimizar as percentagens de stop loss e take profit com base na volatilidade de diferentes moedas.

  3. Testando diferentes parâmetros de tempo para encontrar combinações ideais.

  4. Otimizar o dimensionamento da posição com base nos resultados dos backtests.

Conclusão

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())



Mais.