
Es handelt sich um eine kurzfristige Forex-Gold-Trading-Strategie, die die Quantitäts- und Preisbeziehungen der Tendenztheorie und die Multiple Stairstep EMAs nutzt, um Trendwendepunkte vorherzusagen und kurzfristige Trends zu verfolgen. Die Strategie ist für Hochfrequenz-Trading geeignet.
Die Handelssignale für diese Strategie stammen aus zwei Teilen:
Die Strategie beurteilt die Veränderung des Hypertrend-Trends durch Berechnung des EMAs für den Handelsvolumen-Durchschnittspreis für verschiedene Perioden. Wenn ein kurzer EMA einen längerfristigen EMA durchbricht, gilt dies als bullish Signal. Wenn ein kurzer EMA einen längeren EMA durchbricht, gilt dies als bullish Signal.
Stairstep EMA ist ein mehrfacher EMA-Mittelwert mit verschiedenen Parametern, z. B. der 10-Tage-, 20-Tage- und 50-Tage-Linie, in der Reihenfolge, in der sie angeordnet sind, um eine Trendwende zu beurteilen. Wenn ein kurzfristiger EMA vor einem langfristigen EMA-Umkehr beginnt, zeigt dies, dass der Trend sich umkehrt.
Die Strategie kombiniert diese beiden Signale, um eine Eintrittsentscheidung zu treffen. Insbesondere wird ein Eintritt vergeben, wenn die Quantierungsbeziehung als bullish beurteilt wird und die Stairstep EMA zeigt, dass sich die Multiple EMAs bullish umgedreht haben. Im Gegensatz dazu wird ein Eintritt vergeben, wenn die Quantierungsbeziehung als bearish beurteilt wird und die Stairstep EMA zeigt, dass sich die Multiple EMAs bearish umgedreht haben.
Diese Strategie kombiniert die Vorteile von Volumen-Durchschnittspreisen und mehreren EMAs, um die Genauigkeit und Stabilität der Signale zu verbessern:
Die Messung der Preis-/Menge-Relation auf Basis des Volumen-/Durchschnittspreises ist viel genauer als die Messung der reinen Preis-/Menge-EMA und verhindert, dass man von verstärkten Preisschwankungen in die Irre geführt wird.
Stairstep EMAs können durch die Reihenfolge der EMAs mit unterschiedlichen Parametern die Dimension der Beurteilung erhöhen, um den Lärm eines einzelnen EMAs zu vermeiden.
Die Kombination der beiden Signale ermöglicht die gegenseitige Verifizierung und reduziert die Anzahl der Falschsignale.
Für Hochfrequenz-Kurzzeit-Trading geeignet, um kurzfristige Reversal-Möglichkeiten im kleinen Bereich zu nutzen.
Die Strategieparameter können flexibel konfiguriert und für verschiedene Sorten und Zyklen optimiert werden.
Die Strategie birgt auch einige Risiken:
Es ist möglich, dass man sich zu sehr auf technische Kennzahlen verlässt und von passiven Handlungen getäuscht wird.
Kurzzeit-Operationen sind auf die Transaktionskosten empfindlich und erfordern eine Kontrolle der Gleitpunkte und Gebühren.
Kurzzeit-EMA-Parameter müssen regelmäßig optimiert werden, sonst können sie ausfallen.
Die Abweichung von der Preisentwicklung ist nicht unbedingt rückläufig, es besteht die Gefahr einer Fehleinschätzung.
Die Beurteilung einer mehrfachen EMA-Reihenfolge ist nicht vollständig zuverlässig und kann zu Fehlinteressen führen.
Gegenmaßnahmen:
Das Urteilsvermögen wird in Kombination mit weiteren grundlegenden Faktoren beurteilt.
Die Anpassung der Positionen soll sicherstellen, dass der Einzelschaden nicht zu groß wird.
Die Parameter werden regelmäßig neu getestet und optimiert.
Erhöhung der Erfolgsquote bei Transaktionen in der Nähe von wichtigen Resistenz- und Unterstützungsbereichen.
In Kombination mit anderen Indikatoren wird eine mehrdimensionale Validierung durchgeführt.
Die Strategie kann auch in folgenden Bereichen optimiert werden:
Verschiedene Methoden zur Berechnung des Preis-Leistungs-Verhältnisses werden getestet, um nach stabileren Parametern zu suchen.
Die Stairstep EMA-Indikator-Beschlüsse werden auf mehreren Ebenen zusammengefasst.
Filterung in Verbindung mit anderen Indikatoren wie RSI, MACD usw.
Optimierung von Stop-Loss-Mechanismen, wie z. B. bewegliche Stop-Loss-Mechanismen, hängende Stop-Loss-Mechanismen usw.
Optimierung der Parameter nach den Eigenschaften der verschiedenen Sorten und Erstellung eines Parameter-Satzes, der für die Sorte geeignet ist.
Die Entwicklung von Algorithmen für maschinelles Lernen und die Ausbildung von Urteilsmodellen in Big Data.
Entdecken Sie verschiedene Exit-Strategien, wie z. B. einen festen Ausstieg, einen Trend-Tracking-Ausstieg usw.
Einführung eines Anpassungsmechanismus, der die Parameter automatisch an Marktveränderungen anpasst.
Diese Strategie nutzt die Vorteile von den beiden Indikatoren, den Durchschnittspreis und Stairstep EMA, um kurzfristige Trends zu verfolgen. Die Strategie hat eine hohe Stabilität und Genauigkeit, ist jedoch auch auf Risikokontrolle und Parameteroptimierung bedacht. Wenn die Tests kontinuierlich optimiert werden und in Kombination mit anderen technischen Indikatoren verwendet werden, kann sie eine effiziente kurzfristige Handelsstrategie sein.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
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/
// © exlux99
//@version=5
strategy("Forex Fractal EMA Scalper", overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters")
src = input(hl2, title="Source for EMA's", group="Optimization Parameters")
len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters")
out1 = ta.ema(src, len1)
len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters")
out2 = ta.ema(src, len2)
len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters")
out3 = ta.ema(src, len3)
// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true
for i = 1 to n
upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4
upFractal = (upflagDownFrontier and flagUpFrontier)
// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true
for i = 1 to n
downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4
downFractal = (downflagDownFrontier and flagDownFrontier)
// plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
// plotshape(upFractal, style=shape.triangleup, location=location.abovebar, offset=-n, color=#009688, size = size.small)
long= out1 > out2 and out2>out3 and upFractal
short= out1 < out2 and out2<out3 and downFractal
strategy.entry("long",strategy.long,when= short)
strategy.entry("short",strategy.short,when=long)
tp=input(25, title="TP in PIPS", group="Risk Management")*10
sl=input(25, title="SL in PIPS", group="Risk Management")*10
strategy.exit("X_long", "long", profit=tp, loss=sl )
strategy.exit("x_short", "short",profit=tp, loss=sl )