Strategi ini adalah strategi perdagangan silang rata-rata bergerak yang tipikal. Ia menggunakan persimpangan rata-rata bergerak cepat dan rata-rata bergerak perlahan sebagai isyarat membeli dan menjual. Apabila rata-rata bergerak cepat melintasi rata-rata bergerak perlahan dari bawah, ia dianggap sebagai isyarat membeli; apabila rata-rata bergerak cepat melintasi rata-rata bergerak perlahan dari atas ke bawah, ia dianggap sebagai isyarat menjual.
Strategi ini dijalankan melalui beberapa langkah:
Tetapkan kitaran purata bergerak pantas (FastMA) dan kitaran purata bergerak perlahan (SlowMA).
Mengikut jenis input Type, kiraan purata bergerak pantas (fast) dan purata bergerak perlahan (slow). Type = 1 untuk purata bergerak mudah, Type = 2 untuk purata bergerak mendatar.
Tetapkan jangka masa pengesanan semula start dan finish
Definisi fungsi silang: apabila fast dari atas melalui slow, ia menghasilkan isyarat beli; apabila fast dari atas melalui slow, ia menghasilkan isyarat jual.
Apabila fungsi salib dipicu, arahan untuk membeli dan membuka atau menjual kedudukan kosong dikeluarkan jika dalam jangka masa pengesanan balik.
Pada akhir tetingkap pengiraan semula atau di bawah fungsi silang, arahan penutupan dijual dikeluarkan.
Menggambarkan carta trend bagi purata bergerak pantas (FAST) dan purata bergerak perlahan (SLOW).
Strategi ini menilai trend dalam tempoh pegangan dengan menyeberang rata-rata bergerak yang cepat dan perlahan, dan menghasilkan isyarat perdagangan berdasarkan itu. Pada masa yang sama, tetapan tetingkap masa pengesanan semula untuk mensimulasikan perdagangan sebenar.
Strategi ini mempunyai kelebihan berikut:
Menggunakan purata bergerak untuk menilai trend adalah berkesan dan boleh menapis turun naik rawak dengan berkesan.
Gabungan purata bergerak perlahan dan cepat dapat mengenal pasti perubahan trend.
Anda boleh menyesuaikan parameter purata bergerak untuk menyesuaikan diri dengan trend dalam tempoh yang berbeza.
Anda boleh memilih purata bergerak sederhana atau purata bergerak indeks.
Parameter strategi boleh diuji dan dioptimumkan melalui fungsi pengesanan balik.
Strategi logiknya mudah difahami dan mudah dilaksanakan.
Menggambar grafik purata bergerak untuk menilai trend dan kesannya secara intuitif.
Strategi ini mempunyai beberapa risiko:
Dalam pengiraan, ia mungkin akan menyebabkan isyarat yang salah.
Rata-rata bergerak mempunyai keterbelakangan dan mungkin terlepas titik peralihan.
Hanya bergantung pada penyeberangan linear, tanpa penapisan yang digabungkan dengan petunjuk atau syarat lain.
Tidak mengambil kira kos transaksi.
Tidak ada strategi stop loss yang ditetapkan.
Tetapan parameter yang tidak munasabah boleh menjejaskan kesan strategi.
Julat masa pengesanan yang dipilih tidak tepat, mungkin menyebabkan kecocokan berlebihan.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Gabungan dengan penunjuk lain seperti MACD, RSI dan lain-lain untuk mengesahkan isyarat, meningkatkan ketepatan.
Tambah strategi hentikan kerugian untuk mengawal kerugian tunggal.
Optimumkan parameter purata bergerak untuk menyesuaikan diri dengan kitaran yang berbeza.
Menambah pengurusan kedudukan gudang terbuka, menggunakan kedudukan yang berbeza mengikut keadaan pasaran.
Mengambil kira kos transaksi, mengubah titik kemasukan dan keluar.
Uji data untuk jangka masa yang lebih lama untuk mengelakkan over-fitting.
Menggunakan walks forward analysis untuk terus mengoptimumkan parameter.
Strategi persilangan rata-rata bergerak adalah strategi penjejakan trend yang mudah dan praktikal. Ia boleh menyaring turun naik secara rawak dan mengenal pasti arah trend. Tetapi ada juga beberapa masalah seperti keterbelakangan, yang harus digunakan dengan gabungan indikator lain.
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// strategy("MavCrossover v2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
// Revision: 1
// Author: @ToS_MavericK
// === INPUT SMA ===
fastMA = input(defval = 13, title = "FastMA", minval = 1, step = 1)
slowMA = input(defval = 144, title = "SlowMA", minval = 1, step = 1)
Type = input(defval = 1, title = "Type (1 = SMA, 2 = EMA)", minval = 1, maxval = 2, step = 1)
SlowMAIsFactor = input(false)
slowMA := SlowMAIsFactor == true ? round(fastMA * slowMA) : slowMA
// === INPUT BACKTEST RANGE ===
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear = input(defval = 2020, title = "To Year", minval = 2012)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === MA SETUP ===
fast = Type == 1 ? sma(close, fastMA) : ema(close, fastMA)
slow = Type == 1 ? sma(close, slowMA) : ema(close, slowMA)
// === EXECUTION ===
strategy.entry("L", strategy.long, when = crossover(fast, slow) and window()) // buy long when "within window of time" AND crossover
strategy.close("L", when = crossunder(fast, slow) or time > finish) // sell long when window ends OR crossunder
plot(fast, title = 'FastMA', color = yellow, linewidth = 2, style = line) // plot FastMA
plot(slow, title = 'SlowMA', color = aqua, linewidth = 2, style = line) // plot SlowMA