Die Strategie nutzt die Gold-Cross- und Dead-Fork-Prinzipien eines einfachen Moving Averages, um eine Long-Shoring-Position zu realisieren. Wenn die Fast-Line von unten die Slow-Line durchbricht, machen Sie mehr; wenn die Fast-Line von oben nach unten die Slow-Line durchbricht, machen Sie weniger.
Die Strategie definiert zunächst die Start- und Endzeit der Rückmessung und setzt dann die Berechnungsparameter für die beiden Mittelwerte ein, einschließlich der Mittelwertart und der Periodenlänge.
Berechnen Sie die Werte der beiden Mittelwerte mit der Funktion getMAType ((). FastMA ist der Kurz- und SlowMA der Langzeit-Mittelwert.
Die Kernlogik der Strategie lautet:
Wenn fastMA auf slowMA übertragen wird, wird ein Mehrsignal lang ausgesendet;
Wenn ein schneller MA unter einem langsameren MA liegt, wird ein Short-Signal ausgesendet.
Schließlich wird in der Rückmessphase eine Long-Position-Strategie bei einem Mehr-Signal und eine Leer-Position-Strategie bei einem Leer-Signal angewendet.
Die Optimierung von Risiken kann weiter vorangetrieben werden durch:
Das Programm wurde in den letzten Jahren von der Regierung der Vereinigten Staaten von Amerika unterstützt.
Erhöhung der Stop-Loss-Strategie und Kontrolle von Einmalverlusten.
Die Einführung von Quantitätsindikatoren und ähnlichem, um Schwankungen auf den Märkten zu vermeiden.
Ein Parameter-Optimierungsmechanismus, der automatisch die optimale Parameterkombination sucht.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Erhöhung der Stop-Loss-Strategie, z. B. durch Festlegung eines festen Stop-Loss-Punktes oder durch Verfolgung von Stop-Losses.
Steigerung der Strategie zur Positionsverwaltung, wie z. B. Fixed Positions, Dynamic Positions und die Kontrolle des Handelsrisikos.
Die Einführung von Filtern, die in Kombination mit anderen technischen Indikatoren Trends erkennen, erhöht die Gewinnquote.
Optimieren Sie die Parameter-Einstellungen und suchen Sie nach den optimalen Parametern durch eine Gittersuche, eine lineare Regression usw.
Erweitern Sie die Strategie, mehr Devisen zu tätigen, wie z. B. Breakout-Umkehrungen, Lagerstücksbau in Chargen usw., um den Handel zu bereichern.
Die Zunahme der Energiemesswerte verhindert, dass sie bei Erschütterungen eingeschlossen werden.
Die Handelsvariante wurde erweitert und umfasst Aktienindex-Futures, Devisen und digitale Währungen.
Diese Strategie basiert auf dem Kreuzungsprinzip des Moving Averages, um die Auswahl von Aktien zu realisieren. Die Strategie ist einfach, klar, breit verbreitet, anpassungsfähig und hat einen gewissen praktischen Wert. Die Strategie hat jedoch auch eine gewisse Verzögerung und kann keine wirksamen Schwingungen filtern. In Zukunft kann die Strategie optimiert werden, indem sie die Stop-Loss-Parameter verbessert, optimiert und Filter hinzugefügt wird.
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//strategy("Golden X BF Strategy", 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(2010, "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
///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)
source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)
///////////// 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)
res
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)
long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)
/////////////// Plotting ///////////////
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)
/////////////// Execution ///////////////
if testPeriod()
strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)