VWAP-Trend nach der Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-29 15:26:56
Tags:

img

Übersicht

Diese Strategie verwendet VWAP und EMA als Indikatoren, um die Trendrichtung zu bestimmen. Sie geht lang, wenn der Preis über VWAP und EMA200 liegt, und geht kurz, wenn der Preis unter VWAP und EMA200 liegt.

Strategie Logik

Die Kernlogik der Strategie besteht darin, die Preisentwicklung anhand des VWAP und der EMA zu beurteilen.

  • VWAP stellt den typischen Preis dar und spiegelt die durchschnittlichen Kosten der Marktteilnehmer wider. Wenn der Preis über VWAP liegt, bedeutet dies, dass die Kaufkraft steigt und lang gehen sollte. Wenn der Preis unter VWAP liegt, bedeutet dies, dass die Verkaufskraft stärkt und kurz gehen sollte.

  • Die EMA200 stellt den mittelfristigen Kurstrend dar. Wenn der Kurs über der EMA200 liegt, bedeutet dies, dass der mittelfristige Ausblick bullisch ist und lang gehen sollte. Wenn der Preis unter der EMA200 liegt, bedeutet dies, dass der mittelfristige Ausblick bärisch ist und kurz gehen sollte.

Daher richtet diese Strategie zuerst, ob der Preis sowohl über VWAP als auch über EMA200 liegt, wenn ja, dann gehen Sie lang; wenn der Preis sowohl unter VWAP als auch unter EMA200 liegt, dann gehen Sie kurz.

Darüber hinaus setzt die Strategie auch Take-Profit- und Stop-Loss-Punkte. Nach dem Long-Gehen wird TP auf 3,5% des Einstiegspreises und SL auf 1,4% des Einstiegspreises festgelegt. Nach dem Short-Gehen beträgt TP 2,5% des Einstiegspreises und SL 0,9% des Einstiegspreises. Dadurch werden große Verluste vermieden.

Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass die Verwendung von VWAP und EMA zur Ermittlung von Trends sehr zuverlässig ist.

  • Der VWAP kann die durchschnittlichen Kosten der Marktteilnehmer genau widerspiegeln und ist ein sehr guter Indikator, um Trends zu beurteilen.
  • Der EMA200 kann die mittelfristige und langfristige Entwicklung deutlich widerspiegeln und die Richtung der wichtigsten Trends sehr genau bestimmen.

Die Kombination von VWAP und EMA zur Beurteilung von Trends ist daher sehr zuverlässig.

Darüber hinaus vermeidet die Festsetzung von TP/SL übermäßige Verluste pro Handel.

Risiken

Das Hauptrisiko dieser Strategie besteht darin, dass VWAP und die EMA möglicherweise falsche Signale geben.

  • Bei starken Marktschwankungen kann der Preis kurzfristig von der VWAP abweichen und falsche Signale geben.
  • Wenn ein neuer Trend gerade erst beginnt, kann die EMA die Preisänderung verzögern und den besten Eintrittszeitpunkt verpassen.

Um die oben genannten Probleme zu lösen, können wir die Parameter von VWAP und EMA optimieren, um sie besser bei der Erkennung des Beginns neuer Trends zu machen.

Erweiterung

Die wichtigsten Aspekte zur Stärkung dieser Strategie:

  • Optimieren Sie die VWAP-Parameter, um stabilere Einstellungen bei der Bestimmung von Trends zu finden.
  • Optimieren Sie EMA-Perioden, um genauere Einstellungen bei der Beurteilung von Trends zu finden.
  • Hinzufügen anderer Trendindikatoren wie Bollinger-Bänder, KDJ usw. zur Kombination mit VWAP und EMA, um die Genauigkeit zu verbessern.
  • Anpassungsfähige Gewinn- und Stop-Loss-Anwendungen auf der Grundlage bestimmter Regeln festlegen, um diese dynamisch anhand der Preisschwankungen anzupassen.
  • Einbeziehung der Positionsgröße auf der Grundlage von Drawdown, aufeinanderfolgenden Verlusten usw. zur Kontrolle des Gesamtrisikos.

Schlussfolgerung


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )

/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)

/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100

/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice 
entry_short = aShort and aShort[2] and aShort[1]
//exit_long = 
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)

/// PLOTTING ///
plot(vprice,                color=#5875E1, linewidth=2)
plot(trend,                 color=#D965E1, linewidth=1)
plotshape(series=aLong,     color=#71E181,style=shape.labelup)
plotshape(series=aShort,    color=#E18BA5,style=shape.labeldown)
//plot(long_take_level,     color=#00E676, linewidth=2)
//plot(long_stop_level,     color=#FF5252, linewidth=1)
//plot(short_take_level,    color=#4CAF50, linewidth=2)
//plot(short_stop_level,    color=#FF5252, linewidth=1)

/// PERIOD ///
testStartYear   = input(2019, "Backtest Start Year")
testStartMonth  = input(1, "Backtest Start Month")
testStartDay    = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear    = input(2020, "Backtest Stop Year")
testStopMonth   = input(12, "Backtest Stop Month")
testStopDay     = input(31, "Backtest Stop Day")
testPeriodStop  = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true

//// STRATEGY EXECUTION ////

if testPeriod()
    if strategy.position_size == 0 or strategy.position_size > 0
        strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
        strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
//        strategy.close(id="Long", when=exit_long, comment = "Exit Long")

    if strategy.position_size == 0 or strategy.position_size < 0
        strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
        strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
//        strategy.close(id="Short", when=exit_short, comment = "Exit Short")

Mehr