Die Dynamic Take Profit Following Trend-Strategie erkennt langfristige Trends und kurzfristige Pullbacks, um niedrige Käufe und hohe Verkäufe zu erreichen, mit dem Ziel, Aufwärtstrends zu verfolgen.
Die Kauflogik dieser Strategie ist folgende: Wenn ein langfristiger Aufwärtstrend auftritt (EMA-Wert für 200 Tage steigt, RSI-Wert für 200 Tage größer als 51) und ein kurzfristiger Pullback eintritt (die letzten 2 Kerzen zeigen niedrigere Schlusskosten), werden Long-Positionen eröffnet.
Die Verkaufslogik ist: Gewinn machen, wenn der Preis um mehr als 1 Volatilitäteinheit steigt; Stop-Loss, wenn der Preis um mehr als 2 Volatilitäteinheiten sinkt.
Die Volatilitäts-Einheit wird berechnet als: 2 mal die Standardabweichung der Schlusskurse in den letzten 50 Tagen. Dies kann Volatilitätsbedingungen verschiedener Münzen automatisch erkennen, ohne manuelle Prozentsatz-Einstellungen erforderlich zu machen.
Der größte Vorteil dieser Strategie besteht darin, dass sie die Volatilitätsgrößen verschiedener Münzen dynamisch erkennen und die Stop-Loss-/Take-Profit-Level entsprechend festlegen kann. Dies vermeidet das Problem der festen Prozentsatz-Einstellungen und kann sich automatisch an mehr Münzen anpassen.
Ein weiterer Vorteil ist, dass die Kombination von langfristigen und kurzfristigen Urteilen falsche Ausbrüche effektiv herausfiltern kann.
Das größte Risiko dieser Strategie ist die Einstellung der Stop-Loss/Take-Profit-Einheit. Wenn die Volatilität zu hoch ist, können die Take-Profit-Distanzen zu nahe sein, um den Aufwärtstrend zu verfolgen; wenn die Volatilität zu niedrig ist, kann der Stop-Loss zu schnell ausgelöst werden. Dies erfordert längere Perioden-EMAs, um Fehler in den Urteilen der Volatilitäteinheiten zu vermeiden.
Ein weiteres Risiko besteht darin, dass die Strategie auf kurzfristige Trends angewiesen ist. Wenn es einen langfristigen Aufwärtstrend ohne kurzfristigen Pullback gibt, würde der Einstiegszeitpunkt verpasst. Dies kann zusätzliche Unterstützungsindikatoren erfordern.
Die Strategie kann in folgenden Richtungen optimiert werden:
Hinzufügen von EMA-Bewertungen über längere Zeiträume, um Volatilitäteinheitfehler zu vermeiden
Hinzufügen von Indikatoren wie Handelsvolumen, um Trends zu beurteilen, Verringerung der Abhängigkeit von kurzfristigen Kerzen
Optimierung der Ein- und Ausstiegsbedingungen, strengere Einreisebestimmungen
Kombination von Machine-Learning-Algorithmen zur Bestimmung der Trendrichtung, höhere Gewinnrate
Die Dynamic Take Profit Following Trend Strategy hat eine klare Logik in ihrem Kern
/*backtest start: 2022-12-22 00:00:00 end: 2023-12-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © BHD_Trade_Bot strategy(shorttitle='Take Profit On Trend', title='Take Profit On Trend (by BHD_Trade_Bot)', overlay=true, initial_capital = 15, default_qty_type = strategy.cash, default_qty_value = 15, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest Time start_day = 1 start_month = 1 start_year = 2021 end_day = 1 end_month = 1 end_year = 2050 start_time = timestamp(start_year, start_month, start_day, 00, 00) end_time = timestamp(end_year, end_month, end_day, 23, 59) is_back_test_time() => time >= start_time and time <= end_time ? true : false // Last bar h1_last_bar = (timenow - time)/1000/60/60 < 2 // EMA ema50 = ema(close, 50) ema200 = ema(close, 200) // RSI length 200 rsi200 = rsi(close, 200) // Bollinger Bands length 50 bb50 = 2 * stdev(close, 50) // BHD Unit bhd_unit = sma(bb50, 100) bb50_upper = ema50 + bhd_unit bb50_lower = ema50 - bhd_unit // All n candles is going down all_body_decrease(n) => isValid = true for i = 0 to (n - 1) if (close[i] > close[i + 1]) isValid := false break isValid // ENTRY // Long-term uptrend entry_condition1 = rsi200 > 51 // Short-term downtrend entry_condition2 = all_body_decrease(2) ENTRY_CONDITION = entry_condition1 and entry_condition2 if (ENTRY_CONDITION and is_back_test_time()) strategy.entry("entry", strategy.long) // CLOSE CONDITIONS // Price increase 1 BHD unit TAKE_PROFIT = close > strategy.position_avg_price + bhd_unit // Price decrease 2 BHD unit STOP_LOSS = close < strategy.position_avg_price - bhd_unit * 2 CLOSE_CONDITION = TAKE_PROFIT or STOP_LOSS if (CLOSE_CONDITION or h1_last_bar) strategy.close("entry") // Draw plot(ema50) plot(ema200, color=color.yellow) plot(bb50_upper) plot(bb50_lower)