Handelsstrategie für Wechselkurse

Schriftsteller:ChaoZhang, Datum: 2023-09-28 11:26:44
Tags:

Übersicht

Diese Strategie berechnet die Veränderungsrate im Laufe der Zeit, um Kauf-/Verkaufssignale zu bestimmen.

Strategie Logik

Die Strategie stützt sich hauptsächlich auf folgende Indikatoren:

  1. Schneller einfacher gleitender Durchschnitt (Standstillstand 14 Tage): zur Messung des kurzfristigen Trends
  2. Langsamer einfacher gleitender Durchschnitt (Standard 100 Tage): zur Messung des langfristigen Trends
  3. Referenz einfacher gleitender Durchschnitt (Standstillwert 30 Tage): zur Bestimmung der Gesamtrichtung
  4. Wechselkurs: Berechnet anhand des höchsten/niedrigsten Preises über den Rückblickzeitraum (Standard 12 Bar), um die Größe der Kursschwankungen zu beurteilen

Besondere Vorschriften für die Einfuhr:

  1. Preis unter dem Referenz-SMA
  2. ROC über der vorgegebenen niedrigen ROC-Schwelle (Standard 2,3%)
  3. Schnelle SMA-Erhöhung und langsame SMA-Rückgang, was auf eine mögliche Kreuzung hinweist

Besondere Ausstiegsregeln:

  1. Preis über der Referenz-SMA
  2. ROC über der vorgegebenen hohen ROC-Schwelle (Standard 4,7%)
  3. 3 aufeinanderfolgende steigende Stangen
  4. Laufender Gewinn > 0
  5. Schnelle SMA über langsame SMA

Positionsgröße ist der Prozentsatz (Standard 96%) des Eigenkapitals für Hebelwirkung.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Verwendung von ROC zur Erkennung von Schwankungen ermöglicht die Erfassung von Aufwärts-/Abwärtsbewegungen für höhere Renditen.

  2. Die Kombination von schneller/langsamer SMA hilft, Tiefpunkte/Hochpunkte genauer zu erkennen.

  3. Die Referenz-SMA liefert eine allgemeine Richtung, um Ablenkung durch kurzfristige Geräusche zu vermeiden.

  4. Ein Trailing Stop-Loss schließt die Gewinne ein und verringert das Abwärtsrisiko.

  5. Der Hebel der Positionsgröße verstärkt den Gewinn.

Insgesamt nutzt die Strategie ROC, SMA und andere Instrumente effektiv, um von Kursschwankungen zu profitieren.

Risikoanalyse

Die Strategie birgt außerdem folgende Risiken:

  1. Falsche ROC- und SMA-Parameter können zu verpassten Signalen oder schlechten Trades führen.

  2. Eine übermäßige Positionsgröße erhöht das Risiko. Der Auftragsanteil sollte getestet und abgestimmt werden.

  3. Der Stopp-Loss kann in unruhigen Märkten zu früh beendet werden.

  4. Sie sollten Trendfilter und Risikomanagement beinhalten.

  5. Die Robustheit sollte durch den Live-Handel über Märkte hinweg überprüft werden.

Risiken können durch Parameteroptimierung, Positionsgrößen, Stop-Loss-Anpassungen, Robustheitstests usw. verwaltet werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen verbessert werden:

  1. Fügen Sie andere technische Indikatoren wie Volatilität, Volumen hinzu, um die Signalgenauigkeit zu verbessern.

  2. Optimieren Sie die Anzahl der Trades, indem Sie die Handelsfrequenz reduzieren, um die Auswirkungen von Whipsaws zu minimieren.

  3. Einbeziehung von Breakout-Techniken rund um die wichtigsten Preisniveaus.

  4. Verwenden Sie maschinelles Lernen, um Parameter automatisch zu optimieren.

  5. Überprüfen Sie die Robustheit auf verschiedenen Märkten und Zeitrahmen.

  6. Spezialisierte Parameter für verschiedene Produkte wie Aktien, Devisen usw.

  7. Weiterhin werden Signale und Risikokontrollen auf der Grundlage von Live-Ergebnissen verfeinert.

Zusammenfassung

Diese Strategie identifiziert Handelschancen rund um kurzfristige Schwankungen mit Hilfe von ROC und SMA-Analyse. Es hilft, auf schnelle Schwankungen zu profitieren, erfordert aber auch eine angemessene Risikokontrolle. Feine Einstellparameter, Positionsgröße, Stop-Losses und Robustheitstests können seine Stabilität und Anpassungsfähigkeit verbessern. Die Strategie dient als Referenzvorlage für quantifizierten Handel, muss aber für verschiedene Märkte angepasst werden.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// Author: Sonny Parlin (highschool dropout)
// Best if run on 5m timeframe
strategy(shorttitle="ROC+Strategy", title="Rate of Change Strategy",
                                      overlay=true,  currency=currency.USD,
                                      initial_capital=10000)

// Inputs and variables
ss = input(14, minval=10, maxval=50, title="SMA Fast (days)")
ff = input(100, minval=55, maxval=200, title="SMA Slow (days)")
ref = input(30, minval=20, maxval=50, title="SMA Reference (days)")
lowOffset = input(0.023, "ROC Low (%)", minval=0, step=0.01)
highOffset = input(0.047, "ROC High (%)", minval=0, step=0.01)
orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01)
lookback = input(12, "Lookback Candles", minval=1, step=1) 

// SMA
smaFast = sma(close, ss)
smaSlow = sma(close, ff)
smaRef = sma(close, ref)
ROC = (max(close[lookback],close) - min(close[lookback],close)) / max(close[lookback],close)

// Set up SMA plot but don't show by default
plot(smaFast, "smaFast", color=#00ff00, display = 0)
plot(smaSlow, "smaSlow", color=#ff0000, display = 0)
plot(smaRef, "smaRef", color=#ffffff, display = 0)

// The buy stratey:
// Guard that the low is under our SMA Reference line 
// Guard that the rate of change over the lookback period is greater than our 
// ROC lowOffset %, default is 0.023. (low < smaRef) and (ROC > lowOffset)
// SMA fast is on the rise and SMA slow is falling and they are very likely
// to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) 
enterLong = (low < smaRef) and (ROC > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow,1)) 

// The sell Strategy:
// Guard that close is higher than our SMA reference line and that the rate of 
// change over the lookback period is greater than our highOffset %, default
// is 0.047. (close > smaRef) and (ROC > highOffset)
// Guard that close has risen by 3 candles in a row (rising(close,3)) 
// Guard that we currently have profit (strategy.openprofit > 0)
// Guard that SMA fast is higher than smaSlow (smaFast > smaSlow)
// If it keeps going up past our close position the trailing stoploss will kick in!
enterShort = (close > smaRef) and (ROC > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow)

// Order size is based on total equity
// Example 1:
// startingEquity = 2000
// close = 47434.93
// orderStake = 0.45
// (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900

// Example 2:
// startingEquity = 2000
// close = 1.272
// orderStake = 0.45
// (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900
orderSize = (strategy.equity * orderStake) / close

// Trailing Stoploss
// I'm using 2.62 as my default value, play with this for different results.
longTrailPerc = input(title="Trailing Stoploss (%)",
     type=input.float, minval=0.0, step=0.1, defval=3.62) * 0.01
     
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0

if (enterLong)
    strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0)
    
if (enterShort)
    strategy.exit(id="Close Long Position", stop=longStopPrice)


//plot(strategy.equity)

Mehr