
La estrategia de cruce de tendencias ponderadas por la volatilidad y la capacidad es un sistema de negociación cuantitativa basado en la cuota de mercado, que toma decisiones de negociación mediante la identificación de los puntos de cambio del mercado de baja volatilidad a alta volatilidad. La estrategia combina dos indicadores clave: el indicador de volatilidad (VMI) y el centro de precios ponderado por la capacidad (VWPC). El VMI mide la aceleración de la tasa de fluctuación, que se utiliza para entrar en juego cuando el mercado pasa de una fase tranquila a una activa y salir cuando la volatilidad alcanza un umbral de caos; mientras que el VWPC actúa como un filtro de tendencias basado en la cantidad de transacciones y determina la dirección general del mercado a través de precios típicos.
El principio central de esta estrategia es el uso de la volatilidad del mercado para tomar decisiones comerciales en función de los cambios de ciclo y la dirección de la tendencia. En concreto:
Calculación del índice de fluctuación de la movilidad (VMI):
Capacidad ponderada por el precio central (VWPC):
Implementación de la lógica de transacción en dos etapas:
Las estrategias permiten configurar la dirección de las operaciones (comer sólo más, solo a la baja o en ambos sentidos) y optimizar los parámetros para adaptarse a diferentes entornos de mercado.
Un análisis profundo del código de la estrategia puede resumir las siguientes ventajas:
Selección de la hora de negociación basada en el ciclo del mercadoLa estrategia utiliza el indicador VMI para identificar los puntos de transición del mercado de baja a alta volatilidad, que a menudo representan el comienzo de un nuevo movimiento de precios y ayudan a entrar en una tendencia temprana.
Confirmación de la tendencia combinada con el volumen de transacciones:VWPC proporciona un indicador de tendencia más representativo que el simple promedio móvil, reduciendo las señales falsas mediante la adición de pesos de volumen de transacción.
Condiciones claras de entrada y salidaLa estrategia tiene una lógica de entrada clara ((la oscilación comienza a aumentar) y una lógica de salida ((la oscilación alcanza el límite), evitando el juicio subjetivo.
Altamente adaptable: La estrategia puede adaptarse a diferentes entornos de mercado y variedades de transacción a través de la optimización de parámetros. En particular, los límites de la zona tranquila y la zona caótica de VMI pueden ajustarse según las características del mercado.
Integración de la gestión de riesgosLa estrategia incluye la gestión de posiciones (el 15% de los fondos de la cuenta por defecto) y la restricción de operaciones invertidas (piramiding = 0), lo que ayuda a controlar el riesgo.
Ayuda visual: La estrategia traza líneas de tendencia VWPC y señales de entrada/salida en el gráfico, lo que facilita a los comerciantes una comprensión intuitiva del estado del mercado y la lógica de la estrategia.
Eficiencia de cálculo: La estrategia es más eficiente en el cálculo mediante el uso de funciones incorporadas como ta.rma y ta.barssince, que son adecuadas para aplicaciones de negociación en tiempo real.
A pesar de las ventajas de esta estrategia, existen los siguientes riesgos potenciales:
Riesgo de un falso avance volátil: El mercado puede experimentar un aumento de volatilidad de corta duración que se desvía rápidamente y produce una señal errónea. La solución es ajustar el umbral de la zona de calma del VMI o aumentar las condiciones de confirmación.
El juicio de tendencias se retrasa:VWPC como indicador de tendencia puede tener cierto retraso, puede no reaccionar a tiempo en el momento de una brusca transformación del mercado. Se puede considerar la combinación de indicadores de dinámica a corto plazo para un juicio auxiliar.
Sensibilidad de los parámetrosLa estrategia de rendimiento es sensible a la configuración de parámetros (especialmente la longitud y el umbral de VMI), y diferentes entornos de mercado pueden requerir diferentes combinaciones de parámetros. Se recomienda la optimización de parámetros para diferentes entornos de mercado mediante la retroalimentación.
Incertidumbre en la frecuencia de las transaccionesDebido a que la estrategia se basa en cambios volátiles, la frecuencia de las señales de negociación puede variar mucho en diferentes fases del mercado, lo que afecta a la rentabilidad general y el control de retiros.
Efectos en el costo de las transacciones: Aunque la estrategia tiene en cuenta la comisión de negociación ((0.075%), en las operaciones reales, los puntos de deslizamiento y otros costos de transacción pueden afectar aún más el rendimiento de la estrategia.
Basado en el volumen de transacciones:El indicador VWPC depende de los datos de volumen de transacciones, en algunos mercados o períodos de tiempo, los datos de volumen de transacciones pueden ser inexactos o no confiables, lo que afecta a la precisión de los indicadores.
A través de un análisis profundo del código, se pueden sugerir las siguientes direcciones de optimización:
Añadir un filtro de fluctuaciónSe puede introducir un mecanismo de ajuste dinámico de las mínimas basado en la volatilidad histórica, lo que permite que las mínimas de las zonas de calma y las zonas de caos de VMI se ajusten automáticamente en función del nivel de volatilidad del mercado en general, lo que mejora la adaptabilidad de la estrategia.
Mecanismo de confirmación de tendencias: Se puede agregar una confirmación de tendencias de múltiples marcos de tiempo en base a VWPC, o en combinación con otros indicadores de tendencias (como el indicador direccional ADX), para mejorar la precisión de los juicios de tendencias.
Mecanismo de salida optimizadoLas estrategias actuales solo se ejecutan cuando el VMI alcanza la zona de caos. Se puede considerar la adición de niveles de stop loss y de ganancias objetivo, o una estrategia de stop loss dinámica basada en la volatilidad para controlar mejor el riesgo y bloquear las ganancias.
Aumentar el filtro de volumen de transaccionesSe puede agregar una condición de confirmación de volumen de transacciones, que solo se puede ingresar en caso de un aumento en el volumen de transacciones, para evitar el comercio en un entorno de baja liquidez.
Añadir un filtro de tiempo: algunos mercados pueden tener un patrón de volatilidad en un período de tiempo determinado, se puede agregar una condición de filtración de tiempo para evitar períodos de negociación de baja eficiencia conocida.
Mecanismo de adaptación de parámetrosSe puede desarrollar un mecanismo para ajustar automáticamente los parámetros basados en el rendimiento reciente del mercado para que la estrategia se adapte mejor a los cambios en el mercado.
Optimización de la gestión de fondos: permite la gestión de posiciones dinámicas basadas en la volatilidad, el ajuste del tamaño de las operaciones en diferentes entornos de volatilidad, el equilibrio de riesgos y beneficios.
La estrategia de cruce de tendencias ponderadas por el volumen de la volatilidad y el volumen es un sistema de negociación cuantitativa que combina análisis de la volatilidad y seguimiento de tendencias. Ingresa a través del indicador VMI para capturar los puntos de cambio del mercado de tranquilo a activo y se retira cuando la volatilidad alcanza su punto máximo; al mismo tiempo, utiliza el indicador VWPC para asegurar que la dirección de la negociación coincida con la tendencia general.
Sin embargo, la estrategia también se enfrenta a desafíos tales como falsas rupturas de volatilidad, retrasos en el juicio de tendencias y sensibilidad de los parámetros. Se puede mejorar aún más la solidez y la adaptabilidad de la estrategia mediante la introducción de ajustes dinámicos de los umbrales, la mejora de los mecanismos de confirmación de tendencias, la optimización de la lógica de salida y la implementación de parámetros de adaptación.
En última instancia, la estrategia ofrece un marco de negociación basado en la volatilidad y los ciclos de fluctuación del mercado, adecuado para su aplicación en una variedad de entornos de mercado, pero los operadores aún deben optimizar los parámetros y ajustar las estrategias según las variedades de operaciones específicas y las características del mercado para obtener el mejor resultado.
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TiamatCrypto
//@version=5
strategy("Market Entropy Strategy V2.5",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=15, // Slightly more aggressive allocation
commission_type=strategy.commission.percent,
commission_value=0.075,
pyramiding=0) // Allow only one trade in one direction
// --- General Settings ---
trade_direction = input.string("Both", "Trade Direction", options=["Long", "Short", "Both"], group="General Settings")
// --- Inputs for Optimization ---
// VMI Settings
vmi_length = input.int(14, "VMI Length", group="VMI Settings")
atr_period = input.int(10, "ATR Period for VMI", group="VMI Settings")
vmi_calm_zone = input.int(25, "VMI Calm Zone (Entry Level)", group="VMI Settings", step=5)
vmi_chaos_zone = input.int(85, "VMI Chaos Zone (Exit Level)", group="VMI Settings", step=5)
// VWPC Settings
vwpc_length = input.int(50, "VWPC Filter Length", group="VWPC Trend Filter")
setup_lookback = input.int(10, "How far to look for 'Armed' (candles)", group="Entry Logic")
// --- Indicator #1: Volatility Momentum Index (VMI) ---
current_atr = ta.atr(atr_period)
atr_change = current_atr - current_atr[1]
up_accel = atr_change > 0 ? atr_change : 0
down_accel = atr_change < 0 ? -atr_change : 0
avg_up_accel = ta.rma(up_accel, vmi_length)
avg_down_accel = ta.rma(down_accel, vmi_length)
rs_vmi = avg_down_accel == 0 ? 0 : avg_up_accel / avg_down_accel
vmi = avg_down_accel == 0 ? 100 : avg_up_accel == 0 ? 0 : 100 - (100 / (1 + rs_vmi))
// --- Indicator #2: Volume-Weighted Price Center (VWPC) ---
// Function to calculate VWPC
f_vwpc(length) =>
sum_price_volume = 0.0
sum_volume = 0.0
// We use the typical price, which better represents the candle
typical_price = (high + low + close) / 3
for i = 0 to length - 1
sum_price_volume += typical_price[i] * nz(volume[i])
sum_volume += nz(volume[i])
sum_volume == 0 ? typical_price : sum_price_volume / sum_volume
vwpc = f_vwpc(vwpc_length)
// --- Strategy Logic ---
// Trend Definition
is_uptrend = close > vwpc
is_downtrend = close < vwpc
// Phase 1: "Armed" Condition (Setup)
// We check if VMI WAS in the calm zone in the recent past
was_calm_recently = ta.barssince(vmi < vmi_calm_zone) < setup_lookback
// Phase 2: "Fire" Condition (Trigger)
// VMI is currently crossing the Calm Zone upwards
trigger_fire = ta.crossover(vmi, vmi_calm_zone)
// Combination for ENTRY
buy_signal = is_uptrend and was_calm_recently and trigger_fire
sell_signal = is_downtrend and was_calm_recently and trigger_fire
// Condition for EXIT ("Exhaustion")
// The same condition applies for both long and short - peak chaos
exit_signal = ta.crossover(vmi, vmi_chaos_zone)
// --- Executing Orders ---
// Entry Conditions
allow_longs = trade_direction == "Long" or trade_direction == "Both"
allow_shorts = trade_direction == "Short" or trade_direction == "Both"
// Entries
if (buy_signal and allow_longs)
strategy.entry("Buy", strategy.long, comment="Enter LONG (Armed->Fire)")
if (sell_signal and allow_shorts)
strategy.entry("Sell", strategy.short, comment="Enter SHORT (Armed->Fire)")
// Exits
if (strategy.position_size > 0 and exit_signal)
strategy.close("Buy", comment="Exit LONG (Chaos)")
if (strategy.position_size < 0 and exit_signal)
strategy.close("Sell", comment="Exit SHORT (Chaos)")
// --- Plotting on the chart for visual inspection ---
plot(vwpc, "VWPC Center of Gravity", color=color.new(color.yellow, 0), linewidth=2)
plotshape(buy_signal and allow_longs, "LONG Entry", shape.labelup, location.belowbar, color=color.new(color.aqua, 0), text="ENTRY ↑", textcolor=color.white, size=size.small)
plotshape(sell_signal and allow_shorts, "SHORT Entry", shape.labeldown, location.abovebar, color=color.new(color.fuchsia, 0), text="ENTRY ↓", textcolor=color.white, size=size.small)
// Plotting the exit signal for a better overview
exit_marker_y_pos = strategy.position_size > 0 ? high : low
plotshape(series=(exit_signal and strategy.position_size != 0 ? exit_marker_y_pos : na), title="Exit", style=shape.xcross, location=location.absolute, color=color.new(color.orange, 0), size=size.tiny, text="END")