Volumenpreistendenzumkehr Forex-Handelsstrategie auf Basis von Treppen EMA

Schriftsteller:ChaoZhang, Datum: 2023-11-07
Tags:

img

Übersicht

Dies ist eine kurzfristige (1-5 Minuten) Forex-Handelsstrategie, die hauptsächlich die Volumenpreisbeziehung in der Gezeitentheorie und mehrere Stairstep EMAs nutzt, um Trendumkehrpunkte für den kurzfristigen Trendverfolgungshandel vorherzusagen.

Grundsätze

Die Handelssignale dieser Strategie bestehen aus zwei Teilen:

  1. Die Strategie berechnet die EMA des Volumendurchschnittspreises verschiedener Zeiträume (konfigurierbar), um die Veränderung der bullischen und bärischen Trends zu beurteilen. Wenn die kurzfristige EMA über die längerfristige EMA überschreitet, gilt sie als bullisches Signal. Wenn die kurzfristige EMA unter die längerfristige EMA überschreitet, gilt sie als bärisches Signal.

  2. Die EMA-Trendumstellung wird durch die Steigerung der EMA beurteilt. Die EMA-Trendumstellung bezieht sich auf die Einstellung mehrerer EMAs mit verschiedenen Parametern, z. B. 10-Tage-, 20-Tage-, 50-Tage- usw. Die Trendumkehrung wird nach ihrer Reihenfolge beurteilt.

Die Strategie wird diese beiden Signale kombinieren, um den Einstieg zu bestimmen. Insbesondere, wenn das Volumenpreisverhältnis als bullisch beurteilt wird und die Stairstep EMA zeigt, dass mehrere EMAs bullisch geworden sind, werden Long-Positionen eingenommen. Umgekehrt, wenn das Volumenpreisverhältnis als bärisch beurteilt wird und die Stairstep EMA zeigt, dass mehrere EMAs bärisch geworden sind, werden Short-Positionen eingenommen.

Vorteile

Diese Strategie kombiniert die Vorteile des Volumendurchschnittspreises und mehrerer EMAs, die die Genauigkeit und Stabilität der Signale verbessern können:

  1. Die Bewertung des Volumenpreisverhältnisses auf der Grundlage des Volumendurchschnittspreises kann genauer sein als die einfache Preisbeurteilung durch die EMA, um nicht durch verstärkte Preisschwankungen irregeführt zu werden.

  2. Die EMA-Stufen können die Dimension des Urteils um die Reihenfolge der verschiedenen EMA-Parameter erhöhen und so den Lärm einer einzigen EMA vermeiden.

  3. Die Kombination der beiden Signale ermöglicht eine gegenseitige Überprüfung und verringert die Zahl der falschen Signale.

  4. Es eignet sich für den kurzfristigen Handel mit hoher Frequenz und kann schnell kleine Umkehrmöglichkeiten innerhalb des Bereichs erfassen.

  5. Die Strategieparameter können flexibel so konfiguriert werden, dass sie für verschiedene Sorten und Frequenzen optimiert werden.

Risiken

Diese Strategie birgt auch einige Risiken:

  1. Übermäßig abhängig von technischen Indikatoren besteht die Möglichkeit, durch unregelmäßige Marktbedingungen irregeführt zu werden.

  2. Kurzfristige Transaktionen sind relativ anfällig für Handelskosten, daher müssen Verschiebungen und Provisionen gut kontrolliert werden.

  3. Kurzfristige EMA-Parameter müssen häufig optimiert werden, da sie sonst ungültig werden können.

  4. Die Differenz der Volumenpreise führt nicht zwangsläufig zu einer Umkehrung, es besteht die Gefahr einer Fehleinschätzung.

  5. Die Reihenfolge mehrerer EMA ist nicht vollständig zuverlässig und kann auch zu Fehleinschätzungen führen.

Gegenmaßnahmen:

  1. Kombinieren Sie grundlegendere Faktoren für das Urteil.

  2. Anpassung von Positionen, um zu gewährleisten, dass Verluste bei einzelnen Geschäften nicht zu groß sind.

  3. Regelmäßige Neuetests und Optimierungen der Parameter.

  4. Handel in der Nähe der wichtigsten Unterstützungs-/Widerstandsniveaus, um die Erfolgsquote zu erhöhen.

  5. Verwendung mit anderen Indikatoren für die mehrdimensionale Überprüfung.

Optimierungsrichtlinien

Diese Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Versuche verschiedene Methoden zur Berechnung des Volumenpreisverhältnisses, um stabilere Parameter zu finden.

  2. Erhöhen Sie die EMA-Indikatoren von Stairstep.

  3. Kombination anderer Indikatorsignale zur Filterung, wie RSI, MACD usw.

  4. Optimieren Sie Stop-Loss-Mechanismen, wie zum Beispiel das Bewegen von Stop-Loss, ausstehende Aufträge usw.

  5. Optimierung von Parametern auf der Grundlage der Merkmale verschiedener Handelsinstrumente zur Entwicklung geeigneter Parametermengen.

  6. Einführung von Algorithmen für maschinelles Lernen zur Ausbildung von Beurteilungsmodellen mit Hilfe von Big Data.

  7. Erforschen Sie verschiedene Ausstiegsstrategien wie feste Ausgänge, Trendverfolgungs-Ausgänge usw.

  8. Einführung anpassungsfähiger Parametermechanismen zur automatischen Anpassung der Parameter anhand von Marktveränderungen.

Zusammenfassung

Diese Strategie kombiniert die Vorteile des Volumendurchschnittspreises und der Stairstep EMA für den kurzfristigen Trend-Tracking-Handel. Die Strategie hat hohe Stabilität und Genauigkeit, aber es müssen Risikokontrolle und Parameteroptimierung beachtet werden. Mit kontinuierlicher Optimierung und Testung in Kombination mit anderen technischen Indikatoren kann sie zu einer effizienten kurzfristigen Handelsstrategie werden.


/*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  )


Mehr