
Die dynamische Stop-Loss-Tracking-Strategie dient dem Zweck, die Aufwärtstrends zu verfolgen, indem sie langfristige Trends und kurzfristige Rückschläge erkennt. Die Strategie verwendet gleichzeitig die Fluktuationseinheiten, um die Größe der Gewinne und Verluste zu ermitteln, so dass sie für alle Währungen ohne Angst vor prozentualen Veränderungen geeignet ist.
Die Logik dieser Strategie ist: Kaufen und Positionen zu eröffnen, wenn ein langfristiger Aufwärtstrend auftritt (ein Anstieg der 200-Tage-EMA, ein RSI von mehr als 51 an den 200 Tagen) und eine kurzfristige Abwärtskurve auftritt (ein Rückgang des Kurses der letzten 2 K-Linien).
Die Selling-Logik lautet: Stopp, wenn der Preis über 1 Fluktuation steigt; Stopp, wenn der Preis über 2 Fluktuationen fällt.
Die Fluktuationseinheit wird berechnet mit dem 2-fachen der Differenz zwischen dem 50-Tage-Stoppkurs als Basisfluktuationseinheit. So kann die eigene Fluktuation der verschiedenen Währungen erkannt werden, ohne dass ein Prozentsatz festgelegt werden muss.
Der größte Vorteil dieser Strategie ist die Möglichkeit, die Größe der Schwankungen verschiedener Währungen dynamisch zu erfassen und die Stop-Loss-Einheit auf die Schwankungen der Währung selbst einzustellen. Dies vermeidet die Problematik der Festsetzung der Prozentsatzstop-Einheit und kann automatisch für mehr Währungen eingestellt werden.
Ein weiterer Vorteil besteht darin, dass eine Kombination aus langfristigen und kurzfristigen Beurteilungen eine effektive Filterung für falsche Durchbrüche ermöglicht. Die Verwendung von langfristigen Trends, um mögliche zukünftige Anstiege von Münzen zu beurteilen, und die Kombination von kurzfristigen Rückrufsignalen können falsche Signale wie Brin-Band-Squeeze wirksam vermeiden.
Das größte Risiko dieser Strategie liegt in der Einstellung der Stop-Loss-Einheiten. Wenn die Schwankungen zu groß sind, kann die Stop-Distance zu nahe sein, um die Schwankungen aufrechtzuerhalten. Wenn die Schwankungen zu klein sind, kann der Verlust zu schnell gestoppt werden.
Ein weiteres Risiko ist die Abhängigkeit der Strategie von kurzfristigen Trendbeurteilungen. Wenn ein langfristiger Anstieg auftritt, der jedoch in der kurzfristigen Phase nicht rückgängig gemacht wird, wird die Eintrittszeit verpasst. Dies kann mit anderen Hilfsindikatoren verbunden sein.
Die Strategie kann in folgenden Richtungen optimiert werden:
Erhöhung der EMA-Beschlüsse für längere Zeiträume, um Schwankungen zu vermeiden
Erhöhung der Anzahl von Trades, um Trends zu beurteilen und die Abhängigkeit von kurzfristigen K-Linien zu verringern
Optimierung der Bedingungen für die Eröffnung und Bewahrung von Positionen, Strengere Regeln für den Zugang
Eine Kombination von Machine-Learning-Algorithmen, um die Richtung der Trends zu bestimmen und eine höhere Gewinnrate zu erzielen
Die Strategie kann automatisch an die Gewinn- und Verlust-Einheiten verschiedener Währungen angepasst werden, ohne dass ein Prozentsatz manuell eingestellt werden muss. In Kombination mit einer langfristigen und kurzfristigen Doppelbeurteilung kann die Strategie effektiv falsche Signale beseitigen. Durch weitere Optimierung kann die Strategie zu einer sehr effizienten Trendverfolgungsstrategie werden.
/*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)