
La estrategia de seguimiento de pérdidas de ruptura de valor es un sistema de comercio cuantitativo diseñado específicamente para el comercio de activos digitales, que captura las rupturas de mercado mediante la colocación de listados en los extremos de los precios locales (paradas de compra y venta). La estrategia también implementa un mecanismo de seguimiento de pérdidas, que activa un mecanismo de protección para bloquear los ingresos una vez que la posición alcanza un nivel de ganancias predeterminado. Este método combina las ventajas de la negociación de ruptura de precio con la gestión de riesgos, proporcionando a los comerciantes una solución de negociación automatizada.
La estrategia se basa en el comportamiento de los precios y los principios de gestión de riesgos dinámicos, y su lógica central se puede dividir en las siguientes partes clave:
Identificación de extremos localesLa estrategia utiliza la ventana de tiempo definida para calcular los máximos y mínimos locales como puntos de ruptura potenciales. En concreto, utiliza una línea K de BarsN * 2 + 1 para determinar los máximos y mínimos locales.
Ajuste de la lista:
El filtro del tiempoLa estrategia permite a los operadores establecer horarios de negociación y negociar solo en el rango de horas especificado, lo que ayuda a evitar períodos de tiempo en los que no se desea negociar.
Cálculo del nivel de ganancias y pérdidas:
Mecanismo de seguimiento de pérdidas:
Después de analizar el código en profundidad, la estrategia muestra las siguientes ventajas:
Captura automática de las brechasLa estrategia permite capturar automáticamente las rupturas de precios, sin necesidad de monitorear el mercado manualmente.
Gestión de riesgos dinámicosLa adopción de una configuración de stop-loss basada en el porcentaje del precio actual permite una mayor flexibilidad en la gestión de riesgos para adaptarse a diferentes niveles de precios.
Mecanismo de protección de beneficiosA través de la función de seguimiento de stop loss, la estrategia puede bloquear efectivamente los beneficios obtenidos y reducir el retiro, mientras se mantiene el espacio de ganancia.
Función de filtrado de tiempoPermitir a los operadores elegir el mejor momento para operar en función de las características del mercado, evitando operar en períodos de menor volatilidad o imprevisibilidad.
Altamente adaptableLos parámetros de la estrategia se pueden ajustar según las condiciones del mercado, como ajustar la ventana de cálculo de los extremos locales, el porcentaje de stop-loss, etc., para adaptarse a diferentes entornos del mercado.
La aplicación de la disciplina es estricta.Como estrategia de automatización, elimina la influencia de los factores emocionales en las decisiones de negociación y ejecuta las transacciones estrictamente según las reglas predeterminadas.
A pesar de las ventajas de esta estrategia, existen algunos riesgos y limitaciones potenciales:
Riesgo de una falsa brecha: El mercado puede generar falsas rupturas, lo que lleva a la estrategia a entrar en transacciones no deseadas. La solución es aumentar los indicadores de confirmación o ajustar el tamaño de la distancia de la orden de la zona de amortiguamiento para reducir la probabilidad de que se desencadene una falsa ruptura.
Sensibilidad de los parámetros: El rendimiento de la estrategia depende en gran medida de la configuración de los parámetros, como BarsN, TPasPctBTC y SLasPctBTC. Los parámetros inadecuados pueden causar un mal rendimiento. Se recomienda encontrar la combinación de parámetros óptima mediante retroalimentación.
La administración de fondos incompleta: Aunque el código define el parámetro RiskPercent, no se aplica realmente para calcular el tamaño de la posición. Esto puede conducir a una gestión de riesgo imperfecta.
Capacidad limitada para hacer frente a situaciones extremasEn condiciones de alta volatilidad o condiciones extremas del mercado, un simple rompimiento de los límites locales y un cierre porcentual fijo pueden ser insuficientes para administrar el riesgo de manera efectiva.
Punto de deslizamiento y retraso en la ejecuciónEn el caso de operaciones reales, la ejecución de órdenes puede sufrir deslizamientos o retrasos que afectan el rendimiento de la estrategia.
Dependencia del mercado únicoLa estrategia está diseñada para un activo específico y puede no ser aplicable a otros activos con características diferentes del mercado.
Basado en el análisis de código, la estrategia puede ser optimizada en las siguientes direcciones:
Gestión de posiciones dinámicas: Implementación de un cálculo dinámico del tamaño de la posición basado en los parámetros de RiskPercent, ajustando el tamaño de la posición en función del tamaño de la cuenta y el riesgo actual del mercado para lograr un control de riesgo más preciso.
Mecanismo de confirmación múltipleIntroducción de indicadores técnicos adicionales para la confirmación de brechas, como brechas en el volumen de transacciones, indicadores de dinámica o indicadores de tendencias, para reducir las transacciones falsas.
Parámetros de adaptaciónIntroducción de parámetros que se ajustan automáticamente en función de la volatilidad del mercado u otras características del mercado, lo que permite que las estrategias se adapten mejor a diferentes entornos del mercado.
Estrategias para detener el brote: Implementación de un mecanismo de parada por lotes, que permite que algunas posiciones se retiren a diferentes niveles de ganancias, lo que permite bloquear parte de las ganancias y mantener un mayor margen de ganancias.
Filtrado de estado del mercadoAumentar el estado del mercado (trend, fluctuación, etc.) y ajustar los parámetros de la estrategia o detener el comercio en diferentes estados del mercado.
Optimización de pérdidasLa implementación de un stop loss dinámico basado en el ATR (la amplitud de fluctuación real) u otros indicadores de volatilidad hace que el stop loss sea más razonable.
Marco de retroalimentación y optimización: Desarrollar un marco de retroalimentación más completo, evaluar el rendimiento de las estrategias en diferentes períodos y bajo diferentes parámetros, y buscar la combinación óptima de parámetros.
La estrategia de seguimiento de pérdidas de ruptura de valor es un sistema de negociación automatizado de ingenioso diseño para administrar el riesgo mediante la captura de rupturas de extremo de valor locales y la aplicación de seguimiento de las pérdidas. Su principal ventaja reside en la automatización de la ejecución, la gestión dinámica del riesgo y el mecanismo de protección de las ganancias, lo que lo convierte en una herramienta de negociación potencialmente efectiva.
Sin embargo, la eficacia de la estrategia depende en gran medida de la configuración de los parámetros y las condiciones del mercado. La robustez y adaptabilidad de la estrategia se pueden mejorar significativamente mediante la implementación de las medidas de optimización recomendadas, como la gestión dinámica de la posición, el mecanismo de confirmación múltiple y los parámetros de adaptación.
Para los operadores, se recomienda realizar una adecuada retroalimentación antes de la aplicación en el mercado real, encontrar la combinación de parámetros que mejor se adapte a la situación actual del mercado y considerar la combinación con otras herramientas de análisis para confirmar las señales de negociación. Al mismo tiempo, monitorear y evaluar continuamente el rendimiento de la estrategia y ajustar los parámetros a tiempo según los cambios en el mercado para mantener la eficacia de la estrategia.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-06 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("BTC Trading Robot", overlay=true, pyramiding=1, initial_capital=100000)
//============== Input Groups ==============//
// Trading Profile
group_trading = "BTC"
systemType = input.int(1, title="Trading System (1:BTC)", group=group_trading)
// Common Trading Inputs
group_common = "Trading Inputs"
RiskPercent = input.float(4.0, title="Risk as % of trading capital", group=group_common)
TradeComment = input.string("BTC trading robot", title="Trade Comment", group=group_common)
SHInput = input.int(0, title="Start Hour (0 = no filter)", group=group_common)
EHInput = input.int(0, title="End Hour (0 = no filter)", group=group_common)
// Gold Related Inputs
group_BTC = "BTC Related Input"
TPasPctBTC = input.float(0.2, title="TP as % of Price", group=group_BTC)
SLasPctBTC = input.float(0.1, title="SL as % of Price", group=group_BTC)
TSLasPctofTPBTC = input.float(5.0, title="Trail SL as % of TP", group=group_BTC)
TSLTgrasPctofTPBTC = input.float(7.0, title="Trail Tgra SL as % of TP", group=group_BTC)
// Other parameters
BarsN = 5
OrderDistPoints = 100.0
//============== Calculate Trade Parameters ==============//
var float Tppoints = 0.0
var float Slpoints = 0.0
var float TslTriggerPoints = 0.0
var float TslPoints = 0.0
price = close
// Adjust parameters based on system type (using 1 for Gold)
if systemType == 1
Tppoints := price * TPasPctBTC
Slpoints := price * SLasPctBTC
OrderDistPoints := Tppoints / 2.0
TslPoints := Tppoints * TSLTgrasPctofTPBTC / 100.0
TslTriggerPoints := Tppoints * TSLTgrasPctofTPBTC / 100.0
//============== Time Filter ==============//
currentHour = hour(time)
inSession = true
if SHInput != 0 and currentHour < SHInput
inSession := false
if EHInput != 0 and currentHour >= EHInput
inSession := false
//============== Find Local High and Low ==============//
localHigh = ta.highest(high, BarsN * 2 + 1)
localLow = ta.lowest(low, BarsN * 2 + 1)
//============== Entry Orders ==============//
if inSession and strategy.position_size == 0
// For a BuyStop order: only submit if current price is less than the desired entry level minus a buffer.
if price < localHigh - OrderDistPoints * syminfo.mintick
strategy.order("BuyStop", strategy.long, stop=localHigh, comment="BuyStop")
// For a SellStop order: only submit if current price is greater than the desired entry level plus a buffer.
if price > localLow + OrderDistPoints * syminfo.mintick
strategy.order("SellStop", strategy.short, stop=localLow, comment="SellStop")
//============== Trailing Stop Logic ==============//
if strategy.position_size > 0 // Long positions
longProfit = price - strategy.position_avg_price
if longProfit > TslTriggerPoints * syminfo.mintick
strategy.exit("Long Exit", from_entry="BuyStop", stop=price - TslPoints * syminfo.mintick, limit=strategy.position_avg_price + Tppoints * syminfo.mintick)
if strategy.position_size < 0 // Short positions
shortProfit = strategy.position_avg_price - price
if shortProfit > TslTriggerPoints * syminfo.mintick
strategy.exit("Short Exit", from_entry="SellStop", stop=price + TslPoints * syminfo.mintick, limit=strategy.position_avg_price - Tppoints * syminfo.mintick)