Strategi Arbitrage Reversal Ganda

Penulis:ChaoZhang, Tanggal: 2024-02-06 09:58:04
Tag:

img

Gambaran umum

Strategi reversal arbitrage dual adalah algoritma arbitrage yang mengintegrasikan indikator reversal dual. Ini menggabungkan sistem reversal 123 dan sub-strategi Gann swing oscillator dan menghasilkan sinyal perdagangan ketika kedua sub-strategi memberikan sinyal pada saat yang sama untuk melakukan operasi arbitrage.

Logika Strategi

Strategi ini terdiri dari dua sub-strategi:

  1. 123 Reversal System: Ini berasal dari buku How I Tripped My Money in The Futures Market oleh Ulf Jensen, Halaman 183. Aturan tradingnya adalah: ketika harga penutupan lebih tinggi dari harga penutupan sebelumnya dan lebih rendah dari harga penutupan 2 hari yang lalu, pergi panjang ketika garis K lambat berada di bawah 50; ketika harga penutupan lebih rendah dari harga penutupan sebelumnya dan lebih tinggi dari harga penutupan 2 hari yang lalu, pergi pendek ketika garis K cepat berada di atas 50.

  2. Gann Swing Oscillator: Ini diadaptasi dari buku Robert Krausz A W.D. Gann Treasure Discovered. Ini menilai arah perubahan pasar dengan menghitung kenaikan dan penurunan harga tertinggi dan terendah selama periode tertentu.

Logika perdagangan dari strategi arbitrage ini adalah: ketika arah sinyal dari dua sub-strategi konsisten, sinyal perdagangan yang sebenarnya dihasilkan.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah dengan mengintegrasikan sinyal dari dua sub-strategi, dapat secara efektif menyaring sinyal palsu dan meningkatkan akurasi sinyal perdagangan. Kedua sub-strategi masing-masing memiliki kekuatan mereka sendiri. Sistem pembalikan 123 dapat menangkap tren pembalikan tiba-tiba, sementara osilator ayunan Gann dapat menentukan kematangan pembalikan tren. Menggabungkan keduanya dapat membuat sinyal perdagangan lebih dapat diandalkan, sehingga meningkatkan stabilitas strategi.

Analisis Risiko

Risiko utama dari strategi ini adalah bahwa kemungkinan arah sinyal perdagangan yang tidak konsisten dari dua sub-strategi relatif besar, yang dapat menyebabkan sinyal perdagangan yang tidak cukup. Selain itu, sub-strategi itu sendiri juga memiliki risiko tertentu dari sinyal palsu. Kombinasi dari kedua faktor ini dapat menyebabkan jumlah perdagangan yang tidak cukup untuk strategi, sehingga tidak dapat sepenuhnya menangkap peluang pasar.

Untuk mengurangi risiko, parameter sub-strategi dapat disesuaikan untuk meningkatkan frekuensi perdagangan secara moderat, atau indikator lain dapat dikombinasikan untuk membantu menyaring sinyal palsu.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Menyesuaikan parameter dari sub-strategi untuk mengoptimalkan frekuensi perdagangan;
  2. Menambahkan penilaian dari indikator teknis lainnya untuk meningkatkan kualitas sinyal;
  3. Mengoptimalkan bobot sub-strategi berdasarkan produk dan kerangka waktu yang berbeda;
  4. Tambahkan mekanisme stop loss untuk mengendalikan kerugian transaksi tunggal.

Ringkasan

Strategi arbitrage reversal ganda membentuk sinyal perdagangan yang relatif kuat dengan mengintegrasikan dua jenis strategi reversal yang berbeda. Ini dapat secara efektif menyaring kebisingan dan meningkatkan kualitas sinyal, cocok untuk menangkap peluang reversal di pasar. Namun, probabilitas sinyal yang tidak konsisten dari sub-strategi relatif besar, yang dapat menyebabkan frekuensi perdagangan yang tidak cukup. Selain itu, pengaturan parameter strategi kombinasi itu sendiri cukup kompleks, yang membutuhkan pengujian dan pengoptimalan yang cukup untuk mencapai hasil terbaik.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/11/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The Gann Swing Oscillator has been adapted from Robert Krausz's book, 
// "A W.D. Gann Treasure Discovered". The Gann Swing Oscillator helps 
// define market swings. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

    
GannSO(Length) =>
    pos = 0.0
    xGSO = 0.0
    xHH = highest(Length)
    xLL = lowest(Length)
    xGSO:= iff(xHH[2] > xHH[1] and xHH[0] > xHH[1], 1,
             iff(xLL[2] < xLL[1] and xLL[0] < xLL[1], -1, nz(xGSO[1],0)))
    pos := iff(xGSO > 0, 1,
    	     iff(xGSO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Gann Swing Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthGSO = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posGannSO = GannSO(LengthGSO)
pos = iff(posReversal123 == 1 and posGannSO == 1 , 1,
	   iff(posReversal123 == -1 and posGannSO == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih banyak