JiaYiBing Quantitative Trend Momentum Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-03-08
Tags:

img

Übersicht

Die JiaYiBing Quantitative Trend Momentum Trading Strategie ist eine lange-kurze quantitative Handelsstrategie, die Trendverfolgung, Momentumindikatoren und Bollinger Bands-Kanäle kombiniert. Die Strategie verwendet das Crossover von schnellen und langsamen gleitenden Durchschnitten, um die Trendrichtung zu bestimmen, und bestätigt Einstiegssignale auf der Grundlage von Bollinger Bands-Kanälen und Momentumindikatoren. Die Strategie umfasst auch Risikokontrollmaßnahmen wie Take-Profit, Stop-Loss, Trailing-Stop und Positionsize.

Strategieprinzipien

Das Kernprinzip dieser Strategie besteht darin, Marktchancen zu erfassen, indem Preistrends und Momentum-Effekte genutzt werden. Insbesondere verwendet die Strategie zwei gleitende Durchschnitte mit verschiedenen Perioden (schnell und langsam), um die Richtung des Preistrends zu bestimmen. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt überschreitet, zeigt er einen Aufwärtstrend an und die Strategie erzeugt ein langes Signal; umgekehrt, wenn der schnelle gleitende Durchschnitt unter den langsamen gleitenden Durchschnitt überschreitet, zeigt er einen Abwärtstrend an und die Strategie erzeugt ein kurzes Signal.

Um den Trend und den Eintrittszeitpunkt weiter zu bestätigen, umfasst die Strategie auch Bollinger Bands und Momentumsindikatoren. Bollinger Bands bestehen aus drei Linien: Die mittlere Linie ist der gleitende Durchschnitt, während die oberen und unteren Bands eine bestimmte Anzahl von Standardabweichungen über und unter der mittleren Linie sind. Wenn der Preis über die obere Bollinger Band bricht, zeigt dies eine starke Aufwärtsdynamik an und die Strategie wird lang gehen; wenn der Preis unter die untere Bollinger Band bricht, zeigt dies eine starke Abwärtsdynamik an und die Strategie wird kurz gehen.

Darüber hinaus führt die Strategie auch einen Momentum-Indikator ein, der die Geschwindigkeit der Preisänderungen misst, indem der aktuelle Preis mit dem Preis vor einem bestimmten Zeitraum verglichen wird.

In Bezug auf die Positionsgröße erlaubt die Strategie die Festlegung der Positionsgröße auf der Grundlage des Konto-Eigenkapitals und der Risikopräferenz. Gleichzeitig umfasst die Strategie auch Take-Profit-, Stop-Loss- und Trailing-Stop-Mechanismen zur Kontrolle des Risikopositions jedes Handels.

Insgesamt zielt die Quantitative Trend Momentum Trading Strategie von JiaYiBing darauf ab, trendige Marktchancen zu erfassen und gleichzeitig das Risiko durch mehrere Dimensionen wie Trendverfolgung, Momentumbestätigung und Risikomanagement streng zu kontrollieren, um eine stabile Anlagerendite zu erzielen.

Analyse der Vorteile

  1. Trendverfolgung: Die Strategie nutzt die Überschneidung von schnellen und langsam gleitenden Durchschnitten, um Trendpreischancen zu erfassen, so dass sie bei Aufwärtstrends lang und bei Abwärtstrends kurz gehen und sich an unterschiedliche Marktbedingungen anpassen kann.

  2. Momentum-Bestätigung: Die Einführung des Momentum-Indikators als sekundäre Trendbestätigung hilft, falsche Signale auszufiltern und die Eintrittsqualität zu verbessern.

  3. Bollinger-Bänder unterstützt die Entscheidungsfindung: Bollinger-Bänder können den Preisvolatilitätsbereich widerspiegeln, und Ausbrüche von Bollinger-Bändern können als Signale für eine Trendbeschleunigung oder abnormale Kursschwankungen angesehen werden, die eine Referenz für den Einstieg darstellen.

  4. Positionsgrößenordnung: Die Strategie setzt eine Positionsgrößenordnung auf der Grundlage eines Prozentsatzes des Eigenkapitals des Kontos und einer Höchstgrenze ein, wodurch eine flexible Kontrolle des in jedem Handel eingesetzten Kapitals ermöglicht wird, wobei sowohl die Mittel vollständig ausgenutzt werden als auch ein übermäßiges Risikopositionsrisiko vermieden wird.

  5. Take Profit und Stop Loss: Die Strategie-Sets nehmen Profit, Stop Loss und Trailing Stop Loss-Level ein, die Gewinne schützen können, wenn sich der Preis in die erwartete Richtung bewegt, und Verluste entschieden reduzieren, wenn sich der Preis umkehrt, wodurch der maximale Verlust jedes Handels effektiv kontrolliert wird.

  6. Multiparameter-Optimierung: Die Strategie umfasst mehrere anpassbare Parameter, wie beispielsweise gleitende Durchschnittsperioden, Bollinger-Band-Parameter, Profit- und Stop-Loss-Prozentsätze usw., die optimiert werden können, um die Anpassungsfähigkeit und Robustheit der Strategie zu verbessern.

Risikoanalyse

  1. Häufiger Handel: Die Strategie erzeugt Einstiegssignale basierend auf gleitenden Durchschnittscrossovers und Bollinger-Band-Break-outs. Wenn die Marktvolatilität hoch ist, kann sie häufig Handelssignale erzeugen, was zu einer übermäßigen Handelsfrequenz und steigenden Provisions- und Slippage-Kosten führt.

  2. Parameterempfindlichkeit: Die Strategie umfasst mehrere Parameter, wie beispielsweise gleitende Durchschnittsperioden, Momentumperioden, Bollinger Bands-Parameter usw. Die Wahl verschiedener Parameter kann sich erheblich auf die Performance der Strategie auswirken. Wenn die Parameter nicht richtig ausgewählt werden, kann dies zu schlechter Strategieperformance führen.

  3. Verzögerung des Trenderkennens: Gleitende Durchschnitte sind Verzögerungsindikatoren, insbesondere wenn der gleitende Durchschnittszeitraum lang ist, die Geschwindigkeit der Identifizierung von Trendumkehrungen langsamer ist und der beste Einstiegszeitpunkt möglicherweise verpasst wird.

  4. Stop-Loss-Risiko: Obwohl die Strategie Stop-Loss-Maßnahmen festlegt, kann der Preis unter extremen Marktbedingungen (z. B. schnelle Lücken) direkt die Stop-Loss-Level überschreiten, was zu tatsächlichen Verlusten führt, die die Erwartungen übersteigen.

  5. Konzentriertes Positionsrisiko: Wenn die Strategie während eines bestimmten Zeitraums kontinuierlich Signale in die gleiche Richtung erzeugt, kann dies zu einer übermäßigen Konzentration von Positionen in eine Richtung führen, was zu einem größeren Positionsrisiko führt.

  6. Liquiditätsrisiko: Die Leistung der Strategie bei Backtesting und Live-Handel kann durch die Liquidität des Marktes beeinträchtigt werden, insbesondere bei Geschäften mit großen Fonds, die mit Problemen von Verschiebungen und unzureichendem Handelsvolumen konfrontiert sein können.

Optimierungsrichtlinien

  1. Einführung weiterer technischer Indikatoren: Auf der Grundlage der aktuellen gleitenden Durchschnitte, des Momentums und der Bollinger-Bänder können weitere technische Indikatoren wie RSI und MACD eingeführt werden, um die Zuverlässigkeit der Signale durch Multi-Indikator-Bestätigung zu verbessern.

  2. Optimierung der Ein- und Ausstiegsmechanismen: Bei der Beurteilung des Ein- und Ausstiegs können weitere Bedingungen eingeführt werden, wie z. B. die Anforderung eines bestimmten Handelsvolumens vor Preisüberschreitungen, die Verwendung eines stufenweisen Positionsschließens oder der Verzögerung des Gewinns bei Ausstieg, um die Flexibilität und Rentabilität der Strategie zu erhöhen.

  3. Dynamische Parameteranpassung: Für gleitende Durchschnittsperioden, Momentumperioden, Bollinger-Bands-Parameter usw. kann eine Reihe von Parameteranpassungsmechanismen entwickelt werden, um die Parameterwerte dynamisch anhand verschiedener Marktzustände und Volatilitätsniveaus anzupassen, wodurch die Anpassungsfähigkeit der Strategie verbessert wird.

  4. Verbesserung der Positionsgröße: Auf der Grundlage der derzeitigen Positionsgröße können fortschrittlichere Geldmanagementmethoden wie Kelly-Kriterium, feste Ratio, dynamisches Eigenkapital usw. eingeführt werden, um bessere Erträge und Risiken zu erzielen.

  5. Kombination mit der Fundamentalanalyse: Rein technische Analysestrategien können mit dem Risiko von Marktineffizienz oder -versagen konfrontiert sein. Wenn einige fundamentale Faktoren wie makroökonomische Daten und Branchentrends kombiniert werden können, um technische Signale zu filtern und zu bestätigen, kann dies die Leistung der Strategie verbessern.

  6. Verbessern Sie die Konsistenz von Backtesting und Live-Handel: Die Leistung der Strategie bei Backtesting und Live-Handel kann sich unterscheiden. Es ist notwendig, sich auf die Ausführungsqualität von Backtesting und Live-Handel zu konzentrieren, einschließlich Faktoren wie Ausführungspreis, Slippage und Latenz, um die Konsistenz der Live-Performance mit Backtesting-Ergebnissen zu gewährleisten.

Zusammenfassung

Die JiaYiBing Quantitative Trend Momentum Trading Strategie ist eine quantitative Handelsstrategie, die mehrere technische Analysemethoden integriert.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('甲易炳', overlay=true)

// Parameters
trendPeriod = input(50, 'Trend Period')
momentumPeriod = input(14, 'Momentum Period')
bbPeriod = input(20, 'Bollinger Bands Period')
bbDeviation = input(2, 'Bollinger Bands Deviation')
fastMALen = input(23, 'Fast SMA Length')
slowMALen = input(50, 'Slow SMA Length')
longTakeProfitPerc = input.float(0.5, 'Long Take Profit %', minval=0.05, step=0.05) * 0.01
shortTakeProfitPerc = input.float(0.5, 'Short Take Profit %', minval=0.05, step=0.05) * 0.01
stopLossPerc = input.float(0.5, 'Stop Loss %', minval=0.05, step=0.05) * 0.01
enableTrailing = input.bool(true, 'Enable Trailing')
trailingTakeProfitPerc = input.float(0.01, 'Trailing Take Profit %', minval=0.01, maxval=100, step=0.01) * 0.01
trailingStopLossPerc = input.float(0.5, 'Trailing Stop Loss %', minval=0.05, step=0.05) * 0.01
qty_percent = input.int(20, 'Position Size %', step=1)
qty_cap = input.int(10000, 'Max Position Size', step=1000)
beast_mode = input.bool(false, 'Beast Mode')
set_cap = input.bool(true, 'Cap Position Size')
strategy.initial_capital = 50000
// Calculate position size
qty1 = (strategy.initial_capital + strategy.netprofit) * qty_percent / 10 / close
qty = (set_cap and qty1 > qty_cap) ? qty_cap : qty1

// Calculate moving averages
fastMA = ta.sma(close, fastMALen)
slowMA = ta.sma(close, slowMALen)

// Bollinger Bands
[upperBB, middleBB, lowerBB] = ta.bb(close, bbPeriod, bbDeviation)

// Entry conditions
buySignal = ta.crossover(close, fastMA) and close > upperBB
sellSignal = ta.crossunder(close, fastMA) and close < lowerBB

// Rampage mode entry conditions
if beast_mode
    buySignal := buySignal and fastMA > fastMA[2]
    sellSignal := sellSignal and fastMA < fastMA[2]

// Active positions
longIsActive = buySignal or strategy.position_size > 0
shortIsActive = sellSignal or strategy.position_size < 0

// Declare take profit and stop loss variables
var float longTakeProfitPrice = na
var float shortTakeProfitPrice = na

// Take profit and stop loss calculation
if longIsActive
    if buySignal and not (strategy.position_size > 0)
        longTakeProfitPrice := close * (1 + longTakeProfitPerc)
    else
        longTakeProfitPrice := nz(longTakeProfitPrice[1], close * (1 + longTakeProfitPerc))
if shortIsActive
    if sellSignal and not (strategy.position_size < 0)
        shortTakeProfitPrice := close * (1 - shortTakeProfitPerc)
    else
        shortTakeProfitPrice := nz(shortTakeProfitPrice[1], close * (1 - shortTakeProfitPerc))

longTrailingTakeProfitStepTicks = longTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
shortTrailingTakeProfitStepTicks = shortTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
longTrailingStopLossPrice = close * (1 - trailingStopLossPerc)
shortTrailingStopLossPrice = close * (1 + trailingStopLossPerc)

// Entries and exits
if strategy.position_size == 0
    strategy.entry('Long Entry', qty=qty, direction=strategy.long, when=buySignal, alert_message='Long Entry')
    strategy.entry('Short Entry', qty=qty, direction=strategy.short, when=sellSignal, alert_message='Short Entry')
    strategy.exit('Long Take Profit', 'Long Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : longTakeProfitPrice, trail_price=enableTrailing ? longTakeProfitPrice : na, trail_offset=enableTrailing ? longTrailingTakeProfitStepTicks : na, when=longIsActive, alert_message='Long Take Profit')
    strategy.exit('Short Take Profit', 'Short Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : shortTakeProfitPrice, trail_price=enableTrailing ? shortTakeProfitPrice : na, trail_offset=enableTrailing ? shortTrailingTakeProfitStepTicks : na, when=shortIsActive, alert_message='Short Take Profit')
else
    if longIsActive
        strategy.exit('Long Stop Loss', 'Long Entry', stop=longTrailingStopLossPrice, when=longIsActive)
    if shortIsActive
        strategy.exit('Short Stop Loss', 'Short Entry', stop=shortTrailingStopLossPrice, when=shortIsActive)

// Plotting
plot(fastMA, 'Fast SMA', color=color.blue, linewidth=1, style=plot.style_line)
plot(slowMA, 'Slow SMA', color=color.orange, linewidth=1, style=plot.style_line)
plot(upperBB, 'Upper BB', color=color.green, linewidth=1, style=plot.style_line)
plot(lowerBB, 'Lower BB', color=color.red, linewidth=1, style=plot.style_line)


Mehr