Artikel ini memperkenalkan strategi perdagangan kuantitatif yang menggabungkan strategi rata-rata bergerak ganda dan indikator stokastik.
Strategi ini terdiri dari dua bagian:
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.
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.
Risiko dapat dikurangi dengan mengoptimalkan kombinasi parameter dan menambahkan stop loss untuk mengendalikan kerugian.
Strategi dapat dioptimalkan dalam aspek berikut:
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 )