Doppelte EMA-Crossover-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-17 13:56:54
Tags:

img

Übersicht

Diese Strategie verwendet das goldene Kreuz und das Todeskreuz von doppelten EMA-Linien, um den Ein- und Ausstiegszeitpunkt zu bestimmen. Insbesondere, wenn die schnelle EMA-Linie über die langsame EMA-Linie von unten kreuzt, wird ein goldenes Kreuzsignal für den langen Eintritt erzeugt. Wenn die schnelle EMA-Linie unter die langsame EMA-Linie von oben kreuzt, wird ein Todeskreuzsignal für den kurzen Eintritt erzeugt. Diese Strategie ist einfach und einfach zu implementieren und ist eine sehr verbreitete Handelsstrategie.

Strategie Logik

Der Kerncode dieser Strategie lautet:

fast = input(25, title="Fast")
slow = input(75, title="Slow") 

matype1=ema(source, fast)
matype2=ema(source, slow)

longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2) 

if (longCondition)
    strategy.entry("Long", strategy.long)
     
if (shortCondition)
    strategy.entry("Short", strategy.short) 

Diese Strategie setzt zunächst zwei EMA-Linien, wobei die schnelle EMA-Periode 25 und die langsame EMA-Periode 75 beträgt. Sie berechnet dann die Werte der beiden EMA-Linien. Wenn die schnelle EMA über die langsame EMA überschreitet, wird die LongCondition wahr. Wenn die schnelle EMA unter die langsame EMA überschreitet, wird die ShortCondition wahr. Wenn die entsprechenden Bedingungen wahr sind, geht sie lang oder kurz.

Diese Strategie nutzt das Glättungsmerkmal der EMA, um Marktlärm zu filtern und gleichzeitig Trendänderungen schnell zu erfassen.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Logik ist einfach und intuitiv, leicht zu verstehen und umzusetzen.

  2. Die EMA gleicht die Marktschwankungen aus und filtert falsche Signale effektiv aus.

  3. Goldenes Kreuz und Todeskreuz sind starke Handelssignale zur Risikokontrolle.

  4. Flexible EMA-Perioden eignen sich für verschiedene Marktbedingungen.

  5. Einfach mit anderen technischen Indikatoren zu kombinieren.

  6. Die EMA-Parameter können für bessere Ergebnisse optimiert werden.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Häufige unwirksame Signale auf den Märkten mit Bandbreite, da die EMA häufig kreuzt.

  2. Eine Verzögerung der EMA kann kurzfristige Chancen verpassen.

  3. Allein die EMA-Crossover können keine Trendumkehr erkennen, was das Gewinnpotenzial einschränkt.

  4. Festgelegte EMA-Perioden können sich nicht an Marktveränderungen anpassen.

  5. Erfordert erhebliches Kapital, sonst erhöht sich das Risiko.

  6. Benötigt strengen Stop-Loss, sonst kann ein einzelner Verlust riesig sein.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung von EMA-Perioden für unterschiedliche Marktbedingungen.

  2. Fügen Sie weitere Filter wie MACD, Bollinger Bands hinzu, um die Signalqualität zu verbessern.

  3. Hinzufügen von Trendbeurteilungsindikatoren wie ATR, ADX, um ineffektive Trades zu reduzieren.

  4. Einbeziehung einer mehrjährigen Analyse zur Bestimmung der Trendrichtung.

  5. Maschinelles Lernen zur dynamischen Optimierung von EMA-Perioden.

  6. Optimieren Sie die Positionsgröße, um das Risiko zu kontrollieren.

  7. Optimieren Sie Stop-Loss-Strategien, um Einzelverluste zu begrenzen.

Zusammenfassung

Diese Strategie verwendet ein doppeltes EMA-Goldkreuz und ein Todeskreuz als Handelssignale und bildet eine klassische Trendfolgestrategie. Sie ist einfach und einfach zu implementieren und kann mit anderen Indikatoren kombiniert werden und eignet sich für Anleger mit relativ niedrigen Anforderungen an das Trendurteil. Sie hat aber auch Gewinnlimits und Risiken, die eine angemessene Optimierung für verschiedene Marktumgebungen erfordern. Insgesamt bietet sie eine ausgezeichnete Grundlage für die Strategieentwicklung und tiefgreifende Forschung.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
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/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars

//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)

matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
 
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12) 
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

fast = input(25, title="Fast")
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)


signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow) 



hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
 

longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
    strategy.entry("Short", strategy.short)
    

//--------------------------------------------------------

//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)

vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open

volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open

cold1=#800000
cold2=#FF0000
cold3=color.orange

colu1=#006400
colu2=color.lime
colu3=#7FFFD4

ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na

barcolor(ac)

Mehr