
Esta estratégia é uma estratégia de negociação de curto prazo usando o RSI. Combina o RSI com o Williams Shark Index e executa uma negociação inversa quando o RSI entra em uma área de sobrecompra ou sobrevenda, uma estratégia de negociação de curto prazo mais conservadora.
A estratégia baseia-se principalmente nos seguintes princípios:
O uso da regra de negociação da praia, apenas quando o mercado se reverte claramente, é uma forma mais conservadora de negociação.
Quando a linha do RSI entra na zona de sobrecompra (default 60 ou mais) ou na zona de sobrevenda (default 40 ou menos), o mercado está no ponto crítico de reversão, quando a reversão é feita.
Combinando o indicador de crocodilo de Williams para determinar a tendência do mercado. Considere o vazio somente quando o indicador de crocodilo mostra três linhas equilíneas (linhas de lábios vermelhos, linhas de dentes brancos, linhas de crocodilo azuis) alinhadas para baixo; Considere o extra somente quando o indicador de crocodilo mostra três linhas equilíneas alinhadas para cima.
O RSI do RSI é usado para julgar o fenômeno de sobrecompra e sobrevenda do próprio RSI, formando um efeito de dupla filtragem. Apenas quando a linha do RSI entra na zona de sobrecompra e sobrevenda, e o RSI do RSI também entra na zona de sobrecompra e sobrevenda, é emitido um sinal de negociação.
Defina uma linha de parada e uma linha de parada. Quando o preço se reverte e atinge a linha de parada ou a linha de parada, feche a posição de parada ou parada.
A estratégia tem as seguintes vantagens:
A adoção de uma estratégia de negociação sólida e sólida para entrar no mercado quando há uma reversão visível pode evitar o risco de perder a direção quando o mercado está em turbulência.
Usar o indicador RSI para determinar o ponto de reversão do mercado, o indicador é simples, claro e fácil de operar. A configuração RSI do RSI evita o whipsaw e o duplo filtro aumenta a confiabilidade do sinal.
Combinado com o indicador de bacalhau para determinar a direção da tendência, evitar o comércio de contrapartida. O indicador de bacalhau como condição auxiliar aumenta o efeito de filtragem.
Estabeleça uma estratégia de stop loss para bloquear o lucro e controlar o risco.
Facil para otimizar os parâmetros. Os parâmetros do RSI e as condições de entrada e saída podem ser ajustados de acordo com diferentes mercados e estratégias de otimização.
A estratégia também apresenta alguns riscos:
Existe uma probabilidade de que o RSI emita um falso sinal. O RSI pode emitir um falso sinal de sobrecompra e sobrevenda. A combinação do indicador de pescadores pode reduzir a probabilidade de falsos sinais.
A configuração excessiva do ponto de parada pode levar à expansão dos prejuízos. O ponto de parada deve ser apropriadamente reduzido para reduzir os prejuízos individuais.
A reversão não ocorre necessariamente na zona de sobrevenda do RSI. Mudanças na estrutura do mercado podem levar a mudanças no ponto de reversão, ajustando os parâmetros de acordo com o tempo.
Pode haver menos transações e não haver transações por longos períodos. As condições de entrada podem ser relaxadas de forma apropriada para aumentar o número de transações.
O mercado pode subir ou descer por um longo período, dificultando a negociação em linha curta. O ciclo de detenção deve ser ajustado de acordo com o tempo, o ciclo de negociação deve ser prolongado ou reduzido.
A estratégia pode ser otimizada em várias direções:
Optimizar os parâmetros do RSI, ajustando os intervalos entre as zonas de supercompra e de supervenda para os diferentes mercados.
Ajustar os parâmetros do indicador de peixes-boi para otimizar a precisão de julgar a direção da tendência
Optimizar as configurações de stop loss para obter o máximo controle de retirada e bloquear mais ganhos.
Combinação com outros indicadores para melhorar a precisão do sinal, como KDJ, MACD, etc.
Aumentar o stop loss automático, o stop loss de rastreamento e o controle de perdas individuais.
Optimizar o gerenciamento de posições, ajustar o tamanho das posições em diferentes condições de mercado e controlar o risco.
Optimizar os períodos de negociação para negociar em períodos de tempo mais marcantes.
Esta estratégia é, em geral, uma estratégia de negociação de linha curta mais estável. Ela utiliza uma estratégia de negociação de praia mais conservadora, ao mesmo tempo em que usa o indicador RSI para determinar o ponto de reversão, e auxiliado pelo indicador de falcão para determinar a direção da tendência, para evitar efetivamente a negociação de alto risco, como seguir a alta e a baixa, e bloquear o lucro mais estável.
/*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
/////////////////////////////////////////////////////////////////////////////////