Momentum-quantitative Handelsstrategie basierend auf dem Mondzyklus im Kryptowährungsmarkt

Lunar Calendar Cyclical Trading ETHUSDT Fixed Date Entry/Exit Quantitative Strategy
Erstellungsdatum: 2025-08-11 09:09:22 zuletzt geändert: 2025-08-11 09:09:22
Kopie: 0 Klicks: 182
2
konzentrieren Sie sich auf
319
Anhänger

Momentum-quantitative Handelsstrategie basierend auf dem Mondzyklus im Kryptowährungsmarkt Momentum-quantitative Handelsstrategie basierend auf dem Mondzyklus im Kryptowährungsmarkt

Überblick

Diese Strategie ist eine Kalender-Datum-basierte Methode für den Handel mit Kryptowährungen, bei der Käufe und Verkäufe an bestimmten Tagen des Kalenderzyklus durchgeführt werden. Die Strategie beginnt mit dem Kalenderjahr und dauert bis zum Ende des Kalendermonats Dezember des jeweiligen Jahres und folgt einfachen Regeln: Kaufen am 5. Tag eines jeden Kalendermonats und verkaufen am 26. Tag eines jeden Kalendermonats.

Strategieprinzip

Das Kernprinzip der Strategie basiert auf den möglichen Auswirkungen des Kalenderzyklus auf den Kryptowährungsmarkt. Der Code verwirklicht diese Idee durch:

  1. Zuerst wird der Beginn des Kalenderjahres für die einzelnen Jahre und die Anzahl der Tage im Monat für den Zeitraum von 2020 bis 2026 definiert.
  2. Der aktuelle Kalendermonat und -datum werden ermittelt, indem der Unterschied zwischen dem aktuellen Datum und dem neuen Kalenderjahr berechnet wird.
  3. Ein Kaufsignal wird ausgelöst, wenn der fünfte Tag des Kalenderjahres bereits eingegangen ist und kein Lagerbestand vorhanden ist.
  4. Wenn Sie eine Position am 26. Tag des Kalenderjahres halten, wird ein Verkaufssignal ausgelöst.
  5. Der Kauf wurde unter Berücksichtigung der Auswirkungen von Slippoints und Gebühren getätigt, um so viele Kryptowährungen wie möglich mit allen verfügbaren Mitteln zu kaufen.
  6. Veräußern Sie alle Positionen, um Gewinne oder Verluste zu erzielen.

Die Strategie verwendet eine genaue Datumsrechnung, die die Anzahl der Tage in jedem Kalendermonat durch eine Array speichert und die Gesamtzahl der Tage ab dem Kalenderjahr kumuliert, um den aktuellen Kalendertag genau zu bestimmen. Diese Methode garantiert die genaue Auslösung des Handelssignals.

Strategische Vorteile

Eine Analyse des Codes dieser Strategie zeigt folgende Vorteile:

  1. Einfache und klare RegelnDie Strategie ist sehr intuitiv, leicht zu verstehen und umzusetzen, und reduziert die subjektive Urteilsfähigkeit der Trader.
  2. Berücksichtigung von MarktrisikenDie Strategie beinhaltet eine Gebühr von 0,1% und einen Schlupfpunkt, um die Rückmessung näher an die tatsächliche Handelsumgebung zu bringen.
  3. Effiziente Nutzung der MittelDie Anbieter der Webseite haben sich gefragt, ob sie die Möglichkeit hätten, ihre Kunden zu überwachen.
  4. Ein einzigartiger Blick auf den MondzyklusDie Strategie, die sich von der traditionellen technischen Analyse unterscheidet, führt einen Kalenderfaktor ein, der möglicherweise einzigartige Muster im Zusammenhang mit dem Verhalten von Investoren in den asiatischen Märkten erfasst.
  5. Langfristige AnwendbarkeitDie Strategie bietet Kalenderdaten für die Jahre 2020 bis 2026, so dass Händler diese Methode langfristig anwenden können.
  6. Visuelle HilfsmittelDie Strategie wurde von der Firma “Cryptocurrency” (Crypto-Bank) entwickelt, um die Entwicklung von Handelsstrategien zu erleichtern.
  7. Vermeiden Sie übermäßige TransaktionenEs ist wichtig zu wissen, dass es sich um ein Unternehmen handelt, das nur einmal im Monat handelt, um die Kosten und Risiken zu reduzieren, die mit einem übermäßigen Handel verbunden sind.

Strategisches Risiko

Obwohl diese Strategie die oben genannten Vorteile hat, gibt es einige potenzielle Risiken:

  1. Mangelnde RisikomanagementDie Strategie hat keinen Stop-Loss-Punkt gesetzt, was zu erheblichen Verlusten führen kann, wenn der Markt nach dem Kauf stark abfällt.
  2. Markttrends und -zustände ignorierenDie Strategie basiert ausschließlich auf dem Datum und berücksichtigt nicht die Gesamttrends, die Volatilität oder andere technische Indikatoren des Marktes.
  3. Die Hypothese der PeriodizitätDie Strategie geht davon aus, dass der Kalenderzyklus mit dem Preis der Kryptowährung in irgendeiner Weise verbunden ist, aber dieser Zusammenhang kann instabil oder nicht vorhanden sein.
  4. Beschränkung auf bestimmte ZeiträumeObwohl die Daten für die Jahre 2020 bis 2026 bereitgestellt werden, müssen die Kalenderdaten für die kommenden Jahre aktualisiert werden, und die Strategie kann außerhalb dieser Spanne nicht funktionieren.
  5. LiquiditätsrisikenEs kann zu Problemen mit der Marktliquidität kommen, insbesondere wenn große Summen verwendet werden.
  6. Wahrscheinlichkeit für einen Fehler in der DatumsberechnungJeder Fehler bei der Berechnung des Kalenderdatums kann zu einem falschen Handelssignal führen.
  7. Mangelnde AnpassungsfähigkeitDer Markt kann sich nicht an die wechselnden Marktbedingungen anpassen, was dazu führt, dass man bessere Kauf- oder Verkaufsmöglichkeiten verpasst.

Um diese Risiken zu verringern, kann der Händler die Bestätigung von Geschäften in Kombination mit anderen technischen Indikatoren in Betracht ziehen oder einen festen Stop-Loss-Level festlegen, um den Verlust eines einzelnen Handels zu begrenzen.

Richtung der Strategieoptimierung

Durch die tiefere Analyse des Codes lassen sich folgende Optimierungsmöglichkeiten vorschlagen:

  1. Einführung eines Stop-Loss-Mechanismus: Hinzufügen von Stop-Loss-Bedingungen in Prozent oder in absoluten Beträgen, automatische Auslöschung bei Verlusten bis zu einem bestimmten Tiefpunkt, um erhebliche Verluste zu vermeiden. Optimierungscode kann ähnlich hinzugefügt werdenif strategy.position_size > 0 and close < entry_price * (1 - stop_loss_percent)Das ist eine sehr schwierige Entscheidung.

  2. Integration in die Bestätigung der technischen Kennzahlen: In Kombination mit einem Trendindikator (wie einem Moving Average) oder einem Momentumindikator (wie dem Relative Strength Index RSI) als Nebenbedingung, nur dann Kalendertagshandlungen ausführen, wenn ein technischer Indikator ein günstiges Signal liefert. Dies verbessert die Signalqualität.

  3. Optimierung der Kauf- und VerkaufstageAnhand von historischen Daten wird analysiert, welche Kalendertage tatsächlich die besten Kauf- und Verkaufsmomente für die Kombination bieten, anstatt den festen 5. und 26. Tag zu verwenden. Es ist möglich, dass bestimmte Datumskombinationen besser abschneiden.

  4. PositionsverwaltungDie Strategie kann geändert werden, um mit einem Teil des Kapitals statt mit 100% des Kapitals zu handeln, oder die Größe der Position kann an die dynamischen Marktschwankungen angepasst werden, um das Risiko zu verteilen.

  5. Hinzufügen eines MarktstatusfiltersIn extremen Marktbedingungen (z. B. bei hoher Volatilität oder einem offensichtlichen Bärenmarkt-Trend) wird die Ausführung der Strategie ausgesetzt, um den Handel in einem ungünstigen Umfeld zu vermeiden.

  6. Erweiterung des Zeitrahmens: Hinzufügen von Kalenderdaten für mehrere Jahre oder Entwicklung einer Funktion, die automatisch Kalenderdaten berechnet, so dass die Strategie für unbegrenzte Zeit läuft.

  7. Erhöhung des Handels mit mehreren SortenDie Strategie soll auf mehrere Kryptowährungen oder andere Assetklassen ausgedehnt werden, um die unterschiedliche Performance in verschiedenen Märkten zu beobachten.

Die Implementierung dieser Optimierungsrichtungen kann die Robustheit und Anpassungsfähigkeit der Strategie erheblich verbessern, während der Kerngedanke der Strategie einfach und intuitiv bleibt.

Zusammenfassen

Kalenderzyklus-basierte Kryptowährungs-Handelsstrategien bieten eine einzigartige Handelsperspektive für Kauf- und Verkaufsaktivitäten an bestimmten Kalendertagen. Der größte Vorteil dieser Strategie liegt in ihren einfachen, klaren Regeln und der einfachen Umsetzung, kombiniert mit dem einzigartigen Faktor des Kalenderzyklus, der möglicherweise Marktmuster erfasst, die von der üblichen technischen Analyse übersehen werden.

Die Strategie wird jedoch auch von einem Mangel an Risikomanagement und Marktadaptivität gefordert. Um die Effektivität der Strategie zu verbessern, werden Verbesserungen wie die Einführung von Stop-Loss-Mechanismen, die Bestätigung von technischen Indikatoren und die Optimierung der Kauf- und Verkaufstage empfohlen. Diese Optimierungen können nicht nur das potenzielle Risiko verringern, sondern auch die Anpassungsfähigkeit der Strategie in verschiedenen Marktumgebungen verbessern.

Es ist erwähnenswert, dass jede Handelsstrategie ausreichend zurück- und vorwärts getestet werden muss, um ihre Leistung unter realen Marktbedingungen zu überprüfen. Der Händler sollte diese Strategie entsprechend seiner Risikoverfügbarkeit und seinen Anlagezielen anpassen und in Verbindung mit anderen Analysemethoden umfassendere Handelsentscheidungen treffen.

Strategiequellcode
/*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)