Esta estratégia é um sistema de negociação de sobreposição de indicadores de vários níveis baseado no Índice de Força Relativa (RSI). Operando dentro de uma janela de negociação específica, identifica oportunidades de negociação através de sinais de sobrecompra e sobrevenda do RSI, combinados com um mecanismo de ajuste de posição dinâmico que emprega uma abordagem de entrada escalada durante movimentos adversos do mercado.
A estratégia baseia-se nos seguintes elementos essenciais: 1. O cálculo do RSI utiliza 14 períodos padrão com o preço de fechamento como dados de origem A janela de negociação é controlada entre 2-4 horas, ajustável com base nas características do mercado 3. Sinais de entrada baseados no RSI abaixo dos níveis de 30 (supervendidos) e acima dos níveis de 70 (supercomprados) 4. Construção de posição inclui posição inicial e níveis de ajuste dinâmico 5. O mecanismo de escalação é acionado quando o preço se move negativamente em 1 ponto O lucro é fixado em 1,5 pontos do preço médio de entrada
A estratégia forma um sistema de negociação relativamente completo através da combinação de indicadores de RSI e mecanismos de entrada em escala. Suas principais vantagens estão em seu mecanismo de filtragem de sinal de vários níveis e abordagem de gerenciamento de posição flexível, enquanto a atenção precisa ser dada aos riscos de mercado de tendência e questões de otimização de parâmetros. O desempenho geral da estratégia pode ser melhorado ainda mais através de aprimoramentos, como adicionar filtros de tendência e otimizar mecanismos de stop loss.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("TonyM RSI", overlay=true) // Input Settings rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window") endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window") // RSI Calculation change = ta.change(rsiSourceInput) up = ta.rma(math.max(change, 0), rsiLengthInput) down = ta.rma(-math.min(change, 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // Time Filter inTradingWindow = (hour >= startHour and hour < endHour) // Strategy Settings buyLevel = 30 sellLevel = 70 scaleDistance = 1.0 // Distance in points to add to the position takeProfitPoints = 1.5 // Profit target from average price initialQty = 1 // Initial trade size scalingQty = 1 // Additional trade size for scaling // Trade Logic if inTradingWindow // Entry Logic if rsi <= buyLevel and strategy.position_size == 0 strategy.entry("Buy", strategy.long, qty=initialQty) if rsi >= sellLevel and strategy.position_size == 0 strategy.entry("Sell", strategy.short, qty=initialQty) // Scaling Logic if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance strategy.entry("Scale Buy", strategy.long, qty=scalingQty) if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance strategy.entry("Scale Sell", strategy.short, qty=scalingQty) // Exit Logic (based on average price) if strategy.position_size > 0 strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints) if strategy.position_size < 0 strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints) // Plot RSI plot(rsi, "RSI", color=color.blue, linewidth=1) rsiUpperBand = hline(70, "RSI Upper Band", color=color.red) rsiLowerBand = hline(30, "RSI Lower Band", color=color.green) fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))