Williams %R Crossover-Strategie mit gleitendem Durchschnittsfilter

Schriftsteller:ChaoZhang, Datum: 2023-09-19 21.57:46
Tags:

Übersicht

Diese Strategie nutzt die Williams %R Crossover-Signale und fügt einen gleitenden Durchschnittsfilter hinzu, um ein flexibles kurzfristiges Handelssystem zu schaffen.

Strategie Logik

  1. Berechnen Sie Williams %R und den einfachen gleitenden Durchschnitt (MA) für 200 Perioden.

  2. Der Kurs wird bei einem Wert, der über -50 liegt, bei einem Wert, der über -50 liegt, bei einem Wert, der über dem Ma liegt, bei einem Wert, der über -50 liegt, bei einem Wert, der über dem Ma liegt, bei einem Wert, der über dem Ma liegt, bei einem Wert, der über dem Ma liegt, bei einem Wert, der über dem Ma liegt.

  3. Wenn %R einen Schwellenwert unter -50 überschreitet und die Schließung unter dem MA liegt, wird kurz gehalten.

  4. Bei Long-Positionen wird die Position geschlossen, wenn die Close-Reaches Profit (Eingangspreis + Profit-Pips) oder Stop-Loss-Level (Eingangspreis - Stop-Loss-Pips) erreichen.

  5. Wenn die Position kurz ist, schließt sie, wenn die Nähe zu einem Gewinn (Eingangspreis - Gewinn-Pips) oder einem Stop-Loss-Niveau (Eingangspreis + Stop-Loss-Pips) führt.

Die Strategie nutzt die überkaufte/überverkaufte Natur von Williams %R und kombiniert den MA-Trendfilter für zuverlässigere Signale. Die Stop-Loss/Take-Profit-Logik ist einfach und klar. Insgesamt ist es ein komplettes kurzfristiges System.

Analyse der Vorteile

  1. Williams %R identifiziert überkaufte/überverkaufte Niveaus effektiv mit klaren Signalen.

  2. Der MA-Filter fügt Trendverzerrung hinzu, um Whipsaws zu vermeiden.

  3. Anpassbare Parameter für Flexibilität.

  4. Ein Trailing Stop-Loss schließt die meisten Gewinne ein.

  5. Einfache, klare Logik, leicht zu verstehen und umzusetzen.

  6. Anwendbar auf mehrere Produkte mit Flexibilität.

Risikoanalyse

  1. Williams %R hat Verzögerungseffekt, kann einige Chancen verpassen.

  2. Der MA-Filter hat auch etwas Verzögerung.

  3. Strenge Überkauf-/Überverkaufsregeln können einige Trends übersehen.

  4. Ein zu starker Stop-Loss kann durch Whipsaws gestoppt werden.

  5. Ein zu breiter Stop-Loss kann den Gewinn einschränken.

  6. Die Parameter müssen für verschiedene Marktumgebungen abgestimmt werden.

Optimierungsrichtlinien

  1. Optimieren Sie die Parameter für eine höhere Gewinnrate.

  2. Hinzufügen anderer Filter wie MACD, KDJ usw.

  3. Versuchen Sie verschiedene MA-Typen wie exponentielle MA.

  4. Fügen Sie Trendverzerrung hinzu, handeln Sie nur in Trendrichtung.

  5. Optimieren Sie Stop-Loss-Strategien wie dynamische Stopps, Kronleuchter-Ausgänge usw.

  6. Versuchen Sie, Positionsgrößen wie feste Bruchteil, Martingale usw.

  7. Nutzen Sie maschinelles Lernen für eine bessere Optimierung von Parametern.

Schlussfolgerung

Diese Strategie kombiniert Williams %R Überkauf/Überverkauft-Signale mit MA-Trendfilter in einem einfachen kurzfristigen System. Es hat klare Einstiegssignale und Stop-Loss/Take-Profit-Logik. Weitere Verbesserungen können durch Parameter-Tuning, Indikator-Auswahl, Stop-Loss-Management usw. für mehr Robustheit vorgenommen werden.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Williams %R Cross Strategy with MA Filter", overlay=true)

// User Inputs
wrLength = input(14, title="Williams %R Length")
crossPips = input(10, title="Cross Threshold (Pips)")
takeProfitPips = input(30, title="Take Profit (Pips)")
stopLossPips = input(20, title="Stop Loss (Pips)")

// Calculate Williams %R
wrHigh = ta.highest(high, wrLength)
wrLow = ta.lowest(low, wrLength)
wr = (wrHigh - close) / (wrHigh - wrLow) * -100

// Calculate 200-period Simple Moving Average
ma200 = ta.sma(close, 200)

// Entry Conditions
enterLong = ta.crossover(wr, -50 - crossPips) and close > ma200
enterShort = ta.crossunder(wr, -50 + crossPips) and close < ma200

// Exit Conditions
exitLong = close >= (strategy.position_avg_price + (takeProfitPips / syminfo.mintick)) or close <= (strategy.position_avg_price - (stopLossPips / syminfo.mintick))
exitShort = close <= (strategy.position_avg_price - (takeProfitPips / syminfo.mintick)) or close >= (strategy.position_avg_price + (stopLossPips / syminfo.mintick))

// Order Management
if enterLong
    strategy.entry("Long", strategy.long)
    
if enterShort
    strategy.entry("Short", strategy.short)

if exitLong
    strategy.close("Long")

if exitShort
    strategy.close("Short")


Mehr