Stratégie de trading quantitative Momentum basée sur le cycle lunaire sur le marché des cryptomonnaies

Lunar Calendar Cyclical Trading ETHUSDT Fixed Date Entry/Exit Quantitative Strategy
Date de création: 2025-08-11 09:09:22 Dernière modification: 2025-08-11 09:09:22
Copier: 0 Nombre de clics: 182
2
Suivre
319
Abonnés

Stratégie de trading quantitative Momentum basée sur le cycle lunaire sur le marché des cryptomonnaies Stratégie de trading quantitative Momentum basée sur le cycle lunaire sur le marché des cryptomonnaies

Aperçu

Cette stratégie est une méthode de négociation de crypto-monnaie basée sur la date du calendrier, qui consiste à acheter et à vendre des opérations en utilisant des dates spécifiques du cycle lunaire. La stratégie commence à partir du Nouvel An lunaire et se poursuit jusqu’à la fin du mois de décembre de la même année, selon une règle simple: acheter le 5e jour de chaque mois lunaire et vendre le 26e jour de chaque mois lunaire. Cette méthode tente de capturer les modèles de marché qui peuvent être liés au cycle lunaire, offrant aux traders un cadre de négociation structuré et facile à suivre.

Principe de stratégie

Le principe central de cette stratégie est basé sur l’influence que le cycle lunaire peut avoir sur le marché des crypto-monnaies. Le code met en œuvre cette idée de la manière suivante:

  1. Définissez d’abord la date de début du nouvel an lunaire et le nombre de jours par mois pour chaque année, couvrant la période 2020-2026.
  2. Déterminez le mois et la date du calendrier en calculant la différence de jours entre la date actuelle et la nouvelle année lunaire.
  3. Un signal d’achat est déclenché lorsque la date est le 5ème jour du calendrier lunaire et qu’aucun dépôt n’est en cours.
  4. Un signal de vente est déclenché lorsque la date du calendrier lunaire est le 26e jour et que la position est détenue.
  5. L’achat a été effectué en tenant compte de l’impact des points de glissement et des frais de traitement, en utilisant tous les fonds disponibles pour acheter autant de crypto-monnaies que possible.
  6. La vente est effectuée en liquidant toutes les positions et en réalisant un profit ou une perte.

La stratégie utilise une méthode de calcul de la date précise, en stockant le nombre de jours de chaque mois lunaire par une matrice et en calculant cumulativement le nombre total de jours à partir du nouvel an lunaire, afin de déterminer avec précision la date lunaire actuelle. Cette méthode garantit le déclenchement précis du signal de transaction.

Avantages stratégiques

L’analyse du code de cette stratégie permet de résumer les avantages suivants:

  1. Des règles simples et clairesLes dates fixes d’achat et de vente rendent les stratégies très intuitives, faciles à comprendre et à exécuter, et réduisent le jugement subjectif des traders.
  2. Prendre en compte les facteurs de frictionLa stratégie implique une prise en compte des frais et des points de glissement de 0,1%, ce qui rapproche les résultats de la rétroanalyse de l’environnement de négociation réel.
  3. Une utilisation efficace des fondsLe taux d’intérêt de la transaction est de 100%, ce qui permet de maximiser les bénéfices potentiels.
  4. Un regard unique sur le cycle lunaireContrairement à l’analyse technique traditionnelle, cette stratégie introduit des éléments du calendrier lunaire, captant ainsi des modèles uniques liés au comportement des investisseurs sur les marchés asiatiques.
  5. Utilisation à long termeLa stratégie fournit des données du calendrier lunaire de 2020 à 2026, ce qui permet aux traders d’appliquer cette méthode à long terme.
  6. Aides visuelles: Aider les traders à suivre visuellement l’exécution de la stratégie en affichant les étiquettes de dates du calendrier lunaire sur le graphique.
  7. Évitez les transactions excessivesLes échanges sont limités à une seule transaction par mois, ce qui réduit les coûts et les risques associés à une sur-traite.

Risque stratégique

Malgré les avantages mentionnés ci-dessus, cette stratégie comporte des risques potentiels:

  1. Manque de mécanisme de gestion des risques: La stratégie n’a pas de point de stop-loss, ce qui peut entraîner des pertes importantes si le marché chute après l’achat.
  2. Ne pas tenir compte des tendances et de l’état du marchéLa stratégie consiste à négocier uniquement sur la date, sans tenir compte des tendances globales du marché, de la volatilité ou d’autres indicateurs techniques.
  3. L’hypothèse d’une loi périodiqueCette stratégie suppose que le cycle lunaire a une certaine corrélation avec le prix de la crypto-monnaie, mais cette corrélation peut être instable ou inexistante.
  4. Limite de temps spécifiqueBien que les données soient fournies pour la période 2020-2026, les données du calendrier lunaire pour les années à venir doivent être mises à jour et la stratégie pourrait ne pas fonctionner en dehors de cette période.
  5. Risques liés à la liquidité: Il peut y avoir des problèmes de liquidité sur le marché à certaines dates, en particulier lorsque des capitaux importants sont utilisés.
  6. Possibilité d’erreur dans le calcul de la date: Toute erreur dans le calcul de la date du calendrier lunaire peut entraîner un signal de transaction erroné.
  7. Le manque d’adaptationLes dates fixes ne sont pas adaptées aux conditions changeantes du marché, ce qui peut vous faire rater de meilleures opportunités d’achat ou de vente.

Afin de réduire ces risques, les traders peuvent envisager de confirmer des transactions en combinaison avec d’autres indicateurs techniques ou de définir un stop-loss fixe pour limiter les pertes sur une seule transaction.

Orientation de l’optimisation de la stratégie

L’analyse approfondie du code suggère les orientations suivantes:

  1. Présentation d’un mécanisme de stop loss: ajouter des conditions de stop-loss en pourcentage ou en montant absolu, pour éviter des pertes importantes en compensant automatiquement les pertes lorsque les pertes atteignent un seuil spécifique. Le code d’optimisation peut ajouter des conditions similairesif strategy.position_size > 0 and close < entry_price * (1 - stop_loss_percent)Le jugement conditionnel

  2. Confirmation des indicateurs techniques intégrés: en combinaison avec des indicateurs de tendance (comme les moyennes mobiles) ou des indicateurs de dynamique (comme le RSI, l’indice de force relative) en tant que conditions auxiliaires, effectuez des transactions sur les dates du calendrier lunaire uniquement lorsque les indicateurs techniques fournissent un signal favorable. Cela améliore la qualité du signal.

  3. Optimiser la date d’achat et de vente: Analyser les dates du calendrier qui offrent le meilleur moment d’achat et de vente pour les combinaisons, en utilisant des données historiques, plutôt que d’utiliser les jours 5 et 26. Il est possible que certaines combinaisons de dates particulières soient plus performantes.

  4. Gestion partielle des positionsModification de la stratégie pour négocier avec une partie de l’argent au lieu de l’argent à 100%, ou pour ajuster la taille de la position en fonction de la dynamique de la volatilité du marché afin de diversifier le risque.

  5. Ajout d’un filtre sur l’état du marché: suspendre l’exécution de la stratégie dans des conditions de marché extrêmes (telles qu’une forte volatilité ou une tendance baissière évidente) et éviter de négocier dans des conditions défavorables.

  6. Élargissement de la période de validité: ajouter des données du calendrier pour plus d’années, ou développer une fonction qui calcule automatiquement les dates du calendrier pour que la stratégie puisse fonctionner indéfiniment.

  7. Augmentation des échanges de variétés: Étendre la stratégie à plusieurs crypto-monnaies ou autres catégories d’actifs, en observant les différences de performances dans les différents marchés selon le cycle lunaire.

La mise en œuvre de ces orientations d’optimisation peut considérablement améliorer la robustesse et l’adaptabilité de la stratégie, tout en conservant sa simplicité et son intuition.

Résumer

Les stratégies de trading de crypto-monnaie basées sur le cycle lunaire offrent une perspective de trading unique, utilisant des opérations d’achat et de vente sur des dates de calendrier spécifiques. Le plus grand avantage de cette stratégie réside dans ses règles simples et claires et sa facilité de mise en œuvre, combinées à ce facteur unique du cycle lunaire, qui peut capturer des modèles de marché négligés par l’analyse technique classique.

Cependant, la stratégie est également confrontée à un manque de gestion des risques et d’adaptabilité au marché. Pour améliorer l’efficacité de la stratégie, il est recommandé d’introduire des améliorations telles que des mécanismes de stop-loss, la confirmation des indicateurs techniques et l’optimisation des dates d’achat et de vente. Ces optimisations peuvent non seulement réduire les risques potentiels, mais aussi renforcer l’adaptabilité de la stratégie dans différents environnements de marché.

Il convient de noter que toute stratégie de trading doit être soumise à des tests complets de rétroaction et de prospective pour vérifier sa performance dans des conditions de marché réelles. En adoptant cette stratégie, le trader doit effectuer les ajustements appropriés en fonction de sa capacité à supporter le risque et de ses objectifs d’investissement, et prendre des décisions de trading plus complètes en combinaison avec d’autres méthodes d’analyse.

Code source de la stratégie
/*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)