Trendfolgende quantitative Strategie basierend auf Parameteroptimierung


Erstellungsdatum: 2024-01-02 11:01:22 zuletzt geändert: 2024-01-02 11:01:22
Kopie: 0 Klicks: 682
1
konzentrieren Sie sich auf
1621
Anhänger

Trendfolgende quantitative Strategie basierend auf Parameteroptimierung

Überblick

Die Hauptidee dieser Strategie ist die Kombination von Percentrank-Indikatoren und Parameter-Optimierung, um die Preisentwicklung zu beurteilen und zu verfolgen. Die Strategie erzeugt Handelssignale, indem sie die aktuellen Preise mit einem Prozentsatz der Preisgröße innerhalb eines bestimmten historischen Zeitraums vergleicht, um den Zwischenspiegel-Effekt zu erfassen, den Trend zu verfolgen und so überschüssige Gewinne zu erzielen.

Strategieprinzip

Die Strategie verwendet den percentrank-Indikator, um die Preisentwicklung zu bestimmen. Der percentrank zeigt die relative Stärke des aktuellen Preises innerhalb des betrachteten Zeitraums an. Das Parameter len zeigt die Länge des betrachteten historischen Zeitraums an.

Der Wertbereich von percentrank liegt zwischen 0 und 100. Wenn der Wert von percentrank nahe bei 0 liegt, ist der aktuelle Preis nahe am niedrigsten Preis in der Überprüfungsperiode und gehört zur Unterbewertungszone. Wenn er nahe bei 100 liegt, ist der aktuelle Preis nahe am höchsten Preis in der Überprüfungsperiode und gehört zur Überbewertungszone.

Die Strategie führt auch die Scale-Parameter als Abweichung ein. So wird der Bereich von 0 bis 100 in den Bereich von Scale bis 100+ Scale verschoben. Gleichzeitig werden zwei Signallinien level_1 und level_2 eingestellt.

Wenn der Preis-Percentrank-Indikator von unten nach oben durch Level_1 geht, erzeugt er ein Blicksignal; wenn er von oben nach unten durch Level_2 geht, erzeugt er ein Blicksignal. Die Position ist im Gegensatz zum Einstiegssignal.

Strategische Vorteile

  1. Verwenden Sie den percentrank-Indikator, um die Stärke des Preistrends zu ermitteln und zu vermeiden, dass Sie in der Falle bleiben und nach oben jagen
  2. Anwendung von Parameteroptimierungsmethoden, Anpassung der Schiebe-Skala und der Signallinie-Thresholdwerte, Anpassung für verschiedene Sorten und Perioden, Stabilität
  3. Kombination von Trend-Tracking und Reverse-Trading-Ideen, um die Trends nach dem Signal-Linien-Break in der richtigen Zeit zu verfolgen

Risikoanalyse

  1. Unnötige Schäden durch Trends, die falsch beurteilt wurden
  2. Bei unklaren Preiswellen können falsche Signale erzeugt werden.
  3. Fehlgelegte Parameter können zu häufigen oder unzureichenden Transaktionen führen

Für die oben genannten Risiken kann durch Anpassung der Parameter len, scale und level optimiert werden. Außerdem können andere Indikatoren als Bestätigung verwendet werden, um falsche Transaktionen zu vermeiden.

Optimierungsrichtung

Die Strategie kann noch weiter optimiert werden:

  1. Ein Stop-Loss kann eingeführt werden, um Einzelschäden zu reduzieren.
  2. Sie können mit Indikatoren wie der Moving Average bestätigt werden, um falsche Signale zu filtern.
  3. Automatische Optimierung von Parametern, die mit einem Machine-Learning-Verfahren kombiniert werden können
  4. Parallellauf in mehreren Zeiträumen

Zusammenfassen

Die Strategie ist klar konzipiert und nutzt quantitative Methoden zur Parameteroptimierung, um Preistrends zu beurteilen und zu verfolgen. Sie hat einen gewissen Einsatzwert, muss jedoch weiter getestet und optimiert werden, um das Einsatzrisiko zu verringern und die stabile Profitabilität zu verbessern.

Strategiequellcode
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
basePeriod: 15m
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/
// © Alex_Dyuk

//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)

prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)

longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
    strategy.close("Long")
    
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
    strategy.close("Short")