Strategi Kombinasi Crossover Rata-rata Pergerakan Ganda dan Indikator Williams


Tanggal Pembuatan: 2024-02-01 15:04:51 Akhirnya memodifikasi: 2024-02-01 15:04:51
menyalin: 0 Jumlah klik: 520
1
fokus pada
1617
Pengikut

Strategi Kombinasi Crossover Rata-rata Pergerakan Ganda dan Indikator Williams

Ringkasan

Strategi ini adalah kombinasi dari dua strategi yang berbeda, strategi pertama berdasarkan pada harga saham yang melintasi dua rata-rata bergerak untuk membentuk sinyal; strategi kedua berdasarkan pada indikator magis berayun dalam indikator Williams.

Prinsip Strategi

Prinsip dari strategi pertama adalah bahwa ketika harga penutupan kemarin lebih tinggi dari harga penutupan hari sebelumnya, dan indikator acak K line 9 hari lebih rendah dari indikator acak D line 3 hari menghasilkan sinyal beli; ketika harga penutupan kemarin lebih rendah dari harga penutupan hari sebelumnya, dan indikator acak K line 9 hari lebih tinggi dari indikator acak D line 3 hari, menghasilkan sinyal jual.

Prinsip kedua dari strategi ini adalah dengan menghitung selisih pergerakan harga pada hari ke-5 dan ke-34, dan menghitung moving average dari selisih tersebut. Jika nilai saat ini lebih tinggi dari periode sebelumnya, itu adalah sinyal beli. Jika nilai saat ini lebih rendah dari periode sebelumnya, itu adalah sinyal jual.

Bila dua strategi digabungkan, sinyal akhir mengambil persimpangan dari dua sinyal strategi. Bila dua strategi mengeluarkan sinyal beli pada saat bersamaan, lakukan lebih banyak; Bila dua strategi mengeluarkan sinyal jual pada saat bersamaan, lakukan kosong.

Analisis Keunggulan

Strategi ini menggabungkan keunggulan dari strategi dual moving average dan strategi Williams indicator. Strategi dual moving average dapat menangkap tren di garis tengah dan panjang; strategi Williams indicator dapat menangkap peluang perdagangan di garis pendek. Kombinasi kedua strategi ini dapat menghasilkan keuntungan sekaligus mencegah terobosan palsu.

Selain itu, strategi ini menggunakan beberapa parameter input yang dapat dioptimalkan parameter sesuai dengan berbagai saham dan situasi pasar, untuk menyesuaikan dengan lingkungan pasar yang lebih luas.

Analisis risiko

Risiko terbesar dari strategi ini adalah bahwa dua sinyal strategi mungkin tidak konsisten. Strategi ini tidak dapat menghasilkan sinyal yang efektif dan mungkin kehilangan peluang perdagangan ketika salah satu strategi mengirim sinyal beli dan yang lain mengirim sinyal jual.

Selain itu, kebijakan ini mengandung beberapa parameter, yang membuat pengoptimalan parameter menjadi sulit. Kombinasi parameter yang tidak sesuai dapat menyebabkan kinerja kebijakan yang buruk.

Untuk mengurangi risiko, Anda dapat mempertimbangkan untuk hanya menggunakan salah satu sinyal strategi; atau penelitian untuk menentukan rentang parameter yang sesuai dengan lingkungan pasar yang berbeda.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Evaluasi konsistensi antara dua sinyal strategi, mempelajari kecocokan sinyal mereka di bawah parameter yang berbeda, dan menentukan kombinasi parameter yang optimal.

  2. Uji kinerja strategi ini pada varietas yang berbeda dan pada siklus yang berbeda untuk mencari ruang lingkup yang optimal.

  3. Strategi moving average ganda dapat dipertimbangkan untuk digunakan dalam indikator lain, seperti indikator KDJ, untuk memperkaya portofolio strategi.

  4. Menambahkan mekanisme stop loss untuk mengendalikan risiko, misalnya dengan menetapkan stop loss maksimum untuk ditarik kembali.

Meringkaskan

Strategi ini menggabungkan strategi moving average ganda dan strategi Williams indicator, sambil memadukan pelacakan tren dan menangkap sinyal garis pendek. Optimasi parameter dapat disesuaikan dengan lingkungan pasar yang lebih luas. Namun, ada juga risiko yang ditimbulkan oleh ketidakcocokan pencocokan sinyal dan kesulitan dalam pengoptimalan parameter yang kompleks. Secara keseluruhan, strategi ini memberikan cara yang efektif untuk perdagangan kuantitatif dan layak untuk dioptimalkan lebih lanjut untuk mengurangi risiko dan meningkatkan stabilitas.

Kode Sumber Strategi
/*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 )