
Strategi ini didasarkan pada prinsip mata uang bercabang yang mati pada rata-rata bergerak sederhana (SMA). Strategi ini menggunakan dua SMA, yaitu SMA cepat dan SMA lambat, yang menghasilkan sinyal beli ketika SMA cepat menerobos SMA lambat dari arah bawah; menghasilkan sinyal jual ketika SMA cepat turun dari arah atas dan melanggar SMA lambat.
Strategi ini bergantung pada dua garis indikator SMA. Di antaranya, pengaturan yang lebih pendek selama SMA cepat, dapat menangkap perubahan harga lebih cepat; pengaturan yang lebih lama selama SMA lambat, dapat menyaring sebagian dari kebisingan. Ketika SMA cepat dari bawah melintasi SMA lambat, berarti harga jangka pendek naik lebih cepat, menghasilkan sinyal beli.
Dengan mengatur parameter siklus SMA yang berbeda, parameter strategi dapat disesuaikan dengan kondisi pasar yang berbeda. Selain itu, strategi ini juga memungkinkan untuk mengatur rentang waktu pengembalian, sehingga lebih mudah untuk menguji parameter strategi pada data historis.
Langkah-langkah berikut dapat dilakukan untuk mengatasi risiko tersebut:
Strategi ini adalah strategi pelacakan tren yang khas. Dengan menggunakan prinsip silang dua garis sejajar yang sederhana, dengan parameter yang tepat, efek pelacakan yang lebih baik dapat diperoleh. Namun, SMA itu sendiri memiliki keterbelakangan tertentu, tidak dapat menilai kekuatan tren. Oleh karena itu, dalam aplikasi praktis, perlu diperkenalkan alat bantu lain untuk membentuk portofolio indikator, sekaligus dilengkapi dengan pengoptimalan parameter otomatis dan alat pengendalian risiko, untuk membuat strategi stabil dan menguntungkan.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')
strategy(title="SMA Cross Entry & Exit Strategy", 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 = open, title = "Fast MA Source")
maFastLength = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource = input(defval = open , title = "Slow MA Source")
maSlowLength = input(defval = 46, title = "Slow MA Period", minval = 1)
// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, 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 ? green : red)