Estratégia de negociação combinada de SMA e RSI

Autora:ChaoZhang, Data: 2023-10-08 11:40:49
Tags:

Resumo

Esta estratégia baseia-se em indicadores de média móvel simples (SMA) e índice de força relativa (RSI). Ele fica curto quando o RSI cruza acima de um nível de entrada definido e o preço de fechamento está abaixo do SMA, com stop loss ou stop loss desencadeado pelo RSI. A estratégia combina indicadores de tendência e de sobrecompra / sobrevenda, com o objetivo de capturar oportunidades de reversão em prazo médio.

Estratégia lógica

  1. Use o SMA (200 períodos) para determinar a direção geral da tendência.

  2. Utilize o RSI (14 períodos) para identificar condições de sobrecompra/supervenda.

  3. Após abrir uma posição curta, defina o stop loss no preço de fechamento mais baixo.

  4. Existem três tipos de stop loss: price stop, RSI stop e profit stop.

Forças

  1. A combinação de indicadores de tendência e de sobrecompra/supervenda melhora a precisão do cronograma das entradas.

  2. O trailing stop loss pode proteger os lucros de acordo com a mudança de preço em tempo real, evitando o stop loss rígido.

  3. O gatilho bidirecional do RSI ajuda a bloquear os lucros e evitar perdas excessivas.

  4. A utilização de indicadores simples com parâmetros fixos facilita a sua implementação para negociações a médio prazo.

Riscos

  1. Os parâmetros SMA e RSI podem não ser adequados a todos os produtos e prazos, exigindo otimização.

  2. Os custos de negociação como deslizamento e comissões são ignorados, afetando o PnL real.

  3. Outros factores, como o volume e a estrutura do mercado, não são tidos em conta, o que leva a sinais pouco fiáveis.

  4. Confiar excessivamente em indicadores e ignorar a ação do preço em si pode perder o tempo de reversão.

  5. O método de stop loss é relativamente rígido, incapaz de se adaptar a grandes mudanças no mercado.

Melhoria

  1. Teste e otimize os parâmetros do período SMA e do RSI para encontrar a melhor combinação.

  2. Considere a adição de um indicador de volume para evitar falhas com baixo volume.

  3. Combinações de testes com outros indicadores como MACD, Bandas de Bollinger, etc.

  4. Adicionar algoritmos de aprendizagem de máquina, melhorando a precisão do sinal através de treinamento com dados históricos.

  5. Otimizar o stop loss para ser mais flexível, adaptando-se às alterações do mercado.

  6. Adicionar a gestão de risco para controlar o montante das perdas de transações individuais.

Conclusão

Esta estratégia integra os pontos fortes dos indicadores SMA e RSI, filtrando algumas oportunidades de negociação ruidosas. Sua lógica simples é fácil de implementar, mas ainda requer otimização de parâmetros e regras, juntamente com controle de risco adequado para operar de forma constante no longo prazo.


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
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/
// © abdllhatn

//@version=5
// strategy("Alpha Short SMA and RSI Strategy", overlay=true, initial_capital=10000, default_qty_value=100)

// Inputs
sma_length = input(200, title="SMA Length")
rsi_length = input(14, title="RSI Length")
rsi_entry = input(51, title="RSI Entry Level")
rsi_stop = input(54, title="RSI Stop Level")
rsi_take_profit = input(32, title="RSI Take Profit Level")

// Indicators
sma_value = ta.sma(close, sma_length)
rsi_value = ta.rsi(close, rsi_length)

var float trailingStop = na
var float lastLow = na

// Conditions
shortCondition = ta.crossover(rsi_value, rsi_entry) and close < sma_value
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    trailingStop := na
    lastLow := na

if (strategy.position_size < 0)
    if (na(lastLow) or close < lastLow)
        lastLow := close
        trailingStop := close

if not na(trailingStop) and close > trailingStop
    strategy.close("Sell")

if (rsi_value >= rsi_stop)
    strategy.close("Sell")

if (rsi_value <= rsi_take_profit)
    strategy.close("Sell")

// Plot
plot(sma_value, color=color.red, linewidth=2)




Mais.