Strategi Perdagangan Kuantitatif Grid Rata-Rata Bergerak Adaptif

SMA MA GRID ATR volatility MEAN REVERSION
Tanggal Pembuatan: 2025-07-02 14:08:13 Akhirnya memodifikasi: 2025-07-02 14:08:13
menyalin: 0 Jumlah klik: 584
2
fokus pada
319
Pengikut

Strategi Perdagangan Kuantitatif Grid Rata-Rata Bergerak Adaptif Strategi Perdagangan Kuantitatif Grid Rata-Rata Bergerak Adaptif

Ringkasan

Strategi perdagangan kuantitatif grid yang beradaptasi sendiri adalah strategi kuantitatif yang didasarkan pada konsep perdagangan grid dan grid. Strategi ini dilakukan dengan menghitung rata-rata bergerak sederhana (SMA) harga sebagai garis tengah tren pasar, dan kemudian mengatur garis grid proporsional di bawah garis tengah. Ketika harga berfluktuasi di antara garis grid ini, strategi ini akan membeli ketika harga menyentuh garis grid di bawahnya dan menjual ketika menyentuh garis grid di atasnya.

Prinsip Strategi

Prinsip inti dari strategi perdagangan kuantitatif grid linear adaptif didasarkan pada sifat regresi rata-rata harga pasar. Strategi ini diimplementasikan melalui langkah-langkah berikut:

  1. Penghitungan harga menggunakan rata-rata bergerak sederhana (SMA) sebagai acuan tengah pasar. Kode ini menggunakan rata-rata bergerak selama 300 jam, yang cukup lama untuk memfilter fluktuasi jangka pendek.
  2. Berdasarkan rata-rata bergerak, setel bias ke atas dan ke bawah (dalam contoh ini 3%), dan tentukan batas atas dan bawah transaksi grid.
  3. Berdasarkan jumlah garis grid yang ditetapkan oleh pengguna (maksimal 15 garis), garis grid terdistribusi secara merata di antara batas atas dan bawah.
  4. Array Boolean digunakan untuk mencatat posisi setiap grid untuk memastikan transaksi dilakukan dengan akurat.
  5. Logika transaksi:
    • Ketika harga berada di bawah garis grid tertentu dan posisi tersebut tidak dipegang, beli di posisi grid tersebut.
    • Ketika harga lebih tinggi dari garis grid tertentu dan posisi grid yang lebih rendah berikutnya telah memegang posisi, posisi yang lebih rendah dari posisi yang lebih rendah tersebut akan diratakan.

Inti dari strategi ini adalah untuk menangkap harga yang berfluktuasi dalam frekuensi tinggi dalam kisaran tertentu, untuk mencapai “beli rendah dan jual tinggi”. Strategi ini memungkinkan untuk memegang beberapa posisi sekaligus (maksimal 15), masing-masing posisi yang sesuai dengan garis grid yang berbeda, desain ini memungkinkan strategi untuk memanfaatkan fluktuasi harga lebih sepenuhnya.

Keunggulan Strategis

Adaptive Equilibrium Grid Quantitative Trading Strategi memiliki keuntungan yang signifikan sebagai berikut:

  1. AdaptifStrategi: Mengatur posisi grid secara otomatis berdasarkan rata-rata bergerak, dapat beradaptasi dengan lingkungan pasar yang berbeda dan perubahan tingkat harga.
  2. Dispersi risikoHal ini dilakukan untuk mengurangi risiko transaksi tunggal, dengan melakukan transaksi di beberapa lokasi grid.
  3. Kesempatan untuk mendapatkan keuntungan yang seringDalam pasar yang bergejolak, strategi dapat sering menangkap peluang keuntungan dari fluktuasi kecil.
  4. Sinyal masuk dan keluar yang jelasSinyal perdagangan didasarkan pada harga yang jelas yang menyentuh kondisi garis grid, mengurangi penilaian subjektif, dan meningkatkan konsistensi dalam pelaksanaan strategi.
  5. Parameter ringkas dan mudah disesuaikanStrategi hanya perlu menyesuaikan tiga parameter utama yaitu panjang rata-rata bergerak, tingkat kesenjangan grid, dan jumlah grid, untuk memudahkan pengoptimalan dan pengujian ulang.
  6. Logika jelas: Menggunakan struktur array untuk menyimpan harga grid dan status pesanan, logika kode yang jelas, mudah dipahami dan dipertahankan.
  7. Dukungan visualStrategi ini menyediakan visualisasi garis grid yang memungkinkan pedagang untuk melihat secara langsung area perdagangan dan potensi titik perdagangan.

Risiko Strategis

Meskipun strategi ini dirancang dengan baik, ada risiko potensial berikut:

  1. Risiko pasar trenDalam pasar tren yang kuat, harga mungkin terus bergerak ke satu arah, menyebabkan strategi untuk terus membuka posisi di satu sisi dan kurangnya peluang posisi, sehingga meningkatkan pengambilalihan dana dan dapat menghasilkan kerugian yang lebih besar. Solusi adalah dengan menambahkan kondisi penyaringan tren atau mengatur batas maksimum posisi.
  2. Parameter Sensitivitas: Pengaturan panjang rata-rata bergerak dan tingkat kesenjangan grid berdampak besar pada kinerja strategi. Parameter yang tidak tepat dapat menyebabkan grid terlalu lebar (<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  3. Manajemen risikoStrategi ini memungkinkan maksimal 15 posisi simetris, dan jika kontrol yang tidak masuk akal terhadap proporsi dana per transaksi, dapat menyebabkan konsentrasi dana yang berlebihan. Anda harus mengatur proporsi dana tetap atau ukuran posisi yang dapat disesuaikan secara dinamis untuk setiap transaksi.
  4. Titik geser dan dampak biayaStrategi perdagangan frekuensi tinggi lebih sensitif terhadap slippage dan biaya, terutama jika gridnya lebih sempit.
  5. Risiko likuiditasDalam pasar dengan likuiditas rendah atau pada periode yang sangat bergejolak, mungkin sulit untuk melakukan perdagangan sesuai dengan harga yang ideal, yang mempengaruhi kinerja strategi. Varietas perdagangan yang cukup likuid harus dipilih, dan pertimbangkan untuk mengatur perlindungan slippage.

Arah optimasi strategi

Berdasarkan analisis kode, strategi ini dapat dioptimalkan dari beberapa arah:

  1. Tambahkan filter trenBergabung dengan indikator teknis lainnya (misalnya MACD, RSI atau indikator arah DMI) untuk menilai tren pasar, menghentikan atau menyesuaikan strategi perdagangan grid di pasar yang jelas tren untuk menghindari kerugian yang ditimbulkan oleh perdagangan berlawanan.
  2. Lebar Grid DinamisAdaptasi Grid: Adaptasi Grid bias secara dinamis sesuai dengan volatilitas pasar (seperti indikator ATR), memperluas jarak grid saat volatilitas meningkat, memperkecil jarak grid saat volatilitas menurun, agar lebih sesuai dengan kondisi pasar yang berbeda.
  3. Memperkenalkan mekanisme stop loss: Tetapkan kondisi stop loss untuk setiap posisi grid, untuk melindungi dana Anda ketika pasar mengalami fluktuasi yang tidak biasa. Anda dapat mempertimbangkan stop loss dinamis atau stop loss rasio tetap berdasarkan ATR.
  4. Pengelolaan dana yang optimalManajemen Posisi Dinamis: Mengatur proporsi dana dalam setiap transaksi secara dinamis sesuai dengan dana akun, volatilitas pasar, dan kondisi kepemilikan yang ada, meningkatkan efisiensi penggunaan dana dan kemampuan pengendalian risiko.
  5. Tambahkan waktu penyaringanAnalisis karakteristik pasar pada periode waktu yang berbeda, mengaktifkan strategi pada periode waktu yang sesuai untuk perdagangan grid, mengurangi frekuensi perdagangan atau menghentikan perdagangan pada periode waktu yang tidak sesuai.
  6. Konfirmasi multi-periodeHal ini dikarenakan semakin banyaknya waktu yang dibutuhkan untuk mengkonfirmasi transaksi, mengurangi sinyal palsu dan transaksi yang tidak valid.
  7. Optimalkan efisiensi kode: Bagian visualisasi garis grid dalam kode saat ini menggunakan kalimat plot yang berulang, yang dapat digunakan untuk mengoptimalkan struktur lingkaran, meningkatkan kesederhanaan kode dan kemampuan pemeliharaan.

Meringkaskan

Strategi perdagangan kuantitatif grid ekuivalen adaptif adalah sistem perdagangan grid yang didasarkan pada prinsip regresi ekuivalen yang menangkap peluang perdagangan yang ditimbulkan oleh pergerakan harga dengan mengatur grid di sekitar rata-rata bergerak. Strategi ini dirancang dengan desain yang ringkas, parameter yang lebih sedikit dan mudah disesuaikan, sangat cocok untuk diterapkan di pasar yang bergolak. Keunggulan utama strategi ini adalah sifatnya yang dapat beradaptasi dan dispersi risiko, yang dapat secara otomatis beradaptasi dengan tingkat harga yang berbeda dan menyebarkan risiko melalui beberapa posisi grid.

Namun, strategi ini mungkin beresiko dalam pasar tren yang kuat dan perlu meningkatkan filter tren dan mekanisme stop loss untuk mengoptimalkan. Selain itu, arah pengoptimalan seperti penyesuaian lebar grid secara dinamis, pengelolaan dana yang lebih baik, dan peningkatan konfirmasi multi-siklus waktu juga layak untuk dieksplorasi. Dengan pengoptimalan ini, strategi diharapkan untuk mencapai kinerja yang lebih stabil dan lebih baik dalam berbagai lingkungan pasar.

Strategi ini memberikan kerangka dasar yang baik bagi pedagang kuantitatif yang berpengalaman, yang dapat disesuaikan dan dioptimalkan lebih lanjut sesuai dengan gaya perdagangan dan preferensi risiko individu, memanfaatkan keuntungan perdagangan grid dalam menangkap fluktuasi pasar.

Kode Sumber Strategi
/*backtest
start: 2025-04-01 00:00:00
end: 2025-06-22 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Grid Trading Strategy', overlay=true, pyramiding=15)

// 输入参数设置
ma_length = input.int(300, '移动平均线长度', group='移动平均线条件', step=10)
std = input.float(0.03, title='网格上下偏差率', group='网格条件', step=0.01)
grid = input.int(15, maxval=15, title='网格线数量', group='网格条件')

// 计算移动平均线及网格边界
ma = ta.sma(close, ma_length)
upper_bound = ma * (1 + std)
lower_bound = ma * (1 - std)
grid_width = (upper_bound - lower_bound) / (grid - 1)

// 创建网格价格数组
grid_array = array.new_float(0)
for i = 0 to grid - 1 by 1
    array.push(grid_array, lower_bound + grid_width * i)

// 创建订单状态布尔数组(只初始化一次)
var order_array = array.new_bool(grid, false)

// 执行交易逻辑
for i = 0 to grid - 1 by 1
    // 买入逻辑:价格低于网格线且该位置未持仓
    if close < array.get(grid_array, i) and not array.get(order_array, i)
        buy_id = i
        array.set(order_array, buy_id, true)
        strategy.entry(id=str.tostring(buy_id), direction=strategy.long, comment='#Long ' + str.tostring(buy_id))
    
    // 卖出逻辑:价格高于网格线且下一个网格位置持仓
    if close > array.get(grid_array, i) and i != 0
        if array.get(order_array, i - 1)
            sell_id = i - 1
            array.set(order_array, sell_id, false)
            strategy.close(id=str.tostring(sell_id), comment='#Close ' + str.tostring(sell_id))

// 可视化网格线
plot(grid > 0 ? array.get(grid_array, 0) : na, color=color.yellow, transp=10)
plot(grid > 1 ? array.get(grid_array, 1) : na, color=color.yellow, transp=10)
plot(grid > 2 ? array.get(grid_array, 2) : na, color=color.yellow, transp=10)
plot(grid > 3 ? array.get(grid_array, 3) : na, color=color.yellow, transp=10)
plot(grid > 4 ? array.get(grid_array, 4) : na, color=color.yellow, transp=10)
plot(grid > 5 ? array.get(grid_array, 5) : na, color=color.yellow, transp=10)
plot(grid > 6 ? array.get(grid_array, 6) : na, color=color.yellow, transp=10)
plot(grid > 7 ? array.get(grid_array, 7) : na, color=color.yellow, transp=10)
plot(grid > 8 ? array.get(grid_array, 8) : na, color=color.yellow, transp=10)
plot(grid > 9 ? array.get(grid_array, 9) : na, color=color.yellow, transp=10)
plot(grid > 10 ? array.get(grid_array, 10) : na, color=color.yellow, transp=10)
plot(grid > 11 ? array.get(grid_array, 11) : na, color=color.yellow, transp=10)
plot(grid > 12 ? array.get(grid_array, 12) : na, color=color.yellow, transp=10)
plot(grid > 13 ? array.get(grid_array, 13) : na, color=color.yellow, transp=10)
plot(grid > 14 ? array.get(grid_array, 14) : na, color=color.yellow, transp=10)