Esta estrategia tiene como objetivo utilizar la función de stop de trailing de Bitmex
La estrategia utiliza principalmente 3 indicadores: precio más alto, precio más bajo y precio de cierre.longoffset
para una larga distancia de parada trasera yshortoffset
La distancia larga predeterminada es de 228,5 puntos y la distancia corta es de 243,5 puntos.
Entonces la estrategia utiliza la siguiente lógica para ajustar el precio de parada de seguimientotrailstop
:
Si el precio más bajo de la última vela es menor que el precio de parada de seguimiento de la vela anterior, y el precio más bajo de la vela antes de eso es mayor que el precio de parada de seguimiento de las 2 velas anteriores, entonces el precio de parada de seguimiento de la vela actual = precio cerrado + distancia corta de parada de seguimiento
Si el precio más alto de la última vela es más alto que el precio de parada de seguimiento de la vela anterior, y el precio más alto de la vela antes de que es menor que el precio de parada de seguimiento de las 2 velas anteriores, entonces el precio de parada de seguimiento de la vela actual = precio cerrado - larga distancia de parada de seguimiento
Si el precio más alto de la última vela es más alto que el precio de parada de la vela anterior, entonces el precio de parada de la vela actual = max ((precio de parada de la vela anterior, precio más alto de la última vela - distancia de parada larga)
Si el precio más bajo de la última vela es menor que el precio de parada de seguimiento de la vela anterior, entonces el precio de parada de seguimiento de la vela actual = min ((precio de parada de seguimiento de la vela anterior, precio más bajo de la última vela + corta distancia de parada de seguimiento)
De lo contrario, el precio de cierre de la vela actual = precio de cierre
Esto ajusta dinámicamente el precio de parada de seguimiento en función de los cambios en los precios de mercado más altos y más bajos para lograr paradas dinámicas.
La mayor ventaja de esta estrategia es la implementación de paradas de seguimiento verdaderamente dinámicas y flexibles. En comparación con los precios de stop loss fijos, el seguimiento dinámico puede ajustar el rango de stop loss basado en las fluctuaciones del mercado, evitando pérdidas innecesarias debido a distancias de parada demasiado grandes, al tiempo que evita ser detenido por fluctuaciones normales de precios cuando la distancia es demasiado pequeña. Esto reduce las pérdidas innecesarias al tiempo que reduce la probabilidad de paradas prematuras.
Otra ventaja es que la distancia de stop loss es personalizable y optimizable. Los usuarios pueden elegir rangos de stop loss adecuados para ellos según las características de diferentes productos y estilos de negociación. Esto permite que la estrategia se aplique a una gama más amplia de escenarios.
Por último, la lógica de stop loss de esta estrategia es simple y clara, fácil de entender, y fácil de desarrollar e integrar en otras estrategias.
Los principales riesgos de esta estrategia son:
Las paradas dinámicas solo pueden reducir las pérdidas en condiciones normales de mercado, pero no pueden soportar eventos importantes o condiciones extremas de mercado.
Si la distancia de detención trasera se establece demasiado grande, puede conducir a mayores pérdidas. Si se establece demasiado pequeña, puede detenerse prematuramente. La configuración necesita pruebas y optimización cuidadosas basadas en las características del producto.
En las primeras velas después de abrir una posición, debido al mecanismo de paradas posteriores, la distancia de parada puede ser demasiado grande, lo que representa algún riesgo adicional durante este período.
Esta estrategia puede optimizarse en los siguientes aspectos:
Optimización de parámetros para diferentes productos: Elegir distancias razonables largas y cortas de parada de seguimiento basadas en la volatilidad, el rango intradiario y otras métricas para diferentes productos. Esta es la dirección más crítica.
Reducir el riesgo adicional en las velas tempranas después de abrir posiciones: Limitar el rango de ajuste de las distancias de parada de trailing en las primeras velas para evitar distancias demasiado grandes.
Incorporar indicadores de volumen de negociación: por ejemplo, reducir la distancia de parada durante los aumentos de volumen para evitar ser detenido por el arbitraje.
Combinar con otras estrategias de entrada/salida: La función principal de esta estrategia es el stop loss de seguimiento.
Esta estrategia implementa un stop loss dinámico basado en los cambios en los precios más altos y más bajos del mercado. Puede reducir eficazmente las pérdidas innecesarias en condiciones normales de mercado, y resuelve el problema de las distancias fijas que son demasiado grandes o pequeñas. Las direcciones clave de optimización son la prueba de parámetros adecuados en diferentes productos y el control de riesgos en las velas tempranas después de abrir posiciones. La lógica de stop loss es simple y clara, fácil de entender e integrar en otras estrategias o usar de forma independiente como una herramienta de stop loss.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //By River strategy("BitMex Trailing Stop Strategy", overlay=true) longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5) shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5) hiprice = request.security(syminfo.tickerid, "1", high) loprice = request.security(syminfo.tickerid, "1", low) price = request.security(syminfo.tickerid, "1", close) trailstop = price trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price))) trailcol = trailstop > price ? red : green plot(trailstop, color=trailcol) longCondition = trailcol == green alertcondition(longCondition, "Long Stop alert", "BUY") if (longCondition) strategy.entry("Long", strategy.long) shortCondition = trailcol == red alertcondition(shortCondition, "Short alert", "SELL") if (shortCondition) strategy.entry("Short", strategy.short)