Strategie zur Verfolgung goldener Trends auf der Grundlage regelmäßiger Investitionen

Schriftsteller:ChaoZhang, Datum: 31.10.2023
Tags:

img

Übersicht

Diese Strategie verwendet gleitende Durchschnittsmodelle, um die Markttrendrichtung zu bestimmen.

Strategie Logik

Die Strategie beruht hauptsächlich auf folgenden technischen Grundsätzen:

  1. Wenn die schnelle EMA-Linie die langsame EMA-Linie überquert, wird sie als bullischer Trend beurteilt und bereitet sich darauf vor, Long-Positionen einzugehen.

  2. Wenn der MACD von positiv auf negativ wechselt, zeigt dies an, dass die Kaufkraft zu schwächen beginnt, also ist es Zeit, Long-Positionen einzugehen.

  3. Der Einstieg wird nur einmal im Monat begrenzt, um Höchstwerte zu vermeiden.

  4. Wenn der Backtest endet, wird die Strategie alle Positionen schließen.

Speziell berechnet die Strategie zunächst die schnelle EMA-Linie und die langsame EMA-Linie und erkennt das goldene Kreuz zwischen ihnen, um den Markttrend zu bestimmen. Gleichzeitig berechnet sie den MACD-Indikator, um einen bestimmten Einstiegspunkt zu bestimmen. Wenn beide Kriterien erfüllt sind, wird ein langes Signal generiert. Gemäß der Regel, nur einmal pro Monat einzugeben, werden tatsächliche Einstiegsorders bestimmt. Der Kapitalbetrag für jeden Einstieg kann vordefiniert werden. Wenn der Backtest endet, wird die Strategie alle Positionen aktiv schließen.

Vorteile

Dies ist ein einfacher und direkter Trend nach der Strategie mit den folgenden Vorteilen:

  1. Die Verwendung von EMA-Linien zur Bestimmung des Haupttrends ist einfach und praktisch.

  2. Der MACD-Indikator kann den Wendepunkt relativ genau erkennen, wenn die Kaufkraft zu schwächen beginnt, wodurch die Einträge sicherer werden.

  3. Wenn man sich nur einmal im Monat auf den Aufwärtstrend beschränkt, kann man vermeiden, Höchststände zu verfolgen und den Aufwärtstrend in einem Bullenmarkt zu töten.

  4. Die Möglichkeit, den Eintrittsbetrag monatlich anzupassen, ermöglicht eine flexible Positionsgrößerung.

  5. Backtest kann zur Bewertung der Strategieleistung verwendet werden, indem ein Start- und Enddatum festgelegt wird.

  6. Es schließt alle Positionen automatisch ab, wenn der Backtest endet, und vermeidet unbequeme verbleibende Positionen.

Risiken und Minderungsmaßnahmen

Diese Strategie birgt einige potenzielle Risiken:

  1. Die Trendbestimmung mittels gleitender Durchschnitte kann bei vorübergehenden Rückschlägen Chancen verpassen oder bei einer Trendumkehr langsam reagieren.

  2. Wenn Sie nur einmal im Monat einloggen, können Sie bessere Eintrittsmöglichkeiten verpassen.

  3. Es gibt Risiken für die Kurvenanpassung: Es sollte mehr Raum für die Einstellung von Parametern eingeräumt und die Robustheit über Märkte und Zeitabschnitte hinweg getestet werden.

  4. Es besteht die Gefahr, dass man nach Schwung und Überkauf strebt.

Möglichkeiten zur Verbesserung

Diese regelmäßige Investitionsentwicklung nach der Strategie kann in folgenden Aspekten weiter ausgebaut und verbessert werden:

  1. Fügen Sie Stop-Loss-Logik hinzu, um Verluste aktiv zu reduzieren, wenn ein bärisches Umkehrmuster auftritt.

  2. Erwägen Sie, einen weiteren Kauf hinzuzufügen, wenn das MACD-Histogramm eine bullische Divergenz zeigt, um mehr Exposition gegenüber dem Aufwärtstrend zu erhalten.

  3. Vergleichen Sie die neuen Höchstwerte des laufenden Monats mit denen des vorangegangenen Monats, um die Dynamik zu bewerten.

  4. Hinzufügen von Positionsgrößenlogik. Der monatliche Eintrittsbetrag kann anhand von Prozentsätzen anstelle von festen Werten angepasst werden.

  5. Beurteilen Sie die Auswirkungen verschiedener MA-Kombinationen und MACD-Parameter.

  6. Fügen Sie einen Trailing-Stop-Loss hinzu, der dem Preis in einer bestimmten Entfernung folgt, nachdem er neue Höchststände erreicht hat, so dass Gewinne laufen können.

Zusammenfassung

Diese Strategie stellt einen einfachen und sauberen Trend nach Ansatz mit periodischen Investitionen und gleitenden Durchschnitten dar. Es ist einfach zu verstehen und umzusetzen, dient als guter Ausgangspunkt für das Lernen von algorithmischem Handel.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 00:00:00
period: 1d
basePeriod: 1h
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/
// © runescapeyttanic

//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)

//INPUTS##################################################################################################################

maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)

endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################

fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma

//EMA Distance CALC########################################################################################################

ma1 =ema(close,emalength)
distFromMean = close - ma1

inDateRange = true

longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false

if(longCondition and strategy.position_size == 0)
    strategy.entry("My Long Entry Id", strategy.long)
    longnow:=true

if(longCondition and strategy.position_size > 0)
    longnow:=true
    

if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
    strategy.entry("My Long Entry Id", strategy.long)

plotchar(minute, "Minuten", "", location = location.top)

plotchar(hour, "Stunden", "", location = location.top)    

plotchar(dayofmonth, "Tage", "", location = location.top)

plotchar(month, "Monat", "", location = location.top)

plotchar(year, "Jahr", "", location = location.top)

plotchar(strategy.position_size, "Positionen", "", location = location.top)

plotchar(longCondition, "Long Condition", "", location = location.top)

if true
    strategy.close_all()

//#########################################################################################################################

plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
    1
else
    0
    
plotarrow(series=plotArrow)



Mehr