WMX Williams-Fraktale Umkehrung Pivot-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-15 10:37:01
Tags:

img

Übersicht

Diese Strategie verwendet das Prinzip des Williams-Indikators und kombiniert spezifische K-Linien-Muster, um ein effizientes langes und kurzes Eröffnungs- und Schließmodell zu entwerfen.

Strategieprinzip

Diese Strategie verwendet die Fraktalpunkte im Williams-Indikator, um Umkehrsignale zu bestimmen.

Insbesondere wird in der Strategie ein benutzerdefinierter Indikator namens WMX Williams Fractals definiert. Er verwendet Faktorfunktionen, um das obere Fraktal (upFractal) und das untere Fraktal (dnFractal) zu bestimmen.

Die Logik des oberen Fraktals lautet: Der höchste Preis der aktuellen K-Linie ist höher als der höchste Preis der vorherigen n K-Linien (n ist ein einstellbarer Parameter), wodurch ein oberseitiges Ausbruchfraktal gebildet wird.

Die Logik des unteren Fraktals lautet: Der niedrigste Preis der aktuellen K-Linie ist niedriger als der niedrigste Preis der vorherigen n K-Linien, wodurch ein unterer Seitenbruchfraktal gebildet wird.

Nachdem Sie die oberen und unteren Fraktale erhalten haben, bestimmen Sie, ob sie sich ändern, d.h. von null zu existieren oder umgekehrt.

Wenn das obere Fraktal gebildet ist und Close höher als Open ist, gehen Sie lang. Wenn das untere Fraktal gebildet ist und Close niedriger als Open ist, gehen Sie kurz.

Strategische Vorteile

  1. Verwenden Sie die Williams-Indikator-Fraktalpunkte, um den Umkehrzeitpunkt zu bestimmen.

  2. Kombination der K-Linien-Einheitsrichtung zur Bestätigung von Handelssignalen und Vermeidung von unruhigen Nicht-Trendregionen.

  3. Wenige Parameter, die nur die Fraktalperiode n anpassen müssen, leicht zu testen und zu optimieren.

  4. Flexible Einstellungen für die Eröffnung von Positionen, Regeln wie Positionsgröße, Schlusskonditionen usw., die im Live-Handel leicht anzuwenden sind.

Strategische Risiken

  1. Nach den fraktalen Formen kann der Markt nicht vollständig umkehren, müssen mit Trendbeurteilung kombiniert werden.

  2. Die Einstellung der Stop-Loss-Position muss vorsichtig sein, um zu vermeiden, dass man durch laute, riesige Volatilitätsbewegungen ausgeschaltet wird.

  3. Der n-Parameter muss für verschiedene Produkte angepasst werden, wenn der Zeitraum zu groß oder zu klein ist, beeinflusst dies die Ergebnisse.

Lösungen:

  1. Kann Indikatoren wie gleitenden Durchschnitt hinzufügen, um den wichtigsten Trend zu beurteilen, den Handel gegen Trends zu vermeiden.

  2. Verwenden Sie dynamische Trailing-Stop-Loss oder setzen Sie einen angemessenen Drawdown-basierten Stop-Loss.

  3. Verwenden Sie Walk Forward Analysis, um die Parameter zu optimieren und die optimalen Werte zu finden.

Strategieoptimierungsrichtlinien

  1. Fractal-Umkehrstrategien neigen dazu, mehrere Gewinne zu erzielen und dann wieder umzukehren, um Verluste zu erzielen.

  2. Die aktuelle einfache Stop-Loss-Methode kann die Marktbewegungen nicht effektiv verfolgen.

  3. Derzeit nur K-Line Entity Richtung verwenden. Wenn mehr K-Line Informationen wie Wickeln und nahe Lage in Betracht ziehen, können noch präzisere Handelssignale entwerfen.

Schlussfolgerung

Dies ist eine Umkehrstrategie, die auf technischen Indikatoren basiert. Sie nutzt die Williams-Indikatorfraktale, um Veränderungen des Trends des Basiswerts an wichtigen Drehpunkten zu erfassen, kombiniert mit der Richtung der K-Linie, um Handelssignale zu bilden, mit dem Ziel, überschüssige Renditen zu erzielen.

Im Vergleich zu anderen Umkehrstrategien verfügt diese Strategie über ein parametriertes Design für eine klare Logik und ein einfaches Verständnis. Sie verfügt über flexible Parameteranpassungen für bequemes Testen und kann direkt im Live-Handel angewendet werden.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 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/
// © WMX_Q_System_Trading

//@version=4
SystemName="WMX Williams Fractals strategy V4"
InitCapital = 1000000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 10
strategy(title=SystemName, shorttitle=SystemName, overlay=true, initial_capital=InitCapital, default_qty_type=strategy.percent_of_equity, default_qty_value=InitPosition, commission_type=strategy.commission.percent, commission_value=InitCommission)


//study("WMX Williams Fractals", shorttitle="WMX Fractals", format=format.price, precision=0, overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input(title="Periods", defval=2, minval=2, type=input.integer)
h=close
l=close

factorh(High)=>
    upFractal = (                                                                                                          (High[n+2]  < High[n]) and (High[n+1]  < High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                                               (High[n+3]  < High[n]) and (High[n+2]  < High[n]) and (High[n+1] == High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                    (High[n+4]  < High[n]) and (High[n+3]  < High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                          (High[n+5] < High[n]) and (High[n+4]  < High[n]) and (High[n+3] == High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or ((High[n+6] < High[n]) and (High[n+5] < High[n]) and (High[n+4] == High[n]) and (High[n+3] <= High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
    upFractal
upFractal=factorh(h)
factorl(Low)=>
    dnFractal = (                                                                                                  (Low[n+2]  > Low[n]) and (Low[n+1]  > Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                                         (Low[n+3]  > Low[n]) and (Low[n+2]  > Low[n]) and (Low[n+1] == Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                (Low[n+4]  > Low[n]) and (Low[n+3]  > Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                        (Low[n+5] > Low[n]) and (Low[n+4]  > Low[n]) and (Low[n+3] == Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or ((Low[n+6] > Low[n]) and (Low[n+5] > Low[n]) and (Low[n+4] == Low[n]) and (Low[n+3] >= Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
    
dnFractal=factorl(l)

U=valuewhen(upFractal[0]!= upFractal[1],l[0],3)
L=valuewhen(dnFractal[0]!=dnFractal[1],h[0],3)

longcon=crossover(close ,L) and close>open
shortcon=crossunder(close ,U) and close<open

if longcon
    
    strategy.entry("Long", strategy.long,   when = strategy.position_size <= 0 )
    
if  shortcon
    strategy.entry("Short", strategy.short,  when = strategy.position_size >= 0 )
        






Mehr