Regelmäßiges Verfolgen der Strategie des Tiefstdurchschnittspreises


Erstellungsdatum: 2024-01-17 17:57:58 zuletzt geändert: 2024-01-17 17:57:58
Kopie: 4 Klicks: 605
1
konzentrieren Sie sich auf
1617
Anhänger

Regelmäßiges Verfolgen der Strategie des Tiefstdurchschnittspreises

Überblick

Die Hauptidee der Strategie besteht darin, die niedrigen Durchschnittspreise nach dem Ende eines kurzfristigen Rückgangs regelmäßig zu verfolgen. Konkret identifiziert die Strategie am Ende des Monats, wann ein kurzfristiger Rückgang endet, und fügt daher regelmäßig Positionen hinzu. Die Position wird bei der letzten K-Linie abgeschlossen und die Position wird gelöscht.

Strategieprinzip

  1. Regelmäßige Nachverfolgung von Signalen:*Nach 30 K-Linien (ein Monat) wird der erste Signal ausgegeben.
  2. Beurteilung des Endes eines kurzfristigen Rückgangs: Der Trend wird mit dem MACD-Indikator beurteilt. Der kurzfristige Rückgang gilt als beendet, wenn der MACD abweicht und die Signallinie durchbricht.
  3. Eintrittsregel: Freigeben Sie das Tracking-Signal und eröffnen Sie eine Position, wenn sowohl das periodische Tracking-Signal als auch das Endsignal des kurzfristigen Falls erfüllt werden.
  4. Ausstiegsregel: Wenn die letzte K-Linie abgeschlossen ist, wird die Position vollständig aufgelöst.

Das sind die grundlegenden Geschäftsprozesse und Prinzipien der Strategie. Es ist erwähnenswert, dass die Strategie die Fundtracking von 1000 US-Dollar pro Monat als Standard verwendet und im Backtest auf 33 Monate erweitert wird, was insgesamt 33.000 US-Dollar beträgt.

Analyse der Stärken

Der größte Vorteil dieser Strategie liegt in der Möglichkeit, regelmäßig Positionen an niedrigen Niveaus aufzubauen, um langfristig günstigere Kaufkosten zu erzielen und eine höhere Rendite zu erzielen. Die Verwendung des MACD-Indikators zur Identifizierung von kurzfristigen Kaufpunkten ist außerdem zuverlässig und klar und führt nicht zu einer Sackgasse, was auch zu einem gewissen Grad Verluste verhindern kann.

Insgesamt ist dies eine kostengünstige Strategie, die sich besser für die Inhaber von mittleren und langen Linien eignet, die regelmäßig in großen Mengen kaufen, um zufriedenstellende Renditen zu erzielen.

Risiken und Lösungen

Das Hauptrisiko der Strategie besteht darin, dass die Endpunkte für den kurzfristigen Rückgang nicht genau ermittelt werden können. Die MACD-Indikatoren können den Zeitpunkt für das Ende des Rückgangs verzögern, was dazu führt, dass die Kosten nicht optimal eingekauft werden können. Zusätzlich erhöht die Kapitaldifferenzierung die Betriebskosten.

Es kann in Betracht gezogen werden, weitere Indikatoren für Trends, wie Brinline, KDJ usw., einzusetzen, die den Zeitpunkt der Umkehrung vorwegnehmen können. Gleichzeitig kann die Menge der monatlichen Investitionen optimiert werden, um die Auswirkungen der Betriebskosten auf die Erträge zu verringern.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Optimierung der Zeitspanne für die regelmäßige Verfolgung, z. B. Umstellung auf eine regelmäßige Verfolgung alle zwei Monate, um zu häufige Transaktionen zu reduzieren.

  2. In Kombination mit weiteren Indikatoren, die den Zeitpunkt für das Ende eines kurzfristigen Rückgangs bestimmen, wird der Kaufpunkt näher an den Tiefpunkt gebracht.

  3. Das ist eine Optimierung der monatlichen Investitionssumme, um die optimale Konfiguration zu finden.

  4. Versuchen Sie, eine Stop-Loss-Strategie einzubeziehen, um zu verhindern, dass ein zu tiefer Fall zu großen Verlusten führt.

  5. Test der Einwirkung verschiedener Haltungszyklen auf die Erträge, um die optimale Anzahl von Haltungstagen zu finden.

Zusammenfassen

Die Strategie, die regelmäßig die Gesamtkonzepte der Low-Valley-Price-Strategie verfolgt, ist klar und verständlich. Durch die regelmäßige Ergänzung und die Kombination von kurzfristigen Urteilen können günstigere Kostenpreise erzielt werden. Die Strategie bietet einen stabilen Ertrag für Investoren, die nach langfristiger Wertinvestition suchen.

Strategiequellcode
/*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)