Die Hauptidee dieser Strategie besteht darin, die niedrigen Durchschnittspreise nach Beendigung von kurzfristigen Rückgängen regelmäßig zu verfolgen, insbesondere das Ende eines kurzfristigen Rückgangs am Ende eines jeden Monats zu identifizieren, um regelmäßig Positionen hinzuzufügen und gleichzeitig Positionen zu löschen, wenn die letzte K-Linie geschlossen wird.
Regelmäßiges Beurteilungssignal: Nach 24*30 K-Linien (die einen Monat darstellen) wird festgestellt, dass der regelmäßige Beurteilungspunkt erreicht ist und das erste Signal ausgegeben wird.
Ende des kurzfristigen Rückgangs: Verwenden Sie den MACD-Indikator, um den Trend zu bestimmen.
Eintrittsregeln: Wenn das reguläre Tracking-Signal und das Ende des kurzfristigen Abwärtstrends gleichzeitig ausgelöst werden, wird ein Tracking-Signal freigegeben und Long-Positionen eröffnet.
Ausgangsregeln: Wenn die letzte K-Linie geschlossen wird, räumen Sie alle Positionen.
Das oben beschriebene ist der grundlegende Handelsfluss und die Grundsätze der Strategie.\(1.000 pro Monat für Backtests, die auf 33 Monate erweitert werden, d.h. eine Gesamtinvestition von \)33,000.
Der größte Vorteil dieser Strategie besteht darin, dass sie regelmäßig Positionen auf niedrigen Niveaus aufbauen kann. Aus langfristiger Sicht kann sie einen relativ erschwinglichen durchschnittlichen Kostenpreis erhalten, um hohe Renditen zu generieren. Darüber hinaus ist die Verwendung des MACD-Indikators zur Identifizierung von kurzfristigen Kaufpunkten auch ziemlich zuverlässig und klar, was zu einem gewissen Grad verhindern kann, dass man in eine Sackgasse gerät, und dies kann auch zu einem gewissen Grad Verluste vermeiden.
Im Allgemeinen handelt es sich um eine Kostendurchschnittsstrategie, die für mittel- und langfristige Inhaber besser geeignet ist, regelmäßig Chargen zu kaufen, um eine zufriedenstellende Rendite zu erzielen.
Das Hauptrisiko der Strategie besteht in der Unfähigkeit, das Ende des kurzfristigen Rückgangs genau zu bestimmen. Das Urteil des MACD-Indikators über das Ende des Rückgangs kann verzögert sein, was dazu führen kann, dass der Einstieg nicht am optimalen Punkt erfolgt. Darüber hinaus erhöht die verteilte Investition von Mitteln auch die Betriebskosten.
Es ist wichtig, dass Sie mehr Indikatoren hinzufügen, um Trends zu bestimmen, z. B. Bollinger Bands, KDJ usw. Diese Indikatoren können den Umkehrzeitpunkt im Voraus vorhersagen. Gleichzeitig kann die Menge der monatlich investierten Mittel optimiert werden, um die Auswirkungen der Betriebskosten auf die Rendite zu reduzieren.
Die Strategie kann in folgenden Richtungen weiter optimiert werden:
Optimieren Sie den regelmäßigen Nachverfolgungszyklus, z. B. alle zwei Monate, um das Problem des übermäßig häufigen Handels zu reduzieren.
Mehr Indikatoren werden eingesetzt, um das Ende eines kurzfristigen Rückgangs zu bestimmen und den Einstiegspunkt näher an den Tiefpunkt zu bringen.
Optimieren Sie den monatlich investierten Betrag, um die optimale Konfiguration zu finden.
Versuchen Sie, Stop-Loss-Strategien einzuführen, um übermäßige Verluste zu vermeiden, wenn die Preise zu tief fallen.
Testen Sie die Auswirkungen verschiedener Haltungszeiten auf die Rendite, um die optimalen Haltungstage zu finden.
Die Gesamtidee dieser Dollar-Kostendurchschnittsverteilung nach einer Abwärtstrendstrategie ist klar und leicht zu verstehen. Durch die Kombination von regelmäßiger Nachfüllung und kurzfristigem Urteil kann ein erschwinglicherer durchschnittlicher Kostpreis erzielt werden. Mittelfristige und langfristige Bestände dieser Strategie können stabile Renditen erzielen und eignen sich für Anleger, die einen langfristigen Anlagewert anstreben. Gleichzeitig gibt es einige Richtungen, die optimiert werden können, um die Strategie weiter zu verbessern, damit ihre Leistung ein Niveau nach oben bewegen kann.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 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 = 'DCA After Downtrend v2', title = 'DCA After Downtrend v2 (by BHD_Trade_Bot)', overlay = true, calc_on_every_tick = false, calc_on_order_fills = false, use_bar_magnifier = false, pyramiding = 1000, initial_capital = 0, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = strategy.commission.percent, commission_value = 1.1) // Backtest Time Period start_year = input(title='Start year' ,defval=2017) 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) window() => time >= start_time and time <= end_time ? true : false h1_last_bar = (math.min(end_time, timenow) - time)/1000/60/60 < 2 // EMA ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) // EMA_CD emacd = ema50 - ema200 emacd_signal = ta.ema(emacd, 20) hist = emacd - emacd_signal // BHD Unit bhd_unit = ta.rma(high - low, 200) * 2 bhd_upper = ema200 + bhd_unit bhd_upper2 = ema200 + bhd_unit * 2 bhd_upper3 = ema200 + bhd_unit * 3 bhd_upper4 = ema200 + bhd_unit * 4 bhd_upper5 = ema200 + bhd_unit * 5 bhd_lower = ema200 - bhd_unit bhd_lower2 = ema200 - bhd_unit * 2 bhd_lower3 = ema200 - bhd_unit * 3 bhd_lower4 = ema200 - bhd_unit * 4 bhd_lower5 = ema200 - bhd_unit * 5 // Count n candles after x long entries var int nPastCandles = 0 var int entryNumber = 0 if window() nPastCandles := nPastCandles + 1 // ENTRY CONDITIONS // 24 * 30 per month entry_condition1 = nPastCandles > entryNumber * 24 * 30 // End of downtrend entry_condition2 = emacd < 0 and hist < 0 and hist > hist[2] ENTRY_CONDITIONS = entry_condition1 and entry_condition2 if ENTRY_CONDITIONS entryNumber := entryNumber + 1 entryId = 'Long ' + str.tostring(entryNumber) strategy.entry(entryId, strategy.long) // CLOSE CONDITIONS // Last bar CLOSE_CONDITIONS = barstate.islast or h1_last_bar if CLOSE_CONDITIONS strategy.close_all() // Draw colorRange(src) => if src > bhd_upper5 color.rgb(255,0,0) else if src > bhd_upper4 color.rgb(255,150,0) else if src > bhd_upper3 color.rgb(255,200,0) else if src > bhd_upper2 color.rgb(100,255,0) else if src > bhd_upper color.rgb(0,255,100) else if src > ema200 color.rgb(0,255,150) else if src > bhd_lower color.rgb(0,200,255) else if src > bhd_lower2 color.rgb(0,150,255) else if src > bhd_lower3 color.rgb(0,100,255) else if src > bhd_lower4 color.rgb(0,50,255) else color.rgb(0,0,255) bhd_upper_line = plot(bhd_upper, color=color.new(color.teal, 90)) bhd_upper_line2 = plot(bhd_upper2, color=color.new(color.teal, 90)) bhd_upper_line3 = plot(bhd_upper3, color=color.new(color.teal, 90)) bhd_upper_line4 = plot(bhd_upper4, color=color.new(color.teal, 90)) bhd_upper_line5 = plot(bhd_upper5, color=color.new(color.teal, 90)) bhd_lower_line = plot(bhd_lower, color=color.new(color.teal, 90)) bhd_lower_line2 = plot(bhd_lower2, color=color.new(color.teal, 90)) bhd_lower_line3 = plot(bhd_lower3, color=color.new(color.teal, 90)) bhd_lower_line4 = plot(bhd_lower4, color=color.new(color.teal, 90)) bhd_lower_line5 = plot(bhd_lower5, color=color.new(color.teal, 90)) // fill(bhd_upper_line5, bhd_lower_line5, color=color.new(color.teal, 95)) plot(ema50, color=color.orange, linewidth=3) plot(ema200, color=color.teal, linewidth=3) plot(close, color=color.teal, linewidth=1) plot(close, color=colorRange(close), linewidth=3, style=plot.style_circles)