Handelsstrategie für gleitende Durchschnitte und Stochastische Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-02 10:48:37
Tags:

img

Übersicht

Diese Strategie kombiniert gleitende Durchschnitte und den stochastischen Oszillator, um ein automatisiertes Aktienhandelssystem zu implementieren. Sie verwendet zwei gleitende Durchschnitte unterschiedlicher Länge und den stochastischen Indikator, um Trend- und Überkauf-/Überverkaufssignale zu erfassen, und trifft Kauf- und Verkaufsentscheidungen auf der Grundlage der Trendrichtung und Indikatorsignale in Überkauf-/Überkaufsregionen.

Strategie Logik

1. gleitende Durchschnitte

Ein schneller Linie (5-Tage) und eine langsame Linie (20-Tage) gleitender Durchschnitt werden verwendet. Die schnelle Linie, die über die langsame Linie kreuzt, ist ein Kaufsignal, während die Kreuzung darunter ein Verkaufssignal ist. Die gleitenden Durchschnitte bestimmen den Preistrend und die Richtung.

2. Stochastischer Oszillator

Die Stochastischen Parameter werden auf: K-Linieperiode von 14, K-Linie glatte Periode von 3, D-Linie glatte Periode von 3 festgelegt. Unter 20 auf der K-Linie ist die Überverkaufsregion, während über 80 die Überkaufsregion ist. Der Stochastische Oszillator bestimmt, ob er sich in Überkauf/Überkaufsregionen befindet.

3. Eintrittsregeln

Kaufbedingung: Schnelle MA-Kreuzung über langsame MA- und K-Linie <20 (Überverkaufsregion) Verkaufsbedingung: Schnelle MA-Kreuzung unter der langsamen MA- und K-Linie > 80 (überkaufte Region)

Gehen Sie lang, wenn die Kaufbedingung erfüllt ist; gehen Sie kurz, wenn die Verkaufsbedingung erfüllt ist.

4. Stop-Loss-Einstellungen

Setzen Sie 1% Gewinnziel nach dem Kauf; setzen Sie 1% Stop-Loss nach dem Verkauf.

Analyse der Vorteile

Diese Strategie kombiniert Trend und Indikatoren, um mittelfristige bis langfristige Preistrends effektiv zu erfassen, während der Stochastische Oszillator verwendet wird, um den Timing der Trades zu steuern und zu vermeiden, dass zufällige Einträge ohne klare Richtungsverzerrung erfolgen.

Risiken und Lösungen

  • Bei Preisspitzen aufgrund bedeutender Nachrichten kann es zu großen Verlusten kommen.

  • Nachhaltige Märkte mit begrenztem Bereich können zu aufeinanderfolgenden kleinen Verlusten führen.

  • Vermeiden Sie wichtige Marktzeiten, in denen die Preise tendenziell umkehren.

Optimierung

  • Versuche verschiedene Parameterkombinationen, um optimale Parameter zu finden, z. B. verschiedene MA-Längen.

  • Einbeziehen Sie andere Analysewerkzeuge wie Volumen, Volatilität für Filterbedingungen, um die Gewinnrate zu verbessern.

  • Untersuchen Sie Aktienwahlmechanismen, wie die Auswahl starker Aktien oder cap-gewichteter Indizes, um einzelne Aktienrisiken zu reduzieren.

Schlussfolgerung

Die Gesamtstrategie funktioniert reibungslos. Mit Stop-Losses und Gewinnzielen ist das Gesamtgewinn/Verlust-Profil solide. Weitere Verbesserungen können durch Parameter-Tuning und Stockpool-Filterung erwartet werden. Im Allgemeinen ist dies eine einfach umsetzbare und robuste quantitative Handelsstrategie.


/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Mehr