Strategi arbitraj merentas pasaran berdasarkan purata bergerak terbiasa suai


Tarikh penciptaan: 2023-11-16 16:20:11 Akhirnya diubah suai: 2023-11-16 16:20:11
Salin: 0 Bilangan klik: 642
1
fokus pada
1617
Pengikut

Strategi arbitraj merentas pasaran berdasarkan purata bergerak terbiasa suai

Gambaran keseluruhan

Strategi ini membolehkan perdagangan lelang di antara pasaran yang berbeza dengan mengira purata bergerak yang menyesuaikan diri. Strategi ini mempunyai ciri-ciri seperti lelang lintas pasaran, penyesuaian parameter dinamik, dan kawalan risiko.

Prinsip Strategi

Strategi ini mula-mula mendefinisikan fungsi scaleMinimax untuk menstandardkan urutan masa ke dalam julat yang ditetapkan. Kemudian mendefinisikan fungsi rema rata-rata bergerak yang beradaptasi untuk meluruskan dan mengira garis isyarat yang telah diluruskan.

  1. Tentukan satu tetingkap geser dengan panjang lalai 5 hari.
  2. Nilai sig harian adalah purata berat nilai sig hari sebelumnya dengan harga penutupan hari tersebut. Purata berat menggunakan mekanisme berat badan yang menyesuaikan diri, semakin dekat dengan nilai semasa, semakin besar beratnya.
  3. Penambahan parameter λ sebagai istilah logik menjadikan transformasi sig lebih lancar.

Setelah mendapat isyarat, strategi memutuskan untuk memilih ruang kosong dengan menilai isyarat dengan harga. Secara khusus:

  1. Apabila harga naik, buatlah lebih banyak.
  2. Bila harga dipotong, kosongkan.

Di samping itu, strategi ini menambah faktor kelancaran dan menunjukkan garis isyarat show_line sebagai parameter yang boleh disesuaikan, meningkatkan fleksibiliti strategi.

Analisis kelebihan

Strategi ini mempunyai kelebihan berbanding strategi purata bergerak tradisional:

  1. Menggunakan mekanisme penambahan berat untuk bertindak balas lebih cepat terhadap perubahan harga.
  2. Penambahan faktor penyesuaian untuk membuat isyarat lebih lancar dan mengelakkan isyarat yang salah akibat turun naik harga yang teruk.
  3. Arbitrage merentas pasaran, yang boleh memanfaatkan perbezaan harga di antara pasaran yang berbeza.
  4. Reka bentuk parameter yang boleh disesuaikan adalah fleksibel dan boleh dioptimumkan mengikut keadaan pasaran.

Risiko dan Penyelesaian

Strategi ini juga mempunyai risiko:

  1. Penyelesaian adalah dengan menyesuaikan parameter kelancaran dengan betul, mengelakkan gegaran garis isyarat.

  2. Arbitrage merentas pasaran mesti memastikan bahawa kedua-dua pasaran mempunyai hubungan harga dan pergerakan yang konsisten. Penyelesaian adalah memilih pasaran yang mempunyai hubungan tinggi untuk melakukan arbitrage.

  3. Pengoptimuman parameter memerlukan pengumpulan data sejarah yang mencukupi untuk pengesanan semula. Penyelesaian adalah dengan menyesuaikan parameter dengan berhati-hati dalam perdagangan sebenar.

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dengan:

  1. Dalam pemilihan parameter, algoritma pembelajaran mesin boleh diperkenalkan untuk mengoptimumkan secara automatik set parameter.

  2. Dalam penjanaan isyarat, lebih banyak penunjuk boleh diperkenalkan untuk digabungkan, untuk membina isyarat perdagangan yang lebih stabil.

  3. Dalam kawalan risiko, anda boleh menetapkan garis stop loss untuk mengawal kerugian tunggal.

  4. Dalam arbitraj merentas pasaran, ia boleh diperluaskan kepada lebih banyak jenis transaksi yang relevan.

ringkaskan

Strategi ini mewujudkan perdagangan lebihan antara pasaran dengan cara mengira purata bergerak secara automatik. Berbanding dengan strategi purata bergerak tradisional, ia mempunyai kelebihan seperti penyesuaian parameter, pemprosesan yang lancar, lebihan antara pasaran. Langkah seterusnya adalah untuk mengoptimumkan lagi strategi ini melalui pembelajaran mesin, gabungan isyarat, dan pengurusan risiko.

Kod sumber strategi
/*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)