
Strategi ini adalah strategi pengesanan trend berdasarkan dua persilangan garis rata-rata ganda. Ia menggabungkan purata bergerak mudah cepat (SMA) dan purata bergerak berat perlahan (VWMA), menggunakan persilangan dua garis rata-rata untuk membentuk isyarat membeli dan menjual.
Apabila SMA pantas ke atas melalui VWMA perlahan, ia menghasilkan isyarat beli; apabila SMA pantas ke bawah melalui VWMA perlahan, ia menghasilkan isyarat jual. Strategi menggunakan mekanisme kawalan risiko berhenti.
Logik teras strategi ini adalah berdasarkan sistem penyeberangan linear ganda. Secara khusus, ia menggunakan kedua-dua indikator teknikal berikut:
Pengaturan parameter SMA pantas dalam garis purata berganda lebih pendek, dapat bertindak balas dengan cepat terhadap perubahan harga; parameter VWMA perlahan lebih lama, mempunyai kesan gelombang. Apabila trend jangka pendek dan jangka panjang bergerak ke arah yang sama, SMA pantas melintasi VWMA perlahan ke atas menghasilkan isyarat beli; melintasi ke bawah menghasilkan isyarat jual.
Strategi ini juga menetapkan mekanisme hentian kerugian. Apabila harga bergerak ke arah yang tidak baik, hentian tepat pada masanya untuk mengawal risiko.
Kaedah untuk mengawal risiko:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi ini secara keseluruhan merupakan strategi trend-following yang sangat praktikal. Ia menggunakan persilangan garis purata ganda yang mudah dan intuitif untuk menghasilkan isyarat perdagangan, yang dapat menangkap perubahan trend pasaran dengan berkesan melalui kombinasi garis purata cepat dan garis purata perlahan.
/*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)