Sistem perdagangan leveraj pelarasan risiko dinamik


Tarikh penciptaan: 2023-10-16 16:00:52 Akhirnya diubah suai: 2023-10-16 16:00:52
Salin: 0 Bilangan klik: 774
1
fokus pada
1617
Pengikut

Sistem perdagangan leveraj pelarasan risiko dinamik

Gambaran keseluruhan

Sistem perdagangan ini, yang dinamakan Sistem Perdagangan Leverage Penyesuaian Risiko Dinamis, bertujuan untuk menguruskan perdagangan berdasarkan turun naik pasaran semasa berbanding dengan nilai purata sejarahnya. Sistem ini mengira jumlah sasaran untuk membuka kedudukan berdasarkan ATR (Rang Real Rata-rata) dan menyesuaikan leverage dengan sewajarnya. Sistem ini menggunakan cara pembukaan kedudukan piramida, yang membolehkan beberapa kedudukan dibuka pada masa yang sama.

Prinsip Strategi

Langkah-langkah yang perlu diambil adalah seperti berikut:

  1. Hitung nilai ATR untuk kitaran ATR 14 hari dan bahagi dengan harga penutupan semasa untuk standardisasi.

  2. Hitung purata bergerak mudah 100 hari ATR standard ((SMA)

  3. Hitung nisbah ATR standard kepada 100 hari SMA.

  4. Tentukan Leverage Sasaran berdasarkan Reversal Ratio ((2/Ratio)).

  5. Menghitung jumlah sasaran yang dibuka dengan mengalikan Leverage Target dengan 5.

  6. Menggambarkan jumlah sasaran dan jumlah yang dibuka pada carta.

  7. Semak sama ada terdapat peluang beli ((jika jumlah kedudukan terbuka semasa kurang daripada jumlah sasaran) atau peluang kedudukan kosong ((jika jumlah kedudukan terbuka semasa lebih besar daripada jumlah sasaran ditambah 1)

  8. Jika ada peluang untuk membeli, buat lebih banyak pesanan dan tambahkan urus niaga ke dalam openTrades array.

  9. Jika terdapat peluang untuk menetap dan terdapat transaksi dalam susunan openTrades, matikan transaksi terkini dan hapus dari susunan tersebut.

Sistem ini bertujuan untuk menangkap trend pasaran dengan menyesuaikan jumlah kedudukan terbuka dan pengaruh secara dinamik, dan untuk mengawal lebih baik pembukaan perdagangan tunggal dengan menggunakan pelacakan kedudukan terbuka dalam bentuk array.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Secara dinamik menyesuaikan jumlah leverage dan kedudukan, anda boleh menyesuaikan celah risiko mengikut perubahan kadar turun naik pasaran. Apabila kadar turun naik rendah, meningkatkan jumlah leverage dan kedudukan, apabila kadar turun naik tinggi, mengurangkan jumlah leverage dan kedudukan, mengawal risiko dengan berkesan.

  2. Menggunakan ATR untuk mengira jumlah sasaran kedudukan, yang boleh mencerminkan turun naik pasaran, adalah pilihan indikator yang munasabah untuk menyesuaikan kedudukan secara dinamik.

  3. Menggunakan cara menaikkan kedudukan piramid, anda boleh membuat banyak kedudukan pada masa yang sama dan mendapat keuntungan dalam trend.

  4. Dengan menggunakan array untuk merekodkan setiap perdagangan yang dibuka, anda dapat mengawal dengan jelas pembukaan perdagangan tunggal, dan mengelakkan operasi terbalik yang tidak perlu.

  5. Strategi ini mempunyai sedikit parameter dan mudah dilaksanakan dan dikendalikan.

  6. Strategi yang jelas dan mudah difahami, struktur kod yang munasabah, mudah untuk dioptimumkan dan diulang.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Indeks ATR hanya mencerminkan turun naik masa lalu, dan perubahan kadar turun naik masa depan tidak dapat diramalkan, yang boleh menyebabkan penyesuaian leverage yang tidak wajar.

  2. Kaedah penambahan simpanan piramid boleh menyebabkan kerugian yang terkumpul apabila trend berbalik.

  3. Array record open position hanya digunakan untuk operasi open position yang mudah, dan struktur data yang lebih kompleks diperlukan jika logik open position lebih rumit.

  4. Tetapan sasaran dan jumlah kedudukan perlu disesuaikan dengan ciri-ciri baka, dan tidak boleh terhad kepada parameter tetap.

  5. Indikator tunggal mudah mengelirukan, boleh dipertimbangkan untuk menambah indikator kadar turun naik lain atau algoritma pembelajaran mesin untuk meningkatkan kestabilan.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Tambah strategi berhenti kerugian, aktif berhenti kerugian apabila kerugian mencapai titik berhenti kerugian.

  2. Mengoptimumkan parameter penunjuk, menguji kesan parameter kitaran ATR yang berbeza.

  3. Cuba strategi pembukaan yang berbeza, seperti pembukaan jumlah tetap, dan uji kesannya.

  4. Menambah indikator lain untuk mengukur kadar turun naik, seperti WIDTH, KD, RSI, dan lain-lain, dalam kombinasi.

  5. Menggunakan kaedah pembelajaran mesin untuk meramalkan kadar turun naik, dan bukannya kaedah perlancungan simplex.

  6. Untuk mengoptimumkan cara pengiraan jumlah yang dibuka, anda boleh menggunakan ATR atau fungsi kadar turun naik.

  7. Rekodkan lebih banyak butiran mengenai kedudukan, seperti harga dan masa untuk analisis dan pengoptimuman strategi.

  8. Tambah fungsi pengoptimuman parameter, mengoptimumkan secara automatik untuk mencari kombinasi parameter terbaik.

ringkaskan

Strategi ini berdasarkan ATR dinamik penyesuaian leverage dan jumlah kedudukan terbuka, dalam trend untuk melakukan penyesuaian celah risiko, mempunyai kelebihan tertentu. Tetapi juga terdapat masalah parameter menetapkan kesukaran, ruang pengoptimuman penunjuk dan lain-lain yang patut dioptimumkan lebih lanjut. Secara keseluruhan, strategi ini idea yang jelas, mudah untuk beroperasi dan mudah untuk mengoptimumkan, layak untuk kajian yang mendalam aplikasi.

Kod sumber strategi
/*backtest
start: 2022-10-09 00:00:00
end: 2023-10-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false)

atr = ta.atr(14) / close
avg_atr = ta.sma(atr,100)
ratio = atr / avg_atr

targetLeverage = 2 / ratio
targetOpentrades = 5 * targetLeverage

plot(targetOpentrades)
plot(strategy.opentrades)
isBuy = strategy.opentrades < targetOpentrades
isClose = strategy.opentrades > targetOpentrades + 1

var string[] openTrades = array.new_string(0)

if(isBuy)
    strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long)
    array.push(openTrades, "Buy" + str.tostring(array.size(openTrades)))

if(isClose)
    if array.size(openTrades) > 0
        strategy.close(array.get(openTrades, array.size(openTrades) - 1))
        array.pop(openTrades)