Trendfolgestrategie basierend auf Trendvertrauen


Erstellungsdatum: 2023-11-22 15:50:07 zuletzt geändert: 2023-11-22 15:50:07
Kopie: 0 Klicks: 734
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie basierend auf Trendvertrauen

Überblick

Die Hauptidee der Strategie ist es, eine möglichst genaue Trendverfolgung zu erreichen. Sie beurteilt die Wahrscheinlichkeit, dass die aktuelle lineare Tendenz fortbesteht, indem sie die Vertrauenshöhe für eine bestimmte Anzahl von Abschlusskursen in der Vergangenheit berechnet. Die Strategie geht davon aus, dass es wahrscheinlicher ist, dass die auftretenden linearen Trends fortbestehen, sobald die Vertrauenshöhe über ein bestimmtes Niveau hinausgeht.

Strategieprinzip

Die Strategie berechnet die lineare Übereinstimmung der letzten N Schließungspreise durch die Methode der gewöhnlichen linearen Regression und erhält die Schräglage k für die lineare Übereinstimmung und die Abweichungs-Standarddifferenz gegenüber dem Schließungspreisσ。 und definiert dann die Trendunsicherheit als k/σ。

Wenn der Trend vertrauenswert ist, mehr als der Zins zu tun, mehr als die Einstiegsmethode, mehr zu tun; wenn der Rückgang zu Zins zu tun, mehr als die Ausgleichsmethode, ausgeglichen. Gleichermaßen, wenn der Trend vertrauenswert ist, weniger als der Zins zu machen, die Einstiegsmethode, ausgeglichen; wenn der Zins über die Ausgleichsmethode, ausgeglichen.

Auf diese Weise kann es die Signale von wilden Preisbewegungen filtern, die keinen klaren linearen Trend verfolgen.

Analyse der Stärken

Die Strategie kombiniert die Methoden der Trendverfolgung und der linearen Regression in der Statistik, um kurzfristige Preisschwankungen zu vermeiden und nur langfristigen Trends zu folgen, wodurch eine niedrigere Handelsfrequenz und eine höhere Gewinnquote erzielt wird.

Die Strategie hat viel Spielraum für Parameter und kann durch die Anpassung der Parameter an die verschiedenen Sorten und Zeiträume eine gute Generalisierung erzielen.

Risikoanalyse

Es besteht die Gefahr, dass die Strategie eingeschränkt wird. Die Strategie führt zu einem größeren Verlust, wenn der Preis eine deutliche Trendwende aufweist. Darüber hinaus kann die falsche Einstellung der Parameter zu übertriebenen oder verpassten Handelsmöglichkeiten führen.

Es ist möglich, Stop-Losses einzurichten, um das Verlustrisiko zu kontrollieren. Gleichzeitig muss die Auswahl der Parameter sorgfältig bewertet werden, um eine Überoptimierung zu vermeiden.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Erhöhung der Stop-Loss-Logik, um Gewinne zu sichern und Risiken zu kontrollieren

  2. Hinzufügen von Parametern, die sich an die Optimierungsmodule anpassen, so dass sie dynamisch angepasst werden können

  3. Erhöhung der Wahrscheinlichkeit, dass eine Strategie erfolgreich ist, durch die Einführung von Machine-Learning-Modellen, die Trendwendepunkte ermitteln

  4. Versuchen, sich mit verschiedenen Sorten und Zeitabschnitten anzupassen, um die Fähigkeit zur Verallgemeinerung zu verbessern

Zusammenfassen

Insgesamt ist die Strategie eine quantitative Strategie, die auf langfristigen Trends basiert und Risiken kontrolliert. Sie kombiniert Trendverfolgung und lineare Regressionsmethoden, die Geräuschhandelssignale filtern können. Durch die Parameter-Anpassung kann sie sich gut an verschiedene Sorten und Perioden anpassen und ist eine effektive Strategie, die es wert ist, untersucht und verbessert zu werden.

Strategiequellcode
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00: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/
// © carefulCamel61097

// ################################################################################################

// "This is a trend following strategy that performed very well on the past 5 years"
// "Intended to be used on BTC-USDT, 4hr timeframe"

// "A factor 2 Leverage can be added by changing Order Size to 200% of equity"
// "Higher leverage is not recommended due to big drawdowns"

// "Also seems to work on 1D timeframe, although ideal parameters may be different"
// "Also seems to work on ETH-USDT and some other altcoins, although ideal parameters are different"

// ################################################################################################

//@version=5
strategy("Trend Following based on Trend Confidence", overlay=false )

// Inputs

source      = input(close)

since       = input(timestamp('2000-01-01'), title='Start trading interval')
till        = input(timestamp('2030-01-01'), title='End trading interval')

length      = input(30, title='Length')

longs_on    = input.bool(true, title='Longs')
shorts_on   = input.bool(true, title='Shorts')

// Parameters for best performance 2018 - 2022
// long_entry  = input.float(0.26, step=0.01, title='Long entry threshold')
// long_exit   = input.float(-0.10, step=0.01, title='Long exit threshold')
// short_entry = input.float(-0.24, step=0.01, title='Short entry threshold')
// short_exit  = input.float(-0.04, step=0.01, title='Short exit threshold')

long_entry  = input.float(0.25, step=0.01, title='Long entry threshold')
long_exit   = input.float(-0.10, step=0.01, title='Long exit threshold')
short_entry = input.float(-0.25, step=0.01, title='Short entry threshold')
short_exit  = input.float(-0.05, step=0.01, title='Short exit threshold')

stop_loss   = input.float(10, step=1, title='Stop loss (percentage)') / 100

// Trend Confidence

linreg = ta.linreg(source, length, 0)
linreg_p = ta.linreg(source, length, 0+1)

x = bar_index
slope = linreg - linreg_p
intercept = linreg - x*slope
deviationSum = 0.0
for i = 0 to length-1
    deviationSum := deviationSum + math.pow(source[i]-(slope*(x-i)+intercept), 2)
deviation = math.sqrt(deviationSum/(length))

slope_perc = slope / source[0]
deviation_perc = deviation / source[0]
trend_confidence = slope_perc / deviation_perc

// Strategy

in_interval = true

sl_long = strategy.position_avg_price * (1 - stop_loss)
sl_short = strategy.position_avg_price * (1 + stop_loss)

if in_interval and longs_on and ta.crossover(trend_confidence, long_entry)
    strategy.entry("TC Long Entry", strategy.long)
    strategy.exit("TC Long Exit", stop=sl_long)
if in_interval and longs_on and ta.crossunder(trend_confidence, long_exit)
    strategy.close("TC Long Entry")

if in_interval and shorts_on and ta.crossunder(trend_confidence, short_entry)
    strategy.entry("TC Short Entry", strategy.short)
    strategy.exit("TC Short Exit", stop=sl_short)
if in_interval and shorts_on and ta.crossover(trend_confidence, short_exit)
    strategy.close("TC Short Entry")

// Plots 

plot(trend_confidence, "Trend Confidence", color.rgb(255, 255, 255))

plot(long_entry, "", color.rgb(0, 255, 0), linewidth=1)
plot(long_exit, "", color.rgb(255, 0, 0), linewidth=1)
plot(short_entry, "", color=bar_index % 10 == 0 ? color.rgb(0, 255, 0) : #00000000, linewidth=1)
plot(short_exit, "", color=bar_index % 10 == 0 ? color.rgb(255, 0, 0) : #00000000, linewidth=1)