Strategi ini direka berdasarkan prinsip salib emas dan salib mati Purata Bergerak Sederhana (SMA). Strategi ini menggunakan dua SMA, iaitu SMA pantas dan SMA perlahan. Apabila SMA pantas melintasi di atas SMA perlahan dari bawah, isyarat beli dihasilkan. Apabila SMA pantas melintasi di bawah SMA perlahan dari atas, isyarat jual dihasilkan.
Strategi ini terutamanya bergantung pada dua garis penunjuk SMA. SMA pantas mempunyai tempoh yang lebih pendek dan dapat menangkap perubahan harga dengan lebih cepat. SMA perlahan mempunyai tempoh yang lebih lama dan boleh menapis beberapa bunyi bising. Apabila SMA pantas melintasi di atas SMA perlahan dari bawah, ia menunjukkan bahawa kelajuan kenaikan jangka pendek lebih cepat dan menghasilkan isyarat beli. Apabila SMA pantas melintasi di bawah SMA perlahan dari atas, ia menunjukkan bahawa kelajuan penurunan jangka pendek lebih cepat dan menghasilkan isyarat jual.
Dengan menetapkan parameter tempoh SMA yang berbeza, parameter strategi boleh diselaraskan ke tahap tertentu untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza. Pada masa yang sama, strategi juga membolehkan menetapkan julat masa backtesting untuk menguji parameter strategi pada data sejarah.
Untuk menangani risiko di atas, langkah-langkah berikut boleh diambil:
Ini adalah strategi trend berikut yang tipikal. Dengan menggunakan prinsip crossover purata bergerak berganda yang mudah, ia boleh memperoleh hasil penjejakan yang baik apabila parameter ditetapkan dengan betul. Walau bagaimanapun, SMA itu sendiri mempunyai kesan kelewatan tertentu dan tidak dapat menentukan momentum trend. Oleh itu, dalam aplikasi sebenar, alat tambahan lain perlu diperkenalkan untuk membentuk kombinasi penunjuk, dan dilengkapi dengan pengoptimuman parameter automatik dan cara kawalan risiko, untuk menjadikan strategi itu menguntungkan secara berterusan.
/*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)