Die Take Profit on Trend-Strategie zielt darauf ab, langfristige Trends und kurzfristige Pullbacks zu erkennen, indem bei allgemeinen Aufwärtstrends Longpositionen eingenommen und gleichzeitig kurzfristige Einbrüche erfasst werden, wobei angemessene Stop-Loss- und Take-Profit-Level festgelegt werden, um dem Trend zu folgen und rechtzeitig Gewinne zu erzielen.
Die Strategie verwendet vor allem EMA und RSI, um langfristige und kurzfristige Trends zu bestimmen. Insbesondere verwendet sie 50-tägige EMA und 200-tägige EMA, um langfristige Trends zu beurteilen, und RSI, um die Trendstärke zu messen. Wenn der langfristige in einem Aufwärtstrend ist (200-tägige EMA steigt) und stark (RSI über 50), und der kurzfristige einen Rückzug sieht (letzte 2 Kerzen schließen niedriger), wird eine Long-Position eingenommen.
Nach dem Eintritt in eine Position setzt die Strategie Stop-Loss- und Take-Profit-Bedingungen. Wenn der Preis mehr als 2x BHD-Einheiten über dem Einstiegspreis steigt, werden Gewinne erzielt. Wenn der Preis mehr als 3x BHD-Einheiten unter dem Einstiegspreis fällt, wird die Position gestoppt. Die BHD-Einheit wird auf der Grundlage der Amplitude der letzten 200 Kerzen berechnet.
Auf diese Weise berücksichtigt die Strategie vollständig die langfristigen und kurzfristigen Trendmerkmale, erhöht den Gewinn und kontrolliert gleichzeitig die Risiken, folgt dem Trend und erzielt rechtzeitig Gewinne.
Die Strategie weist folgende Vorteile auf:
Es berücksichtigt langfristige und kurzfristige Trends in Kombination mit Stärkenindikatoren und vermeidet blinde Markteintritte in unterschiedliche Märkte.
Einträge folgen der Trendrichtung, höhere Gewinnrate.
Profit- und Stop-Loss-Punkte ermöglichen zeitnahe Profit- und Risikokontrolle.
TP und SL sind dynamisch und basieren auf Volatilität.
Backtests zeigen gute Renditen und Stabilität über Symbole und Zeitrahmen hinweg.
Einfache und klare Logik, leicht verständlich und umsetzbar für alle Fähigkeiten.
Die Strategie birgt auch einige Risiken:
Langfristig/kurzfristiges Fehleinschätzung führen zu falschen Eintrittsrichtungen.
Der Markteinbruch, der wie eine Klippe aussieht, kann auch zu einem Stopp führen.
Schlechte Parameter-Einstellungen beeinträchtigen die Leistung.
TP ist zu eng eingestellt, kann vorzeitig aussteigen.
Backtest ≠ Live-Leistung, kontinuierliche Optimierung erforderlich.
Lösungen:
Optimierung der Parameter, Anpassung der Zulassungsfristen, Hinzufügung von Indikatoren für die Quervalidierung.
Weitere Haltestellen, Positionsgrößen, andere Risikokontrollen.
Umfangreiche Backtests zur Bewertung der Parameter.
Dynamische TP-Optimierung basierend auf den Marktbedingungen.
Laufende Backtests, Optimierung, Anpassung.
Die Strategie kann weiter optimiert werden, indem
Parameter-Tuning, MA-Perioden, BHD-Einheitsperioden usw.
Hinzufügen von Indikatoren, MACD, KD usw. für eine bessere kurzfristige Genauigkeit.
Optimierung von TP/SL, dynamische Größe basierend auf Volatilität usw.
Hinzufügen von Positionsgrößen basierend auf der Trendstärke.
Wir testen die Robustheit über mehr Symbole und Zeitrahmen.
Hinzufügen von Filtern wie Schlusskurs > offen, um Fallen zu vermeiden.
Maschinelles Lernen für mehr Automatisierung und Intelligenz.
Diese können die Gewinnrate, die Rendite, die Stabilität, die Anpassungsfähigkeit usw. verbessern.
Insgesamt hat die Take Profit on Trend-Strategie die Vorteile, lange/kurze Trends zu berücksichtigen, Trends zu folgen, klares TP/SL. Es ist ein stabiler und effizienter Trendfollowing-Ansatz. Es gibt jedoch Risiken, die eine kontinuierliche Optimierung und Live-Anpassung erfordern. Die Logik ist klar und einfach umzusetzen. Es lohnt sich zu studieren und für Trader anzuwenden. Mit weiterer Optimierung kann es zu einer robusten Quant-Strategie werden.
/*backtest start: 2023-08-26 00:00:00 end: 2023-09-25 00:00:00 period: 1h 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/ // © BHD_Trade_Bot // @version=5 strategy( shorttitle = 'Take Profit On Trend', title = 'Take Profit On Trend (by BHD_Trade_Bot)', overlay = true, calc_on_every_tick = true, calc_on_order_fills = true, use_bar_magnifier = true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.1) // Backtest Time Period start_year = input(title='Start year' ,defval=2021) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_time = timestamp(start_year, start_month, start_day, 00, 00) end_year = input(title='end year' ,defval=2050) end_month = input(title='end month' ,defval=1) end_day = input(title='end day' ,defval=1) end_time = timestamp(end_year, end_month, end_day, 23, 59) is_back_test_time() => true // EMA ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) // RSI rsi200 = ta.rsi(close, 200) // EMA_CD emacd = ema50 - ema200 emacd_signal = ta.ema(emacd, 50) hist = emacd - emacd_signal // BHD Unit bhd_unit = ta.rma(high - low, 200) * 2 bhd_upper = ema200 + bhd_unit bhd_lower = ema200 - 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 CONDITIONS // Long-term uptrend entry_condition1 = rsi200 > 51 and hist > 0 // Short-term downtrend entry_condition2 = all_body_decrease(2) ENTRY_CONDITIONS = entry_condition1 and entry_condition2 if ENTRY_CONDITIONS and is_back_test_time() strategy.entry('entry', strategy.long) // CLOSE CONDITIONS // Price increase 2 BHD unit take_profit = close > strategy.position_avg_price + bhd_unit * 2 // Price decrease 3 BHD unit stop_loss = close < strategy.position_avg_price - bhd_unit * 3 CLOSE_CONDITIONS = take_profit or stop_loss if CLOSE_CONDITIONS strategy.close('entry') // Draw plot(ema50, color=color.orange, linewidth=2) plot(ema200, color=color.purple, linewidth=2) bhd_upper_line = plot(bhd_upper, color=color.teal) bhd_lower_line = plot(bhd_lower, color=color.teal) fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))