Estrategia de trading cuantitativo de momentum basada en el ciclo lunar en el mercado de criptomonedas

Lunar Calendar Cyclical Trading ETHUSDT Fixed Date Entry/Exit Quantitative Strategy
Fecha de creación: 2025-08-11 09:09:22 Última modificación: 2025-08-11 09:09:22
Copiar: 0 Número de Visitas: 182
2
Seguir
319
Seguidores

Estrategia de trading cuantitativo de momentum basada en el ciclo lunar en el mercado de criptomonedas Estrategia de trading cuantitativo de momentum basada en el ciclo lunar en el mercado de criptomonedas

Descripción general

Esta estrategia es una estrategia de comercio de criptomonedas basada en fechas del calendario, que realiza operaciones de compra y venta mediante el aprovechamiento de fechas específicas del ciclo calendario. La estrategia comienza en el año nuevo lunar y continúa hasta el final de diciembre del calendario del año, siguiendo reglas simples: compra el día 5 de cada mes calendario y vende el día 26 de cada mes calendario. Esta estrategia intenta capturar los patrones de mercado que pueden estar relacionados con el ciclo calendario, proporcionando a los comerciantes un marco de comercio estructurado y fácil de seguir.

Principio de estrategia

El principio central de esta estrategia se basa en el efecto que el ciclo lunar puede tener en el mercado de criptomonedas. El código realiza esta idea de la siguiente manera:

  1. En primer lugar, define la fecha de inicio del año nuevo lunar y el número de días de cada mes para cada año, que cubre el período de 2020 a 2026.
  2. Determina el mes y la fecha del calendario actual calculando la diferencia de días entre la fecha actual y el año nuevo lunar.
  3. Cuando la fecha es el día 5 del calendario lunar y no hay posiciones en ese momento, se activa la señal de compra.
  4. Cuando la fecha es el día 26 del calendario lunar y se tiene una posición, se activa la señal de venta.
  5. Las compras se realizan teniendo en cuenta el impacto de los puntos de deslizamiento y las comisiones, y se compran tantas criptomonedas como sea posible con todos los fondos disponibles.
  6. La liquidación de todas las posiciones al momento de la venta, para obtener ganancias o pérdidas.

La estrategia utiliza un método de cálculo de fecha exacta, que almacena el número de días de cada mes calendario mediante una matriz y calcula el número total de días desde el comienzo del nuevo año calendario, para determinar con precisión la fecha calendario actual. Este método garantiza el disparo preciso de la señal de negociación.

Ventajas estratégicas

Al analizar el código de esta estrategia, se pueden resumir las siguientes ventajas:

  1. Reglas sencillas y clarasLas fechas fijas de compra y venta hacen que las estrategias sean muy intuitivas, fáciles de entender y ejecutar, reduciendo el juicio subjetivo de los operadores.
  2. Tener en cuenta los factores de fricción en el mercadoLa estrategia incluye un 0.1% de comisiones y puntos de deslizamiento, lo que hace que los resultados de la retrospectiva estén más cerca del entorno real de las transacciones.
  3. Eficiencia en el uso de los fondosEn la actualidad, el banco ha estado utilizando el 100% de su capital disponible para maximizar sus ganancias potenciales.
  4. Considerando el ciclo lunar desde una perspectiva únicaEn contraste con el análisis técnico tradicional, la estrategia introduce elementos del calendario y puede capturar patrones únicos relacionados con el comportamiento de los inversores en los mercados asiáticos.
  5. Aplicabilidad a largo plazoLa estrategia proporciona datos del calendario lunar desde 2020 hasta 2026, lo que permite a los operadores aplicar el método a largo plazo.
  6. Ayudas visuales: Ayuda a los comerciantes a seguir de cerca la ejecución de la estrategia mostrando las etiquetas de las fechas del calendario lunar en los gráficos.
  7. Evite el exceso de comercioEl objetivo de esta iniciativa es reducir los costos y los riesgos asociados con el exceso de transacciones.

Riesgo estratégico

A pesar de las ventajas mencionadas, la estrategia también presenta algunos riesgos potenciales:

  1. Falta de mecanismos de gestión de riesgosLa estrategia no establece un punto de parada, lo que puede ocasionar pérdidas significativas si el mercado cae mucho después de la compra.
  2. Ignorar las tendencias y el estado del mercadoLas estrategias se basan únicamente en el día en que se realizan las transacciones, sin tener en cuenta la tendencia general del mercado, la volatilidad u otros indicadores técnicos.
  3. Supongamos que hay una ley periódica.La estrategia asume que el ciclo lunar tiene alguna relación con el precio de la criptomoneda, pero esta relación puede ser inestable o no existir.
  4. Limitaciones de tiempo específicoAunque se proporcionan datos para 2020-2026, los datos del calendario lunar para los años futuros necesitan actualizaciones y la estrategia podría no funcionar fuera de este rango.
  5. Riesgo de liquidezEn el caso de las operaciones con grandes cantidades de dinero, es posible que haya problemas de liquidez en el mercado en determinadas fechas del calendario lunar.
  6. Posibilidad de error en el cálculo de la fecha: Cualquier error en el cálculo de las fechas del calendario lunar puede dar lugar a una señal de negociación errónea.
  7. Falta de adaptabilidadLas fechas fijas no se adaptan a los cambios en las condiciones del mercado y pueden perder mejores oportunidades de compra o venta.

Para reducir estos riesgos, los operadores pueden considerar la confirmación de operaciones en combinación con otros indicadores técnicos, o establecer un stop loss fijo para limitar las pérdidas de una sola operación.

Dirección de optimización de la estrategia

A través de un análisis profundo del código, se pueden sugerir las siguientes direcciones de optimización:

  1. Introducción de un mecanismo de stop loss: agregar un porcentaje o un monto absoluto de la condición de pérdidas, para cerrar automáticamente las posiciones cuando las pérdidas alcanzan un determinado umbral, para evitar pérdidas considerables. El código de optimización puede agregar similaresif strategy.position_size > 0 and close < entry_price * (1 - stop_loss_percent)El juicio condicional.

  2. Incorporación en el reconocimiento de indicadores técnicosCombinación de indicadores de tendencia (como el promedio móvil) o de dinámica (como el índice de fuerza relativa, RSI) como condición auxiliar, sólo ejecutar operaciones de fecha lunar cuando los indicadores técnicos proporcionan una señal favorable. Esto puede mejorar la calidad de la señal.

  3. Optimización de la fecha de compra y venta: Análisis de los datos históricos para determinar qué días del calendario ofrecen el mejor momento para comprar y vender en la combinación, en lugar de usar el día 5 y el día 26. Es posible que algunas combinaciones de fechas específicas funcionen mejor.

  4. Administración de posiciones parcialesModificación de estrategias para operar con una parte de los fondos en lugar del 100% de los fondos, o ajustar el tamaño de las posiciones en función de la dinámica de la volatilidad del mercado para dispersar el riesgo.

  5. Añadir un filtro de estado de mercadoSuspender la ejecución de la estrategia en condiciones extremas de mercado (como alta volatilidad o tendencias bajistas evidentes) y evitar el comercio en un entorno desfavorable.

  6. Ampliación de los plazos de aplicación: agregar datos del calendario de más años, o desarrollar una función que calcula automáticamente las fechas del calendario, para que la estrategia pueda funcionar indefinidamente.

  7. Aumentar el comercio de variedadesExtensión de la estrategia a varias criptomonedas u otras categorías de activos, observando las diferencias de rendimiento en diferentes mercados durante el ciclo lunar.

La implementación de estas direcciones de optimización puede aumentar significativamente la robustez y adaptabilidad de las estrategias, mientras se mantiene su lógica básica, simple e intuitiva.

Resumir

Las estrategias de criptomonedas basadas en el ciclo lunar ofrecen una perspectiva de negociación única, utilizando operaciones de compra y venta en fechas específicas del calendario. La mayor ventaja de la estrategia reside en sus reglas simples y claras y en su facilidad de implementación, que, combinadas con este factor único del ciclo lunar, pueden capturar patrones de mercado que pueden ser ignorados por el análisis técnico convencional.

Sin embargo, la estrategia también enfrenta desafíos por la falta de gestión de riesgos y adaptabilidad al mercado. Para mejorar la eficacia de la estrategia, se recomienda la introducción de medidas de mejora como el mecanismo de suspensión de pérdidas, la identificación de indicadores técnicos y la optimización de las fechas de compra y venta. Estas optimizaciones no solo reducen el riesgo potencial, sino que también aumentan la adaptabilidad de la estrategia en diferentes entornos de mercado.

Cabe señalar que cualquier estrategia de negociación necesita un buen análisis retrospectivo y pruebas de avance para verificar su desempeño en condiciones reales de mercado. Al adoptar la estrategia, el comerciante debe hacer los ajustes adecuados en función de su capacidad de asumir riesgos y objetivos de inversión, y tomar decisiones de negociación más completas en combinación con otros métodos de análisis.

Código Fuente de la Estrategia
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Lunar ETHUSDT Trading 100% Invest with Fee & Slippage (2020~2026)", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1)

// Fee and slippage settings
feePercent = 0.1    // 0.1%
slippageTicks = 3
tickSize = syminfo.mintick
slippage = slippageTicks * tickSize

// Function for lunar new year start date and monthly lengths by year
f_get_lunar_data() =>
    y = year(time)
    if y == 2020
        [timestamp("Asia/Seoul", 2020, 1, 25, 0, 0), array.from(29,30,29,30,29,30,29,30,29,30,30,29)]
    else if y == 2021
        [timestamp("Asia/Seoul", 2021, 2, 12, 0, 0), array.from(30,29,30,29,30,29,30,29,30,29,30,30)]
    else if y == 2022
        [timestamp("Asia/Seoul", 2022, 2, 1, 0, 0), array.from(29,30,29,30,29,30,29,30,30,29,30,29)]
    else if y == 2023
        [timestamp("Asia/Seoul", 2023, 1, 22, 0, 0), array.from(30,29,30,29,30,29,30,30,29,30,29,30)]
    else if y == 2024
        [timestamp("Asia/Seoul", 2024, 2, 10, 0, 0), array.from(30,29,30,29,30,29,30,29,30,29,30,30,29)]
    else if y == 2025
        [timestamp("Asia/Seoul", 2025, 1, 29, 0, 0), array.from(29,30,29,30,29,30,29,30,30,29,30,29)]
    else if y == 2026
        [timestamp("Asia/Seoul", 2026, 2, 17, 0, 0), array.from(30,29,30,29,30,29,30,30,29,30,29,30)]
    else
        [na, array.new_int()]

// Function to create cumulative monthly days array
f_get_lunar_md(days_arr) =>
    arr = array.new_int()
    sum = 0
    for i = 0 to array.size(days_arr) - 1
        sum += array.get(days_arr, i)
        array.push(arr, sum)
    arr

// Get lunar start date and monthly lengths
[ts_start, lunar_lengths] = f_get_lunar_data()
valid = not na(ts_start)
days_since = valid ? math.floor((time - ts_start) / 86400000) : na
cumulative = valid ? f_get_lunar_md(lunar_lengths) : na

// Declare lunar month, day, last day variables
var int lunar_month = na
var int lunar_day = na
var int lunar_last_day = na

// Calculate lunar date
if valid and not na(days_since) and days_since >= 0
    lunar_month := na
    lunar_day := na
    lunar_last_day := na
    for i = 0 to array.size(cumulative) - 1
        cum = array.get(cumulative, i)
        prev = i == 0 ? 0 : array.get(cumulative, i - 1)
        if days_since < cum
            lunar_month := i + 1
            lunar_day := days_since - prev + 1
            lunar_last_day := array.get(lunar_lengths, i)
            break
else
    lunar_month := na
    lunar_day := na
    lunar_last_day := na

// Buy condition: Lunar day 5 and no current position
buy_condition = not na(lunar_day) and lunar_day == 5 and strategy.position_size == 0

// Sell condition: Lunar day 26 and holding position
sell_condition = not na(lunar_day) and lunar_day == 26 and strategy.position_size > 0

// Buy/sell price adjusted for slippage and fee
price_buy = close + slippage
price_buy_with_fee = price_buy * (1 + feePercent * 0.01)

price_sell = close - slippage
price_sell_with_fee = price_sell * (1 - feePercent * 0.01)

// Calculate buy quantity using 100% of equity
qty = math.floor(strategy.equity / price_buy_with_fee)

// Buy order (limit)
if buy_condition and qty > 0
    strategy.entry("Lunar Buy", strategy.long, qty, limit=price_buy)

// Sell order (close all)
if sell_condition and strategy.position_size > 0
    strategy.close("Lunar Buy")

// True range variable (for label position adjustment)
tr = ta.tr(true)

// Date format creation
yr = year(time)
mo = month(time)
dy = dayofmonth(time)
mo_str = mo < 10 ? "0" + str.tostring(mo) : str.tostring(mo)
dy_str = dy < 10 ? "0" + str.tostring(dy) : str.tostring(dy)
solar_str = str.tostring(yr) + "-" + mo_str + "-" + dy_str

// Display solar and lunar date and position label (on bar close)
if barstate.islastconfirmedhistory and not na(lunar_day)
    label.new(bar_index, high - tr * 6,  "Solar: " + solar_str + "\nLunar: " + str.tostring(lunar_month) + "-" + str.tostring(lunar_day) ,
      style=label.style_label_up, size=size.normal, color=color.new(color.teal, 50), textcolor=color.white)

// Display "15" label at bottom on lunar day 15 (lowest of last 50 bars - 1 true range)
if not na(lunar_day) and lunar_day == 15
    low_offset = ta.lowest(low, 50) - tr
    label.new(bar_index, low_offset, "15", style=label.style_label_down, color=color.orange, textcolor=color.white, size=size.normal)