Strategi gabungan momentum berbilang faktor dan pembalikan


Tarikh penciptaan: 2023-10-23 15:11:20 Akhirnya diubah suai: 2023-10-23 15:11:20
Salin: 0 Bilangan klik: 700
1
fokus pada
1617
Pengikut

Strategi gabungan momentum berbilang faktor dan pembalikan

Gambaran keseluruhan

Strategi ini menggunakan model multi-faktor dengan menggunakan kombinasi CMO dan Stochastic untuk mencari peluang perdagangan dalam keadaan pasaran yang berbeza.

Analisis asas

Strategi ini terdiri daripada dua sub-strategi:

  1. 123 Strategi berbalik

    • Menggunakan Indeks Stochastic 9 Hari untuk Mencari Overbought dan Overbought
    • Jika harga penutupan meningkat 2 hari berturut-turut dan Stochastic berada di bawah 50, buat lebih
    • Jika harga penutupan turun 2 hari berturut-turut dan Stochastic lebih tinggi daripada 50, buat shorting
  2. Strategi nilai mutlak CMO

    • Mengira nilai mutlak CMO
    • Apabila nilai mutlak CMO lebih tinggi daripada 70, ia dianggap sebagai overbought dan melakukan shorting.
    • Apabila nilai mutlak CMO di bawah 20, CMO menganggap dirinya berada dalam keadaan oversold dan melakukan lebih banyak

Akhirnya, jika kedua-dua isyarat strategi anak sama, isyarat perdagangan akan dikeluarkan.

Strategi ini memanfaatkan kelebihan CMO yang dinamika dan Stochastic yang berbalik. CMO dapat mengenal pasti trend dengan lebih baik, dan Stochastic dapat melihat peluang untuk berbalik dalam jangka pendek. Kedua-duanya digunakan bersama untuk mencari peluang perdagangan pada tahap yang berbeza.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Model pelbagai faktor, menggabungkan momentum dan pembalikan, dapat menyesuaikan diri dengan keadaan pasaran yang berbeza

  2. CMO yang lebih baik dalam mengenal pasti trend, Stochastic yang lebih tepat dalam menentukan titik balik

  3. Perdagangan hanya apabila dua isyarat sepadan, mengelakkan isyarat salah, meningkatkan peluang keuntungan

  4. Parameter optimasi ruang yang besar, boleh disesuaikan untuk pelbagai jenis dan kitaran

  5. Meneroka peluang perdagangan yang lebih banyak dengan menggunakan indikator jangka panjang dan jangka pendek

  6. Peraturan mudah difahami, mudah diimplementasikan, sesuai untuk perdagangan algoritma

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Keupayaan untuk memberi isyarat silap kepada substrategi wujud, parameter yang perlu dioptimumkan

  2. Kejadian yang tidak dijangka menyebabkan trend berbalik dan menyebabkan kerugian yang lebih besar

  3. Frekuensi urus niaga mungkin terlalu tinggi, kos urus niaga adalah faktor yang perlu dipertimbangkan

  4. Strategi anak adalah penunjuk kelewatan, terdapat masalah ketinggalan masa

  5. Perlu menyesuaikan parameter untuk pelbagai jenis, keperluan pengoptimuman parameter yang lebih tinggi

Kaedah pencegahan:

  1. Parameter substrategi pengoptimuman untuk mengurangkan kebarangkalian isyarat salah

  2. Tetapkan Hentikan Kerugian dan Kawal Kerugian Tunggal

  3. Memperbaiki syarat untuk membuka kedudukan dan mengurangkan kekerapan dagangan

  4. Menggunakan data tick dalam masa nyata untuk mengurangkan ketinggalan

  5. Mengoptimumkan parameter secara automatik menggunakan kaedah pembelajaran mesin

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Memperkenalkan lebih banyak faktor, seperti kadar turun naik, kuantiti dan lain-lain, untuk membentuk model pelbagai faktor yang sistematik

  2. Membina mekanisme pengoptimuman parameter dinamik, menyesuaikan parameter mengikut keadaan pasaran

  3. Mengoptimumkan logik pembukaan kedudukan, memperkenalkan kebarangkalian dan kaedah kelancaran indeks

  4. Mempertahankan kedudukan jangka panjang dalam jangka pendek untuk mencapai dua tujuan

  5. Menggunakan pembelajaran mendalam untuk mendapatkan lebih banyak ciri dan membina peraturan perdagangan yang tidak linear

  6. Meneroka model tanpa parameter, mengelakkan kecacatan yang disebabkan oleh parameter pilihan buatan

  7. Menggabungkan data frekuensi tinggi dan berita untuk mengurangkan ketinggalan isyarat

ringkaskan

Strategi ini menggunakan indikator momentum CMO dan indikator stochastic reversal, untuk mewujudkan model pelbagai faktor, untuk mengeksplorasi lebih banyak peluang perdagangan di pasaran traversal. Berbanding dengan indikator tunggal, kombinasi pelbagai faktor dapat menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks. Pada masa yang sama, ruang untuk mengoptimumkan parameter strategi ini besar, peraturan mudah, sesuai untuk pengembangan perdagangan algoritma.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/09/2019
// 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
//    This indicator plots the absolute value of CMO. CMO 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.
//
// 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

CMOabs(Length, TopBand, LowBand) =>
    pos = 0
    xMom = abs(close - close[1])
    xSMA_mom = sma(xMom, Length)
    xMomLength = close - close[Length]
    nRes = abs(100 * (xMomLength / (xSMA_mom * Length)))
    pos := iff(nRes > TopBand, -1,
    	     iff(nRes < LowBand, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & CMOabs", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(20, maxval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOabs = CMOabs(LengthCMO, TopBand, LowBand)
pos = iff(posReversal123 == 1 and posCMOabs == 1 , 1,
	   iff(posReversal123 == -1 and posCMOabs == -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 )