Exponentieller gleitender Durchschnitt kombiniert mit Trailing Stop Loss und prozentualem Stop Loss Aktien-Quantitative-Trading-Strategie


Erstellungsdatum: 2024-01-03 16:25:54 zuletzt geändert: 2024-01-03 16:25:54
Kopie: 0 Klicks: 699
1
konzentrieren Sie sich auf
1621
Anhänger

Exponentieller gleitender Durchschnitt kombiniert mit Trailing Stop Loss und prozentualem Stop Loss Aktien-Quantitative-Trading-Strategie

Überblick

Der Kern dieser Strategie besteht darin, den Index-Gleichlauf-Moving Average als Kauf- und Verkaufssignal zu verwenden, um Gewinne zu sichern und Risiken zu kontrollieren. Die Strategie ist einfach umsetzbar und eignet sich für den quantitativen Handel mit Aktien und anderen Finanzprodukten.

Strategieprinzip

  1. Berechnung der schnellen EMA und der langsamen EMA, wobei die schnellen EMA 20 Tage und die langsamen EMA 50 Tage dauern. Bei Durchschreiten der langsamen EMA über der schnellen EMA wird ein Kaufsignal erzeugt; bei Durchschreiten der langsamen EMA unter der schnellen EMA wird ein Verkaufssignal erzeugt.

  2. Nach der Eintrittsstoppung wird der Prozentsatz für die Mehrpositionsstoppung und den Prozentsatz für die Leerpositionsstoppung entsprechend der Positionshaltung festgelegt, z. B. 7%. Die Nachschubstoppung wird automatisch für jede K-Linie angepasst, um die maximal möglichen Gewinne zu blockieren.

  3. Gleichzeitig wird ein Stop-Loss-Position eingestellt, wobei der Prozentsatz der Mehrpositions-Stop-Loss- und der Leerpositions-Stop-Loss-Preise je nach Positionshaltung und Einstiegspreis festgelegt wird, z. B. 2%. Die Stop-Loss-Position wird festgehalten, um zu große Verluste zu verhindern.

  4. Vergleichen Sie den Stop-Loss-Preis mit dem Stop-Loss-Preis und wählen Sie den Stop-Loss-Standort, der dem Marktpreis näher liegt, und senden Sie einen Stop-Loss-Brief aus.

Strategische Vorteile

  1. Die Signale für Moving Averages sind einfach zu verstehen und zu implementieren.

  2. Der Stop-Loss-Follow-Mechanismus maximiert die Gewinne und verhindert unnötige Verluste durch Fehlentscheidungen.

  3. Der Stop-Loss-Prozentsatz ist intuitiv anpassbar und ermöglicht die Kontrolle des maximalen Verlustes pro Transaktion.

  4. In Kombination mit Folge-Stopp und Fix-Stopp werden Gewinne gesperrt und Risiken kontrolliert.

Risiken und Gegenmaßnahmen

  1. Bewegliche Durchschnittsstrategien erzeugen leicht Falschsignale und führen zu urther starken Filterbedingungen.

  2. Die Schleppschwelle wird manchmal zu früh eingestellt, und die Schleppschwelle wird entsprechend gelockert.

  3. Die Einstellung der Fixed Stop-Loss-Position ist möglicherweise zu radikal oder konservativ, um die Prozentsatzparameter anzupassen.

  4. Ein mechanischer Stop-Loss kann die Möglichkeit einer Marktumkehr verpassen und kann in Kombination mit technischen Indikatoren als Stop-Loss beurteilt werden.

Optimierung

  1. Versuche EMA-Kombinationen mit verschiedenen Parametern, um die optimale Balance zu finden.

  2. Hinzugefügt sind auch andere Kennzahlen wie die Anzahl der Transaktionen, die die falschen Signale filtern.

  3. Test mehr Aktien und finde die geeignete Stop-Loss-Parameter.

  4. Versuchen Sie, einen mobilen Stop-Loss hinzuzufügen, der die Stop-Position an den Markt anpasst.

  5. Die Stop-Loss-Zeit wird in Kombination mit Indikatoren wie dem RSI beurteilt.

Zusammenfassen

Die Strategie integriert Moving Average Trading Signal, Trailing Stop Loss und Prozentsatz Stop Loss, kann durch Parameteroptimierung für eine Vielzahl von Aktien und Waren angewendet werden, um stabile Gewinne zu erzielen und gleichzeitig das Risiko streng zu kontrollieren. Es lohnt sich, die Praktiken von Händlern zu studieren und ständig zu optimieren.

Strategiequellcode
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 10m
basePeriod: 1m
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/
// © wouterpruym1828

//@version=5
strategy(title=" Combining Trailing Stop and Stop loss (% of instrument price)",
     overlay=true, pyramiding=1, shorttitle="TSL&SL%")

//INDICATOR SECTION

// Indicator Input options+
i_FastEMA = input.int(title = "Fast EMA period", minval = 0, defval = 20)
i_SlowEMA = input.int(title = "Slow EMA period", minval = 0, defval = 50)
     
// Calculate moving averages
fastEMA = ta.ema(close, i_FastEMA)
slowEMA = ta.ema(close, i_SlowEMA)

// Plot moving averages
plot(fastEMA, title="Fast SMA", color=color.blue)
plot(slowEMA, title="Slow SMA", color=color.orange)




//STRATEGY SECTION  

// Calculate trading conditions
buy  = ta.crossover(fastEMA, slowEMA)
sell = ta.crossunder(fastEMA, slowEMA)

// STEP 1:
// Configure trail stop loss level with input options (optional)

longTrailPerc = input.float(title="Long Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01

shortTrailPerc = input.float(title="Short Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01

//Configure stop loss level with input options (optional)

longStopPerc = input.float(title="Long Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01

shortStopPerc = input.float(title="Short Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01


// STEP 2:
// Determine trail stop loss prices
longTrailPrice = 0.0, shortTrailPrice = 0.0

longTrailPrice := if (strategy.position_size > 0)
    stopValue = high * (1 - longTrailPerc)
    math.max(stopValue, longTrailPrice[1])
else
    0

shortTrailPrice := if (strategy.position_size < 0)
    stopValue = low * (1 + shortTrailPerc)
    math.min(stopValue, shortTrailPrice[1])
else
    999999

// Determine stop loss prices
entryPrice = 0.0

entryPrice := strategy.opentrades.entry_price(strategy.opentrades - 1)


longLossPrice = entryPrice * (1 - longStopPerc)

shortLossPrice = entryPrice * (1 + shortStopPerc)


// Plot stop loss values for confirmation

plot(series=(strategy.position_size > 0) ? longTrailPrice : na,
     color=color.fuchsia, style=plot.style_cross,
     linewidth=2, title="Long Trail Stop")
plot(series=(strategy.position_size < 0) ? shortTrailPrice : na,
     color=color.fuchsia, style=plot.style_cross,
     linewidth=2, title="Short Trail Stop")

plot(series=(strategy.position_size > 0) ? longLossPrice : na,
     color=color.olive, style=plot.style_cross,
     linewidth=2, title="Long Stop Loss")
plot(series=(strategy.position_size < 0) ? shortLossPrice : na,
     color=color.olive, style=plot.style_cross,
     linewidth=2, title="Short Stop Loss")

// Submit entry orders
if (buy)
    strategy.entry("Buy", strategy.long)

if (sell)
    strategy.entry("Sell", strategy.short)


//Evaluating trailing stop or stop loss to use

longStopPrice = longTrailPrice < longLossPrice ? longLossPrice : longTrailPrice

shortStopPrice = shortTrailPrice > shortLossPrice ? shortLossPrice : shortTrailPrice

// STEP 3:
// Submit exit orders for stop price

if (strategy.position_size > 0)
    strategy.exit(id="Buy Stop", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="Sell Stop", stop=shortStopPrice)