
Die Strategie basiert auf einer Trend-Tracking-Strategie mit doppelter Durchschnittslinie. Sie kombiniert einen schnellen einfachen gleitenden Durchschnitt (SMA) und einen langsam gewichteten gleitenden Durchschnitt (VWMA) und nutzt die Kreuzung der beiden Durchschnittslinien, um ein Kauf- und Verkaufssignal zu erzeugen.
Wenn der schnelle SMA nach oben durch den langsamen VWMA geht, erzeugt er ein Kaufsignal; wenn der schnelle SMA nach unten durch den langsamen VWMA geht, erzeugt er ein Verkaufssignal. Die Strategie verwendet ein Stop-Loss-Mechanismus, um das Risiko zu kontrollieren.
Die Kernlogik der Strategie basiert auf einer doppelten Gleichgewichtskreuzung. Konkret nutzt sie die folgenden technischen Kennzahlen:
Die schnellen SMA-Parameter in der doppelten Mittellinie sind kürzer eingestellt, um schnell auf Preisänderungen zu reagieren; die langsamen VWMA-Parameter sind länger und wirken wie eine Welle. Wenn sich der kurzfristige und der langfristige Trend in die gleiche Richtung entwickelt, erzeugt der schnelle SMA ein Kaufsignal, wenn er den langsamen VWMA nach oben durchquert.
Die Strategie setzt gleichzeitig einen Stop-Loss-Mechanismus ein. Wenn der Preis in eine ungünstige Richtung fährt, wird der Stop-Loss zeitnah durchgeführt, um das Risiko zu kontrollieren.
Die Methoden zur Risikokontrolle:
Diese Strategie kann in folgenden Bereichen optimiert werden:
Die Strategie als Ganzes ist eine sehr praktische Trend-Tracking-Strategie. Sie verwendet eine einfache intuitive doppelte Durchmesser-Kreuzung, um ein Handelssignal zu erzeugen, und durch die Kombination von schnellen Durchmesser und langsamen Durchmesser kann die Veränderung der Markttrends effektiv erfasst werden. Die Stop-Loss-Mechanismen ermöglichen auch eine gute Risikokontrolle. Die Handelswirksamkeit der Strategie kann durch die Kombination mit anderen Indikatoren und Parameteroptimierungen weiter verbessert werden.
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD')
strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true)
// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
// === GENERAL INPUTS ===
// short ma
maFastSource = input(defval = close, title = "Simple MA Source")
maFastLength = input(defval = 6, title = "Simple MA Length", minval = 1)
// long ma
maSlowSource = input(defval = high, title = "VW MA Source")
maSlowLength = input(defval = 7, title = "VW MA Period", minval = 1)
// === SERIES SETUP ===
// a couple of ma's...
maFast = sma(maFastSource, maFastLength)
maSlow = vwma(maSlowSource, maSlowLength)
// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// === LOGIC ===
enterLong = crossover(maFast, maSlow)
exitLong = crossover(maSlow, maFast)
//enterLong = crossover(maSlow, maFast)
//exitLong = crossover(maFast, maSlow)
// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)
// === FILL ====
fill(fast, slow, color = maFast > maSlow ? color.green : color.red)
// === MRSI ===
//
//
basis = rsi(close, input(50))
ma1 = ema(basis, input(2))
ma2 = ema(basis, input(27))
oversold = input(32.6)
overbought = input(63)
//plot(ma1, title="RSI EMA1", color=blue)
//plot(ma2, title="RSI EMA2", color=yellow)
obhist = ma1 >= overbought ? ma1 : overbought
oshist = ma1 <= oversold ? ma1 : oversold
//plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought)
//plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold)
//i1 = hline(oversold, title="Oversold Level", color=white)
//i2 = hline(overbought, title="Overbought Level", color=white)
//fill(i1, i2, color=olive, transp=100)
// === LOGIC ===
enterLongMrsi = crossover(ma1, oversold)
exitLongMrsi = crossover(ma1, overbought)
// Entry //
strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi)
strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi)
//hline(50, title="50 Level", color=white)