Diese Strategie wird
Diese Strategie berechnet den aktuellen durchschnittlichen Transaktionspreis anhand des VWAP-Indikators. VWAP stellt den durchschnittlichen Preis dar und ist das Verhältnis von Umsatz zu Handelsvolumen. Der VWAP-Indikator spiegelt den Abweichungsgrad zwischen dem aktuellen Preis und dem historischen durchschnittlichen Handelspreis wider.
Die Strategie verwendet die gleitende Durchschnittslinie des VWAP-Indikators und seine Offset-Kanallinien. Die Proportionen der Offset-Kanallinien werden durch die Parameter
Die Parameter-Einstellungen dieser Strategie spiegeln vollständig die Idee des Kanalhandels wider.
Diese Handelsstrategie hat folgende Vorteile:
Da der VWAP-Indikator das durchschnittliche Preisniveau gut widerspiegeln kann, kann der Handel auf der Grundlage seiner Kanallinien effektiv Wertmittelpunkte einfangen und durch kurzfristige Schwankungen vermieden werden. Gleichzeitig kann die Kombination von Kanälen mit verschiedenen Parametern und der Aufbau von Positionen in Chargen die Risiken effektiv kontrollieren und einseitige Risikokonzentrationen verhindern, die zu Zwangsliquidationen führen. Schließlich kann durch rechtzeitige Gewinnentnahme, um Positionen in der Nähe der Regression der gleitenden Durchschnittslinie zu schließen, die durch Preisumkehrungen verursachten Verluste reduziert werden.
Diese Strategie birgt auch einige Risiken:
Der VWAP-Indikator ist unempfindlich gegenüber hochfrequenter Handelsvolatilität. Im Falle extremer Preislücken oder kurzfristiger Anomalien wird er immer noch unnötige Handelssignale und Verluste auslösen. Darüber hinaus wird er, wenn die Kanalparameter zu locker eingestellt sind, leicht ungültige Preisdurchdringungssignale bilden. Schließlich kann er den besten Zeitpunkt für die Gewinnentnahme verpassen und eingeschlossene Verluste verursachen, wenn der Bereich der Positionen, die bei Regressionsoperationen geschlossen werden, zu breit eingestellt ist.
Die Gegenmaßnahmen sind eine angemessene Bewertung der Parameter-Einstellungen und eine angemessene Anpassung der Kanalparameter, die Kombination anderer Indikatoren zur Beurteilung von Preisanomalien und die Vermeidung von Blindfolgen, und schließlich die Bewertung der Parameteroptimierung von Kanälen mit unterschiedlichen Niveaus und Regressionsbereichen, um bessere Gewinnwirkung zu erzielen.
Diese Strategie kann in folgenden Richtungen optimiert werden:
Es können mehr Ebenen von Kanallinien hinzugefügt und Parameter für die Optimierung kombiniert werden, um stabilere Handelswirkungen zu erzielen. Darüber hinaus können Handelsvolumen-Urteilsregeln hinzugefügt werden, um ungültige Preislücken zu vermeiden, die Handelsverluste verursachen. Schließlich können Stop-Loss-Regeln auch so festgelegt werden, dass, wenn der Verlust von Positionen einen bestimmten Prozentsatz erreicht, Stop-Loss-Exit-Positionen erreicht werden, wodurch die Risiken effektiv kontrolliert werden.
Diese Strategie kombiniert den VWAP-Indikator mit Preiskanälen, um eine relativ stabile Handelsstrategie zu erreichen. Die Einstellungen der Strategieparameter sind flexibel, so dass die Benutzer sie nach ihren eigenen Vorlieben anpassen können. Diese Strategie kann effektiv die Richtung der Wertmitte bestimmen. Durch Parameterkombination und Batch-Building von Positionen kann eine stabile Rentabilität erreicht werden. Obwohl es noch Raum für Verbesserungen in der Strategie gibt, ist es insgesamt eine quantitative Handelsstrategie mit hoher Praktikabilität.
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %") lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %") short1 = input(true, title = "short 1") long1 = input(true, title = "long 1") shortlevel1 = input(1.0, title = "Short line 1") longlevel1 = input(-1.0, title = "Long line 1") needoffset = input(true, title = "Offset") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Variables size = strategy.position_size mult = 1 / syminfo.mintick truetime = true //VWAP ma = vwap(hlc3) //Levels longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close //Lines colorlong1 = long1 ? color.lime : na colorshort1 = short1 ? color.red : na offset = needoffset ? 1 : 0 plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1") plot(ma, offset = offset, color = color.blue, title = "MA line") plot(longline1, offset = offset, color = colorlong1, title = "Long line 1") //Trading lotlong = 0.0 lotshort = 0.0 lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1] lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1] if ma > 0 if lotlong > 0 lotslong = 0.0 lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0 strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime)) if lotshort > 0 lotsshort = 0.0 lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0 strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime)) if strategy.position_size > 0 strategy.exit("TPL", "L1", limit = ma) if strategy.position_size < 0 strategy.exit("TPS", "S1", limit = ma) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all() strategy.cancel("L1") strategy.cancel("S1") strategy.cancel("TPL") strategy.cancel("TPS")