
Strategi ini adalah gabungan dua strategi yang berbeza, strategi pertama berdasarkan harga saham yang melintasi purata bergerak ganda untuk membentuk isyarat; strategi kedua berdasarkan isyarat berayun ajaib dalam penunjuk Williams. Isyarat akhir mengambil persimpangan dua isyarat strategi untuk membentuk isyarat perdagangan akhir.
Prinsip strategi yang pertama ialah, apabila harga penutupan semalam lebih tinggi daripada harga penutupan hari sebelumnya, dan K-baris 9 hari cepat indikator rawak adalah lebih rendah daripada D-baris 3 hari perlahan indikator rawak menghasilkan isyarat beli; apabila harga penutupan semalam adalah lebih rendah daripada harga penutupan hari sebelumnya, dan K-baris 9 hari indikator rawak adalah lebih tinggi daripada D-baris 3 hari perlahan indikator rawak, menghasilkan isyarat jual.
Prinsip strategi kedua adalah untuk mengira perbezaan antara pergerakan harga pada hari ke-5 dan ke-34, dan mengira purata bergerak perbezaan tersebut. Ia adalah isyarat beli apabila nilai semasa lebih tinggi daripada kitaran sebelumnya, dan isyarat jual apabila nilai semasa lebih rendah daripada kitaran sebelumnya.
Gabungan dua strategi, isyarat akhir mengambil persimpangan dua isyarat strategi. Apabila kedua-dua strategi menghantar isyarat beli pada masa yang sama, lakukan lebih banyak; Apabila kedua-dua strategi menghantar isyarat jual pada masa yang sama, lakukan kosong.
Strategi ini menggabungkan kelebihan strategi dua hala iaitu strategi moving averages dan strategi Williams indicator. Strategi moving averages dapat menangkap trend garis tengah dan panjang; strategi Williams indicator dapat menangkap peluang perdagangan garis pendek. Kombinasi kedua-dua strategi ini dapat menghasilkan keuntungan dan mencegah penembusan palsu pada masa yang sama.
Di samping itu, strategi ini menggunakan pelbagai parameter input yang boleh dioptimumkan parameter mengikut saham dan keadaan pasaran yang berbeza untuk menyesuaikan diri dengan persekitaran pasaran yang lebih luas.
Risiko terbesar strategi ini adalah bahawa kedua-dua isyarat strategi mungkin tidak selaras. Apabila satu strategi menghantar isyarat beli dan yang lain menghantar isyarat jual, strategi ini tidak dapat menghasilkan isyarat yang berkesan dan mungkin kehilangan peluang perdagangan.
Di samping itu, strategi ini mengandungi beberapa parameter, yang menyebabkan kesukaran untuk mengoptimumkan parameter. Kombinasi parameter yang tidak sesuai boleh menyebabkan prestasi strategi yang tidak baik.
Untuk mengurangkan risiko, anda boleh mempertimbangkan untuk menggunakan hanya satu daripada isyarat strategi; atau kajian untuk menentukan julat parameter yang sesuai untuk keadaan pasaran yang berbeza.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Menilai keserasian dua isyarat strategi, mengkaji tahap kecocokan isyarat mereka di bawah parameter yang berbeza, dan menentukan kombinasi parameter terbaik.
Uji prestasi strategi ini dalam pelbagai jenis dan tempoh yang berbeza untuk mencari ruang yang paling sesuai.
Anda boleh mempertimbangkan untuk menukar strategi purata bergerak berganda dengan indikator lain, seperti indikator KDJ, untuk menambah portfolio strategi.
Menambah mekanisme penangguhan kerugian untuk mengawal bahaya, seperti menetapkan penangguhan kerugian maksimum.
Strategi ini menggabungkan strategi purata bergerak ganda dan strategi penunjuk Williams, sambil mengimbangi pengesanan trend dan menangkap isyarat garis pendek. Dengan pengoptimuman parameter, ia dapat disesuaikan dengan persekitaran pasaran yang lebih luas. Tetapi ia juga mempunyai risiko yang disebabkan oleh ketidakcocokan pada pencocokan isyarat dan kesukaran pengoptimuman parameter yang rumit. Secara keseluruhan, strategi ini memberikan pemikiran yang berkesan untuk perdagangan kuantitatif dan layak untuk dioptimumkan lebih lanjut untuk mengurangkan risiko dan meningkatkan kestabilan.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/06/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 oscillator as a histogram where blue denotes
// periods suited for buying and red . for selling. If the current value
// of AO (Awesome Oscillator) is above previous, the period is considered
// suited for buying and the period is marked blue. If the AO value is not
// above previous, the period is considered suited for selling and the
// indicator marks it as red.
// You can make changes in the property for set calculating strategy MA, EMA, WMA
//
// 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
BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) =>
pos = 0
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
nRes = xSMA1_SMA2 - xSMA_hl2
xResWMA = wma(nRes, nLengthWMA)
xResMA = sma(nRes, nLengthMA)
xResEMA = ema(nRes, nLengthEMA)
xSignalSeries = iff(bShowWMA, xResWMA,
iff(bShowMA, xResMA,
iff(bShowEMA, xResEMA, na)))
cClr = nRes > nRes[1] ? blue : red
pos := iff(xSignalSeries[2] < 0 and xSignalSeries[1] > 0, 1,
iff(xSignalSeries[2] > 0 and xSignalSeries[1] < 0, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Bill Williams. Awesome Oscillator (AC) with Signal Line", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
nLengthMA = input(15, minval=1, title="MA")
nLengthEMA = input(15, minval=1, title="EMA")
nLengthWMA = input(15, minval=1, title="WMA")
bShowWMA = input(type=bool, defval=true, title="Show and trading WMA")
bShowMA = input(type=bool, defval=false, title="Show and trading MA")
bShowEMA = input(type=bool, defval=false, title="Show and trading EMA")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAC = BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA)
pos = iff(posReversal123 == 1 and posBillWilliamsAC == 1 , 1,
iff(posReversal123 == -1 and posBillWilliamsAC == -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 ? red: possig == 1 ? green : blue )