Kombinationsstrategie zur Momentum-Trend-Optimierung


Erstellungsdatum: 2024-02-06 15:11:57 zuletzt geändert: 2024-02-06 15:11:57
Kopie: 4 Klicks: 756
1
konzentrieren Sie sich auf
1617
Anhänger

Kombinationsstrategie zur Momentum-Trend-Optimierung

Überblick

Eine dynamische Trendoptimierungs-Strategie ist eine mittlere und lange Linie, die eine Kombination aus dynamischen und tendenziellen Faktoren verwendet, um Kauf- und Verkaufssignale durch eine Kombination aus Index-Moving Averages, Moving Averages, Transaktionsvolumen und Verlaufskennzahlen zu erzeugen. Die Strategie wurde für T+1-Handel optimiert und ist nur für mehrere Richtungen geeignet.

Strategieprinzip

Die Strategie definiert zwei Moving Averages mit einem 6-Tage-Simple Moving Average und einem 35-Tage-Simple Moving Average. Die Kaufsignallinie ist als 2-Tage-Index-Moving Average definiert, die Verkaufsignallinie als Schräglage basierend auf den Schließungspreisen der letzten 8 Tage. Zusätzlich wird ein 20-Tage-Index-Moving Average für die Transaktionsmenge definiert.

Wenn der Schlusskurs der Aktie über dem 35-Tage-Moving-Average liegt und die Transaktionsmenge über dem 20-Tage-Traditions-Average liegt und wöchentlich als Mehrkopfmarkt geprüft wird, wird ein Kaufsignal aus dem unteren Goldkreuz ausgelöst. Im Gegensatz dazu wird ein Verkaufsignal aus dem oberen Todeskreuz ausgelöst.

In Bezug auf das Risikomanagement wurde ein dynamischer Positionsanpassungsmechanismus für die Strategie eingeführt. Die tatsächlichen Positionen werden auf Basis der Konto-Eigentumsquote, des Maximalpositionsverhältnisses, des ATR und der Risikofaktoren berechnet. Dies hilft, die maximale Rücknahme der Strategie zu kontrollieren.

Analyse der Stärken

Die Strategie kombiniert Dynamikfaktoren mit Trendfiltern, um die Richtung der mittleren und langen Linie zu identifizieren. Die Filterung von Noise ist ebenfalls vorhanden, um Fehlsignale bei Schwingungen zu vermeiden. Darüber hinaus ermöglicht die Einführung eines Risikomanagementmechanismus die Kontrolle des maximalen Rückzugs, um die Stabilität der Strategie zu gewährleisten.

Nach Rückmeldung ergab sich eine Gesamtrendite von 128,86% mit einem sehr signifikanten Alpha. Die Gewinnrate der Strategie erreichte 60,66%, was die Stabilität der Strategie-Effekte zeigt.

Risikoanalyse

Obwohl die Strategie selbst die Risikomanagement-Mechanismen optimiert hat, gibt es immer noch einige Risiken, die zu beachten sind. Insbesondere umfassen die wichtigsten Risiken:

  1. Rücknahme-Risiken. Die strategische Rücknahme ist größer als der Verlust von 222.021,46 US-Dollar. Dies hängt mit einer unvollständigen Positionsverwaltung zusammen.

  2. Signalstabilitätsrisiken. Strategie-Signale können durch spezifische Faktoren beeinflusst werden, was zu Fehlsignalen führt. Dies kann Auswirkungen auf die strategischen Erträge haben.

  3. Risiken von Veränderungen der Marktumgebung. Die Strategieparameter müssen möglicherweise angepasst werden, um weiterhin wirksam zu bleiben, wenn sich die makroökonomische Marktumgebung erheblich ändert.

Optimierungsrichtung

Nach der oben genannten Risikoanalyse besteht nach wie vor die Notwendigkeit und Möglichkeit einer Optimierung der Strategie.

  1. Ausgehend von den Maximalverlusten kann die Positionsverwaltung weiter optimiert werden, indem ein Stop-Loss-Modul eingeführt wird, um die Höhe der Einzelschäden zu kontrollieren.

  2. Es kann in Erwägung gezogen werden, weitere Filterindikatoren hinzuzufügen, um spezifische Einzelereignisse zu identifizieren, um die Wahrscheinlichkeit von Fehlsignalen zu verringern.

  3. Strategieparameter sollten kontinuierlich getestet und verifiziert werden, und Parameter sollten zeitnah an die veränderten Marktbedingungen angepasst werden. Überoptimierung sollte ebenfalls verhindert werden.

Zusammenfassen

Die Dynamic Trend Optimization-Combination-Strategie ist eine mittel- und langfristige quantitative Handelsstrategie, die den Dynamic Factor und die Trendfilterung kombiniert und speziell für T+1-Handel optimiert ist. Aus Sicht der Rückmessungen ist die Gesamtwirkung der Strategie bemerkenswert und hat eine sehr erstaunliche Alpha. Es sollte jedoch auch auf die möglichen Risiken geachtet werden und die Parameter rechtzeitig an die Marktumgebung angepasst werden.

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