Dynamische Stop-Loss- und Take-Profit-Strategie auf der Grundlage von VWAP- und Zeitrahmensignalen

Schriftsteller:ChaoZhang, Datum: 2024-03-08 17:37:21
Tags:

img

Übersicht

Diese Strategie verwendet den VWAP (Volume Weighted Average Price) aus dem täglichen Zeitrahmen als Signal für den Einstieg und Ausstieg von Trades. Wenn der Schlusskurs über den VWAP überschreitet, löst sie einen Long-Entry aus, wobei der Stop-Loss am vorherigen Kerzenhoch gesetzt wird, wenn er unterhalb des VWAP liegt, und der Zielpreis 3 Punkte über dem Einstiegspreis gesetzt wird. Umgekehrt löst sie einen Short-Entry aus, wenn der Schlusskurs unterhalb des VWAP überschreitet, wobei der Stop-Loss am vorherigen Kerzenhoch gesetzt wird, wenn er über dem VWAP liegt, und der Zielpreis 3 Punkte unter dem Einstiegspreis gesetzt wird. Diese Strategie beinhaltet keine Ausstiegsbedingung, so dass die Trades offen bleiben, bis das gegenteilige Signal eintritt.

Strategieprinzip

  1. Erhalten Sie die VWAP-Daten aus dem täglichen Zeitrahmen, die als Grundlage für die Trendbestimmung und Handelssignale dienen.
  2. Bestimmt, ob der aktuelle Schlusskurs über/unter den VWAP liegt und somit als Auslöser für Long- bzw. Short-Einträge dient.
  3. Bei langen Einträgen, wenn das vorherige Candles-Tief unterhalb des VWAP liegt, wird es als Stop Loss verwendet; ansonsten wird der VWAP selbst verwendet.
  4. Wenn Sie eine Position eingegeben haben, setzen Sie ein festes Gewinnniveau von 3 Punkten.
  5. Die Strategie läuft weiter, bis ein umgekehrtes Signal die Position zum Schließen und Öffnen einer neuen auslöst.

Durch die Verwendung von zeitlich übergreifenden VWAP-Daten zur Bestimmung von Trends und der Nutzung dynamischer Stop-Losses und Fix-Point-Take-Gewinne kann die Strategie Trending-Märkte effektiv erfassen, Drawdown-Risiken kontrollieren und die Gewinne rechtzeitig sichern.

Analyse der Vorteile

  1. Einfachheit und Effektivität: Die Strategie ist klar, da nur der VWAP-Indikator zur Trendbestimmung und Signal-Auslösung verwendet wird, was die Implementierung und Optimierung vereinfacht.
  2. Dynamischer Stop-Loss: Durch die Einstellung des Stop-Loss auf der Grundlage der vorherigen Höhen oder Tiefen der Kerzen passt sich die Strategie besser an die Marktschwankungen an und reduziert das Risiko.
  3. Festgefächerter Gewinnbetrag: Die Festlegung des Zielpreises mit einer festgelegten Anzahl von Punkten hilft, den Gewinn unverzüglich einzuschließen und einen Gewinnverlust zu vermeiden.
  4. Zeitnahe Stop-Loss und Take-Profit: Die Strategie schließt die Position sofort, wenn ein umgekehrtes Signal ausgelöst wird, wodurch zusätzliche Verluste auf bestehende Gewinne verhindert werden.

Risikoanalyse

  1. Parameteroptimierung: Die Strategie verwendet einen festen 3-Punkte-Take-Profit, der möglicherweise eine Optimierung auf der Grundlage verschiedener Instrumente und Marktmerkmale erfordert, um die optimalen Parameter für den tatsächlichen Handel auszuwählen.
  2. Unruhige Märkte: In unruhigen Marktbedingungen können häufige Ein- und Ausstiege zu höheren Handelskosten führen und die Rentabilität beeinträchtigen.
  3. Nachhaltigkeit des Trends: Die Strategie stützt sich auf trendige Märkte. Wenn der Markt in einem Bereich liegt oder keine Trendnachhaltigkeit aufweist, können mehr Handelssignale generiert werden, was zu einem größeren Risiko führt.

Optimierungsrichtlinien

  1. Trendfilterung: Einbeziehung anderer Trendindikatoren wie gleitender Durchschnitte, MACD usw., um Trends zu bestätigen und die Signalzuverlässigkeit zu verbessern.
  2. Dynamische Gewinnspanne: Die Gewinnspanne wird dynamisch anhand von Marktvolatilität, ATR oder anderen Indikatoren angepasst, um sich besser an die Marktbedingungen anzupassen.
  3. Positionsgröße: Die Positionsgröße für jeden Handel wird dynamisch anhand der Kontogröße, der Risikotoleranz und anderer Faktoren angepasst.
  4. Auswahl der Handelssitzungen: Auswahl der optimalen Handelssitzungen auf der Grundlage der Merkmale und Liquidität des Instruments, um die Effizienz der Strategie zu verbessern.

Zusammenfassung

Diese Strategie nutzt zeitlich begrenzte VWAP-Daten zur Trendbestimmung und Signal-Triggerung, während dynamische Stop-Losses und Fix-Point-Take-Profits eingesetzt werden, um Risiken zu kontrollieren und Gewinne zu erzielen. Es ist eine einfache und effektive quantitative Handelsstrategie. Durch Optimierungen bei der Trendfilterung, dynamischen Take-Profit, Positionsgröße und Handelssitzungswahl können die Robustheit und das Gewinnpotenzial der Strategie weiter verbessert werden.


/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))

Mehr