
La idea central de esta estrategia se basa en la estrategia RSI, con la adición de algunas reglas clave de administración de operaciones, que incluyen stop loss, stop loss, stop loss tracking, y stop loss tracking. Esto permite a la estrategia obtener mayores ganancias en situaciones de tendencia durante el reajuste, mientras que se minimizan las pérdidas en situaciones de crisis.
La estrategia primero calcula el indicador RSI, haciendo un alza cuando el RSI está por debajo de la línea de sobreventa y un descenso cuando el RSI está por encima de la línea de sobreventa.
Después de hacer múltiples señales de activación, registre el precio más alto en ese momento como punto de referencia para seguir el stop loss. Si el precio es inferior al punto de parada de seguimiento menos la amplitud del stop loss, se detiene la posición en equilibrio.
Después de que se activa la señal de salida, se registra el precio más bajo en ese momento como punto de referencia para el seguimiento de la parada de pérdidas. Si el precio es superior al punto de parada de seguimiento más la amplitud de la parada, se detiene la posición de equilibrio.
Si el precio alcanza la distancia de parada, se detiene la liquidación; si se alcanza la distancia de parada, se detiene la liquidación.
Además, el precio se detiene si el precio toca la línea de seguimiento de pérdidas de la palanca según la configuración de la palanca.
Mediante el seguimiento de las paradas máximas en la tendencia al alza y las paradas mínimas en la tendencia a la baja, en combinación con la distancia de parada fija, se puede obtener un mayor rendimiento en el curso de la tendencia. Al mismo tiempo, la configuración de paradas de seguimiento de palanca puede evitar la expansión de las pérdidas.
La mayor ventaja de esta estrategia es la introducción de varias reglas de administración de operaciones, que permiten un mejor control de los riesgos al tiempo que se aprovecha la ventaja de la estrategia RSI.
En concreto, las ventajas de la estrategia son:
En una situación de tendencia, el seguimiento del stop loss puede seguir la tendencia de ganancias y obtener mayores ganancias.
La distancia fija de stop-loss puede bloquear parte de las ganancias y evitar que todas las ganancias se encierren cuando la tendencia se invierte.
El seguimiento de pérdidas por medio de palanca evita la expansión de las pérdidas y controla el riesgo.
La combinación de varias formas de detener el daño puede ejercer sus propias ventajas en diferentes entornos de mercado y mejorar la estabilidad de la estrategia en general.
Los parámetros de la estrategia se pueden ajustar con flexibilidad para adaptarse a diferentes tipos de transacciones y entornos de mercado.
La lógica de la estrategia es clara y fácil de entender, fácil de verificar, optimizar y aplicar.
Los principales riesgos de esta estrategia provienen de:
La estrategia RSI en sí misma tiene un cierto riesgo de error de negociación, y puede haber situaciones en las que se desencadena el stop loss. Se puede optimizar ajustando los parámetros RSI.
Los temblores cerca del punto de parada pueden desencadenar la parada con frecuencia. Se puede ampliar la distancia de parada adecuadamente para evitarla.
La distancia de la parada no puede ser completamente un indicador de ganancias en una tendencia. Se puede combinar con otros indicadores para determinar la fecha de finalización de la tendencia.
La distancia fija para detener el daño puede ser demasiado pequeña para evitar el daño por completo. Se puede considerar el uso de detener el daño por vibración o detener el daño dinámico.
El exceso de apalancamiento puede llevar a un seguimiento de pérdidas de apalancamiento demasiado cerca del precio de apertura de la posición. La configuración de apalancamiento debe reducirse adecuadamente.
Los intervalos de tiempo de retroalimentación no pueden ser representativos de las condiciones futuras del mercado. Debe hacerse un control de riesgos y verificar el efecto de los diferentes períodos de tiempo.
Los riesgos anteriores pueden mitigarse mediante ajustes de parámetros, optimización de mecanismos de detención de pérdidas y control de riesgos. Sin embargo, ninguna estrategia puede evitar por completo el riesgo de mercado.
La estrategia puede ser optimizada aún más en las siguientes direcciones:
Optimización de los parámetros del RSI para reducir la probabilidad de transacciones erróneas. Se puede probar la combinación óptima de parámetros en diferentes mercados.
Intentar otros indicadores para determinar el momento de entrada, como KD, MACD, etc., en combinación con el RSI para formar múltiples filtros.
Optimización dinámica de los parámetros de parada de pérdida utilizando métodos como el aprendizaje automático.
Pruebe con métodos más complejos para detener el daño, como detener el daño por oscilación, el daño por promedio, el daño por dinámica, etc.
Optimización de la configuración de los niveles de apalancamiento y el impacto de los diferentes niveles de apalancamiento en los beneficios y el control de riesgos.
Ajuste automático de los parámetros según los cambios en el entorno del mercado, como α-Dual Thrust.
En combinación con otros factores para determinar la continuidad de la tendencia, como la energía del volumen de transacciones, etc.
El uso de tecnologías como el aprendizaje profundo para desarrollar métodos de deterioro más estables y explicables.
Para evaluar la solidez de las estrategias, se deben probar datos de diferentes variedades y períodos.
Esta estrategia se basa en la estrategia RSI para agregar varias formas de detener el riesgo, para desempeñar plenamente el doble papel de detener el riesgo en la ganancia de tendencias y el control del riesgo. El espacio de optimización de la estrategia es grande y se puede comenzar desde muchos aspectos para aumentar la ventaja de la estrategia y reducir el riesgo. La idea de la estrategia de detener el riesgo es universal y se puede ampliar a más estrategias y variedades de operaciones, es una dirección muy digna de estudio.
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true)
/////////////// Component Code Start ///////////////
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2016, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
/////////////// Component Code Stop ///////////////
///////////// RSI component /////////////
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
vrsi = rsi(price, length)
notna = not na(vrsi)
/////////////// STRATEGY ///////////////
ts = input(99999, "Trailing Stop") / 100
tp = input(99999, "Take Profit") / 100
sl = input(99999, "Stop Loss") / 100
long = notna and crossover(vrsi, overSold)
short = notna and crossunder(vrsi, overBought)
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1])
last_long_signal = long_signal ? time : nz(last_long_signal[1])
last_short_signal = short_signal ? time : nz(last_short_signal[1])
in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal
last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal
long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)
long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)
leverage = input(200, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call
if testPeriod()
strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal)
// plot(long_call, color=red)
// plot(short_call, color=green)
strategy.close("Long", when=long_call_signal)
strategy.close("Short", when=short_call_signal)
strategy.close("Long", when=long_tp)
strategy.close("Short", when=short_tp)
strategy.close("Long", when=long_sl)
strategy.close("Short", when=short_sl)
strategy.close("Long", when=long_ts)
strategy.close("Short", when=short_ts)