Pengukuran jarak indikator teknis dan strategi perdagangan kuantitatif hibrida pembalikan MACD

RSI MACD EMA momentum Euclidean Distance Centroid volatility REVERSAL PATTERN TREND FOLLOWING
Tanggal Pembuatan: 2025-04-16 15:19:46 Akhirnya memodifikasi: 2025-04-16 15:19:46
menyalin: 1 Jumlah klik: 379
2
fokus pada
319
Pengikut

Pengukuran jarak indikator teknis dan strategi perdagangan kuantitatif hibrida pembalikan MACD Pengukuran jarak indikator teknis dan strategi perdagangan kuantitatif hibrida pembalikan MACD

Tinjauan Strategi

Strategi ini adalah metode perdagangan kuantitatif campuran yang menggabungkan pengukuran jarak indikator teknis dan sinyal reversal MACD. Dengan menghitung jarak Euclidean antara kondisi pasar saat ini dan titik pusat bull dan bear yang telah ditentukan, serta menggabungkan sinyal silang dari indikator MACD, strategi ini membentuk strategi gabungan yang dapat menangkap dinamika tren dan mengidentifikasi potensi reversal. Strategi ini khusus dalam menggabungkan vektor karakteristik dari beberapa indikator teknis (EMA, volatilitas, momentum, RSI dan MACD) untuk menghasilkan sinyal perdagangan yang lebih akurat dengan mengukur secara matematis kesamaan kondisi pasar dengan kondisi yang diantisipasi.

Prinsip Strategi

Prinsip-prinsip inti dari strategi ini didasarkan pada dua mekanisme utama:

  1. Mekanisme pengukuran jarakStrategi ini pertama-tama membangun vektor karakteristik yang terdiri dari 6 indikator teknis, termasuk harga EMA, volatilitas, momentum, RSI, garis MACD, dan pilar MACD. Pada saat yang sama, dua vektor titik pusat bull dan bear telah didefinisikan sebelumnya, yang mewakili kondisi ideal pasar saat masing-masing tren naik dan turun. Dengan menghitung jarak beberapa mil Euro antara vektor kondisi pasar saat ini dan dua vektor titik pusat, strategi ini dapat menilai kondisi pasar saat ini yang lebih dekat.

  2. Mekanisme sinyal silang MACDSebagai pengesahan tingkat kedua, strategi menggunakan sinyal silang dari indikator MACD untuk menilai perubahan momentum pasar. Garis sinyal MACD di atas garis dianggap sebagai sinyal beli, sedangkan garis sinyal MACD di bawah garis dianggap sebagai sinyal jual.

Kombinasi kedua mekanisme ini membentuk sistem konfirmasi ganda: pada satu sisi dengan mengukur jarak untuk menilai kecenderungan pasar secara keseluruhan, dan pada sisi lain dengan MACD untuk menilai perubahan momentum jangka pendek. Strategi dapat menggunakan konfirmasi bersama kedua mekanisme (mengukur jarak dan MACD memberikan sinyal yang sama pada saat yang sama) atau dapat melakukan perdagangan berdasarkan sinyal yang dihasilkan secara independen oleh salah satu mekanisme, meningkatkan keragaman sinyal dan frekuensi peluang penangkapan.

Keunggulan Strategis

  1. Evaluasi kondisi pasar multidimensiDengan menggabungkan beberapa indikator teknis menjadi vektor karakteristik, strategi dapat menilai kondisi pasar dari berbagai dimensi, bukan hanya bergantung pada satu indikator, sehingga mengurangi risiko sinyal palsu.

  2. Mekanisme Generasi Sinyal FleksibelStrategi ini menggunakan pengukuran jarak dan MACD untuk menghasilkan sinyal yang dapat menangkap momentum yang berkelanjutan dalam tren, dan dapat menemukan titik balik potensial lebih cepat dan lebih adaptif.

  3. Objektivitas model matematikaPerhitungan jarak eklitik memberikan metode yang objektif dan matematis untuk menilai kondisi pasar, mengurangi pengaruh faktor penilaian subjektif.

  4. Mekanisme Pelancaran OtomatisStrategi ini akan secara otomatis melunasi posisi yang berlawanan arah ketika sinyal baru muncul, membantu menghentikan kerugian dan mengubah arah posisi dalam waktu yang tepat untuk beradaptasi dengan pasar yang berubah dengan cepat.

  5. Fungsi Pemantauan KinerjaStrategi ini memiliki fitur built-in untuk melacak dan menampilkan keuntungan dan kerugian perdagangan, sehingga memungkinkan untuk menilai kinerja strategi secara real-time dan melakukan penyesuaian parameter yang diperlukan.

Risiko Strategis

  1. Risiko sensitivitas parameterIndikator seperti EMA, RSI, dan MACD yang digunakan dalam strategi bergantung pada pengaturan parameter tertentu. Jika parameter ini tidak sesuai dengan kondisi pasar saat ini, dapat menyebabkan sinyal yang salah. Solusinya adalah menemukan kombinasi parameter yang optimal melalui pengukuran ulang, dan secara berkala mengevaluasi kembali efektivitas parameter.

  2. Risiko Terlalu Banyak BerdagangKarena strategi dapat menghasilkan sinyal secara independen berdasarkan dua mekanisme yang berbeda, terlalu banyak sinyal perdagangan dapat dihasilkan di pasar yang lebih berfluktuasi, meningkatkan biaya perdagangan. Perdagangan yang tidak perlu dapat dikurangi dengan menambahkan mekanisme penyaringan sinyal atau menyesuaikan logika pembuatan sinyal.

  3. Konflik antara tren dan pertimbangan terbalikDalam beberapa kondisi pasar, pengukuran jarak dan sinyal MACD dapat memberikan instruksi yang bertentangan, menyebabkan perilaku strategi yang tidak konsisten. Disarankan untuk membuat aturan prioritas sinyal yang jelas atau memperkenalkan mekanisme konfirmasi tambahan.

  4. Statikitas pada pengaturan titik pusatParameter-parameter dalam strategi bullish/bearish di tengah-tengah pasar saat ini adalah pengaturan statis (seperti nilai RSI), dan mungkin tidak dapat disesuaikan dengan semua kondisi pasar. Anda dapat mempertimbangkan untuk memperkenalkan mekanisme adaptasi, yang secara dinamis menyesuaikan posisi pusat berdasarkan data historis.

  5. Keterbatasan satu kerangka waktuStrategi hanya berjalan dalam satu kerangka waktu dan mungkin akan melewatkan sinyal penting dalam kerangka waktu yang lebih besar atau lebih kecil. Pertimbangkan untuk memperluas strategi ke beberapa kerangka waktu yang dapat meningkatkan keandalan sinyal.

Arah optimasi strategi

  1. Desain titik pusat adaptif: Parameter parsial titik pusat pasar bull dan bear saat ini tetap, dapat ditingkatkan menjadi titik pusat dinamis yang dihitung secara otomatis berdasarkan data historis. Misalnya, data dari N siklus terakhir dapat digunakan untuk menentukan kondisi pasar bull dan bear yang ideal, sehingga titik pusat dapat menyesuaikan diri dengan kondisi pasar secara otomatis.

  2. Prioritas sinyal dan mekanisme penyaringan: Memperkenalkan sistem prioritas sinyal berdasarkan lingkungan pasar, seperti memprioritaskan sinyal reversal di lingkungan dengan tingkat gelombang tinggi, memprioritaskan sinyal pengukuran jarak di lingkungan dengan tren gelombang rendah. Pada saat yang sama, filter sinyal berdasarkan tingkat gelombang atau volume transaksi dapat ditambahkan, mengurangi sinyal noise.

  3. Stop loss dan profit targetingStrategi saat ini tidak memiliki pengaturan target stop-loss dan profit yang jelas, dan dapat menambahkan mekanisme stop-loss berdasarkan ATR atau persentase tetap, dan pengaturan target profit berdasarkan level support / resistance atau rasio pengembalian risiko.

  4. Integrasi analisis multi-frame waktu: Mengintegrasikan informasi tren dari kerangka waktu yang lebih besar ke dalam strategi saat ini, misalnya melakukan sinyal perdagangan pada tingkat jam hanya jika arah tren sunspot konsisten, untuk meningkatkan keandalan sinyal.

  5. Penyesuaian Dinamis Fitur Berat: Mengalokasikan bobot dinamis untuk berbagai indikator dalam vektor karakteristik, secara otomatis menyesuaikan pengaruhnya sesuai dengan kemampuan masing-masing indikator untuk memprediksi kondisi pasar yang berbeda, meningkatkan akurasi perhitungan jarak.

  6. Pembelajaran MesinAnda dapat mempertimbangkan untuk memperkenalkan algoritma pembelajaran mesin sederhana untuk mengoptimalkan posisi titik pusat atau bobot karakteristik, atau bahkan dapat menggunakan algoritma pengelompokan untuk secara otomatis menemukan titik pusat dari beberapa status pasar, bukan hanya dua status bullish dan bearish sederhana.

Meringkaskan

Strategi perdagangan kuantitatif campuran pengukuran jarak indikator teknis dan MACD reversal adalah metode perdagangan kuantitatif inovatif yang mengintegrasikan beberapa indikator teknis yang umum digunakan dalam sistem penilaian keadaan pasar yang menyatu dengan teknologi penghitungan jarak Euclidean, dan menggabungkan sinyal silang MACD untuk membentuk mekanisme konfirmasi ganda. Metode ini dapat menangkap momentum dalam tren berkelanjutan dan mengidentifikasi potensi titik balik pasar, memiliki kemampuan adaptasi dan fleksibilitas yang kuat.

Keunggulan inti dari strategi ini adalah kemampuan untuk menilai pasar multi-dimensi dan objektivitas model matematika, tetapi juga menghadapi risiko seperti sensitivitas parameter, over-trading, dan konflik sinyal. Strategi ini memiliki banyak ruang untuk pengoptimalan dan peningkatan dengan memperkenalkan desain titik pusat yang beradaptasi, sistem prioritas sinyal yang dioptimalkan, peningkatan mekanisme stop-loss, integrasi analisis multi-frame timeframe, dan teknologi pembelajaran mesin yang diterapkan.

Strategi yang menggabungkan metode analisis teknis tradisional dengan model matematika ini menawarkan arah baru yang layak untuk dijelajahi bagi para pedagang kuantitatif, terutama bagi mereka yang ingin meningkatkan objektivitas keputusan perdagangan sambil menjaga keterangan strategi.

Kode Sumber Strategi
/*backtest
start: 2024-04-15 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Bysq-Distance Reversal Entry - BTCUSDT (v6)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, margin_long=0, margin_short=0)

// ========== FEATURE ENGINEERING ==========
price = close
priceNorm = ta.ema(price, 5)
volatility = ta.stdev(price, 20)
momentum = ta.ema(close - close[5], 5)
rsi = ta.rsi(close, 14)
macdLine = ta.ema(close, 12) - ta.ema(close, 26)
signalLine = ta.ema(macdLine, 9)
macdHist = macdLine - signalLine

// Fitur sebagai vector
featureVector = array.new_float(6)
array.set(featureVector, 0, priceNorm)
array.set(featureVector, 1, volatility)
array.set(featureVector, 2, momentum)
array.set(featureVector, 3, rsi)
array.set(featureVector, 4, macdLine)
array.set(featureVector, 5, macdHist)

// Centroid bullish
bullishCentroid = array.new_float(6)
array.set(bullishCentroid, 0, price)
array.set(bullishCentroid, 1, volatility)
array.set(bullishCentroid, 2, momentum)
array.set(bullishCentroid, 3, 60.0)
array.set(bullishCentroid, 4, macdLine)
array.set(bullishCentroid, 5, macdHist)

// Centroid bearish
bearishCentroid = array.new_float(6)
array.set(bearishCentroid, 0, price)
array.set(bearishCentroid, 1, volatility)
array.set(bearishCentroid, 2, momentum)
array.set(bearishCentroid, 3, 40.0)
array.set(bearishCentroid, 4, macdLine)
array.set(bearishCentroid, 5, macdHist)

// Fungsi Euclidean Distance
euclideanDistance(arr1, arr2) =>
    dist = 0.0
    for i = 0 to array.size(arr1) - 1
        a = array.get(arr1, i)
        b = array.get(arr2, i)
        dist += math.pow((a - b), 2)
    math.sqrt(dist)

// Hitung jarak ke centroid
distToBullish = euclideanDistance(featureVector, bullishCentroid)
distToBearish = euclideanDistance(featureVector, bearishCentroid)

// ========== SINYAL ==========
// Original distance strategy signals
isDistanceBuySignal = distToBullish < distToBearish and ta.crossover(macdLine, signalLine)
isDistanceSellSignal = distToBearish < distToBullish and ta.crossunder(macdLine, signalLine)

// Reversal strategy signals
isReversalBuySignal = ta.crossover(macdLine, signalLine)
isReversalSellSignal = ta.crossunder(macdLine, signalLine)

// Combined signals - using both strategies
isBuySignal = isDistanceBuySignal or isReversalBuySignal
isSellSignal = isDistanceSellSignal or isReversalSellSignal

// ========== EKSEKUSI ==========
if isBuySignal
    strategy.close("Sell")         // Close any sell position first (from reversal strategy)
    strategy.entry("Buy", strategy.long)
    
if isSellSignal
    strategy.close("Buy")          // Close any buy position first (from reversal strategy)
    strategy.entry("Sell", strategy.short)

// ========== METRIK KINERJA ==========
float lastOpenTradeProfit = na
if strategy.opentrades > 0
    lastOpenTradeProfit := strategy.opentrades.profit(strategy.opentrades - 1)

float lastClosedTradeProfit = na
if strategy.closedtrades > 0
    lastClosedTradeProfit := strategy.closedtrades.profit(strategy.closedtrades - 1)

// Plot info
plot(lastOpenTradeProfit, title="Last Open Trade Profit", color=color.blue)
plot(lastClosedTradeProfit, title="Last Closed Trade Profit", color=color.orange)