Strategy Combinasi Rata-rata Bergerak Berganda dan Penunjuk Williams

Penulis:ChaoZhang, Tarikh: 2024-02-01 15:04:51
Tag:

img

Ringkasan

Strategi ini menggabungkan dua strategi yang berbeza. Strategi pertama menghasilkan isyarat berdasarkan persilangan purata bergerak berganda harga saham. Strategi kedua adalah berdasarkan Osilator Awesome dari Penunjuk Williams. Isyarat akhir mengambil persimpangan dua isyarat strategi untuk membentuk isyarat perdagangan akhir.

Logika Strategi

Strategi pertama menjana isyarat beli apabila penutupan semalam lebih tinggi daripada penutupan hari sebelumnya dan Osilator Stochastic 9 hari yang cepat lebih rendah daripada garis D Osilator Stochastic 3 hari yang perlahan.

Strategi kedua mengira perbezaan antara turun naik harga 5 hari dan 34 hari dan mengira purata bergerak perbezaan itu. Apabila nilai semasa di atas tempoh sebelumnya, ia adalah isyarat beli. Apabila nilai semasa di bawah tempoh sebelumnya, ia adalah isyarat jual.

Kedua-dua isyarat strategi digabungkan dengan mengambil persimpangan mereka. Kedudukan panjang diambil apabila kedua-dua strategi memberikan isyarat beli. Kedudukan pendek diambil apabila kedua-dua strategi memberikan isyarat jual.

Analisis Kelebihan

Strategi ini menggabungkan kelebihan strategi crossover purata bergerak berganda dan strategi penunjuk Williams. Strategi crossover purata bergerak berganda boleh menangkap trend jangka menengah hingga panjang. Strategi penunjuk Williams boleh menangkap peluang perdagangan jangka pendek. Menggabungkan kedua-dua strategi membolehkan kedua-dua mengambil keuntungan dan mencegah pecah palsu.

Di samping itu, penggunaan pelbagai parameter input membolehkan pengoptimuman untuk stok dan keadaan pasaran yang berbeza, menjadikan strategi dapat disesuaikan dengan pelbagai persekitaran pasaran.

Analisis Risiko

Risiko terbesar adalah bahawa isyarat dari kedua-dua strategi mungkin tidak konsisten. Apabila satu strategi menghasilkan isyarat beli sementara yang lain menghasilkan isyarat jual, strategi gabungan tidak dapat menghasilkan isyarat yang bermakna, berpotensi kehilangan peluang perdagangan.

Di samping itu, pelbagai parameter menimbulkan beberapa kesukaran untuk pengoptimuman. Gabungan parameter yang tidak sesuai boleh membawa kepada prestasi strategi yang buruk.

Untuk mengurangkan risiko, mana-mana isyarat strategi boleh digunakan secara eksklusif. Juga, julat parameter yang sesuai boleh diteliti untuk keadaan pasaran yang berbeza.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dalam beberapa aspek:

  1. Menilai konsistensi isyarat antara kedua-dua strategi di bawah kombinasi parameter yang berbeza untuk mencari parameter optimum untuk pencocokan isyarat.

  2. Uji prestasi di pelbagai produk, jangka masa untuk mencari skop aplikasi yang terbaik.

  3. Pertimbangkan untuk mengganti crossover purata bergerak berganda dengan penunjuk teknikal lain seperti KDJ untuk mempelbagaikan gabungan strategi.

  4. Menggabungkan mekanisme hentian kerugian untuk mengawal risiko, contohnya menetapkan hentian pengeluaran maksimum.

Kesimpulan

Strategi ini menggabungkan strategi crossover purata bergerak berganda dan strategi Penunjuk Williams untuk menangkap kedua-dua penjejakan trend dan isyarat jangka pendek. Melalui pengoptimuman parameter, ia dapat menyesuaikan diri dengan pelbagai keadaan pasaran. Walau bagaimanapun, pencocokan isyarat yang tidak konsisten dan pengoptimuman parameter yang kompleks tetap menjadi cabarannya. Secara keseluruhan, ia menyediakan pendekatan yang berkesan untuk perdagangan kuantitatif dan bernilai penyelidikan dan pengoptimuman lanjut untuk mengurangkan risiko dan meningkatkan ketahanan.


/*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 )

Lebih lanjut