Strategi ini mengimplementasikan perdagangan arbitrase antara pasar yang berbeda dengan menghitung garis rata-rata bergerak yang terregulasi adaptif. Strategi ini menampilkan arbitrase lintas pasar, penyesuaian parameter dinamis, kontrol risiko, dll.
Strategi ini pertama-tama mendefinisikan fungsi skala Minimax untuk menstandarisasi deret waktu ke kisaran yang ditentukan. Kemudian mendefinisikan fungsi rata-rata bergerak yang terregulasi adaptif rema untuk menghitung garis sinyal yang dihaluskan sig. Perhitungan garis sinyal adalah:
Menentukan jendela geser, default panjang 5 hari.
Nilai sig untuk setiap hari adalah rata-rata tertimbang dari nilai sig sebelumnya dan harga penutupan saat ini.
Tambahkan parameter λ sebagai regularizer untuk membuat transisi sig lebih halus.
Setelah mendapatkan garis sinyal, strategi menentukan panjang / pendek berdasarkan salib emas / mati dari garis sinyal dan harga. Secara khusus:
Ketika SIG melintasi harga, pergi panjang.
Ketika SIG melintasi harga, pergi pendek.
Selain itu, strategi menambahkan faktor halus dan show_line sebagai parameter yang dapat disesuaikan untuk meningkatkan fleksibilitas.
Dibandingkan dengan strategi rata-rata bergerak tradisional, strategi ini memiliki keuntungan berikut:
Mekanisme bobot adaptif dapat merespons perubahan harga dengan lebih cepat.
Regularizer yang ditambahkan membuat garis sinyal lebih halus, menghindari sinyal yang salah dari fluktuasi harga yang drastis.
Arbitrage lintas pasar dapat mendapatkan keuntungan dari perbedaan harga antara pasar.
Parameter yang dapat disesuaikan yang fleksibel dapat dioptimalkan sesuai dengan kondisi pasar.
Strategi ini juga memiliki beberapa risiko:
Kemungkinan sinyal yang salah dari penyeberangan ganda lebih tinggi. Solusinya adalah menyesuaikan parameter halus dengan benar untuk menghindari osilasi garis sinyal.
Arbitrage lintas pasar mengharuskan kedua pasar memiliki korelasi harga dan tren yang konsisten. Solusinya adalah memilih pasar yang sangat berkorelasi untuk arbitrase.
Optimasi parameter membutuhkan data historis yang cukup untuk backtesting.
Strategi ini juga dapat dioptimalkan dalam aspek berikut:
Dalam pemilihan parameter, algoritma pembelajaran mesin dapat diperkenalkan untuk mengoptimalkan kombinasi parameter secara otomatis.
Dalam generasi sinyal, lebih banyak indikator dapat diperkenalkan untuk membangun sinyal perdagangan yang lebih stabil.
Dalam pengendalian risiko, stop loss dapat diatur untuk membatasi kerugian per perdagangan.
Dalam arbitrage lintas pasar, dapat diperluas ke aset perdagangan yang lebih berkorelasi tinggi.
Strategi ini mengimplementasikan perdagangan arbitrage antara pasar dengan menghitung rata-rata bergerak secara adaptif. Dibandingkan dengan strategi rata-rata bergerak tradisional, strategi ini memiliki keuntungan dari parameter adaptif, pemrosesan yang halus, arbitrage lintas pasar, dll. Langkah selanjutnya adalah untuk lebih mengoptimalkan strategi melalui pembelajaran mesin, sinyal gabungan, manajemen risiko, dll.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Crossover82%", overlay=true) // // Functions // scaleMinimax(X, p, min, max) => hi = highest(X, p), lo = lowest(X, p) (max - min) * (X - lo)/(hi - lo) + min rema(ts, p) => // regularized ma rm = 0.0, lambda = .5, a = 2 / (p + 1) rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1) rm // // Inputs // X = input(close, title="Data source") smooth = input(2, title="REMA smooth factor") show_line = input(true, title="Show signal line") // // Main // p = 5 sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth) plot(show_line ? sig : na, linewidth=1) plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50) longCondition = crossover(sig, X) if (longCondition) strategy.entry("LE", strategy.long) shortCondition = crossunder(sig, X) if (shortCondition) strategy.entry("SE", strategy.short)