Strategi ini mengintegrasikan pelbagai penunjuk untuk pengenalan trend, dan menghasilkan isyarat perdagangan berdasarkan perubahan arah yang diselaraskan.
Penunjuk utama ialah:
Kelajuan purata bergerak: mencerminkan momentum harga.
STOCH: Terlampau dijual/terlampau dibeli untuk perubahan trend.
MACD: Perubahan trend dari purata bergerak berganda.
Peraturan perdagangan adalah:
Kecepatan rata-rata bergerak yang meningkat memberi isyarat kenaikan.
STOCH dalam zon overbought memberi isyarat penurunan.
Perpindahan positif MACD memberi isyarat menaik.
Masukkan apabila mana-mana 2 penunjuk menyelaraskan isyarat.
Keluar apabila isyarat penunjuk berubah.
Gabungan ini menilai trend dari pelbagai dimensi, menapis bunyi bising untuk isyarat keyakinan tinggi.
Berbanding dengan penunjuk tunggal, strategi gabungan mempunyai kelebihan berikut:
Pandangan gabungan meningkatkan ketepatan.
Penapisan kumpulan mengurangkan isyarat palsu.
Merangkumi penunjuk trend dan pembalikan purata.
Isyarat yang diselaraskan mempunyai keyakinan yang tinggi, mengelakkan penyebaran palsu.
Peraturan mudah dan jelas, mudah dilaksanakan.
Penyesuaian parameter yang fleksibel, ketahanan.
Berlaku untuk jangka masa yang berbeza.
Boleh melatih berat indikator dengan pembelajaran mesin.
Secara keseluruhan, kestabilan dan keuntungan yang lebih baik daripada penunjuk tunggal.
Walaupun ada kelebihan, risiko yang perlu dipertimbangkan termasuk:
Meningkatkan kerumitan dengan pelbagai penunjuk.
Menantang parameter pengoptimuman dan berat.
Isyarat penunjuk yang bertentangan mungkin berlaku.
Ada sedikit kelewatan, tidak boleh mengelakkan semua kerugian.
Tempoh penantian unidirectional yang tidak pasti dengan faktor nasib.
Isyarat gabungan tidak dapat menghilangkan risiko perdagangan trend yang melekat.
Frekuensi perdagangan yang tinggi meningkatkan kos transaksi.
Perlu memantau nisbah ganjaran / risiko.
Berdasarkan analisis, penambahbaikan mungkin melibatkan:
Menilai keberkesanan penunjuk di pasaran yang berbeza.
Tambah pemeriksaan ketahanan parameter untuk mengelakkan pemasangan berlebihan.
Mengoptimumkan berat indikator untuk mengurangkan konflik.
Melaksanakan hentian untuk mengehadkan kerugian yang teruk.
Gunakan waktu keluar untuk mengawal tempoh tahan tanpa had.
Menilai kesan frekuensi dagangan terhadap kos transaksi.
Memasukkan sekatan metrik risiko.
Uji ketahanan di pelbagai pasaran.
Sentiasa mengesahkan keberkesanan strategi.
Strategi ini membentuk isyarat ensemble yang stabil dengan mengintegrasikan beberapa penunjuk untuk penilaian trend. Tetapi pengoptimuman berterusan adalah kunci untuk mana-mana strategi, memantau risiko dan mencegah terlalu banyak. Perdagangan kuant adalah proses pembelajaran yang berterusan.
/*backtest start: 2022-09-16 00:00:00 end: 2023-09-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // By TradeStation //@version=5 strategy("Mov Avg Speed Strategy", overlay=true) src = input(close, title="Source") // MA Speed avg_len = input.int(50, minval=1, title="Avg Length", group="MA Speed") roc_len = input.int(1, minval=1, title="Rate of Change Length", group="MA Speed") avg_roc_len = input.int(10, minval=1, title="Avg Rate of Change Length", group="MA Speed") // Stochastic stoch_len = input.int(14, minval=1, title="Stochastic Length", group="Stochastic") smooth_k = input.int(3, minval=1, title="Stochastic Smooth K", group="Stochastic") overbought = input.float(80, title="Stochastic Overbought", group="Stochastic") oversold = input.float(20, title="Stochastic Oversold", group="Stochastic") // MACD fast_length = input(12, title="Fast Length", group="MACD") slow_length = input(26, title="Slow Length", group="MACD") macd_avg_length = input.int(9, title="MACD Avg Length", minval=1, group="MACD") // MA Speed avg = ta.sma(src, avg_len) roc = ta.roc(avg, roc_len) avg_roc = ta.sma(roc, avg_roc_len) avg_roc_signal = avg_roc > 0 ? 1 : avg_roc < 0 ? -1 : 0 // Stochastic k k = ta.sma(ta.stoch(close, high, low, stoch_len), smooth_k) stochastic_signal = k <= oversold ? 1 : k >= overbought ? -1 : 0 // MACD fast_ma = ta.ema(src, fast_length) slow_ma = ta.ema(src, slow_length) macd = fast_ma - slow_ma macd_avg = ta.ema(macd, macd_avg_length) macd_signal = macd_avg > macd_avg[1] ? 1 : macd_avg < macd_avg[1] ? -1 : 0 // set the signal couint long_count = 0 short_count = 0 if macd_signal == 1 long_count += 1 else if macd_signal == -1 short_count += 1 if stochastic_signal == 1 long_count += 1 else if stochastic_signal == -1 short_count += 1 if avg_roc_signal == 1 long_count += 1 else if avg_roc_signal == -1 short_count += 1 if (long_count >= 2) strategy.entry("Long", strategy.long) if (short_count >= 2) strategy.entry("Short", strategy.short)