Diese Strategie verwendet VWMA, um die Trendrichtung zu bestimmen, und setzt mit ATR einen Stop-Loss, um dem Trend zu folgen.
Verwenden Sie VWMA, um die Trendrichtung zu bestimmen. Gehen Sie lang, wenn der Preis über VWMA liegt, gehen Sie kurz, wenn der Preis unter VWMA liegt.
Fügen Sie einen RSI-Oszillatorfilter hinzu, um falsche Ausbruchssignale zu vermeiden.
Verwenden Sie ATR, um die Stop-Loss-Linie zu berechnen.
Der ATR-Multiplikator steuert die Dichte der Stop-Loss-Linie. Ein größerer Multiplikator bedeutet eine weniger häufige Aktualisierung, die besser für den Trend ist.
Die Positionsgröße wird auf der Grundlage des Eigenkapitals des Kontos und des Stop-Loss-Prozentsatzes berechnet.
Verlassen Sie die Long-Position, wenn der Preis unter die Stop-Loss-Linie fällt.
Die Verwendung von VWMA zur Ermittlung von Trends erfasst Trendchancen dauerhaft.
Der RSI-Filter vermeidet einige falsche Ausbruchssignale.
Der ATR-Trailing-Stop folgt dem Trend und vermeidet, durch Umkehrungen ausgeschaltet zu werden.
Die Größe der Positionen basierend auf dem Eigenkapital des Kontos und dem Stop-Loss begünstigt das Risikomanagement.
Potenzielle Verluste bei Trendwendepunkten sollten die Positionsgröße reduzieren, um Verluste zu begrenzen.
Eine unsachgemäße Einstellung der ATR-Parameter führt zu einer zu engen oder lockeren Stop-Loss-Linie.
Eine schnelle Trendumkehr kann dazu führen, dass die Stop-Loss-Aktualisierung verzögert wird und die Verluste zunehmen.
In Umgebungen mit geringer Volatilität müssen die Positionsgröße verringert und die Häufigkeit der Aktualisierung von Stop-Loss erhöht werden.
Versuche verschiedene VWMA-Parameterkombinationen, um optimale Signalparameter zu finden.
Testen Sie andere RSI-Einstellungen wie Überkauf/Überverkauf.
Test den ATR-Multiplikator, um ein optimales Gleichgewicht zwischen Abzug und Verfolgungsfähigkeit zu finden.
Fügen Sie weitere Filter wie MACD, KD hinzu, um die Signalqualität zu verbessern.
Optimierung der Positionsgröße und Stop-Loss-Prozentsatz basierend auf der Marktvolatilität.
Die Strategie hat eine allgemeine Trend-Folgende Verzerrung und fängt offensichtliche Preistrends gut ein. Sie hat Vorteile bei der Trendbestimmung, Signalfilterung, Stop-Loss-Trailing usw. Sie hat auch Risiken bei der Trendumkehrung. Feinabstimmungsparameter und Positionsgrößen können zu einer besseren Performance führen.
/*backtest start: 2023-10-07 00:00:00 end: 2023-10-13 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mohanee //@version=4 //strategy("", overlay=true) strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed, float xATRTrailingStop=na int pos=na vwmalength = input(33, title="VWMA Length", minval=1, maxval=365) //vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365) nATRPeriod = input(33, title="ATR length", minval=1, maxval=365) nATRMultip = input(3.5, title="ATR Multiplier") rsiofVwmaLength=input(14, title="RSI of VWMA Length") riskCapital = input(title="Risk % of capital", defval=10, minval=1) stopLoss=input(5,title="Stop Loss",minval=1) vwmaVal=vwma(close, vwmalength) //vwmaVal2=vwma(close, vwmalength2) //maVal=sma(close, vwmalength) plot(vwmaVal, color=color.orange, linewidth=2, title="VWMA") //plot(vwmaVal2, color=color.blue, title="VWMA Short Term") //plot(maVal, color=color.blue, title="MA") //rsi of vwma Longterm rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength) xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos:= iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue //plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop") //Entry-- //Echeck how many units can be purchased based on risk manage ment and stop loss qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100) //check if cash is sufficient to buy qty1 , if capital not available use the available capital only qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1 //Long Entry //strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop> vwmaVal) strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and close>open and close>vwmaVal and pos == 1 ) ///pos == 1 means ATRStop line is green //vwmaVal2>vwmaVal and plot(strategy.position_size>=1 ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop") bgcolor(strategy.position_size>=1 ? color.blue : na ) //Exit strategy.close(id="VWMA LE", when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop) ) //strategy.close(id="VWMA LE", when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )