Strategi Perdagangan Kuantitatif Grid Purata Pergerakan Adaptif

SMA MA GRID ATR volatility MEAN REVERSION
Tarikh penciptaan: 2025-07-02 14:08:13 Akhirnya diubah suai: 2025-07-02 14:08:13
Salin: 0 Bilangan klik: 584
2
fokus pada
319
Pengikut

Strategi Perdagangan Kuantitatif Grid Purata Pergerakan Adaptif Strategi Perdagangan Kuantitatif Grid Purata Pergerakan Adaptif

Gambaran keseluruhan

Strategi perdagangan kuantitatif grid yang menyesuaikan diri adalah strategi kuantitatif yang berdasarkan pada konsep perdagangan garis rata dan grid. Strategi ini dibuat dengan mengira purata bergerak sederhana harga (SMA) sebagai garis tengah trend pasaran, dan kemudian menetapkan garis grid peratusan di bawah garis pusat. Apabila harga bergelombang di antara garis grid ini, strategi ini akan membeli apabila harga menyentuh garis grid di bawahnya dan menjual apabila ia menyentuh garis grid di atasnya.

Prinsip Strategi

Prinsip utama strategi perdagangan kuantitatif grid linear yang menyesuaikan diri adalah berdasarkan pada sifat pengembalian nilai rata-rata harga pasaran. Strategi ini dilaksanakan melalui langkah-langkah berikut:

  1. Pengiraan purata bergerak sederhana harga ((SMA), sebagai rujukan pertengahan pasaran. Kod ini menggunakan purata bergerak 300 jam yang cukup panjang untuk menyaring turun naik jangka pendek.
  2. Berdasarkan purata bergerak, set bias ke atas dan ke bawah (dalam contoh ini 3%) dan tentukan batas atas dan bawah perdagangan grid.
  3. Mengikut bilangan garisan grid yang ditetapkan oleh pengguna (maksimum 15 garisan), garisan grid diedarkan secara merata di antara sempadan atas dan bawah.
  4. Menggunakan Array Bull untuk mencatat kedudukan setiap kedudukan grid untuk memastikan pelaksanaan transaksi yang tepat.
  5. Logik transaksi:
    • Apabila harga berada di bawah garisan grid tertentu dan kedudukan itu tidak dipegang, beli di kedudukan grid tersebut.
    • Apabila harga lebih tinggi daripada satu garisan grid dan kedudukan grid yang lebih rendah berikutnya telah memegang kedudukan, kedudukan yang lebih rendah di kedudukan yang lebih rendah.

Intipati strategi ini adalah untuk menangkap turun naik harga yang tinggi dalam julat tertentu, untuk mencapai “beli rendah dan jual tinggi”. Strategi ini membenarkan memegang beberapa kedudukan pada masa yang sama (maksimum 15), setiap kedudukan sesuai dengan garisan grid yang berbeza, reka bentuk ini membolehkan strategi untuk memanfaatkan lebih banyak turun naik harga.

Kelebihan Strategik

Strategi dagangan kuantitatif grid linear yang beradaptasi mempunyai kelebihan yang ketara:

  1. Kebolehan menyesuaikan diriStrategi: Mengubah kedudukan grid secara automatik berdasarkan purata bergerak untuk menyesuaikan diri dengan keadaan pasaran yang berbeza dan perubahan tahap harga.
  2. Penyebaran risikoPerdagangan melalui pelbagai lokasi grid, untuk menyebarkan dana dan mengurangkan risiko transaksi tunggal.
  3. Peluang untuk mendapat keuntungan yang kerapDalam pasaran yang bergolak, strategi ini boleh menangkap peluang keuntungan yang sering timbul daripada perubahan kecil.
  4. Isyarat masuk dan keluarSinyal perdagangan berdasarkan harga yang jelas menyentuh garis grid, mengurangkan penilaian subjektif, meningkatkan konsistensi pelaksanaan strategi.
  5. Parameter ringkas dan mudah diaturStrategi hanya perlu menyesuaikan tiga parameter utama iaitu panjang rata-rata bergerak, kadar penyimpangan grid dan bilangan grid untuk memudahkan pengoptimuman dan pengukuran semula.
  6. Logik yang jelas: Menggunakan struktur array untuk menyimpan harga grid dan status pesanan, kod logik jelas, mudah difahami dan dikekalkan.
  7. Sokongan visualStrategi menyediakan penglihatan garisan grid, yang membolehkan peniaga melihat secara langsung kawasan perdagangan dan potensi titik perdagangan.

Risiko Strategik

Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:

  1. Risiko Pasaran TrenDalam pasaran yang kuat, harga mungkin terus bergerak ke satu arah, menyebabkan strategi untuk terus membuka kedudukan dan kekurangan peluang untuk meletakkan di satu sisi, yang meningkatkan pengambilalihan dana dan mungkin menyebabkan kerugian yang lebih besar. Penyelesaian adalah dengan menambah syarat penapis trend atau menetapkan had maksimum memegang kedudukan.
  2. Kepekaan ParameterPenetapan panjang purata bergerak dan kadar penyimpangan grid mempunyai kesan besar terhadap prestasi strategi. Parameter yang tidak sesuai boleh menyebabkan grid terlalu lebar (<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  3. Risiko pengurusan danaStrategi membenarkan maksimum 15 kedudukan yang sama arah, jika kawalan yang tidak munasabah terhadap perkadaran dana untuk setiap urus niaga boleh menyebabkan penumpuan dana yang berlebihan. Perkadaran dana tetap untuk setiap urus niaga atau saiz kedudukan yang disesuaikan secara dinamik harus ditetapkan.
  4. Titik tergelincir dan kesan bayaranStrategi perdagangan frekuensi tinggi lebih sensitif terhadap titik tergelincir dan yuran, terutamanya apabila gridnya lebih sempit. Ia disyorkan untuk mempertimbangkan faktor kos ini dalam pengesanan semula dan menyesuaikan lebar grid dengan sewajarnya.
  5. Risiko kecairanDalam pasaran yang kurang cair atau semasa turun naik yang teruk, mungkin sukar untuk melakukan perdagangan mengikut harga yang ideal, yang mempengaruhi prestasi strategi. Jenis perdagangan yang cukup cair harus dipilih, dan pertimbangkan untuk menetapkan perlindungan slip.

Arah pengoptimuman strategi

Berdasarkan analisis kod, strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Tambah penapis trendBerkongsi dengan penunjuk teknikal lain (seperti MACD, RSI atau penunjuk arah DMI) untuk menilai trend pasaran, menangguhkan atau menyesuaikan strategi perdagangan grid di pasaran yang jelas trend untuk mengelakkan kerugian yang disebabkan oleh perdagangan berlawanan.
  2. Lebar grid dinamik: Mengubah kadar bias grid secara dinamik mengikut turun naik pasaran (seperti penunjuk ATR), meluaskan jurang grid apabila turun naik meningkat, mengurangkan jurang grid apabila turun naik menurun, lebih sesuai dengan keadaan pasaran yang berbeza.
  3. Memperkenalkan mekanisme stop loss: Tetapkan syarat-syarat berhenti untuk setiap kedudukan grid, melindungi keselamatan wang anda apabila pasaran mengalami turun naik yang tidak normal. Anda boleh mempertimbangkan berhenti dinamik atau berhenti peratusan tetap berdasarkan ATR.
  4. Pengurusan wang yang optimumMenerapkan pengurusan kedudukan dinamik, menyesuaikan bahagian dana setiap urus niaga secara dinamik mengikut dana akaun, turun naik pasaran dan keadaan kedudukan sedia ada, meningkatkan kecekapan penggunaan dana dan keupayaan kawalan risiko.
  5. Tambah waktu penapisanAnalisis ciri-ciri pasaran untuk tempoh masa yang berbeza, mengaktifkan strategi pada tempoh masa yang sesuai untuk perdagangan grid, mengurangkan frekuensi perdagangan atau menangguhkan perdagangan pada tempoh yang tidak sesuai.
  6. Pengesahan pelbagai kitaran masaIa juga boleh digunakan untuk mengukuhkan transaksi dalam jangka masa yang lebih lama dan lebih singkat, mengurangkan isyarat palsu dan transaksi yang tidak sah.
  7. Optimumkan kecekapan kod: Bahagian visualisasi garisan grid dalam kod semasa menggunakan ungkapan plot berulang, yang boleh digunakan untuk mengoptimumkan struktur gelung, meningkatkan kesederhanaan kod dan kebolehjagaannya.

ringkaskan

Strategi perdagangan kuantitatif grid rata-rata yang menyesuaikan diri adalah sistem perdagangan grid berdasarkan prinsip regresi rata-rata yang menangkap peluang perdagangan yang dibawa oleh pergerakan harga dengan menetapkan grid di sekitar rata-rata bergerak. Reka bentuk strategi ringkas, parameternya sedikit dan mudah disesuaikan, sangat sesuai untuk digunakan di pasaran yang bergolak.

Walau bagaimanapun, strategi ini mungkin menghadapi risiko dalam pasaran yang kuat dan memerlukan penapisan trend dan mekanisme berhenti untuk mengoptimumkannya. Di samping itu, arah pengoptimuman seperti penyesuaian lebar grid secara dinamik, pengendalian dana yang lebih baik dan tambahan pengesahan kitaran masa yang lebih banyak juga patut dijelajahi. Dengan pengoptimuman ini, strategi ini dijangka mencapai prestasi yang lebih stabil dan lebih baik dalam keadaan pasaran yang berbeza.

Bagi pedagang kuantitatif yang berpengalaman, strategi ini menyediakan kerangka asas yang baik untuk disesuaikan dan dioptimumkan lebih lanjut mengikut gaya perdagangan dan keutamaan risiko individu, memanfaatkan kelebihan perdagangan grid dalam menangkap turun naik pasaran.

Kod 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)