Strategi Arbitraj Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-11-24 14:21:06
Tag:

img

Ringkasan

Ini adalah strategi arbitraj yang menggunakan formasi purata bergerak berganda untuk membuat perdagangan arbitraj. Ia menggabungkan corak pembalikan 123 dan unsur-unsur sub-strategi Volume Terhingga (FVE) dan membuat perdagangan arbitraj apabila kedua-duanya memberikan isyarat beli atau jual secara serentak.

Logika Strategi

123 corak pembalikan

Sub-strategi ini diambil daripada buku How I Tripped My Money in the Futures Market oleh Ulf Jensen. Ia memberikan isyarat di bawah keadaan berikut:

  • Pergi panjang apabila harga penutupan meningkat selama 2 hari berturut-turut dan saham perlahan 9 hari berada di bawah 50.
  • Pergi pendek apabila harga penutupan jatuh selama 2 hari berturut-turut dan saham cepat 9 hari di atas 50.

Elemen Volume Berhingga (FVE)

FVE adalah penunjuk jumlah murni. Ia menilai sama ada wang mengalir masuk atau keluar berdasarkan julat pergerakan harga dan jumlah dagangan.

Ia memberi isyarat apabila dua bar terakhir penunjuk FVE naik atau jatuh bersama.

Analisis Kelebihan

Strategi ini menggabungkan dua jenis penunjuk untuk menentukan trend pasaran dan aliran wang, yang secara berkesan dapat mengelakkan isyarat palsu.

Di samping itu, pembentukan purata bergerak berganda mewakili konsistensi antara trend jangka pendek dan jangka sederhana, dengan itu mempunyai kestabilan yang lebih besar.

Analisis Risiko

Strategi ini bergantung pada pembentukan purata bergerak, yang dengan mudah boleh menghasilkan isyarat palsu dan membawa kepada kerugian apabila pasaran turun naik.

Risiko boleh dikurangkan dengan menyesuaikan parameter dengan betul untuk menjadikan strategi lebih kukuh, atau dengan menetapkan stop loss untuk mengawal risiko.

Arahan pengoptimuman

Lebih banyak jenis purata bergerak boleh diuji untuk mencari kecocokan yang optimum. Penunjuk bantuan lain seperti indeks kekuatan dan indeks turun naik juga boleh diperkenalkan untuk mengelakkan isyarat palsu.

Di samping itu, penyelidikan boleh dilakukan mengenai cara menyesuaikan parameter secara dinamik berdasarkan keadaan pasaran untuk meningkatkan kebolehsesuaian. Pembelajaran mesin dan rangkaian saraf juga boleh diterokai untuk penyesuaian parameter sendiri.

Ringkasan

Strategi arbitraj purata bergerak berganda ini mengintegrasikan dua penunjuk jenis pembalikan untuk penghakiman, yang dapat mengurangkan risiko hingga tahap tertentu. Tetapi bergantung pada pembentukan purata bergerak bermakna pengoptimuman lanjut diperlukan untuk menjadikan strategi lebih mantap. Secara keseluruhan, ia menyediakan rangka kerja asas untuk perdagangan arbitraj jangka pendek dan bernilai penyelidikan lanjut.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/08/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 FVE is a pure volume indicator. Unlike most of the other indicators 
// (except OBV), price change doesn?t come into the equation for the FVE (price 
// is not multiplied by volume), but is only used to determine whether money is 
// flowing in or out of the stock. This is contrary to the current trend in the 
// design of modern money flow indicators. The author decided against a price-volume 
// indicator for the following reasons:
// - A pure volume indicator has more power to contradict.
// - The number of buyers or sellers (which is assessed by volume) will be the same, 
//     regardless of the price fluctuation.
// - Price-volume indicators tend to spike excessively at breakouts or breakdowns.
//
// 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


FVE(Period,Factor) =>
    pos = 0
    nRes = 0.0
    xhl2 = hl2
    xhlc3 = hlc3
    xClose = close
    xVolume = volume
    xSMAV = sma(xVolume, Period)
    nMF = xClose - xhl2 + xhlc3 - xhlc3[1]
    nVlm = iff(nMF > Factor * xClose / 100,  xVolume, 
             iff(nMF < -Factor * xClose / 100, -xVolume, 0))
    nRes := nz(nRes[1],0) + ((nVlm / xSMAV) / Period) * 100
    pos := iff(nRes > nRes[1] and nRes > nRes[2], 1,
             iff(nRes < nRes[1] and nRes < nRes[2], -1, nz(pos[1], 0)))   
    pos

strategy(title="Combo Backtest 123 Reversal & Finite Volume Elements (FVE)", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Period = input(18, minval=1)
Factor = input(0.6, minval=0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVE = FVE(Period,Factor)
pos = iff(posReversal123 == 1 and posFVE == 1 , 1,
	   iff(posReversal123 == -1 and posFVE == -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 lanjut