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.
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.
Der größte Vorteil dieser Strategie besteht darin, dass die Verwendung von VWAP und EMA zur Ermittlung von Trends sehr zuverlässig ist.
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.
Das Hauptrisiko dieser Strategie besteht darin, dass VWAP und die EMA möglicherweise falsche Signale geben.
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.
Die wichtigsten Aspekte zur Stärkung dieser Strategie:
/*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")