
Artikel ini membentangkan strategi perdagangan kuantitatif yang menggunakan kombinasi strategi garis rata dua dan penunjuk rawak. Strategi ini menggabungkan keupayaan trend pengesanan garis rata bergerak dan ciri overbought dan oversold penunjuk rawak untuk membentuk isyarat perdagangan.
Strategi ini terdiri daripada dua bahagian:
Garis purata bergerak pantas dan garis purata bergerak perlahan digunakan untuk membentuk isyarat membeli garpu emas dan isyarat menjual garpu mati. Garis purata bergerak pantas dapat menangkap trend perubahan harga dengan lebih cepat, dan garpu bergerak perlahan akan meminda isyarat palsu.
Menggunakan ciri-ciri getaran penunjuk rawak untuk mengenal pasti keadaan overbought dan oversold. Apabila penunjuk rawak lebih tinggi daripada garis perlahan, ia adalah isyarat overbought, dan apabila penunjuk rawak lebih rendah daripada garis perlahan, ia adalah isyarat oversold.
Kedua-dua bahagian isyarat gabungan membentuk isyarat perdagangan akhir. Strategi dua garis rata menjejaki trend utama, penunjuk rawak membantu mengelakkan keadaan yang tidak baik.
Anda boleh mengurangkan risiko dengan mengoptimumkan kombinasi parameter, atau anda boleh menambah stop loss untuk mengawal kerugian.
Strategi ini boleh dioptimumkan dengan:
Strategi ini menggunakan strategi dua garis sejajar dan kelebihan penunjuk rawak secara komprehensif. Dengan mengikuti trend utama pasaran, anda dapat mengelakkan pembalikan yang tidak menguntungkan. Anda boleh mendapatkan kesan strategi yang lebih baik dengan mengoptimumkan kombinasi parameter.
/*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 )