Die Cycle Position Trend Following Strategy ist eine quantitative Handelsstrategie, die die Trendrichtung basierend auf dem 200-tägigen einfachen gleitenden Durchschnitt (SMA) bestimmt. Sie bietet zwei Modi -
Der Kernindikator dieser Strategie ist der 200-Tage-SMA.
Beim Aufwärtstrend-Modus: Long gehen, wenn der Schlusspunkt über der 200-Tage-SMA liegt; Close-Position, wenn Stop Loss oder Take Profit ausgelöst wird.
Verfolgen Sie den Abwärtstrend-Modus: Gehen Sie lang, wenn der Schlusspunkt unter dem 200-Tage-SMA liegt; schließen Sie, wenn ein Stop-Loss oder ein Take-Profit ausgelöst wird.
Die lange Bedingung ist inlongCondition
Die Schlusskondition wird definiert incloseCondition
Die Variable basiert auf Stop Loss, Take Profit und SMA.
Genauer gesagt:strategy.entry
wird verwendet, um Long-Positionen zu eröffnen, wenn die Long-Bedingung erfüllt ist.strategy.exit
wird verwendet, um Positionen zu schließen, wenn die Schließbedingung ausgelöst wird.
Zu den Vorteilen dieser Strategie gehören:
Einfache und klare Logik, die leicht zu verstehen ist.
Bietet zwei optionale Modus für verschiedene Marktumgebungen.
Anpassbare Stop-Loss- und Take-Profit-Verfahren ermöglichen die Anpassung des Risiko-Rendite-Profils.
Verwendet den bekannten 200-Tage-SMA-Indikator, um die Trendrichtung zu bestimmen.
Generiert automatische Handelssignale ohne manuelles Eingreifen.
Zu den Risiken dieser Strategie gehören:
Wenn man sich auf einen Indikator stützt, kann man auch andere Indikatoren wie MACD und KDJ zur Bestätigung verwenden.
Stop-Loss- und Take-Profit-Niveaus, die zu eng oder zu breit sind, können zu einem vorzeitigen Stop-Out oder fehlenden idealen Ausgangspunkten führen.
Die Verwendung von Schlusskurs für Signale hat Schlusskursverzerrungen.
Es werden keine Handelskosten berücksichtigt.
Einige Möglichkeiten zur Verbesserung der Strategie:
Hinzufügen anderer Indikatoren, um Signale zu bestätigen und falsche Signale zu vermeiden, z. B. MACD.
Optimieren Sie Stop-Loss- und Take-Profit-Parameter, um durch Backtesting eine optimale Kombination zu finden.
Hinzufügen eines Trendfilters, um nur in gut definierten Trends zu handeln, z. B. ADX.
Verbessern Sie die Einstiegsmethode, indem Sie den Kerzenkörper berücksichtigen oder eine Bestätigung hinzufügen.
Um die Signalzuverlässigkeit zu überprüfen, sollten Sie das Handelsvolumen berücksichtigen.
Versuche verschiedene SMA-Perioden, um den optimalen Parameter zu finden.
Die Strategie hat eine klare und verständliche Logik mit praktischem Wert. Aber die Abhängigkeit von einem einzigen Indikator hat Einschränkungen. Für die Bestätigung sollten mehr Bedingungen hinzugefügt werden. Parameter müssen auch getestet und optimiert werden, um eine bessere Live-Performance zu erzielen. Darüber hinaus erfordern Handelskosten wie Slippage und Provisionen eine Berücksichtigung beim Live-Handel.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 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/ // © I11L //@version=5 strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for selecting the mode mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"]) // Input for customizing stop loss and take profit levels stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01) takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01) // Calculate the 200-day Simple Moving Average (SMA) sma = ta.sma(close, 200) // Plot the SMA on the chart plot(sma) // Define the conditions for entering a long position based on the selected mode longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma // Define the conditions for closing a position based on the selected mode closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05) // Execute a long position if the longCondition is met if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // Close the position if the closeCondition is met if (closeCondition) strategy.exit("Exit", limit = close)