Momentum Strategy Arbitrage Analisis Ujian Belakang

Penulis:ChaoZhang, Tarikh: 2023-10-25 11:10:59
Tag:

img

I. Nama Strategi

Berdasarkan ciri utama strategi ini, saya menamakannya Momentum Arbitrage Strategy.

II. Ringkasan Strategi

Strategi ini menjana isyarat perdagangan dengan mengira Chande Momentum Oscillator dan menetapkan ambang atas dan bawah, membentuk peluang arbitrase untuk keuntungan.

III. Logik Strategi

Kod pertama menetapkan parameter Panjang, TopBand dan LowBand, di mana Panjang mewakili bilangan hari untuk pengiraan momentum, dan TopBand dan LowBand mewakili ambang atas dan bawah.

Kemudian ia mengira momentum mutlak xMom selama hari-hari Panjang yang lalu, dan purata bergerak mudah xMom selama hari-hari Panjang, xSMA_mom.

Selepas itu, ia mengira momentum kumulatif sepanjang hari Panjang, xMomLength.

Seterusnya, ia mengira oscillator momentum nRes, yang sama dengan xMomLength dibahagikan dengan xSMA_mom kemudian dikalikan dengan Length, diperkuat dengan 100.

Berdasarkan perbandingan antara nRes dan ambang, ia menentukan arah panjang atau pendek dan menyimpannya di pos.

Akhirnya, ia menyesuaikan pos berdasarkan sama ada perdagangan terbalik diaktifkan, menjana possig isyarat perdagangan, dan mewujudkan entri panjang / pendek.

IV. Kekuatan Strategi

  1. Mengenal pasti titik perubahan trend yang berpotensi menggunakan penunjuk momentum, yang memberi manfaat kepada penangkapan trend.

  2. Membentuk isyarat panjang/pendek yang jelas digabungkan dengan penapisan ambang, mengelakkan perdagangan yang salah.

  3. Menggunakan logik perdagangan terbalik untuk mendapatkan peluang pembalikan.

  4. Ruang parameter yang boleh disesuaikan yang besar, boleh dioptimumkan untuk produk dan jangka masa yang berbeza.

  5. Parameter yang dipaparkan adalah intuitif, mudah untuk memahami logika perdagangan.

V. Risiko Strategi

  1. Hanya mempertimbangkan momentum, mungkin terlepas peluang yang dibentuk oleh penunjuk teknikal yang lain.

  2. Penembusan momentum tidak semestinya mewakili pembalikan trend, risiko penilaian yang salah wujud.

  3. Walaupun perdagangan terbalik mempunyai potensi keuntungan, ia juga boleh memperbesar kerugian.

  4. Pengoptimuman parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau kehilangan titik masuk terbaik.

  5. Perlu menyaring penyimpangan momentum jangka pendek yang disebabkan oleh peristiwa tiba-tiba.

Risiko boleh dikawal dengan menggabungkan penunjuk lain seperti trend dan turun naik untuk mengesahkan kebolehpercayaan isyarat, menyesuaikan parameter untuk kekerapan perdagangan yang lebih rendah, melegakan stop loss dengan betul, dll.

VI. Arahan Pengoptimuman Strategi

  1. Tambah penapis penunjuk teknikal lain untuk meningkatkan ketepatan isyarat.

Memastikan harga penutupan berada di atas sistem purata bergerak, atau turun naik berada dalam julat normal, sebelum isyarat momentum dicetuskan.

  1. Mengoptimumkan parameter mengikut ciri produk.

Untuk produk yang lebih tidak menentu, melonggarkan julat ambang normal untuk mengurangkan kekerapan perdagangan.

  1. Pengoptimuman pelbagai jangka masa berdasarkan tempoh masa yang berbeza.

Menggunakan tempoh yang lebih kecil Panjang untuk dagangan intraday ultra-pendek jangka. Sesuaikan parameter berdasarkan carta mingguan atau bulanan untuk trend jangka menengah dan panjang.

  1. Tetapkan keadaan perbezaan bawah.

Untuk isyarat beli, minta harga berada di atas tahap terendah sebelum ini untuk mengelakkan isyarat pembalikan palsu.

VII. Kesimpulan

Strategi ini terutamanya mengenal pasti pembalikan trend jangka pendek melalui penunjuk momentum, dengan penapisan parameter untuk menghasilkan isyarat perdagangan, mengimbangi trend berikut dan menangkap pembalikan. Risiko boleh dikawal. Penyelidikan dan penerapan lanjut dengan pengoptimuman pelbagai jangka masa dan menggabungkan penunjuk teknikal lain dapat meningkatkan prestasi strategi.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/02/2017
//    This indicator plots Chande Momentum Oscillator. This indicator was 
//    developed by Tushar Chande. A scientist, an inventor, and a respected 
//    trading system developer, Mr. Chande developed the CMO to capture what 
//    he calls "pure momentum". For more definitive information on the CMO and 
//    other indicators we recommend the book The New Technical Trader by Tushar 
//    Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder`s RSI, yet it differs 
//    in several ways:
//        - It uses data for both up days and down days in the numerator, thereby 
//          directly measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term 
//          extreme movements in price are not hidden. Once calculated, smoothing 
//          can be applied to the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to 
//          clearly see changes in net momentum using the 0 level. The bounded scale 
//          also allows you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO (Chande Momentum Oscillator)", shorttitle="CMO")
Length = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
pos = iff(nRes > TopBand, 1,
	   iff(nRes <= LowBand, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue)
plot(nRes, color=blue, title="CMO")

Lebih lanjut