RSI CCI Williams%R Estratégia de negociação quantitativa

Autora:ChaoZhang, Data: 2024-01-24 11:18:08
Tags:

img

Estratégia geral

Esta estratégia combina três indicadores de classificação: RSI, CCI e Williams%R para gerar sinais de negociação eficazes. Ela emitirá sinais de compra ou venda quando todos os três indicadores exibirem simultaneamente sinais de sobrecompra ou sobrevenda.

A estratégia é denominada Three Trail Trawler Strategy. Three Trail refere-se à combinação de RSI, CCI e Williams%R. Trawler analogia esta estratégia com a de um arrastão de pesca.

Estratégia lógica

A estratégia baseia-se principalmente nos seguintes indicadores para as decisões de negociação:

  1. Indicador RSI que avalia os níveis de sobrecompra/supervenda
  2. Indicador CCI que identifica os pontos de inflexão
  3. Indicador Williams%R que confirma ainda mais os sinais comerciais

Quando o RSI está abaixo de 25, ele sinaliza estado de sobrevenda. Quando o RSI está acima de 75, ele sinaliza estado de sobrecompra. A mesma lógica se aplica aos parâmetros CCI e Williams%R.

Quando todos os três indicadores exibem simultaneamente sinais de compra, ou seja, RSI < 25, CCI < -130, Williams %R < -85, a estratégia será longa.

Isso evita sinais falsos de um único indicador e melhora a confiabilidade.

Vantagens

  1. Combinação de múltiplos indicadores filtra sinais falsos
    Ao combinar RSI, CCI e Williams%R, a estratégia filtra alguns sinais falsos de indicadores individuais, melhorando a precisão.

  2. Auto-stop de perdas/benefícios gerencia riscos As funções de stop loss e take profit integradas definem automaticamente os preços de saída para cada negociação, limitando efetivamente as perdas dentro de limites toleráveis.

  3. Negociação a médio prazo A estratégia funciona melhor para negociações de médio prazo, identificando claramente os pontos de inflexão de médio prazo através da combinação de indicadores.

  4. Dados sólidos de backtest
    A estratégia utiliza barras de 45 minutos do EUR/USD, um importante par de divisas com abundante liquidez e dados, reduzindo os riscos de excesso de dados insuficientes.

Riscos

  1. Identificação de tendências fracas a longo prazo
    A estratégia baseia-se mais em sinais contrários. Suas capacidades para avaliar e seguir tendências de longo prazo são limitadas. Durante mercados unidirecionais de longa duração, o potencial de lucro é limitado.

  2. Ausência de oscilações de curto prazo Com barras de 45 minutos, a estratégia perde oportunidades lucrativas de flutuações de preço mais frequentes a curto prazo.

  3. Riscos sistémicos
    A estratégia aplica-se principalmente ao EUR/USD. Em tempos de grave crise econômica que abalou o mercado global de divisas, suas regras de negociação podem falhar, incorrendo em enormes perdas.

Áreas de melhoria

  1. Adição de indicadores de tendência
    Tente incorporar métricas de tendência como MA, Boll etc. para ajudar no reconhecimento de tendências de longo prazo.

  2. Optimização dos parâmetros stop loss/profit Reexamine mais dados históricos para avaliar o impacto de vários parâmetros de stop loss/lucro na rentabilidade final, a fim de encontrar a configuração ideal.

  3. Produtos em expansão
    Atualmente aplica-se principalmente ao EUR/USD. Podemos tentar implementá-lo em outros pares de moedas importantes como GBP, JPY, AUD para examinar sua estabilidade e transferibilidade.

Conclusão

A Three Trail Trawler Strategy identifica pontos de reversão de preço para sinais de sobrecompra/supervenda usando uma combinação de RSI, CCI e Williams %R. Em comparação com métricas individuais, essa configuração de múltiplos indicadores filtra mais sinais falsos e melhora a precisão. As funções automatizadas de stop loss/profit taking também ajudam a limitar os riscos comerciais. No geral, é uma estratégia estável adequada para negociação de médio prazo e pode ser um módulo valioso em nossos sistemas quantitativos. Ainda precisamos prestar atenção às suas deficiências em detectar tendências de longo prazo e capturar oscilações de curto prazo. Medidas de ajuste fino, como adicionar métricas de tendência, otimizar parâmetros de saída e expandir produtos, melhorarão a estratégia como um mecanismo de lucro constante para nossos sistemas quantitativos.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI CCI Williams %R Strategy with TP and SL", overlay=true)

// Input parameters for indicators
rsi_period = input(14, title="RSI Period")
cci_period = input(20, title="CCI Period")
williams_period = input(14, title="Williams %R Period")

// Thresholds for overbought and oversold conditions
rsi_oversold = input(25, title="RSI Oversold Level")
rsi_overbought = input(75, title="RSI Overbought Level")
cci_oversold = input(-130, title="CCI Oversold Level")
cci_overbought = input(130, title="CCI Overbought Level")
williams_oversold = input(-85, title="Williams %R Oversold Level")
williams_overbought = input(-15, title="Williams %R Overbought Level")

// Take profit and stop loss levels as a percentage
take_profit_pct = input(1.2, title="Take Profit (%)") / 100
stop_loss_pct = input(0.45, title="Stop Loss (%)") / 100

// Indicator calculations
rsi = ta.rsi(close, rsi_period)
cci = ta.cci(close, cci_period)
highestHigh = ta.highest(high, williams_period)
lowestLow = ta.lowest(low, williams_period)
williamsR = (highestHigh - close) / (highestHigh - lowestLow) * -100

// Entry conditions
longCondition = rsi < rsi_oversold and cci < cci_oversold and williamsR < williams_oversold and strategy.position_size == 0
shortCondition = rsi > rsi_overbought and cci > cci_overbought and williamsR > williams_overbought and strategy.position_size == 0

// Execute strategy entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit or Stop Loss Long", "Long", limit=close * (1 + take_profit_pct), stop=close * (1 - stop_loss_pct))

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Take Profit or Stop Loss Short", "Short", limit=close * (1 - take_profit_pct), stop=close * (1 + stop_loss_pct))

// Plot the signals on the chart
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, text="SELL")

// Plot the indicators for visualization
plot(rsi, title="RSI", color=color.blue)
plot(cci, title="CCI", color=color.purple)
plot(williamsR, title="Williams %R", color=color.orange)

Mais.