Strategi Penapisan Momentum Moving Average

Penulis:ChaoZhang, Tarikh: 2023-12-12 12:35:05
Tag:

img

Ringkasan

Ini adalah strategi perdagangan purata bergerak yang dibina dengan teknik penapisan momentum. Ia menetapkan ambang untuk perubahan harga untuk menapis turun naik harga kecil, hanya memilih pergerakan harga besar untuk pengiraan, dengan itu meningkatkan kestabilan strategi.

Logika Strategi

Indikator utama strategi ini ialah Chande Momentum Oscillator (CMO) yang ditapis oleh momentum. Oscillator Momentum Chande adalah sejenis indikator momentum yang menilai momentum trend dengan mengira nisbah jumlah nilai mutlak hari naik dan turun kepada jumlah kenaikan dan kejatuhan harga. Strategi ini memperbaikinya dengan menetapkan ambang minimum perubahan harga yang dipanggil Penapis. Hanya apabila perubahan harga melebihi ambang ini ia akan mengambil bahagian dalam pengiraan CMO. Ini menapis banyak turun naik kecil di pasaran dan menjadikan penunjuk lebih stabil dan boleh dipercayai.

Berdasarkan pengiraan penunjuk, ia menetapkan garis atas TopBand dan garis bawah LowBand. Apabila penunjuk melebihi kedua-dua garis ini, isyarat perdagangan dihasilkan. Akhirnya, parameter input terbalik dapat membalikkan isyarat asal untuk merealisasikan operasi terbalik.

Analisis Kelebihan

Ini adalah strategi trend yang sangat stabil dan boleh dipercayai. Dengan menggunakan teknik penapisan momentum, ia dapat menapis bunyi pasaran dengan berkesan dan mengelakkan terperangkap. Strategi ini mempunyai ruang pengoptimuman parameter yang besar, parameter seperti Filter, TopBand, LowBand, dan lain-lain boleh diselaraskan untuk mengoptimumkan penunjuk strategi. Ia juga mempunyai fungsi perdagangan terbalik yang dapat menyesuaikan diri dengan fleksibel dengan persekitaran pasaran yang berbeza.

Analisis Risiko

Strategi ini terutamanya bergantung pada trend-mengikuti, jadi ia cenderung untuk menjana isyarat palsu dan kerugian di pasaran yang terikat julat. Di samping itu, pengoptimuman parameter yang tidak betul juga boleh membawa kepada kekerapan perdagangan yang berlebihan atau isyarat yang tidak stabil. Akhirnya, penggunaan yang tidak betul dari parameter perdagangan terbalik boleh membawa kepada kerugian yang tidak perlu.

Untuk mengurangkan risiko ini, parameter harus dioptimumkan dengan munasabah untuk menjadikan isyarat lebih stabil dan boleh dipercayai; elakkan menggunakan strategi ini di pasaran terikat julat, pilih alat strategi yang lebih sesuai; gunakan fungsi perdagangan terbalik dengan berhati-hati, elakkan mengaktifkannya apabila pengoptimuman parameter tidak sesuai.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan nilai parameter Penapis, memastikan penapisan bunyi pasaran sambil mengekalkan kekerapan perdagangan tidak terlalu rendah.

  2. Mengoptimumkan julat parameter TopBand dan LowBand untuk sepadan dengan julat turun naik pasaran untuk mengelakkan isyarat palsu.

  3. Menggunakan analisis berjalan maju dan kaedah lain untuk mengoptimumkan parameter secara dinamik supaya parameter strategi menyesuaikan diri dengan perubahan pasaran.

  4. Tambah logik stop loss dan tetapkan titik stop loss yang munasabah untuk mengawal kerugian.

  5. Penapis dengan penunjuk teknikal lain seperti MACD, KD untuk mengelakkan perdagangan palsu di pasaran bukan trend.

Ringkasan

Ini adalah strategi trend yang sangat praktikal. Ia menggunakan teknik penapisan momentum untuk mengekang bunyi bising pasaran dengan berkesan dan membuat isyarat yang lebih jelas dan boleh dipercayai. Melalui pengoptimuman parameter dan pengoptimuman logik, ia boleh disesuaikan menjadi alat perdagangan kuantitatif yang boleh dipercayai dan stabil.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/03/2017
// This indicator plots a CMO which ignores price changes which are less 
// than a threshold value. 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.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

strategy(title="CMOfilt", shorttitle="CMOfilt")
Length = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xMom = close - close[1]
xMomAbs = abs(close - close[1])
xMomFilter = fFilter(xMom, xMomAbs, Filter)
xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
nSum = sum(xMomFilter, Length)
nAbsSum = sum(xMomAbsFilter, Length)
nRes =   100 * nSum / nAbsSum
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="CMOfilt")


Lebih lanjut