Strategi ini mengintegrasikan beberapa indikator untuk identifikasi tren, dan menghasilkan sinyal perdagangan berdasarkan perubahan arah yang selaras.
Indikator inti adalah:
Kecepatan rata-rata bergerak: Mencerminkan momentum harga.
STOCH: Terlalu laris/terlalu banyak dibeli karena perubahan tren.
MACD: Perubahan tren dari rata-rata bergerak ganda.
Aturan perdagangan adalah:
Meningkatnya kecepatan rata-rata bergerak memberikan sinyal bullish.
STOCH di zona overbought memberikan sinyal bearish.
Crossover positif MACD memberikan sinyal bullish.
Masukkan ketika 2 indikator menyamakan sinyal.
Keluar saat sinyal indikator berubah.
Kombinasi ini mengevaluasi tren dari beberapa dimensi, menyaring kebisingan untuk sinyal keyakinan tinggi.
Dibandingkan dengan indikator tunggal, strategi combo memiliki keuntungan berikut:
Tampilan gabungan meningkatkan akurasi.
Filter ensembel mengurangi sinyal palsu.
Menggabungkan indikator tren dan rata-rata pembalikan.
Sinyal yang selaras memiliki keyakinan tinggi, menghindari kebocoran palsu.
Aturan sederhana dan jelas, mudah diterapkan.
Pengaturan parameter yang fleksibel, ketahanan.
Berlaku pada jangka waktu yang berbeda.
Bisa melatih berat indikator dengan pembelajaran mesin.
Secara keseluruhan stabilitas dan profitabilitas lebih baik daripada indikator tunggal.
Meskipun ada manfaatnya, risiko yang perlu dipertimbangkan meliputi:
Meningkatkan kompleksitas dengan beberapa indikator.
Menantang optimasi parameter dan bobot.
Sinyal indikator yang bertentangan mungkin terjadi.
Beberapa lag selalu ada, tidak bisa menghindari semua kerugian.
Periode menunggu unidirectional yang tidak pasti dengan faktor keberuntungan.
Sinyal gabungan tidak dapat menghilangkan risiko perdagangan tren yang melekat.
Frekuensi perdagangan yang tinggi meningkatkan biaya transaksi.
Perlu memantau rasio reward/risiko.
Berdasarkan analisis, peningkatan dapat mencakup:
Mengevaluasi efektivitas indikator di pasar yang berbeda.
Tambahkan pemeriksaan ketahanan parameter untuk mencegah pemasangan berlebihan.
Mengoptimalkan bobot indikator untuk mengurangi konflik.
Mengimplementasikan berhenti untuk membatasi kerugian yang parah.
Gunakan waktu keluar untuk mengontrol periode ditahan tak terbatas.
Menilai dampak frekuensi perdagangan pada biaya transaksi.
Masukkan kendala metrik risiko.
Uji ketahanan di berbagai pasar.
Terus memvalidasi efektivitas strategi.
Strategi ini membentuk sinyal ensemble yang stabil dengan mengintegrasikan beberapa indikator untuk penilaian tren. Tetapi optimasi terus-menerus adalah kunci untuk setiap strategi, memantau risiko dan mencegah overfit.
/*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)