Artikel ini memperkenalkan strategi perdagangan kuantitatif yang menggabungkan strategi purata bergerak berganda dan penunjuk stokastik.
Strategi ini terdiri daripada dua bahagian:
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.
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.
Risiko boleh dikurangkan dengan mengoptimumkan kombinasi parameter dan menambah stop loss untuk mengawal kerugian.
Strategi ini boleh dioptimumkan dalam aspek berikut:
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 )