
Strategi ini menggunakan model multi-faktor dengan menggunakan kombinasi CMO dan Stochastic untuk mencari peluang perdagangan dalam keadaan pasaran yang berbeza.
Strategi ini terdiri daripada dua sub-strategi:
123 Strategi berbalik
Strategi nilai mutlak CMO
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.
Strategi ini mempunyai kelebihan berikut:
Model pelbagai faktor, menggabungkan momentum dan pembalikan, dapat menyesuaikan diri dengan keadaan pasaran yang berbeza
CMO yang lebih baik dalam mengenal pasti trend, Stochastic yang lebih tepat dalam menentukan titik balik
Perdagangan hanya apabila dua isyarat sepadan, mengelakkan isyarat salah, meningkatkan peluang keuntungan
Parameter optimasi ruang yang besar, boleh disesuaikan untuk pelbagai jenis dan kitaran
Meneroka peluang perdagangan yang lebih banyak dengan menggunakan indikator jangka panjang dan jangka pendek
Peraturan mudah difahami, mudah diimplementasikan, sesuai untuk perdagangan algoritma
Strategi ini juga mempunyai risiko:
Keupayaan untuk memberi isyarat silap kepada substrategi wujud, parameter yang perlu dioptimumkan
Kejadian yang tidak dijangka menyebabkan trend berbalik dan menyebabkan kerugian yang lebih besar
Frekuensi urus niaga mungkin terlalu tinggi, kos urus niaga adalah faktor yang perlu dipertimbangkan
Strategi anak adalah penunjuk kelewatan, terdapat masalah ketinggalan masa
Perlu menyesuaikan parameter untuk pelbagai jenis, keperluan pengoptimuman parameter yang lebih tinggi
Kaedah pencegahan:
Parameter substrategi pengoptimuman untuk mengurangkan kebarangkalian isyarat salah
Tetapkan Hentikan Kerugian dan Kawal Kerugian Tunggal
Memperbaiki syarat untuk membuka kedudukan dan mengurangkan kekerapan dagangan
Menggunakan data tick dalam masa nyata untuk mengurangkan ketinggalan
Mengoptimumkan parameter secara automatik menggunakan kaedah pembelajaran mesin
Strategi ini boleh dioptimumkan dengan:
Memperkenalkan lebih banyak faktor, seperti kadar turun naik, kuantiti dan lain-lain, untuk membentuk model pelbagai faktor yang sistematik
Membina mekanisme pengoptimuman parameter dinamik, menyesuaikan parameter mengikut keadaan pasaran
Mengoptimumkan logik pembukaan kedudukan, memperkenalkan kebarangkalian dan kaedah kelancaran indeks
Mempertahankan kedudukan jangka panjang dalam jangka pendek untuk mencapai dua tujuan
Menggunakan pembelajaran mendalam untuk mendapatkan lebih banyak ciri dan membina peraturan perdagangan yang tidak linear
Meneroka model tanpa parameter, mengelakkan kecacatan yang disebabkan oleh parameter pilihan buatan
Menggabungkan data frekuensi tinggi dan berita untuk mengurangkan ketinggalan isyarat
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.
/*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 )