Esta é uma estratégia de negociação quantitativa baseada na confirmação de ruptura de impulso duplo usando Williams %R e Relative Strength Index (RSI). A estratégia identifica sinais de negociação através do cruzamento de dois indicadores de impulso, reduzindo efetivamente o risco de falhas.
A estratégia emprega um Williams %R de 30 períodos e um RSI de 7 períodos como indicadores primários. Um sinal de compra é acionado quando o Williams %R cruza acima de -80 e o RSI cruza simultaneamente acima de 20; um sinal de venda é gerado quando o Williams %R cruza abaixo de -20 e o RSI cruza simultaneamente abaixo de 80. Este mecanismo de confirmação dupla efetivamente filtra potenciais sinais falsos de indicadores individuais. A estratégia implementa o cálculo manual do Williams %R, calculando os preços mais altos e mais baixos dentro do período para valores de indicador mais precisos.
A estratégia constrói um sistema de negociação robusto através da sinergia de Williams %R e RSI. O mecanismo de confirmação de impulso duplo reduz efetivamente os riscos de sinal falso, enquanto a negociação em zonas de sobrecompra e sobrevenda oferece um bom potencial de lucro. Através de um controle adequado do risco e otimização contínua, a estratégia pode manter um desempenho estável em diferentes ambientes de mercado.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Williams %R + RSI Strategy", overlay=true) // Inputs for Williams %R wpr_length = input.int(30, title="Williams %R Length", minval=1) wpr_upper = input.int(-20, title="Williams %R Upper Band", minval=-100, maxval=0) wpr_lower = input.int(-80, title="Williams %R Lower Band", minval=-100, maxval=0) // Inputs for RSI rsi_length = input.int(7, title="RSI Length", minval=1) rsi_upper = input.int(80, title="RSI Upper Band", minval=0, maxval=100) rsi_lower = input.int(20, title="RSI Lower Band", minval=0, maxval=100) // Calculate Williams %R Manually highest_high = ta.highest(high, wpr_length) lowest_low = ta.lowest(low, wpr_length) wpr = ((highest_high - close) / (highest_high - lowest_low)) * -100 // Calculate RSI rsi = ta.rsi(close, rsi_length) // Entry and Exit Conditions longCondition = ta.crossover(wpr, wpr_lower) and ta.crossover(rsi, rsi_lower) shortCondition = ta.crossunder(wpr, wpr_upper) and ta.crossunder(rsi, rsi_upper) // Plot Buy/Sell Signals plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Strategy Entry and Exit if (longCondition) strategy.entry("Buy", strategy.long) if (shortCondition) strategy.entry("Sell", strategy.short)