Diese Strategie basiert auf der Strategie von SoftKill21 “Amazing scalper for majors with risk management” und wurde modifiziert, um die Verzögerung zu verringern. Die Strategie ist für den 1-Minuten-Zyklus der wichtigsten Währungspaare geeignet und verwendet eine Trend-Tracking-Methode, um Gold-Cross- und Dead-Cross-Operationen auf Basis von schnellen EMAs, Standard-EMA und langsamen EMAs zu kaufen und zu verkaufen.
Die Strategie verwendet Index-Moving Averages aus drei verschiedenen Perioden: 25 Zyklen schnelle EMA, 50 Zyklen Standard EMA und 100 Zyklen langsame EMA. Wenn die schnelle EMA die Standard EMA und die langsame EMA überschreitet, erzeugt sie ein Kaufsignal. Wenn die schnelle EMA die Standard EMA und die langsame EMA überschreitet, erzeugt sie ein Verkaufssignal.
Konkret berechnet die Strategie zunächst drei EMA-Linien und entscheidet dann, ob ein schneller EMA eine Goldkreuzung oder -verspaltung mit einem Standard-EMA und einem langsamen EMA bildet, wodurch ein Kauf- oder Verkaufssignal erzeugt wird, wenn gleichzeitig die Bedingungen erfüllt werden, die mit den Öffnungszeiten in London oder New York übereinstimmen. Um die Positionsgröße zu bestimmen, berechnet die Strategie zunächst einen festen Prozentsatz der Kontogewinn als Risiko-Schnittstelle und wandelt ihn dann in die Anzahl der Kontrakte und die Standard-Uhr um, um die Positionen für jede Bestellung dynamisch anzupassen.
Diese Strategie hat folgende Vorteile:
Die Verwendung von dreifachen EMAs ermöglicht die effektive Ausgleichen von Preisdaten und die Identifizierung der Trendrichtung. Schnelle EMAs sind auf Preisänderungen empfindlich, Standard EMAs sind stabil verfolgt und langsame EMAs filtern Geräusche. Die Verwendung von dreien zusammen ermöglicht die Filterung falscher Durchbrüche und die Bestimmung der Trendrichtung.
Die Anwendung der Sekundär-Index-Gleichungstechnik berechnet die EMA, reduziert die Verzögerung und macht die Signale empfindlicher.
In Verbindung mit den Haupthandelszeiten verhindert man, dass falsche Signale während der Nicht-Haupthandelszeiten erscheinen.
Risikomanagement-Prinzipien werden angewendet, um die Positionen nach den Interessen des Kontos anzupassen. Vermeiden Sie, dass ein einzelner Verlust zu große Auswirkungen auf das Konto hat.
Die Strategie ist einfach, klar, leicht zu verstehen und für Anfänger geeignet.
Optimierte Anpassung an unterschiedliche Währungspaare und Zeiträume, breite Anwendung.
Die Strategie birgt auch einige mögliche Risiken:
Die EMA ist nicht in der Lage, kurzfristige Falschmeldungen, die durch Überraschungen verursacht werden, effektiv zu filtern, was zu falschen Signalen führen kann. Es wird empfohlen, die Filterung in Kombination mit anderen Indikatoren zu analysieren.
Bei einer festgelegten prozentualen Position ist es unmöglich, die Marktfluktuation dynamisch anzupassen, wenn die Position zu groß oder zu klein ist. Die Einführung von Indikatoren wie der Volatilität kann in Betracht gezogen werden.
Wenn man nur zwei Haupthandelszeiten berücksichtigt, kann man die Handelschancen in anderen Zeiten verpassen. Man kann die Wirkung der verschiedenen Zeiten testen.
Es gibt keine Stop-Loss-Mechanismen, die einseitige Verluste nicht effektiv kontrollieren können. Es kann eine mobile Stop-Loss oder eine zeitliche Stop-Loss eingestellt werden.
Die EMA-Kreuzung hat eine gewisse Verzögerung und kann den besten Einstiegsmoment verpassen. Es kann in Erwägung gezogen werden, die EMA-Zyklus zu reduzieren oder mit anderen Vorläuferindikatoren zu kombinieren.
Die Effektivität kann von den Transaktionskosten beeinflusst werden. Es wird empfohlen, die Stop-Loss- und Stop-Stop-Positionen entsprechend anzupassen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Verschiedene EMA-Zyklusparameter testen, um die optimale Kombination von Parametern zu finden. Technologien wie Adaptive EMA und dynamische Optimierung von EMA-Zyklen können eingeführt werden.
Hinzufügen von anderen Filterindikatoren wie RSI, Brin-Band usw., um die Qualität des Signals zu verbessern.
Einführung eines dynamischen Positionsmanagementmechanismus, der die Positionen entsprechend der Marktvolatilität und der Ertragslage anpasst.
Um die Verluste zu begrenzen, werden die Bewegungs- und Zeitstopps hinzugefügt. Die Stop-Points werden entsprechend angepasst.
Test verschiedene Handelszeiten, um die beste Zeit zu finden. Sie können die Zeiten mit Indikatoren wie der Volatilität kombinieren, um zu filtern.
Optimierung der Stop-Loss-Ebene, Ausgleich der Gewinngröße und der Gewinnrate. Einführung von intelligenten Stop-Losses wie Parallax-Linien-Stopp.
Versuchen Sie, die EMA-Berechnungsmethode zu verbessern, z. B. mit einer linearen Gewichtung der EMA, um den Rückstand zu verringern.
Die Optimierung der Parameter in Kombination mit automatisierten Methoden des maschinellen Lernens.
Modellierung der Transaktionskosten und Anpassung des Systems zur Maximierung der Nettoerträge.
Durch diese Optimierung kann die Systemprofitabilität erhöht, Rückzug kontrolliert und die Anwendungsbereiche erweitert werden, was zu einer stärkeren und stabileren Handelsstrategie führt.
Die Strategie ist ein klares Gesamtkonzept, die Verwendung von dreifachen EMA Trends zu identifizieren, mit den wichtigsten Handelszeiten für den Betrieb, und die Verwendung von Konten-Ratio Position zu bestimmen, gehört zu den typischen Trend-Tracking-Strategie. Die Strategie Optimierung Raum ist groß, durch Parameter-Optimierung, Mechanismus-Verbesserungen, Technologie-Einführung und andere Mittel, die Strategie kann weiter erweitert die Anwendbarkeit in mehr Märkten, die Strategie Stabilität zu verbessern.
/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// original author SoftKill21
//@version=4
//@capam
strategy(title="Triple EMA Scalper low lag strat", shorttitle="3EMA scalper", overlay=true)
strategy.initial_capital = 50000
len1 = input(25, minval=1, title="Length")
len2 = input(50, minval=1, title="Length")
len3 = input(100, minval=1, title="Length")
src = input(close, title="Source")
tmp1 = ema(src, len1)
tmp2 = ema(src, len2)
tmp3 = ema(src, len3)
fastemaOut = 2*tmp1 - ema(tmp1, len1)
standardemaOut = 2*tmp2 - ema(tmp2, len2)
slowemaOut = 2*tmp3 - ema(tmp3, len3)
//fastemaOut = sma(src, len1)
//standardemaOut = sma(src, len2)
//slowemaOut = sma(src, len3)
plot(fastemaOut, color=color.black, title="First EMA")
plot(standardemaOut, color=color.yellow, title="Second EMA")
plot(slowemaOut, color=color.blue, title="Third EMA")
timeinrange(res, sess) => time(res, sess) != 0
londopen = timeinrange(timeframe.period, "0300-1100")
nyopen = timeinrange(timeframe.period, "0800-1600")
longCondition = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and londopen //or nyopen)
shortCondition = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and londopen// or nyopen)
longCondition2 = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and nyopen
shortCondition2 = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and nyopen
tp = input(50,title="TP")
sl = input(100, title="SL")
tradeLondon = input(title="Trade london session?", type=input.bool, defval=true)
tradeNewyork = input(title="Trade new york session?", type=input.bool, defval=true)
//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ")/100 //risk % per trade
temp01 = balance * risk //Risk in USD
temp02 = temp01/sl //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
size := 1000
if(tradeLondon==true)
strategy.entry("long",1,when=longCondition)
strategy.exit("tp/sl","long",profit=tp,loss=sl)
strategy.entry("short",0,when=shortCondition)
strategy.exit("tp/sl","short",profit=tp,loss=sl)
if(tradeNewyork==true)
strategy.entry("long",1,when=longCondition2)
strategy.exit("tp/sl","long",profit=tp,loss=sl)
strategy.entry("short",0,when=shortCondition2)
strategy.exit("tp/sl","short",profit=tp,loss=sl)
// strategy.risk.max_intraday_filled_orders(2)