Strategi Rata-rata Bergerak Ganda Dikombinasikan dengan Indikator Stochastic

Penulis:ChaoZhang, Tanggal: 2024-01-12 11:16:52
Tag:

img

Gambaran umum

Artikel ini memperkenalkan strategi perdagangan kuantitatif yang menggabungkan strategi rata-rata bergerak ganda dan indikator stokastik.

Prinsip Strategi

Strategi ini terdiri dari dua bagian:

  1. Strategi Rata-rata Bergerak Ganda

    Menggunakan rata-rata bergerak cepat dan lambat untuk menghasilkan sinyal beli silang emas dan sinyal jual silang mati. Rata-rata bergerak cepat dapat menangkap perubahan tren harga lebih cepat, sementara yang lambat menyaring sinyal palsu.

  2. Indikator Stochastic

    Menggunakan fitur osilasi dari stokastik untuk mengidentifikasi situasi overbought dan oversold.

Sinyal dari kedua bagian dikombinasikan untuk membentuk sinyal perdagangan akhir. Strategi rata-rata bergerak ganda melacak tren utama, sementara stokastis membantu menghindari kondisi pasar yang tidak menguntungkan.

Analisis Keuntungan

  • Menggabungkan keuntungan dari rata-rata bergerak ganda dan stokastik, lebih stabil.
  • Rata-rata bergerak untuk mengikuti tren, stokastik untuk konfirmasi, efek yang baik.
  • Parameter yang dapat disesuaikan beradaptasi dengan kondisi pasar yang berbeda.

Analisis Risiko

  • Rata-rata bergerak ganda dapat dengan mudah menghasilkan sinyal palsu.
  • Pengaturan parameter stokastik yang tidak benar dapat melewatkan tren.
  • Perlu menyesuaikan parameter untuk menyesuaikan dengan perubahan pasar.

Risiko dapat dikurangi dengan mengoptimalkan kombinasi parameter dan menambahkan stop loss untuk mengendalikan kerugian.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji efek dari parameter rata-rata bergerak yang berbeda pada strategi.
  2. Uji efek dari parameter stokastik yang berbeda pada stabilitas strategi.
  3. Tambahkan indikator penyaringan tren untuk meningkatkan tingkat kemenangan.
  4. Membangun mekanisme stop loss yang dinamis untuk mengendalikan kerugian.

Ringkasan

Strategi ini menggabungkan keuntungan dari rata-rata bergerak ganda dan stokastis. Sementara melacak tren pasar utama, ia menghindari pembalikan yang tidak menguntungkan. Hasil strategi yang lebih baik dapat diperoleh melalui optimasi parameter. Menambahkan stop dan filter tren dapat membuat strategi lebih kuat.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/11/2020
// 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
// As the name suggests, High low bands are two bands surrounding the underlying’s 
// price. These bands are generated from the triangular moving averages calculated 
// from the underlying’s price. The triangular moving average is, in turn, shifted 
// up and down by a fixed percentage. The bands, thus formed, are termed as High 
// low bands. The main theme and concept of High low bands is based upon the triangular 
// moving average. 
//
// 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

    
HLB(Length, PercentShift) =>
    pos = 0.0
    xTMA = sma(sma(close, Length), Length)
    xHighBand = xTMA + (xTMA * PercentShift / 100)
    xLowBand = xTMA - (xTMA * PercentShift / 100)
    pos :=iff(close > xHighBand, 1,
           iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High Low Bands", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_HLB = input(14, minval=1)
PercentShift = input(1, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLB = HLB(Length_HLB, PercentShift)
pos = iff(posReversal123 == 1 and posHLB == 1 , 1,
	   iff(posReversal123 == -1 and posHLB == -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 )

Lebih banyak