Esta estratégia monitora a quebra do indicador RSI em diferentes intervalos para implementar a compra baixa e venda alta.
Defina o período do RSI em 14
Defina os intervalos de sinal de compra do RSI:
Definir os intervalos de sinalização de venda do RSI:
Quando o RSI entrar no intervalo de compra, vá longo:
Quando o RSI entrar na faixa de venda, vá para curto:
Fixar o lucro a 2500 pips e o stop loss a 5000 pips
Fechar posição quando o RSI sair do intervalo do sinal
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
A adoção de lucros fixos e stop loss em pips evita perseguir tendências demais
O RSI é um oscilador maduro para identificar níveis de sobrecompra e sobrevenda com vantagens em relação a outros indicadores
Com ajuste adequado dos parâmetros, esta estratégia pode capturar efetivamente pontos de reversão da tendência e gerar retornos excessivos
A divergência do RSI pode ocorrer levando a perdas consecutivas de posição curta sustentada
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
A definição inadequada do intervalo pode conduzir a transacções em falta ou a frequentes transacções não rentáveis
Esta estratégia depende muito da otimização de parâmetros baseada em backtests.
Eficácia do ensaio do RSI com diferentes períodos de duração
Otimizar os valores da faixa de compra e venda para se adequarem às características dos diferentes produtos
Dinâmica de pesquisa para obter lucros e parar perdas para melhorar a rentabilidade e a razoabilidade
Considerar a combinação de outros indicadores para a negociação em conjunto para melhorar a solidez
Explorar técnicas de aprendizagem de máquina para otimizar automaticamente os intervalos de parâmetros para robustez
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)