Algoritmo Estratégia de ruptura do intervalo RSI

Autora:ChaoZhang, Data: 2023-10-17 17:14:09
Tags:

img

Resumo

Esta estratégia monitora a quebra do indicador RSI em diferentes intervalos para implementar a compra baixa e venda alta.

Estratégia lógica

  1. Defina o período do RSI em 14

  2. Defina os intervalos de sinal de compra do RSI:

    • Intervalo 1: RSI <= 27
    • Intervalo 2: RSI <= 18
  3. Definir os intervalos de sinalização de venda do RSI:

    • Intervalo 1: RSI >= 68
    • Intervalo 2: RSI >= 80
  4. Quando o RSI entrar no intervalo de compra, vá longo:

    • Se o RSI entrar no intervalo 1 (abaixo de 27), vá longo 1 lote
    • Se o RSI entrar no intervalo 2 (abaixo de 18), fazer um longo adicional de 1 lote
  5. Quando o RSI entrar na faixa de venda, vá para curto:

    • Se o RSI entrar no intervalo 1 (acima de 68), encaminhe-se para um lote curto
    • Se o RSI entrar no intervalo 2 (acima de 80), encaminhe-se para um lote adicional de curto prazo
  6. Fixar o lucro a 2500 pips e o stop loss a 5000 pips

  7. Fechar posição quando o RSI sair do intervalo do sinal

Análise das vantagens

  1. A configuração de duplo intervalo ajuda a identificar melhor as condições de sobrecompra e sobrevenda, evitando a perda de oportunidades de reversão

  2. A adoção de lucros fixos e stop loss em pips evita perseguir tendências demais

  3. O RSI é um oscilador maduro para identificar níveis de sobrecompra e sobrevenda com vantagens em relação a outros indicadores

  4. Com ajuste adequado dos parâmetros, esta estratégia pode capturar efetivamente pontos de reversão da tendência e gerar retornos excessivos

Análise de riscos

  1. A divergência do RSI pode ocorrer levando a perdas consecutivas de posição curta sustentada

  2. A taxa de preenchimento de lucros e stop loss fixos pode não corresponder à volatilidade do mercado, não poder obter lucros ou parar prematuramente

  3. A definição inadequada do intervalo pode conduzir a transacções em falta ou a frequentes transacções não rentáveis

  4. Esta estratégia depende muito da otimização de parâmetros baseada em backtests.

Orientações de otimização

  1. Eficácia do ensaio do RSI com diferentes períodos de duração

  2. Otimizar os valores da faixa de compra e venda para se adequarem às características dos diferentes produtos

  3. Dinâmica de pesquisa para obter lucros e parar perdas para melhorar a rentabilidade e a razoabilidade

  4. Considerar a combinação de outros indicadores para a negociação em conjunto para melhorar a solidez

  5. Explorar técnicas de aprendizagem de máquina para otimizar automaticamente os intervalos de parâmetros para robustez

Conclusão

Esta estratégia baseia-se nos princípios de sobrecompra e sobrevenda do RSI. Ao adotar intervalos de negociação duplos, ele utiliza o indicador RSI efetivamente, capturando extremos de mercado com uma estabilidade decente. No entanto, ele tem alguma dependência de parâmetros e precisa de otimização em todos os produtos. Se ajustado corretamente, esta estratégia pode produzir bons retornos excessivos. Em resumo, é uma estratégia de negociação simples mas eficaz usando um indicador maduro, vale a pena pesquisar para melhorias e fornecer insights para negociação quantitativa.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 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/
// © Rawadabdo

// Ramy's Algorithm

//@version=5
strategy("BTC/USD - RSI", overlay=false, initial_capital = 5000)

// User input
length = input(title = "Length", defval=14, tooltip="RSI period")

first_buy_level = input(title = "Buy Level 1", defval=27, tooltip="Level where 1st buy triggers")
second_buy_level = input(title = "Buy Level 2", defval=18, tooltip="Level where 2nd buy triggers")

first_sell_level = input(title = "Sell Level 1", defval=68, tooltip="Level where 1st sell triggers")
second_sell_level = input(title = "Sell Level 2", defval=80, tooltip="Level where 2nd sell triggers")

takeProfit= input(title="target Pips", defval=2500, tooltip="Fixed pip stop loss distance")
stopLoss = input(title="Stop Pips", defval=5000, tooltip="Fixed pip stop loss distance")

lot = input(title = "Lot Size", defval = 1, tooltip="Trading Lot size")

// Get RSI
vrsi = ta.rsi(close, length)

// Entry Conditions
long1 = (vrsi <= first_buy_level and vrsi>second_buy_level)
long2 = (vrsi <= second_buy_level)

short1= (vrsi >= first_sell_level and vrsi<second_sell_level)
short2= (vrsi >= second_sell_level)


// Entry Orders
// Buy Orders
if (long1 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long, qty=lot, comment="Buy")
    if (long2 and  strategy.position_size == 0)
        strategy.entry("Long", strategy.long, qty=lot, comment="Buy")

// Short Orders
if (short1 and strategy.position_size == 0)
    strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    if (short2 and strategy.position_size == 0)
        strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    
// Exit our trade if our stop loss or take profit is hit
strategy.exit(id="Long Exit", from_entry="Long",qty = lot, profit=takeProfit, loss=stopLoss)
strategy.exit(id="Short Exit", from_entry="Short", qty = lot, profit=takeProfit, loss=stopLoss)

// plot data to the chart
hline(first_sell_level, "Overbought Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_sell_level, "Overbought Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
hline(first_buy_level, "Oversold Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_buy_level, "Oversold Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
plot (vrsi, title = "RSI", color = color.blue, linewidth=2)





Mais.