Die Strategie verwendet verschiedene Indikatoren wie die Durchschnittslinie, die Brin-Band und die Zeitdauer, um den Beginn und das Ende eines Preistrends zu identifizieren und Trend-Tracking-Operationen durchzuführen. Die Strategie wird durch verschiedene Indikatoren bestätigt und kann Falschbrüche effektiv filtern.
Die Strategie beinhaltet folgende Schlüsselschritte:
Die Berechnung der schnellen Durchschnittslinie und der langsamen Durchschnittslinie. Die Durchschnittslinie wird mit VWAP und nicht mit dem Schlusskurs berechnet, um den tatsächlichen Handelspreis genauer zu reflektieren.
Berechnen Sie den Mittelwert der Durchschnittslinie und zeichnen Sie auf dieser Grundlage einen Brin-Band. Der Brin-Band beurteilt, ob sich die Preisschwankungen erweitern, und weist darauf hin, dass ein Trend eingeleitet wird.
Die Einführung des TSV-Indikators, um zu beurteilen, ob die Transaktionsmenge zunimmt, um zu bestätigen, dass ein Trend besteht.
Wenn die schnelle Durchschnittslinie die langsame Durchschnittslinie überschreitet, der Preis höher ist als der von Brin und der TSV größer als 0, wird ein Kaufsignal erzeugt; umgekehrt wird ein Verkaufssignal erzeugt.
Die Rücknahme der Mittellinie und die Abfahrt von Brin als Stop-Loss-Gleichgewichtssignale.
Mit mehreren Kennzahlen bestätigt, kann effektiv zu filtern, falsche Durchbrüche, zu erkennen, dass Trends beginnen
Durchschnittliche Linien-Rechnungsmethoden spiegeln den tatsächlichen Handelspreis genauer wider
Trends in Verbindung mit Volatilitätsindikatoren
Erhöhung des Handelsvolumens und Bestätigung der Entwicklung
Setzen Sie angemessene Stop-and-Stop-Standards, um Risiken zu kontrollieren
Die Parameter sind konfigurierbar und lassen sich flexibel an den optimalen Status anpassen
Mehrindikator-Kombinationsbeurteilung, Probleme mit der Optimierung von Parametern
Die Verzögerung bei der Durchmessung und der Brin-Band kann zu unzureichenden Schadensstopps führen.
Die Zeitspanne ist parametersensibel und muss für verschiedene Märkte angepasst werden.
In der Bilanz gibt es die Möglichkeit, dass mehr falsche Signale erzeugt werden.
Die tatsächlichen Gewinne und Verluste sind geringer als die Rückmessung ohne Berücksichtigung der Auswirkungen der Transaktionskosten.
Versuchen Sie, die Parameterkombinationen automatisch mit einer Methode des maschinellen Lernens zu optimieren
Setzen Sie dynamische bewegliche Stopps oder Tracking-Stopps, um die Gewinne besser zu sperren
Die Einführung eines Energieindikators für die Transaktionsmenge, um Fehltransaktionen zu vermeiden, die durch die Abweichung der Mengen verursacht werden
In Kombination mit der Wellen-Theorie, um zu beurteilen, ob sich ein Trend in der frühen, mittleren oder späten Phase befindet, wird die Strategie-Parameter dynamisch angepasst
Berücksichtigung der Auswirkungen auf die tatsächlichen Transaktionskosten und Setzung einer minimalen Stop-Margin zur Kosteneffizienzkontrolle
Die Strategie berücksichtigt verschiedene Indikatoren und bietet eine gute Trenderkenntnis, um den Start und das Ende eines echten Trends zu bestimmen. Die Stabilität der Strategie kann durch die Optimierung von Parametern, die Optimierung von Verlusten und die Optimierung von Filtern weiter verbessert werden.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// Credits
// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.
strategy("HYE Trend Hunter [Strategy]", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025, pyramiding = 0)
// Strategy inputs
slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
slowkijunsenPeriod = input(26, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fasttenkansenPeriod = input(5, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fastkijunsenPeriod = input(13, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Bollinger Bands")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Bollinger Bands")
tsvlength = input(13, minval=1, title="TSV Length", group = "Tıme Segmented Volume")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Tıme Segmented Volume")
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31, group = "Backtest Range")
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12, group = "Backtest Range")
startYear = input(title="Start Year", type=input.integer,
defval=2000, minval=1800, maxval=2100, group = "Backtest Range")
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31, group = "Backtest Range")
endMonth = input(title="End Month", type=input.integer,
defval=12, minval=1, maxval=12, group = "Backtest Range")
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100, group = "Backtest Range")
inDateRange = true
//Slow Tenkan Sen Calculation
typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS
//Slow Kijun Sen Calculation
typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS
//Fast Tenkan Sen Calculation
typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF
//Fast Kijun Sen Calculation
typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF
//Slow LeadLine Calculation
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)
lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)
slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)
//Fast LeadLine Calculation
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)
lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)
fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)
// BBleadLine Calculation
BBleadLine = avg(fastleadLine, slowleadLine)
// Bollinger Band Calculation
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev
// TSV Calculation
tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)
// Rules for Entry & Exit
if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and inDateRange)
strategy.entry("BUY", strategy.long)
if(fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1])
strategy.close("BUY")
// Plots
colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)
colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)
p1 = plot(upper, "Upper BB", color=#2962FF)
p2 = plot(lower, "Lower BB", color=#2962FF)
fill(p1, p2, title = "Background", color=color.blue)