Esta estrategia combina el indicador RSI y las medias móviles para determinar tendencias y generar señales de negociación, y utiliza un stop loss móvil para bloquear ganancias y controlar el riesgo. Es una estrategia típica de seguimiento de tendencias.
Principio de la estrategia:
Calcula el RSI para determinar si hay un exceso de compra y venta. El RSI superior a 50 es una señal de varios puntos.
Calcula el promedio móvil rápido y lento, y la forma de la cruz de oro es una señal de múltiples cabezas.
La subida continua del RSI también puede servir como una señal de que se debe hacer más seguimiento.
Al entrar en el juego, establezca una línea móvil de stop loss y una línea de parada.
La línea de parada está fijada por debajo del precio y la línea de parada está fijada por encima del precio.
Si el precio alcanza el límite de la parada de pérdidas, el precio se estabiliza.
Las ventajas de esta estrategia:
El indicador RSI juzga sobrecompra y sobreventa, y evita seguir los altibajos.
Las medias móviles identifican la dirección de la tendencia. La combinación mejora la precisión de los juicios.
El modo de parada móvil permite ajustar la posición de parada en función de los cambios en el precio en tiempo real.
El riesgo de esta estrategia:
El RSI y la línea media son propensos a generar señales erróneas en situaciones de volatilidad.
El bloqueador de pérdidas móviles requiere un ajuste cuidadoso de la amplitud, ya sea demasiado grande o demasiado pequeño.
No se puede limitar el tamaño de las pérdidas individuales y existe el riesgo de que se produzcan grandes pérdidas.
En resumen, la estrategia combina las ventajas del RSI y el indicador de la línea media, y administra el riesgo con un método móvil de parada de pérdidas. La mejora en la optimización de los parámetros y el control del riesgo puede obtener mejores resultados.
/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI and MA Strategy with Trailing Stop Loss and Take Profit",
overlay=true,
initial_capital=1000,
process_orders_on_close=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.1)
showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0
//==================================Buy Conditions============================================
//RSI
length = input(14)
rsi = ta.rsi(close, length)
buyCondition1 = rsi > 50
//MA
SMA9 = ta.sma(close, 9)
SMA50 = ta.sma(close, 50)
SMA100 = ta.sma(close, 100)
plot(SMA9, color = color.green)
plot(SMA50, color = color.orange)
plot(SMA100, color = color.blue)
buyCondition2 = SMA9 > SMA50//ta.crossover(SMA9, SMA100)
//RSI Increase
increase = 5
buyCondition3 = (rsi > rsi[1] + increase)
if (buyCondition1 and buyCondition2 and buyCondition3 and timePeriod) //and buyCondition
strategy.entry("Long", strategy.long)
//==================================Sell Conditions============================================
//Trailing Stop Loss and Take Profit
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=2) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01
longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
stopValue = close * (1 - longTrailPerc)
math.max(stopValue, longStopPrice[1])
else
0
shortStopPrice := if strategy.position_size < 0
stopValue = close * (1 + shortTrailPerc)
math.min(stopValue, shortStopPrice[1])
else
999999
strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)