Kombinationsstrategie zur Optimierung des Momentumtrends

Schriftsteller:ChaoZhang, Datum: 2024-02-06 15:11:57
Tags:

img

Übersicht

Die Momentum Trend Optimization Combination Strategy ist eine mittelfristige bis langfristige quantitative Handelsstrategie, die Momentum und Trendfaktoren kombiniert. Sie erzeugt Kauf- und Verkaufssignale, indem sie eine Kombination von exponentiellen gleitenden Durchschnitten, gleitenden Durchschnitten, Volumen- und Neigungsindikatoren verwendet. Die Strategie ist für den T+1-Handel optimiert und ist nur für Long-Positionen geeignet. Die Optimierungen sind auch für internationale Aktienmärkte anwendbar.

Strategie Logik

Die Strategie verwendet einen 6-tägigen einfachen gleitenden Durchschnitt und einen 35-tägigen einfachen gleitenden Durchschnitt, um zwei gleitende Durchschnitte zu definieren. Die Kaufsignallinie wird als 2-tägiger exponentieller gleitender Durchschnitt definiert, und die Verkaufssignallinie wird auf der Grundlage der Steigung der letzten 8 Schlusskosten berechnet. Darüber hinaus wird ein 20-tägiger exponentieller gleitender Durchschnitt des Volumens als Volumenindikator definiert. Um etwas Rauschen zu filtern, führt die Strategie auch wöchentliche Steigung für die Marktrichtung ein.

Wenn der Schlusskurs höher ist als der gleitende Durchschnitt von 35 Tagen, das Handelsvolumen höher ist als das durchschnittliche Handelsvolumen von 20 Tagen und der wöchentliche Check einen Bullenmarkt zeigt, löst ein goldenes Kreuz von unten ein Kaufsignal aus. Umgekehrt löst ein Todeskreuz von oben ein Verkaufssignal aus.

Für das Risikomanagement führt die Strategie einen dynamischen Positionsanpassungsmechanismus ein. Die tatsächliche Position wird auf der Grundlage des Eigenkapitals des Kontos, der maximalen Positionsquote, des ATR und des Risikofaktors berechnet. Dies hilft, die maximale Auslastung der Strategie zu kontrollieren.

Analyse der Vorteile

Die Strategie kombiniert Dynamikfaktoren und Trendfilterung, die mittelfristige bis langfristige Richtungen effektiv identifizieren können. Gleichzeitig ist auch die Filterung von Rauschen vorhanden, um falsche Signale in volatilen Märkten zu vermeiden. Darüber hinaus ermöglicht die Einführung von Risikomanagementmechanismen auch eine angemessene Kontrolle der maximalen Abzüge, wodurch die Robustheit der Strategie gewährleistet wird.

Aus den Backtest-Ergebnissen ergab sich, dass die Gesamtrendite der Strategie 128,86% erreichte, wobei ein sehr signifikanter Alpha zu verzeichnen war. Gleichzeitig erreichte auch die Gewinnrate der Strategie 60,66%, was die Stabilität des Strategieeffekts widerspiegelt.

Risikoanalyse

Obwohl die Strategie selbst für Risikomanagementmechanismen optimiert wurde, gibt es noch einige Risiken, die Aufmerksamkeit erfordern.

  1. Aus dem einzigen größten Verlust von 222.021,46 Yuan lässt sich erkennen, dass die Retrace-Amplitude der Strategie groß ist.

  2. Das Signalstabilitätsrisiko: Das Strategiesignal kann durch besondere Faktoren einzelner Aktien beeinflusst werden, was zu falschen Signalsituationen führt.

  3. Wenn sich das Makro-Marktumfeld erheblich ändert, müssen die Strategieparameter möglicherweise angepasst werden, um die Wirkung zu erhalten.

Optimierungsrichtlinien

Nach der vorstehenden Risikoanalyse besteht nach wie vor die Notwendigkeit und die Möglichkeit, diese Strategie zu optimieren.

  1. Nach dem maximalen Verlust kann der Positionsmanagementmechanismus durch die Einführung eines Stop-Loss-Moduls zur Steuerung der Größe einzelner Verluste weiter optimiert werden.

  2. Es sollte in Betracht gezogen werden, weitere Filterindikatoren hinzuzufügen, um einige spezielle Bestandsphänomene zu identifizieren und die Wahrscheinlichkeit falscher Signale zu verringern.

  3. Weiterhin werden die Parameter der Strategie überprüft und angepasst, und gleichzeitig sollte eine Überoptimierung vermieden werden.

Zusammenfassung

Die Momentum Trend Optimization Combination Strategy ist eine mittelfristige bis langfristige quantitative Handelsstrategie, die Momentum-Faktoren und Trendfilterung kombiniert und speziell für den T+1-Handel optimiert ist. Gemäß den Backtest-Indikatoren ist die Gesamtwirkung der Strategie signifikant, mit einem sehr erstaunlichen Alpha. Aber auch die potenziellen Risiken sollten beachtet werden, und die Parameter sollten rechtzeitig entsprechend den Veränderungen der Marktbedingungen angepasst werden. Die Strategie kann quantitativen Händlern zusätzliche Alpha bringen und lohnt sich für weitere Forschung und Verifizierung.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fzj20020403

////@version=5
//@version=5
strategy("Optimized Zhaocaijinbao", overlay=true, margin_long=100, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Define two moving averages
ma6 = ta.sma(close, 6)
ma35 = ta.sma(close, 35)

// Define buy and sell signal lines
buyLine = ta.ema(close, 2)
sellSlope = (close - close[8]) / 8
sellLine = sellSlope * 1 + ta.sma(close, 8)

// Define volume indicator
volumeEMA = ta.ema(volume, 20)

// Define weekly slope factor
weeklyMa = ta.sma(close, 50)
weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0

// Generate buy and sell signals
buySignal = ta.crossover(buyLine, sellLine) and close > ma35 and volume > volumeEMA and weeklySlope
sellSignal = ta.crossunder(sellLine, buyLine)

// Define dynamic position sizing factor
equity = strategy.equity
maxPositionSize = equity * input.float(title='Max Position Size (%)', defval=0.01, minval=0.001, maxval=0.5, step=0.001)
riskFactor = input.float(title='Risk Factor', defval=2.0, minval=0.1, maxval=10.0, step=0.1)
atr = ta.atr(14)
positionSize = maxPositionSize * riskFactor / atr

// Define position status
var inPosition = false

// Define buy and sell conditions
buyCondition = buySignal and not inPosition
sellCondition = sellSignal and inPosition

// Perform buy and sell operations
if (buyCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    inPosition := true
if (sellCondition)
    strategy.close("Long")
    inPosition := false

// Draw vertical line markers for buy and sell signals
plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small)

// Draw two moving averages
plot(ma6, color=color.blue)
plot(ma35, color=color.orange)

// Draw volume indicator line
plot(volumeEMA, color=color.yellow)

// Define stop loss and take profit
stopLoss = strategy.position_avg_price * 0.5
takeProfit = strategy.position_avg_price * 1.25

if inPosition
    strategy.exit("Long Stop Loss", "Long", stop=stopLoss)
    strategy.exit("Long Take Profit", "Long", limit=takeProfit)



Mehr