Die Strategie zur Nachverfolgung von Momentum-Burst

Schriftsteller:ChaoZhang, Datum: 2024-03-01 11:08:43
Tags:

img

Übersicht

Die Momentum Burst Tracking-Strategie beurteilt Preisdurchbrüche, indem sie prozentuale Preisänderungen berechnet und Signale mit Handelsvolumen filtert, um die Erfassung von Trenddurchbrüchern mit hoher Wahrscheinlichkeit zu implementieren.

Strategieprinzip

Die wichtigsten Indikatoren für die Ermittlung der Eingangssignale sind:

  1. Prozentuale Kursänderung (isFourPercentBull) - Berechnet die prozentuale Veränderung des Schlusskurses gegenüber dem Schlusskurs des Vortages, um festzustellen, ob der Kurs tatsächlich durchbrochen hat.

  2. Verhältnis des Schlusskurses zum höchsten Preis (HighCloseRatio) - Berechnet das Verhältnis des Schlusskurses zum höchsten Preis, um die Stärke des Preisdurchbruchs zu bestimmen.

  3. Handelsvolumen (Volume) - Erfordert, dass das Handelsvolumen größer ist als am Vortag, um einen gültigen Durchbruch zu gewährleisten.

  4. 200-Tage-einfacher gleitender Durchschnitt (SMA) - Erfordert, dass der Schlusskurs und der Eröffnungskurs über der 200-Tage-Linie liegen, um die Trendrichtung zu bestimmen.

Wenn die oben genannten mehreren Bedingungen gleichzeitig erfüllt sind, wird ein Kaufsignal ausgegeben. Danach verwendet die Strategie den Preis-Tracking-Stop-Loss, um den Verlust aktiv zu stoppen und Gewinne zu erzielen.

trailPrice = close * (100 - trailPercent) / 100

Dies stellt sicher, dass, solange die Preise steigen, die Stop-Loss-Linie auch steigt, um Gewinne zu erzielen.

Vorteile der Strategie

Als typische Breakout-Strategie hat sie folgende Vorteile:

  1. Die Mehrbedingungenfilterung gewährleistet die Gültigkeit des Ausbruchs und verhindert falsche Ausbrüche.

  2. Einführung von Preis-Tracking-Stop-Loss, mit dem Verluste aktiv reduziert und Gewinne erzielt werden können, um Verluste zu vermeiden.

  3. Die Strategie ist einfach und klar, leicht zu verstehen und zu optimieren.

Risiken der Strategie

Die Strategie birgt auch einige Risiken:

  1. Es besteht immer noch die Wahrscheinlichkeit, dass die Ausbrüche fehlschlagen und Verluste nicht vollständig vermieden werden können.

  2. Übermäßig aggressive Stopps können zu häufigen Stopps führen.

  3. Eine falsche Einstellung der Parameter kann zu übermäßigen Handelsfrequenzen oder verpassten Signalen führen.

Die Lösungen für die entsprechenden Risiken sind:

  1. Optimieren Sie die Parameter und reduzieren Sie die Stop-Loss-Größe, um ausreichend Platz zu schaffen.

  2. Um sicherzustellen, dass klare Trends nicht übersehen werden, sollten die Ausbruchbedingungen angemessen gelockert werden.

  3. Versuche verschiedene Sorten, um die Strategie-Stabilität zu bewerten.

Optimierungsrichtlinien

Angesichts der hohen Häufigkeit der Haltestellen in dieser Strategie können folgende Richtungen weiter optimiert werden:

  1. Versuchen Sie andere Stop-Loss-Verfolgungsmethoden, wie z. B. gleitende Durchschnittsverfolgung, ATR und Volatilitätsverfolgung.

  2. Erhöhung von Algorithmen für maschinelles Lernen zur Ausbildung von Beurteilungen über bessere Parameterkombinationen auf der Grundlage historischer Daten.

  3. Um die Wirksamkeit zu gewährleisten, werden zusätzliche Beurteilungsbedingungen auf der Grundlage von Volumenüberschreitungen hinzugefügt.

  4. Unterschiede in den Parameter-Einstellungen zwischen den verschiedenen Sorten bewerten, um die beste Passform zu finden.

Schlussfolgerung

Die Momentum Burst Tracking Strategie ist insgesamt eine sehr praktische Trend-Tracking-Strategie. Sie löst das Problem der Unfähigkeit, Verluste und Gewinne bei Breakout-Strategien effektiv zu stoppen und gleichzeitig die Risiken bei der Erfassung von Trends gut zu kontrollieren. Da durch die Einführung von Optimierungen und maschinellem Lernen weitere Verbesserungen möglich sind, lohnt sich eine eingehende Forschung und Anwendung.


/*backtest
start: 2023-03-01 00:00:00
end: 2023-12-10 05:20:00
period: 1d
basePeriod: 1h
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/
// © doks23

//@version=5
strategy(title = "SD:Momentum Burst", overlay=true, initial_capital=1000,commission_value = 0,slippage = 0,process_orders_on_close=true)

//Check Vol
checkVol = input.bool(defval=false,title="IncludeAvgVolume?")
volSMAlength = input(50, title="VolumeLength")
volumeSma = ta.sma(volume, volSMAlength)
highvolume = volume >= volumeSma
volumeCond=checkVol?highvolume:true

// Profit and Loss
trailPercent    = input.float(title="Trail%", defval=3, step=0.1)

//longCondition
PercentThreshold=input.float(3.8,'BreakoutPercent', step=0.1)
MaxThreshold=input.float(10,'Max Breakout', step=0.1)
HighCloseRatio=input.float(70,'Close to High Ratio', step=1)
float candleCloseBull = ((close[0] - open[0]) / (high[0] - open[0]) * 100)
float isFourPercentBull = (((close[0] - close[1]) / close[1]) * 100)
LongCond=volume > volume[1] and isFourPercentBull > PercentThreshold and candleCloseBull > HighCloseRatio and isFourPercentBull<MaxThreshold
barcolor(color=(LongCond?color.yellow: na),title='BObar')
longCondition= LongCond and volumeCond and close>ta.sma(close,200) and open>ta.sma(close,200)

//Input Strategy
DateCheck=  input.bool(title = 'Custom Date Range?', defval=true,group = 'Strategy')
FromDate=   input(defval = timestamp("1 Jan 2019 00:00"),group = 'Strategy')
ToDate      =input(defval = timestamp("31 Dec 2023 00:00"),group = 'Strategy')
PostionSize =input.string('Contract','Select Position Size',options = ['Percent of Equity','Contract'],group = 'Strategy')
ContractQty =input.int(1,'No of Contract',group = 'Strategy')

//Backtesting Date Range
TimeWindow=true
// Number of Contract
var int trade_qty=na
if(PostionSize=='Contract')
    trade_qty:=ContractQty
else
    trade_qty:= (strategy.equity>strategy.initial_capital)?math.floor(strategy.equity/strategy.initial_capital):ContractQty


//Position Buy
BuyTriggerPrice = ta.valuewhen(longCondition,high,0)
//Trailing price
var float trailPrice    = na
float percentMulti = (100 - trailPercent) / 100
longCondition2=longCondition and TimeWindow
if longCondition2
    strategy.entry("Long", strategy.long,qty=trade_qty,stop = BuyTriggerPrice)
    trailPrice := close*percentMulti
if strategy.position_size>0
    trailPrice := math.max(close*percentMulti,trailPrice[1])
    if low <= trailPrice
        strategy.exit('Exit','Long',stop = trailPrice)
        if strategy.position_size==0     
            trailPrice:=na
// Plot Strategy
var float trail_long_SL=na
if strategy.position_size>0
    trail_long_SL:=trailPrice
else
    trail_long_SL:=na
//Strategy Plot
PlotMA=input.bool(title="Plot MA?", defval=false)
plot(PlotMA?ta.sma(close,10):na,color = color.red,title = '10MA')
plot(PlotMA?ta.sma(close,21):na,color = color.white,title = '21MA')
plot(PlotMA?ta.sma(close,200):na,color = color.orange,title = '200MA')
// plot(trail_long_SL,color = color.gray,style = plot.style_steplinebr,linewidth = 1)

Mehr