Strategi purata bergerak berganda digabungkan dengan penunjuk stochastic

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

img

Ringkasan

Artikel ini memperkenalkan strategi perdagangan kuantitatif yang menggabungkan strategi purata bergerak berganda dan penunjuk stokastik.

Prinsip Strategi

Strategi ini terdiri daripada dua bahagian:

  1. Strategi purata bergerak berganda

    Menggunakan purata bergerak pantas dan perlahan untuk menjana isyarat beli silang emas dan isyarat jual silang mati. purata bergerak pantas boleh menangkap perubahan trend harga lebih cepat, sementara yang perlahan menapis isyarat palsu.

  2. Indikator Stochastic

    Menggunakan ciri goyangan stokastik untuk mengenal pasti situasi overbought dan oversold. Stokastik yang lebih tinggi daripada garis perlahan menunjukkan isyarat overbought, sementara stokastik yang lebih rendah daripada garis perlahan menunjukkan isyarat oversold.

Isyarat dari kedua-dua bahagian digabungkan untuk membentuk isyarat dagangan akhir. Strategi purata bergerak berganda mengesan trend utama, sementara stokastik membantu mengelakkan keadaan pasaran yang tidak menguntungkan.

Analisis Kelebihan

  • Menggabungkan kelebihan purata bergerak berganda dan stokastik, lebih stabil.
  • Purata bergerak untuk trend berikut, stokastik untuk pengesahan, kesan yang baik.
  • Parameter yang boleh disesuaikan menyesuaikan diri dengan keadaan pasaran yang berbeza.

Analisis Risiko

  • Purata bergerak berganda boleh dengan mudah menghasilkan isyarat palsu.
  • Tetapan parameter stokastik yang tidak betul mungkin terlepas trend.
  • Perlu menyesuaikan parameter untuk menyesuaikan diri dengan perubahan pasaran.

Risiko boleh dikurangkan dengan mengoptimumkan kombinasi parameter dan menambah stop loss untuk mengawal kerugian.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji kesan parameter purata bergerak yang berbeza pada strategi.
  2. Uji kesan parameter stokastik yang berbeza terhadap kestabilan strategi.
  3. Tambah penapis trend untuk meningkatkan kadar kemenangan.
  4. Membina mekanisme stop loss yang dinamik untuk mengawal kerugian.

Ringkasan

Strategi ini menggabungkan kelebihan purata bergerak berganda dan stokastik. Semasa mengesan trend pasaran utama, ia mengelakkan pembalikan yang tidak menguntungkan. Hasil strategi yang lebih baik boleh diperoleh melalui pengoptimuman parameter. Menambah berhenti dan penapis trend boleh menjadikan strategi lebih mantap.


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