RSI Oscilador Turtle Trading Estratégia de Curto Prazo

Autora:ChaoZhang, Data: 2023-11-14 15:59:25
Tags:

img

Resumo

Esta é uma estratégia de negociação de curto prazo que usa o indicador RSI baseado nas regras de negociação de tartaruga. Ele combina o indicador RSI e o indicador Williams Alligator para realizar negociações contra-tendência quando o RSI entra na zona de sobrecompra ou sobrevenda. É uma estratégia de negociação de curto prazo relativamente conservadora.

Estratégia lógica

A estratégia baseia-se principalmente nos seguintes princípios:

  1. Utilizando as regras do comércio de tartarugas, só entrar no mercado quando houver uma reversão óbvia, adotando uma abordagem comercial relativamente conservadora.

  2. Usando o indicador RSI para julgar as condições de sobrecompra/supervenda. Quando a linha RSI entra na zona de sobrecompra (default acima de 60) ou zona de sobrevenda (default abaixo de 40), indica que o mercado está no ponto de reversão, em seguida, realizar transações contra-tendência.

  3. Combinar o indicador Williams Alligator para determinar a tendência do mercado. Vá curto apenas quando o Alligator mostra as três linhas (Lips, Teeth, Jaw) alinhadas em uma tendência de queda; vá longo apenas quando as três linhas alinhadas em uma tendência de alta.

  4. Usando o RSI do RSI para julgar as condições de sobrecompra/supervenda do próprio indicador RSI, criando um efeito de filtro duplo.

  5. Configure as linhas de stop loss e take profit. feche a posição para lucro ou stop loss quando o preço inverter para atingir as linhas de take profit ou stop loss.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. A adopção de regras rigorosas para o comércio de tartarugas, que permitem a entrada no mercado apenas quando há uma reversão óbvia, pode evitar riscos enormes quando o mercado está em variação.

  2. Usando o indicador RSI para determinar pontos de reversão do mercado, o indicador é simples e claro, fácil de operar.

  3. A combinação do indicador Alligator para determinar a direção da tendência evita a negociação contra a tendência.

  4. Estabelecer bloqueios de stop loss e take profit nos lucros e controlar os riscos.

  5. Os parâmetros do RSI e os critérios de entrada/saída podem ser ajustados para diferentes mercados para otimizar a estratégia.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Há uma probabilidade de sinais falsos do indicador RSI. O RSI pode dar sinais incorretos de sobrecompra / sobrevenda. Combinar o Alligator pode reduzir os sinais falsos.

  2. O stop loss deve ser reduzido de forma adequada para reduzir a perda por transação.

  3. As reversões podem não ocorrer exatamente nas zonas de sobrecompra/supervenda do RSI. As alterações no regime de mercado podem mudar os pontos de reversão, os parâmetros devem ser ajustados em conformidade.

  4. O número de negócios pode ser baixo, enfrentando períodos de não negociação.

  5. Os mercados com tendências prolongadas podem dificultar a negociação a curto prazo.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros do RSI, ajustar as zonas de sobrecompra/supervenda para se adaptarem aos diferentes mercados.

  2. Ajustar os parâmetros do Alligator para melhorar a precisão da determinação da direção da tendência.

  3. Otimize as configurações de stop loss e de lucro para maximizar o controle de retirada e bloquear mais lucros.

  4. Combinar com outros indicadores como KDJ, MACD etc. para melhorar a precisão do sinal.

  5. Adicione stop loss automático, trailing stop loss para controlar melhor a perda de uma única negociação.

  6. Otimizar o dimensionamento das posições em diferentes condições de mercado para gerir os riscos.

  7. Optimize as sessões de negociação, negocie em momentos em que a tendência é mais óbvia.

Resumo

Em resumo, esta é uma estratégia de negociação de curto prazo relativamente robusta. Adota uma abordagem de negociação de tartaruga conservadora, usa o indicador RSI para determinar pontos de reversão e incorpora o indicador Alligator para julgar a direção da tendência, o que pode efetivamente evitar negócios de alto risco como perseguir tops e bottoms e bloquear lucros relativamente estáveis. Ao otimizar parâmetros, parar perda / tirar lucro, combinar outros indicadores, etc., a estratégia pode ser continuamente melhorada.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-07 20:00:00
period: 30m
basePeriod: 15m
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/
// © mohanee

//@version=4

strategy(title="RSI of Ultimate Oscillator [SHORT Selling] Strategy",  shorttitle="RSIofUO" , overlay=false, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

	
//Ultimate Oscillator logic copied from  TradingView   builtin indicator
/////////////////////////////////////////////////////////////////////////////////
length1 = input(5, minval=1), length2 = input(10, minval=1), length3 = input(15, minval=1)


rsiUOLength = input(5, title="RSI UO length", minval=1)

sellLine = input (60, title="Sell at RSIofUO")
coverLine = input (75, title="Cover at RSIofUO")

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(3,title="Stop Loss",minval=1)


showUO=input(false, "show Ultimate Oscialltor")



average(bp, tr_, length) => sum(bp, length) / sum(tr_, length)
high_ = max(high, close[1])
low_ = min(low, close[1])
bp = close - low_
tr_ = high_ - low_
avg7 = average(bp, tr_, length1)
avg14 = average(bp, tr_, length2)
avg28 = average(bp, tr_, length3)
out = 100 * (4*avg7 + 2*avg14 + avg28)/7
//Ultimate Oscillator 
/////////////////////////////////////////////////////////////////////////////////

//Willimas Alligator  copied from  TradingView built in Indicator
/////////////////////////////////////////////////////////////////////////////////
smma(src, length) =>
	smma =  0.0
	smma := na(smma[1]) ? sma(src, length) : (smma[1] * (length - 1) + src) / length
	smma

//moving averages logic copied from Willimas Alligator -- builtin indicator in TradingView
sma1=smma(hl2,10)
sma2=smma(hl2,20)
sma3=smma(hl2,50)

//Willimas Alligator
/////////////////////////////////////////////////////////////////////////////////


//drawings
/////////////////////////////////////////////////////////////////////////////////
hline(sellLine, title="Middle Line 60  [Short Here]", color=color.red , linestyle=hline.style_solid)

obLevelPlot = hline(75, title="Overbought",  color=color.blue , linestyle=hline.style_dashed)
osLevelPlot = hline(25, title="Oversold", color=color.blue, linestyle=hline.style_dashed)

fill(obLevelPlot, osLevelPlot, title="Background", color=color.blue, transp=90)
rsiUO = rsi(out,rsiUOLength)

ultPlot=plot(showUO==true? out : na, color=color.green, title="Oscillator")

plot(rsiUO, title = "rsiUO" ,  color=color.purple)
//drawings
/////////////////////////////////////////////////////////////////////////////////




//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


strategy.entry(id="SERSIofUO", long=false,   qty=qty1, when = sma1<=sma2 and sma2 < sma3 and close<sma2 and crossunder(rsiUO,sellLine) )

//strategy.entry(id="SERSiofUO", long=false, when = sma1< sma2  and crossunder(rsiUO,60) )

barcolor(abs(strategy.position_size)>=1 ? color.purple : na )
bgcolor(abs(strategy.position_size)>=1 ? color.purple : na , transp=70)


//partial exit
strategy.close(id="SERSIofUO", comment="PExit",  qty=strategy.position_size/3, when=abs(strategy.position_size)>=1 and close< strategy.position_avg_price and crossover(rsiUO,30) )

strategy.close(id="SERSIofUO", comment="CloseAll", when=abs(strategy.position_size)>=1 and crossover(rsiUO,coverLine) )

//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////



Mais.