Basierend auf der Momentum-Burst-Tracking-Strategie


Erstellungsdatum: 2024-03-01 11:08:43 zuletzt geändert: 2024-03-01 11:08:43
Kopie: 0 Klicks: 826
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf der Momentum-Burst-Tracking-Strategie

Überblick

Die Dynamik-Explosions-Tracking-Strategie ermittelt die Preis-Breakthroughs durch Berechnung des Prozentsatzes der Preisänderung und kombiniert die Traffic-Filter-Signal, um einen Breakout-Punkt zu erzielen, der eine hohe Wahrscheinlichkeit hat, einen Trend zu erfassen. Wenn ein Kaufsignal ausgelöst wird, verwendet die Strategie einen Preis-Stopp-Tracking-Methode, um die Gewinne zu sperren und zu verhindern, dass ein zu großer Rückzug erfolgt.

Strategieprinzip

Die Strategie basiert auf folgenden Kennzahlen, um zu beurteilen, wann ein Kauf möglich ist:

  1. Preisänderungsprozent ((isFourPercentBull) - berechnet die Veränderung des Schlusskurses in Prozent zum Schlusskurs des Vortages, um zu beurteilen, ob der Preis effektiv gebrochen wurde;

  2. HighCloseRatio - Berechnung des Verhältnisses zwischen dem Schlusspreis und dem Höchstpreis, um die Breakout-Stärke zu bestimmen;

  3. Volumen - erfordert ein größeres Handelsvolumen als am Vortag, um einen effektiven Durchbruch zu gewährleisten;

  4. 200-Tage-SMA (Simple Moving Average) - erfordert, dass der Schlusskurs und der Eröffnungskurs über der 200-Tage-Linie liegen, um die Richtung des Trends zu bestimmen.

Wenn mehrere der oben genannten Bedingungen gleichzeitig erfüllt sind, wird ein Kaufsignal ausgesendet. Danach verwendet die Strategie einen Preisverfolgungsstillstand, um einen aktiven Stop-Loss und eine Gewinnauslösung zu erzeugen. Die Berechnungsformel für die Verfolgung einer Stop-Line lautet:

trailPrice = close * (100 - trailPercent) / 100

Der TrailPercent ist ein konfigurierbarer Prozentsatz für die Verfolgung von Verlusten. Das bedeutet, dass die Stop-Line, sobald die Preise steigen, ebenfalls steigt, wodurch die Gewinne gesperrt werden.

Strategische Vorteile

Es ist eine typische Durchbruchstrategie mit folgenden Vorteilen:

  1. Mehrfach-Konditions-Filterung, um die Wirksamkeit von Durchbrüchen zu gewährleisten und falsche Durchbrüche zu vermeiden;
  2. Der Einsatz von Preis-Stopp-Tracking ermöglicht die aktive Verringerung von Verlusten und die Sperrung von Gewinnen, um Rücknahmen so weit wie möglich zu vermeiden.
  3. Die Strategie ist klar und einfach zu verstehen und zu optimieren.

Strategisches Risiko

Die Strategie birgt auch einige Risiken:

  1. Die Wahrscheinlichkeit, dass ein Durchbruch fehlschlägt, bleibt bestehen, und Verluste können nicht vollständig vermieden werden.
  2. Übermäßig radikale Tracking-Stopps können zu häufigen Stopps führen.
  3. Die falsche Einstellung der Parameter kann zu einer zu hohen Handelsfrequenz oder Signalverlust führen.

Die Lösungen für die Risiken sind:

  1. Optimierung der Parameter, Verringerung der Stop-Loss-Marge und Sicherstellung von genügend Platz;
  2. Angemessene Lockerung der Durchbruchbedingungen, um zu gewährleisten, dass eindeutige Trends nicht übersehen werden;
  3. Verschiedene Sorten getestet, um die Stabilität der Strategie zu bewerten.

Optimierungsrichtung

In Anbetracht der hohen Stop-Loss-Frequenz dieser Strategie können folgende Bereiche weiter optimiert werden:

  1. Versuchen Sie, andere Methoden zu verwenden, um Ihre Verluste zu verfolgen, z. B. Durchschnittsverfolgung, ATR und Volatilitätsverfolgung.
  2. Erweiterung der Algorithmen für das Maschinelle Lernen, um eine bessere Kombination von Durchbruchparametern zu ermitteln, die auf der Grundlage von historischen Daten ausgerichtet sind.
  3. Erhöhung der Begleitvoraussetzungen für die Erreichung von Durchbrüchen auf der Grundlage von Umsätzen, um die Erreichung von Durchbrüchen zu gewährleisten;
  4. Beurteilung der unterschiedlichen Parameter- und Einstellungsvarianten der verschiedenen Sorten und Suche nach der am besten geeigneten Sorte.

Zusammenfassen

Die Dynamic Burst Tracking Strategie ist insgesamt eine sehr praktische Trend-Tracking-Strategie. Sie löst die Probleme, bei denen die Breakthrough-Strategie keine effektiven Stopps und Stopps aufweist, und kann gleichzeitig die Risiken gut kontrollieren, während sie die Trends erfasst. Die Wirksamkeit der Strategie kann durch die Einführung von Mitteln wie Parameteroptimierung und Maschinelles Lernen weiter verbessert werden.

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