Die Ressourcen sind geladen. Beförderung...

Aktueller TrendNachfolgender Strategie

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Die PresentTrend-Strategie ist eine einzigartige kundenspezifische Trendfolgestrategie, die sowohl kurz- als auch langfristige Markttrends nutzen kann und somit für verschiedene Marktbedingungen geeignet ist.

Wie es funktioniert

Die Strategie besteht aus zwei Teilen:

  1. Benutzerdefinierter RSI- oder MFI-Indikator: Dieser Indikator berechnet einen auf RSI oder MFI basierenden PresentTrend-Wert und erzeugt Kauf- und Verkaufssignale auf der Grundlage seines Crossovers und Crossunders, die auf mögliche Trendumkehrungen hinweisen.

  2. ATR-Indikator: Ein beliebter Trend-Indikator, bei dem der Durchschnittliche Wahre Bereich (ATR) verwendet wird.

Die Strategie tritt in eine Long-Position ein, wenn alle Kaufsignale aus beiden Strategien wahr sind, und eine Short-Position, wenn alle Verkaufssignale wahr sind.

Vorteile

  • Kombiniert kurzfristige und langfristige Trends, die an unterschiedliche Marktbedingungen angepasst werden können
  • Verwendet benutzerdefinierte Indikator und ATR für erhöhte Signalzuverlässigkeit
  • Die Option für den Handel nur mit Long-, Short- oder Doppelrichtungshandel eignet sich für verschiedene Handelsstile.
  • Standardparameter, die für das Gleichgewicht zwischen Empfindlichkeit und Stabilität optimiert sind
  • Parameter können nach persönlichen Optimierungsvorlieben angepasst werden

Risiken und Lösungen

  • Anfällig für Whipsaws, wie alle Trendstrategie
  • Doppelrichtungshandel kann die Anzahl der Geschäfte und Gebühren erhöhen
  • Eine schlechte Einstellung der Parameter kann zu übermäßigen falschen Signalen führen
  • Kann kürzere Aufbewahrungszeiten nutzen, um das Whipsaw-Risiko zu reduzieren
  • Die Option auf Long oder Short verringert nur die Anzahl der Trades
  • Die Parameter sollten gründlich getestet und abgestimmt werden, um die Lebensfähigkeit zu gewährleisten.

Optimierungsrichtlinien

  • Hinzufügen von Stop-Loss-Mechanismen für eine bessere Verlustkontrolle
  • Filtersignale mit zusätzlichen Indikatoren zur Verringerung falscher Trades
  • Versuche verschiedene Parameter der Aufbewahrungszeit, um die optimale
  • Erforschen Sie maschinelles Lernen für automatisierte Parameteroptimierung
  • Mehr Datenquellen wie Bestellflussinformationen integrieren
  • Optimierung des Strategiecodes für eine verbesserte Ausführungsfähigkeit

Schlussfolgerung

Insgesamt ist die PresentTrend-Strategie ein hochwirksames Trendfolgensystem. Sie kombiniert kurzfristige und langfristige Trendindikatoren, um empfindlich zu sein und gleichzeitig die Signalzuverlässigkeit zu verbessern. Mit anpassbarer Richtung, Parametern und zusätzlicher Logik kann sich die Strategie an verschiedene Marktumgebungen und Händlerbedürfnisse anpassen.


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


Mehr