Dual Moving Average Crossover dan Williams Indicator Combo Strategy

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

img

Gambaran umum

Strategi ini menggabungkan dua strategi yang berbeda. Strategi pertama menghasilkan sinyal berdasarkan crossover rata-rata bergerak ganda harga saham. Strategi kedua didasarkan pada Osilator Awesome dari Indikator Williams. Sinyal akhir mengambil persimpangan dua sinyal strategi untuk membentuk sinyal perdagangan akhir.

Logika Strategi

Strategi pertama menghasilkan sinyal beli ketika penutupan kemarin lebih tinggi daripada penutupan hari sebelumnya dan osilator Stochastic 9 hari yang cepat lebih rendah dari garis D-line Stochastic Oscillator 3 hari yang lambat.

Strategi kedua menghitung perbedaan antara fluktuasi harga 5 hari dan 34 hari dan menghitung rata-rata bergerak dari perbedaan itu. Ketika nilai saat ini di atas periode sebelumnya, itu adalah sinyal beli. Ketika nilai saat ini di bawah periode sebelumnya, itu adalah sinyal jual.

Dua sinyal strategi dikombinasikan dengan mengambil persimpangan mereka. Posisi panjang diambil ketika kedua strategi memberikan sinyal beli. Posisi pendek diambil ketika kedua strategi memberikan sinyal jual.

Analisis Keuntungan

Strategi ini menggabungkan keuntungan dari strategi crossover rata-rata bergerak ganda dan strategi indikator williams. strategi crossover rata-rata bergerak ganda dapat menangkap tren jangka menengah hingga jangka panjang. strategi indikator williams dapat menangkap peluang perdagangan jangka pendek.

Selain itu, penggunaan beberapa parameter input memungkinkan optimasi untuk stok dan kondisi pasar yang berbeda, membuat strategi dapat disesuaikan dengan lingkungan pasar yang lebih luas.

Analisis Risiko

Risiko terbesar adalah bahwa sinyal dari kedua strategi mungkin tidak konsisten. Ketika satu strategi menghasilkan sinyal beli sementara yang lain menghasilkan sinyal jual, strategi gabungan tidak dapat menghasilkan sinyal yang berarti, berpotensi kehilangan peluang perdagangan.

Selain itu, beberapa parameter menimbulkan beberapa kesulitan untuk pengoptimalan. kombinasi parameter yang tidak sesuai dapat menyebabkan kinerja strategi yang buruk.

Untuk mengurangi risiko, salah satu sinyal strategi dapat digunakan secara eksklusif. Juga, rentang parameter yang sesuai dapat diteliti untuk kondisi pasar yang berbeda.

Peluang Peningkatan

Strategi ini dapat ditingkatkan dalam beberapa aspek:

  1. Evaluasi konsistensi sinyal antara kedua strategi di bawah kombinasi parameter yang berbeda untuk menemukan parameter optimal untuk pencocokan sinyal.

  2. Uji kinerja di berbagai produk, kerangka waktu untuk menemukan ruang lingkup aplikasi terbaik.

  3. Pertimbangkan untuk mengganti crossover rata-rata bergerak ganda dengan indikator teknis lainnya seperti KDJ untuk mendiversifikasi kombinasi strategi.

  4. Menggabungkan mekanisme stop loss untuk mengendalikan risiko, misalnya menetapkan stop drawdown maksimum.

Kesimpulan

Strategi ini menggabungkan strategi crossover rata-rata bergerak ganda dan strategi Indicator Williams untuk menangkap pelacakan tren dan sinyal jangka pendek. Melalui optimasi parameter, ia dapat beradaptasi dengan berbagai kondisi pasar. Namun, pencocokan sinyal yang tidak konsisten dan optimasi parameter yang kompleks tetap menjadi tantangannya. Secara keseluruhan, ia memberikan pendekatan yang efektif untuk perdagangan kuantitatif dan layak penelitian lebih lanjut dan optimasi untuk mengurangi 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 banyak