Sistem perdagangan leverage yang disesuaikan dengan risiko dinamis


Tanggal Pembuatan: 2023-10-16 16:00:52 Akhirnya memodifikasi: 2023-10-16 16:00:52
menyalin: 0 Jumlah klik: 774
1
fokus pada
1617
Pengikut

Sistem perdagangan leverage yang disesuaikan dengan risiko dinamis

Ringkasan

Sistem perdagangan ini, yang disebut sistem perdagangan leverage yang disesuaikan dengan risiko dinamis, dirancang untuk mengelola perdagangan berdasarkan fluktuasi pasar saat ini terhadap rata-rata sejarahnya. Sistem ini menghitung jumlah target pembukaan posisi berdasarkan ATR (Average True Range) dan menyesuaikan leverage sesuai. Sistem ini menggunakan metode pembukaan posisi piramida, yang memungkinkan pembukaan beberapa posisi sekaligus.

Prinsip Strategi

Langkah-langkahnya adalah sebagai berikut:

  1. Menghitung nilai ATR untuk siklus ATR 14 hari dan membagi dengan harga penutupan saat ini untuk standarisasi

  2. Perhitungan rata-rata bergerak sederhana 100 hari dari ATR standar ((SMA) }}

  3. Perhitungan ATR standar terhadap SMA 100 hari.

  4. Tentukan target leverage berdasarkan inversi rasio ((2 / rasio)).

  5. Jumlah target posisi dibuka dengan cara mengalikan target leverage dengan 5.

  6. Pada tabel, gambarkan jumlah target dan jumlah posisi yang dibuka saat ini.

  7. Periksa apakah ada peluang beli (((jika jumlah posisi terbuka saat ini kurang dari jumlah target) atau peluang posisi kosong (((jika jumlah posisi terbuka saat ini lebih besar dari jumlah target ditambah 1) ◦

  8. Jika ada kesempatan untuk membeli, buka lebih banyak akun dan tambahkan transaksi ke array openTrades.

  9. Jika ada peluang posisi kosong dan ada transaksi di array openTrades, hapus transaksi terbaru dan hapus dari array tersebut.

Sistem ini dirancang untuk menangkap tren pasar dengan mengadaptasi secara dinamis jumlah posisi yang dibuka dan leverage, menggunakan array untuk melacak pembukaan posisi, dan untuk mengontrol lebih baik pembukaan perdagangan tunggal.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Dinamis menyesuaikan leverage dan jumlah posisi, dapat menyesuaikan ambang risiko sesuai dengan perubahan volatilitas pasar. Ketika volatilitas rendah, meningkatkan leverage dan jumlah posisi, ketika volatilitas tinggi, mengurangi leverage dan jumlah posisi, secara efektif mengendalikan risiko.

  2. Menggunakan indikator ATR untuk menghitung jumlah posisi target, indikator ini dapat mencerminkan volatilitas pasar dan merupakan pilihan indikator yang masuk akal untuk menyesuaikan posisi secara dinamis.

  3. Menggunakan metode piramida untuk menambah posisi dan membuka beberapa posisi pada saat yang sama, Anda bisa mendapatkan keuntungan dari tren tersebut.

  4. Dengan menggunakan array untuk merekam setiap transaksi yang dibuka, Anda dapat secara jelas mengontrol pembukaan setiap transaksi, dan menghindari operasi terbalik yang tidak perlu.

  5. Strategi ini memiliki parameter yang lebih sedikit dan mudah diterapkan dan dioperasikan.

  6. Strategi yang jelas dan mudah dipahami, struktur kode yang masuk akal, mudah untuk dioptimalkan dan iterasi.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Indeks ATR hanya mencerminkan volatilitas di masa lalu, dan tidak dapat memprediksi perubahan volatilitas di masa depan, yang dapat menyebabkan penyesuaian leverage yang tidak tepat.

  2. Metode penambangan piramida dapat menyebabkan akumulasi kerugian jika tren berbalik.

  3. Array record open position hanya berlaku untuk operasi open position yang sederhana, dan jika logika open position lebih kompleks maka diperlukan struktur data yang lebih kompleks.

  4. Pengaturan target leverage dan jumlah posisi perlu disesuaikan dengan karakteristik varietas, dan tidak terbatas pada parameter tetap tertentu.

  5. Indikator tunggal mudah untuk menyesatkan, Anda dapat mempertimbangkan untuk menambahkan indikator volatilitas lainnya atau algoritma pembelajaran mesin untuk meningkatkan stabilitas.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Meningkatkan strategi stop loss, dengan stop loss aktif ketika kerugian mencapai titik stop loss.

  2. Optimalkan parameter indikator, uji efek dari parameter siklus ATR yang berbeda.

  3. Cobalah strategi trading yang berbeda, seperti trading dengan jumlah tetap, dan uji hasilnya.

  4. Menambahkan indikator lain untuk mengukur volatilitas, seperti WIDTH Brinks, KD, RSI, dan lain-lain, dalam kombinasi.

  5. Menggunakan metode pembelajaran mesin untuk memprediksi tingkat fluktuasi, alih-alih metode smoothing simplex.

  6. Untuk mengoptimalkan perhitungan jumlah posisi yang dibuka, dapat menggunakan ATR atau fungsi volatilitas.

  7. Catat lebih banyak detail tentang posisi, seperti harga, waktu, dan lain-lain, untuk analisis dan optimalisasi strategi.

  8. Menambahkan fungsi optimasi parameter, optimasi otomatis untuk menemukan kombinasi parameter terbaik.

Meringkaskan

Strategi ini didasarkan pada ATR yang dinamis untuk menyesuaikan leverage dan jumlah posisi terbuka, untuk melakukan penyesuaian celah risiko dalam tren, memiliki keuntungan tertentu. Namun, ada juga kesulitan pengaturan parameter, ruang pengoptimalan indikator dan lain-lain yang layak untuk dioptimalkan lebih lanjut. Secara keseluruhan, strategi ini jelas, mudah dioperasikan dan mudah dioptimalkan, layak untuk penelitian yang mendalam.

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