Die Ressourcen sind geladen. Beförderung...

Strategie für eine doppelte Kreuzung von gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2024-05-17 15:48:04 Uhr
Tags:EMASMA

img

Übersicht

Strategieprinzip

Der Kern dieser Strategie besteht darin, die Trendmerkmale gleitender Durchschnitte und Crossover-Signale zu verwenden, um die Trendrichtung und den Eintrittszeitpunkt zu bestimmen. Zuerst setzen Sie die Perioden des schnellen gleitenden Durchschnitts (Standard 50) und des langsamen gleitenden Durchschnitts (Standard 200) durch Parameter und wählen Sie SMA oder EMA. Berechnen Sie dann die beiden gleitenden Durchschnitte und bestimmen Sie ihre Crossover-Situationen:

  1. Wenn der schnelle gleitende Durchschnitt den langsam gleitenden Durchschnitt überschreitet (goldenes Kreuz), öffnen Sie eine Longposition, wenn keine aktuelle Position besteht, und setzen Sie den Stop-Loss-Preis (berechnet auf der Grundlage des Stop-Loss-Prozentsatzes).
  2. Wenn der schnelle gleitende Durchschnitt unter den langsam gleitenden Durchschnitt fällt (Todskreuzung), öffnen Sie eine Shortposition, wenn keine aktuelle Position besteht, und setzen Sie den Stop-Loss-Preis.

Strategische Vorteile

  1. Die Logik ist einfach und klar, leicht verständlich und umsetzbar und bildet die Grundlage für Trendstrategie.
  2. Es unterstützt sowohl SMA als auch EMA, die flexibel ausgewählt werden können.
  3. Die Einstellung von Stop-Loss kontrolliert das Verlustrisiko bis zu einem gewissen Grad.
  4. Geeignet für die Erfassung von mittelfristigen und langfristigen Trends.

Strategische Risiken

  1. Eine unsachgemäße Parameterwahl (z. B. unangemessene gleitende Durchschnittsperioden) kann zu häufigen Signalen oder zu einer verzögerten Trendbeurteilung führen.
  2. Schnelle Schwankungen der Märkte können zu häufigem Handel und schlechter Performance führen.
  3. Wenn sich der Trend umkehrt oder endet, kann es zu größeren Abzügen kommen.
  4. Ein festes Prozentsatz-Stop-Loss kann die Risiken nicht gut kontrollieren.

Strategieoptimierungsrichtlinien

  1. Optimierung von Parametern, einschließlich gleitender Durchschnittsperioden, Stop-Loss-Prozentsatz usw., um Stabilität und Risiko-Rendite-Verhältnis zu verbessern.
  2. Bestätigen Sie den Trend, bevor Sie eine Position eröffnen, anstatt ihn bei der Überschneidung sofort zu eröffnen, oder fügen Sie andere Trendbestätigungsindikatoren hinzu, um das Urteilen zu unterstützen und die Genauigkeit der Trendfassung zu verbessern.
  3. Kann durch Geldmanagementstrategien wie das Hinzufügen oder Verringern von Positionen verbessert werden.

Zusammenfassung


/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)

//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length") 
maSlowLength  = input(200, title="Quick MA Length") 
useSma        = input(true, title="Use SMA? If false, EMA is used.")

maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow  = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)

stop_loss_percentage = input(2.0, title="Stop Loss (%)")

var float longStopLevel = na
var float shortStopLevel = na

bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross  = ta.crossunder(maQuick, maSlow)

//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------

if(strategy.position_size == 0)
    // Golden cross, enter a long position
    if(isGoldenCross)
        strategy.entry("Buy", strategy.long)
        longStopLevel := close - close * stop_loss_percentage/100.0
        strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
    // Death cross, enter short position
    else if(isDeathCross)
        strategy.entry("Sell", strategy.short)
        shortStopLevel := close + close * stop_loss_percentage/100.0
        strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)

//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
    // Close long position on death cross
    if(strategy.position_size > 0 and isDeathCross)
        strategy.close("Buy")
    
    // Close short position on golden cross
    else if(strategy.position_size < 0 and isGoldenCross)
        strategy.close("Sell")

//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)

Verwandt

Mehr