
Esta estrategia calcula el indicador de la dinámica de los precios y establece un alto de seguimiento bidireccional largo y corto para bloquear las ganancias, lo que permite el seguimiento de la tendencia. Al mismo tiempo, la estrategia combina los niveles de activación y comienza a seguir los paros solo después de alcanzar la ganancia especificada, lo que puede prevenir los paros prematuros.
Calcula el movimiento de 12 ciclos de precios y luego calcula el movimiento de 1 ciclo de movimiento. Cuando el movimiento rápido (el movimiento de 1 ciclo de movimiento de precios) es mayor que 0 y menor que 0 es más. Así se puede determinar la dirección del cambio de movimiento de precios y dominar la tendencia de los precios.
Configuración de la distancia de seguimiento de la parada de pérdidas y el nivel de activación de la parada de pérdidas. La distancia de seguimiento de la parada de pérdidas es cuando el precio se ejecuta a un nuevo punto alto o bajo y se ajusta la parada a la distancia indicada. La activación de la parada de pérdidas de seguimiento es cuando el seguimiento de la parada de pérdidas debe comenzar después de alcanzar un cierto porcentaje de ganancias.
La estrategia de bloquear las ganancias mediante el seguimiento de los precios más altos o más bajos, y emitir una señal de salida cuando el precio retrocede más allá de la distancia de parada establecida.
Utilizando el doble movimiento de la determinación, se puede determinar con precisión la dirección de la tendencia de los precios, reducir el número de operaciones y evitar la estafa.
La configuración flexible permite el seguimiento de la distancia de parada para reducir el riesgo y bloquear las ganancias.
Se puede configurar el nivel de activación de seguimiento de la parada de pérdidas, y el mecanismo de parada de pérdidas se activa solo después de alcanzar cierta ganancia, para evitar la parada prematura.
Se puede configurar el nivel de pérdida de múltiples y vacío, para controlar el riesgo.
El proceso de cálculo es simple, eficiente, fácil de entender y de implementar.
La doble determinación de la dinámica puede dar lugar a una señal de reversión, que requiere una combinación de filtros de tendencia.
La distancia de parada demasiado grande puede causar pérdidas significativas.
Si el nivel de activación es demasiado alto, se puede perder la oportunidad de detener el daño.
Se necesitan más pruebas y optimizaciones de parámetros para encontrar el punto de parada óptimo.
Se pueden reducir las señales falsas mediante el juicio de tendencias y la optimización de parámetros. Se pueden probar diferentes variedades de contratos y configuraciones de parámetros para encontrar la configuración óptima.
En combinación con los indicadores de identificación de la estructura del mercado, se puede identificar la tendencia a la pérdida de espacio y evitar el comercio inverso.
Se añaden más condiciones de tiempo, como cambios en el volumen de transacciones, brechas en la reducción, etc., para mejorar la precisión de la señal.
Optimización de parámetros para probar el rendimiento de diferentes distancias de frenado y niveles de activación.
Considere la distancia de parada de seguimiento dinámico, que se ajusta automáticamente según la volatilidad del mercado.
Se puede configurar un parón parcial o un parón móvil para controlar aún más el riesgo.
La estructura general de esta estrategia es clara, determina la tendencia de los precios a través de indicadores de doble dinámica, establece un stop loss de seguimiento flexible para bloquear los beneficios y controla eficazmente el riesgo de las transacciones. La estrategia es fácil de entender y implementar, y al mismo tiempo hay espacio para optimizar, y agregar más indicadores técnicos y pruebas de parámetros puede mejorar aún más el rendimiento de la estrategia.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trailing Stop Snippet", overlay=true)
length = input(12)
price = close
momentum(seria, length) =>
mom = seria - seria[length]
mom
mom0 = momentum(price, length)
mom1 = momentum( mom0, 1)
tsact = input.float(0.0, "Trailing Stop Activation |", group="strategy", tooltip="Activates the Trailing Stop once this PnL is reached.") / 100
tsact := tsact ? tsact : na
ts = input.float(0.0, "Position Trailing Stop |", group="strategy", tooltip="Trails your position with a stop loss at this distance from the highest PnL") / 100
ts := ts ? ts : na
in_long = strategy.position_size > 0
in_short = strategy.position_size < 0
var ts_ = array.new_float()
ts_size = array.size(ts_)
ts_get = ts_size > 0 ? array.get(ts_, ts_size - 1) : 0
if in_long
if tsact and high > strategy.position_avg_price + strategy.position_avg_price * tsact
if ts_size > 0 and ts_get < high
array.push(ts_, high)
if ts_size < 1
array.push(ts_, high)
if not tsact
if ts_size > 0 and ts_get < high
array.push(ts_, high)
if ts_size < 1
array.push(ts_, high)
if in_short
if tsact and low < strategy.position_avg_price - strategy.position_avg_price * tsact
if ts_size > 0 and ts_get > low
array.push(ts_, low)
if ts_size < 1
array.push(ts_, low)
if not tsact
if ts_size > 0 and ts_get > low
array.push(ts_, low)
if ts_size < 1
array.push(ts_, low)
trail = in_long and ts_size > 0 ? low < ts_get - ts_get * ts : in_short and ts_size > 0 ? high > ts_get + ts_get * ts : na
if (mom0 > 0 and mom1 > 0)
strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
strategy.cancel("MomLE")
if (mom0 < 0 and mom1 < 0)
strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
strategy.cancel("MomSE")
tsClose = in_long ? ts_get - ts_get * ts : in_short ? ts_get + ts_get * ts : na
if trail
strategy.close_all()
if not strategy.opentrades
array.clear(ts_)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
plotchar(ts_get, "GET", "")
plot(strategy.position_avg_price > 0 ? strategy.position_avg_price : na, "Average", color.rgb(251, 139, 64), 2, plot.style_cross)
plot(tsClose > 0 ? tsClose : na, "Trailing", color.rgb(251, 64, 64), 2, plot.style_cross)
plot(strategy.position_avg_price - strategy.position_avg_price * tsact > 0 ? strategy.position_avg_price - strategy.position_avg_price * tsact : na, "TS Activation", color.fuchsia, 2, plot.style_cross)