
Esta estrategia primero calcula el ADX y el SMA en el marco de tiempo alto para identificar la dirección de la tendencia y el cambio de tendencia. Luego calcula el RSI en el marco de tiempo bajo para identificar el fenómeno de sobreventa y sobrecompra y formar una señal de negociación.
Calcular la intensidad de la tendencia en el ADX en un marco de tiempo alto. Un aumento en el ADX representa un fortalecimiento de la tendencia.
Calcular la dirección de la tendencia en el marco de tiempo de alta. Una elevación de la SMA representa un aumento de los precios, una caída de la SMA representa una caída de los precios.
Calcular el RSI en un marco de tiempo bajo para determinar el fenómeno de sobrecompra y sobreventa. El RSI por encima de la brecha representa sobrecompra y el RSI por debajo de la brecha representa sobreventa.
Cuando el ADX sube, el SMA sube y el RSI del marco de tiempo bajo está sobrecomprando, se considera que la tendencia se está fortaleciendo hacia arriba y se puede hacer una brecha.
Cuando el ADX sube, el SMA baja y el RSI en el marco de tiempo bajo está sobrevendido, se puede hacer más cuando se considera que la tendencia se está fortaleciendo hacia abajo.
La combinación de un análisis de tendencia y un cambio de tendencia permite capturar oportunidades de cambio en una tendencia más grande.
La combinación de indicadores en diferentes marcos de tiempo puede mejorar la fiabilidad de la señal.
La estrategia RSI es simple, fácil de entender y de implementar.
Existe la posibilidad de que el RSI produzca falsas señales, lo que hace que las operaciones se pierdan. Se puede reducir la probabilidad de falsas señales mediante la optimización de los parámetros.
El juicio de tendencias de grandes ciclos puede ser erróneo, lo que hace que la estrategia no sea adecuada para el entorno del mercado. Se puede considerar combinar más indicadores para juzgar tendencias.
La frecuencia de las operaciones puede ser demasiado alta y los costos de las operaciones pueden afectar la rentabilidad. Se puede ajustar adecuadamente el parámetro RSI para reducir el número de operaciones.
Prueba más combinaciones de parámetros para encontrar la mejor combinación entre los parámetros RSI y los parámetros ADX, SMA.
Aumentar el mecanismo de suspensión de pérdidas para controlar las pérdidas individuales.
Considere la posibilidad de reducir la posición cuando la volatilidad es lenta, combinada con un indicador de volatilidad.
Optimización de los precios específicos de entrada y salida, por ejemplo, el precio más alto de la línea K anterior a la ruptura para entrar en la brecha.
Esta estrategia integra el juicio de tendencias y las señales de cambio de tendencias, buscando oportunidades de reversión local en una tendencia de gran ciclo. Es una estrategia más conservadora en general y adecuada para los inversores que reducen la probabilidad de falsas señales.
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("RSI scalping", overlay=true)
CustSession = input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0 = input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )
RSI = rsi(close, 7)
res = CustSession ? SessionTF0 : period
o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)
// ADX higher time frame
dirmov(len) =>
up = change(h)
down = -change(l)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truer = request.security(syminfo.tickerid, res, tr)
truerange = rma(truer, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len
ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2] > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising
if (longCondition)
strategy.entry("Long entry", strategy.long)
if (shortCondition)
strategy.entry("Short Entry", strategy.short)