RSI estocástico com estratégia de Scalper de compra automática

Autora:ChaoZhang, Data: 2023-10-31 11:34:47
Tags:

img

Resumo

Esta estratégia visa implementar uma estratégia de negociação de auto buy-in e hold baseada nos indicadores técnicos do RSI estocástico e EMA. É projetada para velas de 5 minutos, otimizadas para BTC. O objetivo é manter a moeda o máximo possível durante tendências laterais ou não significativas.

Estratégia lógica

A estratégia utiliza o indicador RSI para determinar os níveis de sobrecompra e sobrevenda, combinados com a relação entre os valores K e D do RSI estocástico para gerar sinais de compra e venda.

Ele desencadeará um sinal de compra quando a linha do RSI Stochastic K estiver abaixo de 20, considerada sobrevenda, e K estiver acima de D. Depois disso, ele determinará se vender com base em três condições: 1) o preço sobe mais de 1% seguido de reversão da EMA; 2) a linha do RSI Stochastic K está abaixo de D; 3) o preço de stop loss atinge 98,5% do preço de entrada.

Além disso, uma virada descendente da EMA de curto prazo após uma tendência de alta também será considerada um sinal de venda.

Vantagens

  • Usar o RSI estocástico para o tempo de entrada é mais confiável, filtrando falhas de ruptura de forma eficaz.
  • Incorporar a EMA pode detectar melhor o momento da mudança de tendência.
  • Aplicar o stop loss ajuda a controlar as perdas de forma eficaz.
  • Manter moedas o máximo possível reduz a frequência e as taxas de negociação.

Riscos

  • Os possíveis sinais falsos do indicador RSI podem ajudar a otimizar.
  • Ajustar a percentagem de stop loss adequadamente.
  • A configuração incorreta do parâmetro EMA pode perder o tempo de mudança da tendência.

Orientações de otimização

  • Teste diferentes combinações de parâmetros do RSI e do RSI estocástico para um ajuste óptimo.
  • Tente diferentes percentagens de stop loss para equilibrar a prevenção de perdas e pullbacks.
  • Teste as combinações de EMA longa e curta para determinar os melhores parâmetros para detectar as alterações da tendência.
  • Considerar a adição de outros indicadores para melhorar a precisão do tempo de entrada e saída.

Resumo

Esta estratégia integra os pontos fortes do RSI estocástico, EMA e outros indicadores, usando métodos relativamente robustos para determinar o tempo de entrada e saída. Melhorias adicionais na lucratividade e estabilidade podem ser alcançadas através da otimização de parâmetros e gestão de riscos.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Stochastic RSI W Auto Buy Scalper Scirpt III ", shorttitle="Stoch RSI_III", format=format.price, precision=2)
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)
plot(k, "K", color=#2962FF)
plot(d, "D", color=#FF6D00)
h0 = hline(80, "Upper Band", color=#787B86)
hline(50, "Middle Band", color=color.new(#787B86, 50))
h1 = hline(20, "Lower Band", color=#787B86)

longStopLoss  = strategy.opentrades.entry_price(0)* (.985)

stochDropping = ta.falling(k,2)
shortSma = ta.sma(hlc3,12)
shorterSma = ta.sma(hlc3,3)
plot(shortSma[3])

shortSmaFlip = (ta.change(shortSma,3)>0) and ta.falling(hlc3,1)
shorterSmaFlip = (ta.change(shorterSma,2)>0) and ta.falling(hlc3,1)
messageSellText ='"type": "sell", "symbol": "BTCUSD", "marketPosition": "{{strategy.market_position}}"'

messageBuyText ='"type": "buy", "symbol": "BTCUSD", "marketPosition": {{strategy.market_position}}"'

fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

strategy.entry("Tech", strategy.long, when=(strategy.position_size <= 0 and k<17 and k>d),alert_message=messageBuyText)
//original: strategy.close("TL", when=(strategy.position_size >= 0 and (k>90 and k<d)))

takeProfit = hlc3 > strategy.opentrades.entry_price(0)*1.01
//longStopLoss  = strategy.opentrades.entry_price(0)* (.995)

strategy.close("Tech", when=(strategy.position_size >= 0 and (k>90 and k<d and stochDropping)) or close<longStopLoss, comment="rsi or Stop sell",alert_message=messageSellText)
//strategy.close("Tech", when=(strategy.position_size >= 0 and close<longStopLoss), comment="stopLoss sell",alert_message=messageSellText)

strategy.close("Tech", when=(shortSmaFlip and k>20 and takeProfit),comment="Sma after profit",alert_message=messageSellText)



Mais.