Esta estratégia implementa uma estratégia de negociação de limiar simples baseada no Índice de Força Relativa (RSI). Ele compra quando o RSI cai abaixo do limiar de 30 e vende quando o RSI sobe acima do limiar de 40. O período de detenção é fixo em 10 dias. A estratégia é adequada para negociação de médio prazo.
A estratégia usa principalmente as zonas de sobrevenda e sobrecompra do indicador RSI para gerar sinais de negociação. O RSI reflete a velocidade das mudanças de preço durante um período. RSI abaixo de 30 indica uma zona de sobrevenda onde o preço pode voltar a subir. RSI acima de 70 indica uma zona de sobrecompra onde o preço pode cair.
Especificamente, a estratégia primeiro calcula o RSI de 10 dias, em seguida, define os limiares em 30 e 40. Quando o RSI de 10 dias cai abaixo de 30, um sinal de compra é gerado. Quando o RSI de 10 dias sobe acima de 40, um sinal de venda é gerado. Ao receber o sinal de compra, ele abre uma posição longa. Ao receber o sinal de venda, se os dias de detenção excederem 10 dias, ele fecha a posição diretamente. Caso contrário, ele continua a manter até o 10o dia para vender.
A estratégia é simples e fácil de entender, identificando zonas de sobrevenda e sobrecompra utilizando o RSI para implementar uma estratégia de negociação de limiar baseada num indicador.
A estratégia utiliza o indicador RSI predominante. Os parâmetros do RSI podem ser ajustados e otimizados para se adequarem a diferentes períodos e ambientes de mercado.
O RSI pode refletir tendências de mudança de preços. A estratégia julga os movimentos de preços com base no RSI para alcançar uma tendência simples.
A estratégia adota um período de retenção fixo para controlar efetivamente a perda única.
Os parâmetros do RSI podem ser definidos de forma flexível, mas a otimização excessiva e o viés do backtest podem trazer riscos de negociação ao vivo.
O RSI é um indicador de tendência e reage lentamente a eventos repentinos, com algum efeito de atraso.
O período de detenção fixo impõe pontos de obtenção de lucro e de stop-loss e não pode ser ajustado com base nas alterações do mercado.
Otimizar os parâmetros do RSI e os impactos dos ensaios de diferentes valores.
Adicionar outros indicadores para formar um sistema combinado utilizando pontos fortes de diferentes indicadores.
Melhorar a estratégia de stop profit/loss para permitir ajustes dinâmicos com base nas condições de mercado.
Otimizar o dimensionamento das posições para ajustar dinamicamente as posições com base nas condições do mercado.
Teste produtos adequados à estratégia, escolhendo produtos líquidos com elevada volatilidade.
Otimizar os horários de negociação e testar os impactos na estratégia.
A estratégia é relativamente simples, implementando uma estratégia de negociação baseada em limiar usando o RSI. Suas vantagens incluem simplicidade, facilidade de compreensão e controle de risco relativamente bom. No entanto, existem problemas como dificuldade de otimização de parâmetros do RSI e perda / lucro de parada inflexível.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h 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/ // © Bitduke //@version=4 // strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=1, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075) overbought = input(40, title="overbought value") oversold = input(30, title="oversold value") // Component Test Periods Code Begin testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2021, "Backtest Stop Year") testStopMonth = input(16, "Backtest Stop Month") testStopDay = input(2, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Test Periods Code End ////////////////////////////////////////////////////////////////////// myrsi = rsi(close, 10) > overbought myrsi2 = rsi(close, 10) < oversold barcolor(myrsi ? color.black : na) barcolor(myrsi2 ? color.blue : na) myEntry = myrsi2 and hour(time) <= 9 strategy.entry("Buy Signal", strategy.long, when = myEntry and testPeriod()) // Close 10 bar periods after the condition that triggered the entry //if (myEntry[10]) //strategy.close("Buy Signal") strategy.close("Buy Signal", when = barssince(myEntry) >= 10 or myrsi and testPeriod()) //strategy.entry("Sell Signal",strategy.short, when = myrsi2)