
Dieser Artikel behandelt eine Handelsstrategie, die auf einfachen Moving Averages basiert. Die Strategie verwendet einen Moving Average mit einer Länge von 17 und vergleicht ihn mit dem Schlusskurs.
Die Strategie berechnet den Moving Average anhand der folgenden Parameter:
Auf Basis dieser Parameter wird die getMAType () -Funktion verwendet, um den 17-Zyklus-SMA zu berechnen.
Dann vergleichen Sie die Relation zwischen dem Schlusskurs und dem Moving Average:
Wenn der Schlusskurs den Moving Average von unten durchbricht, erzeugt er ein Mehr-Signal; wenn er von oben nach unten durchbricht, erzeugt er ein Fehlsignal.
In der Rückmessphase wird bei mehr als einem Signal mehr als eine Position eröffnet und bei weniger als einem Signal eine Position geöffnet.
Der größte Vorteil dieser Strategie besteht darin, dass die Idee sehr einfach und klar ist. Es ist nur ein Indikator, der die Trendwende anhand seiner Richtungsänderung beurteilt. Die Strategie ist leicht zu verstehen, leicht umzusetzen und für Anfänger geeignet.
Außerdem ist ein Moving Average ein Trend-Tracking-Indikator, der Trendwechsel effektiv verfolgt, ohne von kurzfristigen Marktgeräuschen gestört zu werden.
Durch die Anpassung der Parameter kann sie an unterschiedliche Perioden und Sorten angepasst werden.
Erstens basiert die Strategie auf einem einzigen Indikator, der als einmaliger Kriterium gilt und möglicherweise mehr Fehlsignale erzeugt.
Außerdem ist diese Strategie ein Trend-Tracking-System, das nicht in einem konsolidierten und wackligen Markt funktionieren kann.
Darüber hinaus besteht die Gefahr einer Vergrößerung der Verluste, da keine Stop-Loss-Stop-Schaltfläche eingerichtet wurde.
Die Lösung besteht darin, andere Kennzahlen zu kombinieren, die Kombination von Parametern zu optimieren und Fehlsignale zu reduzieren. Ein Stop-Loss-Stopp wird eingestellt, das Risiko wird kontrolliert und die Rücknahme optimiert.
Die folgenden Aspekte können als Ideen zur Optimierung der Strategie dienen:
Anpassung der Moving Average-Parameter, Optimierung der Anzahl der Zyklen, z. B. 30 oder 50 Zyklen.
Versuchen Sie mit verschiedenen Arten von Moving Averages, wie EMA, VIDA, etc. Sie sind unterschiedlich empfindlich auf Preisänderungen.
Hinzufügen von Kombinationen mit anderen Indikatoren, z. B. in Kombination mit dem MACD, um eine starke oder schwache Position zu bestimmen, oder in Kombination mit dem RSI, um falsche Signale zu reduzieren.
Erhöhung der Stop-Loss-Mechanismen. Festlegung eines mobilen Stop-Losses in Form eines festen Prozentsatzes oder eines ATR-Wertes. Kontrolle von Einzelschäden.
Erhöhung der Stop-Loss-Mechanismen. Festlegung von Ziel-Profit-Prozentsätzen. Maximierung der Profite.
Diese Optimierungen ermöglichen eine stabilere Strategie und verhindern eine übermäßige Rücknahme.
Dieser Artikel analysiert eine einfache Handelsstrategie, die auf einem 17-Perioden-Moving Average basiert. Die Strategie-Signalquelle ist einfach, leicht zu verstehen und zu implementieren, gehört zu den typischen Trend-Tracking-Systemen. Durch eine eingehende Interpretation der Strategie werden ihre Vorteile und Risiken analysiert und eine mehrdimensionale Optimierungskonzeption gegeben.
/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Simple 17 BF 🚀", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)
/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
///////////// Moving Average /////////////
source = input(title="MA Source", defval=ohlc4)
maType = input(title="MA Type", defval="sma", options=["sma", "ema", "swma", "wma", "vwma", "rma"])
length = input(title="MA Length", defval=17)
///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) =>
res = sma(close, 1)
if maType == "ema"
res := ema(sourceType, maLen)
if maType == "sma"
res := sma(sourceType, maLen)
if maType == "swma"
res := swma(sourceType)
if maType == "wma"
res := wma(sourceType, maLen)
if maType == "vwma"
res := vwma(sourceType, maLen)
if maType == "rma"
res := rma(sourceType, maLen)
res
MA = getMAType(maType, source, length)
/////////////// Strategy ///////////////
long = close > MA
short = close < MA
last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
/////////////// Execution ///////////////
if testPeriod()
strategy.entry("L", strategy.long, when=long_signal)
strategy.entry("S", strategy.short, when=short_signal)
/////////////// Plotting ///////////////
p1 = plot(MA, color = long ? color.lime : color.red, linewidth=2)
p2 = plot(close, linewidth=2)
fill(p1, p2, color=strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)