Strategi Pelacakan Tren Multi-Indikator

Penulis:ChaoZhang, Tanggal: 2023-09-23
Tag:

Gambaran umum

Strategi ini mengintegrasikan beberapa indikator untuk identifikasi tren, dan menghasilkan sinyal perdagangan berdasarkan perubahan arah yang selaras.

Logika Strategi

Indikator inti adalah:

  1. Kecepatan rata-rata bergerak: Mencerminkan momentum harga.

  2. STOCH: Terlalu laris/terlalu banyak dibeli karena perubahan tren.

  3. MACD: Perubahan tren dari rata-rata bergerak ganda.

Aturan perdagangan adalah:

  1. Meningkatnya kecepatan rata-rata bergerak memberikan sinyal bullish.

  2. STOCH di zona overbought memberikan sinyal bearish.

  3. Crossover positif MACD memberikan sinyal bullish.

  4. Masukkan ketika 2 indikator menyamakan sinyal.

  5. Keluar saat sinyal indikator berubah.

Kombinasi ini mengevaluasi tren dari beberapa dimensi, menyaring kebisingan untuk sinyal keyakinan tinggi.

Keuntungan

Dibandingkan dengan indikator tunggal, strategi combo memiliki keuntungan berikut:

  1. Tampilan gabungan meningkatkan akurasi.

  2. Filter ensembel mengurangi sinyal palsu.

  3. Menggabungkan indikator tren dan rata-rata pembalikan.

  4. Sinyal yang selaras memiliki keyakinan tinggi, menghindari kebocoran palsu.

  5. Aturan sederhana dan jelas, mudah diterapkan.

  6. Pengaturan parameter yang fleksibel, ketahanan.

  7. Berlaku pada jangka waktu yang berbeda.

  8. Bisa melatih berat indikator dengan pembelajaran mesin.

  9. Secara keseluruhan stabilitas dan profitabilitas lebih baik daripada indikator tunggal.

Risiko

Meskipun ada manfaatnya, risiko yang perlu dipertimbangkan meliputi:

  1. Meningkatkan kompleksitas dengan beberapa indikator.

  2. Menantang optimasi parameter dan bobot.

  3. Sinyal indikator yang bertentangan mungkin terjadi.

  4. Beberapa lag selalu ada, tidak bisa menghindari semua kerugian.

  5. Periode menunggu unidirectional yang tidak pasti dengan faktor keberuntungan.

  6. Sinyal gabungan tidak dapat menghilangkan risiko perdagangan tren yang melekat.

  7. Frekuensi perdagangan yang tinggi meningkatkan biaya transaksi.

  8. Perlu memantau rasio reward/risiko.

Peningkatan

Berdasarkan analisis, peningkatan dapat mencakup:

  1. Mengevaluasi efektivitas indikator di pasar yang berbeda.

  2. Tambahkan pemeriksaan ketahanan parameter untuk mencegah pemasangan berlebihan.

  3. Mengoptimalkan bobot indikator untuk mengurangi konflik.

  4. Mengimplementasikan berhenti untuk membatasi kerugian yang parah.

  5. Gunakan waktu keluar untuk mengontrol periode ditahan tak terbatas.

  6. Menilai dampak frekuensi perdagangan pada biaya transaksi.

  7. Masukkan kendala metrik risiko.

  8. Uji ketahanan di berbagai pasar.

  9. Terus memvalidasi efektivitas strategi.

Kesimpulan

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)

Lebih banyak