Ini adalah strategi perdagangan crossover purata bergerak biasa. Ia menggunakan titik persilangan purata bergerak pantas dan perlahan sebagai isyarat perdagangan. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan dari bawah, ia dianggap sebagai isyarat beli. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan dari atas, ia dianggap sebagai isyarat jual. Strategi ini menggabungkan dua purata bergerak dan dapat menapis bunyi pasaran dan mengenal pasti trend dengan berkesan.
Langkah utama strategi ini ialah:
Tetapkan tempoh purata bergerak pantas fastMA dan tempoh purata bergerak perlahan slowMA.
Hitung purata bergerak pantas dan purata bergerak perlahan berdasarkan jenis input Type. Type=1 adalah purata bergerak mudah, Type=2 adalah purata bergerak eksponensial.
Set backtest julat masa permulaan dan akhir.
Tentukan fungsi crossover: apabila pantas melintasi di atas perlahan, menjana isyarat beli; apabila pantas melintasi di bawah perlahan, menjana isyarat jual.
Apabila fungsi crossover dicetuskan, jika dalam julat masa backtest, mengeluarkan pesanan terbuka panjang atau dekat pendek.
Apabila tetingkap backtest berakhir atau fungsi crossover melintasi di bawah, mengeluarkan perintah menutup panjang.
Menggambarkan purata bergerak pantas dan purata bergerak perlahan.
Strategi ini menggunakan persilangan purata bergerak cepat dan perlahan untuk menentukan trend dalam tempoh pegangan dan menjana isyarat perdagangan dengan sewajarnya.
Kelebihan strategi ini:
Purata bergerak berkesan dalam menentukan trend dan menapis turun naik rawak.
Gabungan purata bergerak cepat dan perlahan boleh mengenal pasti perubahan trend.
Parameter purata bergerak boleh diselaraskan untuk menyesuaikan diri dengan trend tempoh yang berbeza.
Pilihan fleksibel antara purata bergerak mudah dan eksponensial.
Fungsi Backtest membolehkan ujian dan pengoptimuman parameter strategi.
Logik yang mudah dan jelas, mudah difahami dan dilaksanakan.
Menggambar carta purata bergerak membolehkan penentuan visual trend dan kesan.
Beberapa risiko strategi ini:
Boleh menghasilkan isyarat palsu semasa tempoh yang terhad.
Purata bergerak mempunyai kesan kelewatan, mungkin terlepas titik giliran.
Bergantung hanya pada persilangan purata bergerak, tidak ada penunjuk atau penapis lain.
Tidak mengambil kira kos perdagangan.
Tiada strategi stop loss.
Tetapan parameter yang tidak munasabah boleh mempengaruhi prestasi strategi.
Pemilihan julat masa backtest yang tidak betul boleh menyebabkan pemasangan berlebihan.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Tambah penunjuk lain seperti MACD, RSI untuk mengesahkan isyarat dan meningkatkan ketepatan.
Tambah strategi stop loss untuk mengawal kerugian tunggal.
Mengoptimumkan parameter purata bergerak untuk tempoh yang berbeza.
Tambah saiz kedudukan berdasarkan keadaan pasaran.
Pertimbangkan kos dagangan, sesuaikan titik masuk dan keluar.
Uji jangka masa yang lebih lama untuk mengelakkan overfitting.
Terus mengoptimumkan parameter menggunakan analisis berjalan ke hadapan.
Strategi crossover purata bergerak adalah strategi trend berikut yang mudah dan praktikal. Ia boleh menapis turun naik rawak dan mengenal pasti arah trend. Tetapi ia juga mempunyai beberapa masalah seperti kesan ketinggalan, dan harus digabungkan dengan penunjuk lain. Pengoptimuman dan pengujian berterusan dapat meningkatkan prestasi strategi dan menjadikannya lebih boleh dipercayai untuk perdagangan langsung. Secara keseluruhan, strategi ini sesuai untuk pelabur dengan keperluan yang agak rendah untuk penentuan trend.
/*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