PresentTrend Trendfolgestrategie


Erstellungsdatum: 2023-09-21 15:00:08 zuletzt geändert: 2023-09-21 15:00:08
Kopie: 0 Klicks: 615
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die PresentTrend-Strategie ist eine einzigartige, benutzerdefinierte Trend-Follow-Strategie. Die Strategie kombiniert kurz- und langfristige Markttrends, so dass sie für verschiedene Marktbedingungen geeignet ist.

Strategieprinzip

Die Strategie besteht aus zwei Teilen:

  1. Benutzerdefinierter RSI oder MFI-Indikator: Dieser Indikator berechnet den PresentTrend-Wert basierend auf dem RSI oder MFI und erzeugt ein Kauf- und Verkaufssignal basierend auf dem Goldfork, das auf eine potenzielle Trendwende hinweist.

  2. Der ATR-Indikator ist ein populärer Trend-Following-Indikator, der die durchschnittliche reale Bandbreite der Schwankungen (ATR) verwendet.

Wenn ein Kauf- und ein Verkaufssignal beider Strategien gleichzeitig ausgelöst wird, wird die Strategie geöffnet. Dies kann sicherstellen, dass der Handel nur dann erfolgt, wenn die kurz- und langfristigen Trends übereinstimmen, was die Zuverlässigkeit der Strategie erhöht.

Strategische Vorteile

  • Kurz- und langfristige Trends in Kombination mit unterschiedlichen Marktbedingungen
  • Benutzung von benutzerdefinierten Kennzahlen und ATR zur Verbesserung der Signalsicherheit
  • Optionale Optionen für den Handel mit nur Plus-, Nur- oder Zwei-Wege-Trading für verschiedene Handelsstile
  • Optimierte Standardparameter, um Sensitivität und Stabilität zu balancieren
  • Die Parameter können an die persönlichen Vorlieben angepasst werden, um die Strategie zu optimieren

Strategische Risiken und Lösungen

  • Alle Trends folgen einer Strategie, bei der es Gefahr gibt, eingesetzt zu werden.
  • Mehrfach-Zwei-Wege-Transaktionen können die Anzahl der Transaktionen und die Gebühren erhöhen
  • Die falsche Einstellung der Parameter kann zu viele Fehlsignale erzeugen
  • angemessene Verkürzung der Haltungsdauer und Verringerung der Risiken von Leverage
  • Optionale Optionen für nur Plus- oder Leerpositionen, um weniger zu handeln
  • Die Parameter sollten ausreichend getestet und entsprechend angepasst werden, um sicherzustellen, dass sie vernünftig sind.

Richtung der Strategieoptimierung

  • Erhöhung der Stop-Loss-Mechanismen und bessere Kontrolle von Einzelschäden
  • In Kombination mit anderen Indikatoren filtern Sie Signale, um Fehltransaktionen zu reduzieren
  • Verschiedene Haltezeitparameter testen, um die optimalen Parameter zu finden
  • Versuchen Sie, Parameter automatisch zu optimieren, basierend auf Machine Learning
  • Nutzung von mehr Datenquellen, wie z.B. Bestellfluss
  • Optimierung der Strategie-Code, um die Effizienz der Ausführung zu erhöhen

Zusammenfassen

Die PresentTrend-Strategie ist insgesamt eine sehr effektive Trend-Follow-Strategie. Sie kombiniert sowohl kurzfristige als auch langfristige Trendindikatoren und erhöht die Signalzuverlässigkeit bei gleichzeitiger Sensibilität. Durch die Anpassung der Richtung, der Parameter und der Hinzufügung zusätzlicher Logik kann die Strategie an unterschiedliche Marktumgebungen und die Bedürfnisse der Händler angepasst werden.

Strategiequellcode
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
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/
// © PresentTrading

//@version=5

// Define the strategy settings
strategy('PresentTrend - Strategy [presentTrading]' , overlay=true, precision=3, default_qty_type=strategy.cash, 
 commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
  currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Define the input parameters
priceSource  = input.source(title='Source', defval=hlc3, group='PresentTrend') // The price source to use
lengthParam  = input.int(title='Length', defval=14, group='PresentTrend') // The length of the moving average
multiplier = input.float(title='Multiplier', defval=1.618, step=0.1, group='PresentTrend') // The multiplier for the ATR
indicatorChoice  = input.bool(title='Whether to use RSI or MFI', defval=false, group='PresentTrend') // Whether to use RSI or MFI

// Add a parameter for choosing Long or Short
tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"])

// Calculate the ATR and the upT and downT values
ATR = ta.sma(ta.tr, lengthParam)
upperThreshold = low - ATR * multiplier 
lowerThreshold  = high + ATR * multiplier 

// Initialize the PresentTrend indicator
PresentTrend = 0.0

// Calculate the PresentTrend indicator
PresentTrend := (indicatorChoice ? ta.rsi(priceSource, lengthParam) >= 50 : ta.mfi(hlc3, lengthParam) >= 50) ? upperThreshold < nz(PresentTrend[1]) ? nz(PresentTrend[1]) : upperThreshold : lowerThreshold > nz(PresentTrend[1]) ? nz(PresentTrend[1]) : lowerThreshold

// Calculate the buy and sell signals
longSignal  = ta.crossover(PresentTrend, PresentTrend[2])
shortSignal  = ta.crossunder(PresentTrend, PresentTrend[2])

// Calculate the number of bars since the last buy and sell signals
barsSinceBuy = ta.barssince(longSignal)
barsSinceSell = ta.barssince(shortSignal)
previousBuy = ta.barssince(longSignal[1])
previousSell = ta.barssince(shortSignal[1])

// Initialize the direction variable
trendDirection = 0

// Calculate the direction of the trend
trendDirection := longSignal and previousBuy > barsSinceSell ? 1 : shortSignal and previousSell > barsSinceBuy ? -1 : trendDirection[1]

// Check the trade direction parameter before entering a trade
if (trendDirection == 1 and (tradeDirection == "Long" or tradeDirection == "Both"))
    strategy.entry("Buy", strategy.long) 
if (trendDirection == -1 and (tradeDirection == "Short" or tradeDirection == "Both"))
    strategy.entry("Sell", strategy.short) 

// Add a stop mechanism when the tradeDirection is one-sided
if (tradeDirection == "Long" and trendDirection == -1)
    strategy.close("Buy")
if (tradeDirection == "Short" and trendDirection == 1)
    strategy.close("Sell")

// Visualization
plot(PresentTrend, color=color.blue, title="PresentTrend")
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")