Quantitative Handelsstrategie zur Optimierung von Preisschwankungen durch neuronale Netze

ATR ANN TANH OHLC4 volatility TIMEFRAME NEURAL NETWORK MACHINE LEARNING
Erstellungsdatum: 2025-06-23 11:39:44 zuletzt geändert: 2025-06-23 11:39:44
Kopie: 5 Klicks: 306
2
konzentrieren Sie sich auf
319
Anhänger

Quantitative Handelsstrategie zur Optimierung von Preisschwankungen durch neuronale Netze Quantitative Handelsstrategie zur Optimierung von Preisschwankungen durch neuronale Netze

Überblick

Die Neuralnetz-Differenz-Preisschwankungen-Optimierung-Quantitative-Trading-Strategie ist ein auf einem künstlichen Neuralnetz (ANN) basierendes Hochfrequenz-Trading-System, das speziell für die Optimierung von Zeitfenstern auf 1 Sekunden-Ebene entwickelt wurde. Die Strategie nutzt die Neuralnetz, um kurzfristige Preisänderungen zu analysieren, die Preisrichtung durch Forward Propagation-Algorithmen zu prognostizieren und die Handelsentscheidung zu optimieren. Die Kernstrategie besteht darin, winzige Preisänderungsmuster zu erfassen und eine stabile Handelsperformance mit einem hohen Marginalfaktor von 3.754 in einer Hochfrequenzumgebung zu erreichen.

Strategieprinzip

Die Strategie verwendet eine dreischichtige Neuralnetzwerk-Architektur, um Preisdifferenzdaten durch eine Forward-Sprech-Algorithmus zu verarbeiten:

  1. Eingangs-Layer (L0): Prozentualer Unterschied zwischen dem aktuellen OHLC4-Empfang (Auf- und Abwertungsmittel) und dem Referenz-Zeitrahmen (default 15 Sekunden) der historischen OHLC4 als einzelner Neuron-Eingabe.

  2. Erste verborgene Schicht (L1): Enthält 5 Neuronen, die eine nichtlineare Transformation der Eingabedaten durch die Verwendung von Tanh als Aktivierungsfunktion vornehmen. Jede Neurone verfügt über ein vorab trainiertes Gewicht, das spezifische Modelle zum Erfassen von Preisdifferenzen verwendet.

  3. Zweite versteckte Schicht (L2): Enthält 33 Neuronen, die ebenfalls die Tanh-Aktivierungsfunktion verwenden, um die Ausgabe der ersten versteckten Schicht durch eine komplexere Gewichtsmatrix weiter zu verarbeiten.

  4. L3 (L3)Ein einzelnes Neuron gibt ein endgültiges Prognose-Signal aus, dessen Wert umgedreht wird, um die Richtung des Signals zu korrigieren.

Die Transaktionslogik dreht sich um die Ausgabewerte der neuronalen Netzwerke ((L3_0)):

  • Wenn L3_0 größer ist als der Eingangs-Threshold (default 0.003), wird das Multi-Signal ausgelöst
  • Triggern Sie das Leerstellensignal, wenn L3_0 kleiner als der negative Einstiegs-Threshold ((-0,003) ist
  • Wenn L3_0 kleiner ist als die Ausstiegs-Trenche (default 0.001), wird die Position ausgeglichen.
  • Die Position ist leer, wenn L3_0 größer ist als die negative Ausstiegs-Schwelle (−0,001).

Die Strategie implementiert auch drei Filtermechanismen:

  • Abkühlungszeitfilter: Nach der Ausführung des Transaktionssystems wird eine bestimmte Abkühlzeit erwartet (default 60 Sekunden)
  • Fluktuationsrate-FilterDer Kurs ist der Wert der Aktien, die in der Börse gehandelt werden, wenn die Marktfluktuation über den Minimum-Trench (0,02) liegt.
  • Filterung der TransaktionszeitenOptional nur zu bestimmten Marktzeiten (default 9:00 bis 16:00 Uhr) handeln

Strategische Vorteile

  1. Hochpräzise VorhersageDie Multi-Layer-Struktur des neuronalen Netzwerks ist in der Lage, komplexe nichtlineare Beziehungen in Preisbewegungen zu erfassen, was mit herkömmlichen technischen Indikatoren schwer zu erreichen ist. Besonders in Hochfrequenzumgebungen kann die Struktur kurzfristige Preismuster erkennen und präzisere Ein- und Ausstiegssignale liefern.

  2. Das Risiko-Rendite-Verhältnis ist hervorragend.Die Strategie erreichte einen Gewinnfaktor von 3.754, was bedeutet, dass die Gesamtsumme der gewinnbringenden Geschäfte 3.754 mal die der verlustbringenden Geschäfte betrug, was eine sehr gute Leistung in einer quantifizierten Strategie darstellt.

  3. Flexible Optimierung von ParameternDie Strategie bietet mehrere anpassbare Parameter, darunter Einstiegs-/Ausgangsmethoden, die Länge der Abkühlphase, die Referenzzeiträume und die Mindestfluktuationsanforderungen, die es dem Händler ermöglichen, für verschiedene Marktbedingungen und Handelsarten zu optimieren.

  4. Mehrere FiltermechanismenDie Strategie reduziert unnötige Transaktionen und Falschsignale und verbessert die Qualität der Transaktionen durch die Integration von Dreifachfilterung von Abkühlzeit, Volatilität und Handelszeit.

  5. Anpassung an eine hochfrequente Handelsumgebung: Optimiert für die 1-Sekunden-Zeitrahmen, um die Eigenschaften des Hochfrequenzhandels zu nutzen und die Gewinnchancen kurzfristiger Preisschwankungen zu erfassen.

  6. Niedrige VerzögerungStrategie-Code-Struktur klar und effizient, Neural-Network-Teil mit Vor-Training-Gewichte direkt berechnet, ohne Echtzeit-Training, um eine niedrige Verzögerung in der Hochfrequenz-Umgebung sicherzustellen.

Strategisches Risiko

  1. Risiko einer Über-AnpassungDas Neuralnetzmodell enthält viele voreingestellte Gewichtungsparameter, die das Risiko einer Überfusion der historischen Daten darstellen. Dies kann dazu führen, dass die Strategie im Live-Trading nicht so gut abschneidet, insbesondere wenn sich die Marktbedingungen erheblich ändern. Gegenmaßnahmen umfassen: regelmäßige Neuronale Netzwerke neu zu trainieren, Daten mit längeren Zeiträumen zu überprüfen und robuste Risikomanagementmaßnahmen umzusetzen.

  2. ParameterempfindlichkeitStrategie-Performance hängt stark von mehreren Parameter-Einstellungen ab, wie z. B. Einstiegs-/Ausgangs-Trenchwerte, Länge der Abkühlzeit usw. Kleine Parameteränderungen können zu starken Schwankungen der Strategie-Performance führen. Es wird empfohlen, eine stabile Kombination von Parametern durch Parameter-Scan und Schritt-für-Schritt-Test zu finden und übermäßige Optimierung zu vermeiden.

  3. HochfrequenzrisikenAuf der 1 Sekunden-Level-Zeitrahmen können die Transaktionskosten (z. B. Differenz- und Schlupfpunkte) die Profitabilität der Strategie erheblich beeinflussen. Diese Kosten sollten vor dem Live-Trading berücksichtigt werden und die realen Transaktionskostenbedingungen in der Rückmeldung simuliert werden.

  4. Technologische HerausforderungenHigh-Frequency-Strategien erfordern eine extrem niedrige Verzögerung und hohe Zuverlässigkeit des Handelssystems. Jede Netzwerkverzögerung, Datenverzögerung oder Ausführungsverzögerung kann zu einem Ausfall der Strategie führen.

  5. Risiken von MarktschwankungenIn extremen Marktbedingungen (z. B. bei Newshocks oder Liquiditätsverlusten) kann es sein, dass die Modelle der neuronalen Netzwerke die Preisentwicklung nicht genau vorhersagen können, was zu erheblichen Verlusten führt. Es wird empfohlen, Stop-Loss-Maßnahmen und maximale Tagesverlustlimits festzulegen und die Strategie während extremer Schwankungen auszusetzen.

Richtung der Strategieoptimierung

  1. Optimierung der Architektur der neuronalen Netzwerke:

    • Erwägen Sie die Einführung von mehr Input-Features wie Handelsvolumen, Volatilitätsindikatoren und Preisdynamikindikatoren, um die Vorhersagefähigkeit des Modells zu verbessern
    • Versuchen Sie, verschiedene versteckte Schichtstrukturen und Neuronen zu finden, um die optimale Balance zwischen Komplexität und Generalisierungsfähigkeit zu finden.
    • Die Wirkung anderer Aktivierungsfunktionen (z. B. ReLU oder Leaky ReLU), die in einigen Anwendungen von neuronalen Netzwerken besser funktionieren als tanh, untersucht
  2. Dynamische Parameter-Anpassungsmechanismen:

    • Eintritts-/Austritts-Thresholds, die sich an die Marktlage anpassen, z. B. erhöhen Sie die Thresholds bei hoher Volatilität und senken Sie sie bei geringer Volatilität
    • Entwicklung von Algorithmen zur Abkühlung von Volatilitätswahrnehmungen, die Strategien ermöglichen, die optimale Handelsfrequenz in verschiedenen Marktphasen zu halten
  3. Integrierte Prognose-Rahmen:

    • Modelle von neuronalen Netzen, die in mehreren Zeitrahmen kombiniert werden, um ein synthetisches Prognose-Signal zu bilden
    • Einführung von maschinellen Lernmetamodellen, um die Gewichte verschiedener Prognose-Modelle dynamisch anzupassen
    • Diese Methode reduziert die Einschränkungen eines einzelnen Modells und erhöht die Stabilität der Vorhersage.
  4. Erweiterte Risikomanagement:

    • Entwicklung eines dynamischen Positionsmanagementsystems, das die Handelsspanne an die Modellsicherheit und die Marktbedingungen anpasst
    • Einführung von Stop-Loss-Strategien auf Basis von maschinellem Lernen zur Optimierung des Risiko-Rendite-Verhältnisses pro Handel
    • Optimierung der Tageszeiten, um zu erkennen, wann die Strategie am besten funktioniert
  5. Echtzeit-Lernen und Anpassung:

    • Entwerfen von Online-Lernmechanismen, die Neuralnetzwerke in die Lage versetzen, ständig von neuen Daten zu lernen und sich an Marktveränderungen anzupassen
    • Implementierung von automatischen, auf Leistungsüberwachung basierenden Re-Training-Triggern, die die Modelle aktiv aktualisieren, wenn die Strategie-Performance abnimmt
    • Diese Methode kann die Lebensdauer und Stabilität einer Strategie erheblich verbessern.

Zusammenfassen

Die Neural Network Difference Price Fluctuation Optimization Quantitative Trading Strategy repräsentiert eine Vorreiterpraxis des modernen Quantitative Trading und erfolgreiche Anwendung von künstlichen Neural Network Technologien im Bereich des Hochfrequenzhandels. Durch eine sorgfältig konzipierte, mehrschichtige Neural Network-Struktur ist die Strategie in der Lage, subtile Muster in kurzfristigen Preisveränderungen zu erfassen und die Qualität der Transaktionen durch mehrere Filtermechanismen zu verbessern.

Der Gewinnfaktor von 3.754 belegt, dass die Strategie in Testumgebungen hervorragend funktioniert, aber bei der praktischen Anwendung müssen noch die Risiken von Überfitting, Parameter-Sensitivität und Hochfrequenz-Handel sorgfältig berücksichtigt werden. Durch die kontinuierliche Optimierung der neuronalen Netzwerk-Architektur, die Umsetzung von dynamischen Parameter-Anpassungen und die Erhöhung des Risikomanagements hat die Strategie das Potenzial, in der wettbewerbsorientierten Quantifizierungsbranche langfristig wettbewerbsfähig zu bleiben.

Ein wichtiger Erfolgsfaktor der Strategie liegt in der Kombination von komplexen Neural-Network-Technologien mit praktischer Handelslogik, die sowohl die Vorhersagekraft des maschinellen Lernens nutzt, als auch die Durchführbarkeit des tatsächlichen Handels berücksichtigt. Für erfahrene quantitative Händler bietet dies einen erweiterbaren Rahmen, der nach verschiedenen Märkten und individuellen Risikopräferenzen weiter angepasst und optimiert werden kann.

Strategiequellcode
/*backtest
start: 2024-06-23 00:00:00
end: 2025-06-21 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("ANN Strategy v2 (Optimized for 1s)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
entryThreshold = input.float(0.003, title="Entry Threshold")
exitThreshold  = input.float(0.001, title="Exit Threshold")
cooldownBars   = input.int(60, title="Cooldown (bars)")  // 60 seconds cooldown
timeframe      = input.timeframe("1", title="Reference Timeframe")  // 1-minute diff reference
minVolatility  = input.float(0.02, title="Min ATR (Volatility Filter)")
useSession     = input.bool(true, title="Use Session Filter")

// === UTILITY FUNCTIONS ===
getDiff() =>
    prev = request.security(syminfo.tickerid, timeframe, ohlc4[1])
    now = ohlc4
    (now - prev) / prev

linear(v) => v
tanh(v) => (math.exp(v) - math.exp(-v)) / (math.exp(v) + math.exp(-v))

// === ANN FORWARD PROPAGATION ===
l0_0 = linear(getDiff())

l1 = array.new_float()
array.push(l1, tanh(l0_0 * 0.8446488687))
array.push(l1, tanh(l0_0 * -0.5674069006))
array.push(l1, tanh(l0_0 * 0.8676766445))
array.push(l1, tanh(l0_0 * 0.5200611473))
array.push(l1, tanh(l0_0 * -0.2215499554))

// === Layer 2 weights ===
w2 = array.from(    0.3341657935, -2.0060003664, 0.8606354375, 0.9184846912, -0.8531172267,    -0.0394076437, -0.4720374911, 0.2900968524, 1.0653326022, 0.3000188806,    -0.559307785, -0.9353655177, 1.2133832962, 0.1952686024, 0.8552068166,    -0.4293220754, 0.8484259409, -0.7154087313, 0.1102971055, 0.2279392724,    0.9111779155, 0.2801691115, 0.0039982713, -0.5648257117, 0.3281705155,    -0.2963954503, 0.4046532178, 0.2460580977, 0.6608675819, -0.8732022547,    0.8810811932, 0.6903706878, -0.5953059103, -0.3084040686, -0.4038498853,    -0.5687101164, 0.2736758588, -0.2217360382, 0.8742950972, 0.2997583987,    0.0708459913, 0.8221730616, -0.7213265567, -0.3810462836, 0.0503867753,    0.4880140595, 0.9466627196, 1.0163097961, -0.9500386514, -0.6341709382,    1.3402207103, 0.0013395288, 3.4813009133, -0.8636814677, 41.3171047132,    1.2388217292, -0.6520886912, 0.3508321737, 0.6640560714, 1.5936220597,    -0.1800525171, -0.2620989752, 0.056675277, -0.5045395315, 0.2732553554,    -0.7776331454, 0.1895231137, 0.5384918862, 0.093711904, -0.3725627758,    -0.3181583022, 0.2467979854, 0.4341718676, -0.7277619935, 0.1799381758,    -0.5558227731, 0.3666152536, 0.1538243225, -0.8915928174, -0.7659355684,    0.6111516061, -0.5459495224, -0.5724238425, -0.8553500765, -0.8696190472,    0.6843667454, 0.408652181, -0.8830470112, -0.8602324935, 0.1135462621,    -0.1569048216, -1.4643247888, 0.5557152813, 1.0482791924, 1.4523116833,    0.5207514017, -0.2734444192, -0.3328660936, -0.7941515963, -0.3536051491,    -0.4097807954, 0.3198619826, 0.461681627, -0.1135575498, 0.7103339851,    -0.8725014237, -1.0312091401, 0.2267643037, -0.6814258121, 0.7524828703,    -0.3986855003, 0.4962556631, -0.7330224516, 0.7355772164, 0.3180141739,    -1.083080442, 1.8752543187, 0.3623326265, -0.348145191, 0.1977935038,    -0.0291290625, 0.0612906199, 0.1219696687, -1.0273685429, 0.0872219768,    0.931791094, -0.313753684, -0.3028724837, 0.7387076712, 0.3806140391,    0.2630619402, -1.9827996702, -0.7741413496, 0.1262957444, 0.2248777886,    -0.2666322362, -1.124654664, 0.7288282621, -0.1384289204, 0.2395966188,    0.6611845175, 0.0466048937, -0.1980999993, 0.8152350927, 0.0032723211,    -0.3150344751, 0.1391754608, 0.5462816249, -0.7952302364, -0.7520712378,    -0.0576916066, 0.3678415302, 0.6802537378, 1.1437036331, -0.8637405666,    0.7016273068, 0.3978601709, 0.3157049654, -0.2528455662, -0.8614146703,    1.1741126834, -1.4046408959, 1.2914477803, 0.9904052964, -0.6980155826)


l2 = array.new_float()
for i = 0 to 32
    sum = 0.0
    for j = 0 to 4
        weight = array.get(w2, i * 5 + j)
        sum += weight * array.get(l1, j)
    array.push(l2, tanh(sum))

// === Output layer weights ===
weights_out = array.from(    -0.1366382003, 0.8161960822, -0.9458773183, 0.4692969576, 0.0126710629,    -0.0403001012, -0.0116244898, -0.4874816289, -0.6392241448, -0.410338398,    -0.1181027081, 0.1075562037, -0.5948728252, 0.5593677345, -0.3642935247,    -0.2867603217, 0.142250271, -0.0535698019, -0.034007685, -0.3594532426,    0.2551095195, 0.4214344983, 0.8941621336, 0.6283377368, -0.7138020667,    -0.1426738249, 0.172671223, 0.0714824385, -0.3268182144, -0.0078989755,    -0.2032828145, -0.0260631534, 0.4918037012)


sum_out = 0.0
for i = 0 to array.size(l2) - 1
    sum_out += array.get(weights_out, i) * array.get(l2, i)

// === Final ANN output (inverted for signal correction) ===
l3_0 = -tanh(sum_out)

// === TRADE FILTERS ===
volatility = ta.atr(14)
isVolOkay = volatility > minVolatility

isSession = (hour >= 9 and hour < 16)  // Adjust to your market hours
sessionOkay = useSession ? isSession : true

// === SIGNAL LOGIC ===
var string activeTrade = "none"
var int lastTradeBar = na
canTrade = (na(lastTradeBar) or (bar_index - lastTradeBar > cooldownBars)) and isVolOkay and sessionOkay

enterLong  = l3_0 > entryThreshold  and activeTrade != "long"  and canTrade
exitLong   = l3_0 < exitThreshold   and activeTrade == "long"
enterShort = l3_0 < -entryThreshold and activeTrade != "short" and canTrade
exitShort  = l3_0 > -exitThreshold  and activeTrade == "short"

// === STRATEGY EXECUTION ===
if barstate.isrealtime
    if enterLong
        strategy.entry("Long", strategy.short)
        activeTrade := "long"
        lastTradeBar := bar_index

    if exitLong
        strategy.close("Long")
        activeTrade := "none"

    if enterShort
        strategy.entry("Short", strategy.long)
        activeTrade := "short"
        lastTradeBar := bar_index

    if exitShort
        strategy.close("Short")
        activeTrade := "none"

// === PLOTTING ===
bgcolor(activeTrade == "long" ? color.new(color.green, 85) : activeTrade == "short" ? color.new(color.red, 85) : na)
plot(l3_0, title="ANN Output (Inverted)", color=color.aqua, linewidth=2)