Diese Strategie verwendet gleitende Durchschnittsmodelle, um die Markttrendrichtung zu bestimmen.
Die Strategie beruht hauptsächlich auf folgenden technischen Grundsätzen:
Wenn die schnelle EMA-Linie die langsame EMA-Linie überquert, wird sie als bullischer Trend beurteilt und bereitet sich darauf vor, Long-Positionen einzugehen.
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.
Der Einstieg wird nur einmal im Monat begrenzt, um Höchstwerte zu vermeiden.
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.
Dies ist ein einfacher und direkter Trend nach der Strategie mit den folgenden Vorteilen:
Die Verwendung von EMA-Linien zur Bestimmung des Haupttrends ist einfach und praktisch.
Der MACD-Indikator kann den Wendepunkt relativ genau erkennen, wenn die Kaufkraft zu schwächen beginnt, wodurch die Einträge sicherer werden.
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.
Die Möglichkeit, den Eintrittsbetrag monatlich anzupassen, ermöglicht eine flexible Positionsgrößerung.
Backtest kann zur Bewertung der Strategieleistung verwendet werden, indem ein Start- und Enddatum festgelegt wird.
Es schließt alle Positionen automatisch ab, wenn der Backtest endet, und vermeidet unbequeme verbleibende Positionen.
Diese Strategie birgt einige potenzielle Risiken:
Die Trendbestimmung mittels gleitender Durchschnitte kann bei vorübergehenden Rückschlägen Chancen verpassen oder bei einer Trendumkehr langsam reagieren.
Wenn Sie nur einmal im Monat einloggen, können Sie bessere Eintrittsmöglichkeiten verpassen.
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.
Es besteht die Gefahr, dass man nach Schwung und Überkauf strebt.
Diese regelmäßige Investitionsentwicklung nach der Strategie kann in folgenden Aspekten weiter ausgebaut und verbessert werden:
Fügen Sie Stop-Loss-Logik hinzu, um Verluste aktiv zu reduzieren, wenn ein bärisches Umkehrmuster auftritt.
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.
Vergleichen Sie die neuen Höchstwerte des laufenden Monats mit denen des vorangegangenen Monats, um die Dynamik zu bewerten.
Hinzufügen von Positionsgrößenlogik. Der monatliche Eintrittsbetrag kann anhand von Prozentsätzen anstelle von festen Werten angepasst werden.
Beurteilen Sie die Auswirkungen verschiedener MA-Kombinationen und MACD-Parameter.
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.
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)