Strategi Pengesanan Trend Berbilang Penunjuk

Penulis:ChaoZhang, Tarikh: 23 September 2023 15:19:46
Tag:

Ringkasan

Strategi ini mengintegrasikan pelbagai penunjuk untuk pengenalan trend, dan menghasilkan isyarat perdagangan berdasarkan perubahan arah yang diselaraskan.

Logika Strategi

Penunjuk utama ialah:

  1. Kelajuan purata bergerak: mencerminkan momentum harga.

  2. STOCH: Terlampau dijual/terlampau dibeli untuk perubahan trend.

  3. MACD: Perubahan trend dari purata bergerak berganda.

Peraturan perdagangan adalah:

  1. Kecepatan rata-rata bergerak yang meningkat memberi isyarat kenaikan.

  2. STOCH dalam zon overbought memberi isyarat penurunan.

  3. Perpindahan positif MACD memberi isyarat menaik.

  4. Masukkan apabila mana-mana 2 penunjuk menyelaraskan isyarat.

  5. Keluar apabila isyarat penunjuk berubah.

Gabungan ini menilai trend dari pelbagai dimensi, menapis bunyi bising untuk isyarat keyakinan tinggi.

Kelebihan

Berbanding dengan penunjuk tunggal, strategi gabungan mempunyai kelebihan berikut:

  1. Pandangan gabungan meningkatkan ketepatan.

  2. Penapisan kumpulan mengurangkan isyarat palsu.

  3. Merangkumi penunjuk trend dan pembalikan purata.

  4. Isyarat yang diselaraskan mempunyai keyakinan yang tinggi, mengelakkan penyebaran palsu.

  5. Peraturan mudah dan jelas, mudah dilaksanakan.

  6. Penyesuaian parameter yang fleksibel, ketahanan.

  7. Berlaku untuk jangka masa yang berbeza.

  8. Boleh melatih berat indikator dengan pembelajaran mesin.

  9. Secara keseluruhan, kestabilan dan keuntungan yang lebih baik daripada penunjuk tunggal.

Risiko

Walaupun ada kelebihan, risiko yang perlu dipertimbangkan termasuk:

  1. Meningkatkan kerumitan dengan pelbagai penunjuk.

  2. Menantang parameter pengoptimuman dan berat.

  3. Isyarat penunjuk yang bertentangan mungkin berlaku.

  4. Ada sedikit kelewatan, tidak boleh mengelakkan semua kerugian.

  5. Tempoh penantian unidirectional yang tidak pasti dengan faktor nasib.

  6. Isyarat gabungan tidak dapat menghilangkan risiko perdagangan trend yang melekat.

  7. Frekuensi perdagangan yang tinggi meningkatkan kos transaksi.

  8. Perlu memantau nisbah ganjaran / risiko.

Peningkatan

Berdasarkan analisis, penambahbaikan mungkin melibatkan:

  1. Menilai keberkesanan penunjuk di pasaran yang berbeza.

  2. Tambah pemeriksaan ketahanan parameter untuk mengelakkan pemasangan berlebihan.

  3. Mengoptimumkan berat indikator untuk mengurangkan konflik.

  4. Melaksanakan hentian untuk mengehadkan kerugian yang teruk.

  5. Gunakan waktu keluar untuk mengawal tempoh tahan tanpa had.

  6. Menilai kesan frekuensi dagangan terhadap kos transaksi.

  7. Memasukkan sekatan metrik risiko.

  8. Uji ketahanan di pelbagai pasaran.

  9. Sentiasa mengesahkan keberkesanan strategi.

Kesimpulan

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)

Lebih lanjut