
Strategi ini menggabungkan keunggulan indikator momentum dan rata-rata bergerak untuk melacak tren jangka menengah harga saham dan menghasilkan keuntungan yang stabil.
Strategi ini didasarkan pada tiga varian Hull Moving Average, yaitu Hull Moving Average ((HMA), Hull Moving Average ((WHMA), dan Hull Moving Average ((EHMA). Menurut kode, strategi ini memungkinkan pengguna untuk beralih antara tiga jenis Hull MA.
Rumus HMA adalah:
HMA = WMA(2*WMA(close,n/2)-WMA(close,n),sqrt(n))
Di antaranya, WMA mewakili rata-rata bergerak bertimbang, n mewakili parameter siklus. HMA lebih cepat bereaksi terhadap perubahan harga dibandingkan SMA (rata-rata bergerak sederhana).
Rumus perhitungan WHMA dan EHMA mirip dengan HMA.
Setelah menghitung HMA, strategi ini menggunakan nilai garis tengah HMA sebagai sinyal perdagangan. Ketika harga melewati garis tengah HMA, masuk lebih banyak; Ketika harga melewati garis tengah HMA, keluarlah. Dengan demikian, ia menggunakan garis tengah HMA untuk melacak tren jangka menengah harga dan menghasilkan keuntungan.
Strategi ini memiliki beberapa keuntungan dibandingkan dengan strategi moving average tradisional:
Strategi ini juga memiliki beberapa risiko:
Tanggapan:
Strategi ini juga dapat dioptimalkan dengan:
Strategi perdagangan rata-rata bergerak ini mengintegrasikan keunggulan responsif cepat Hull MA, dapat secara efektif melacak tren harga saham jangka menengah, melakukan posisi lebih banyak dan menghentikan kerugian pada saat yang tepat, dan memiliki kinerja historis yang baik. Dengan lebih mengoptimalkan pengaturan parameter, dan memilih rentang saham, strategi ini dapat menghasilkan keuntungan tambahan yang lebih stabil. Ini adalah strategi kuantitatif yang mudah diterapkan dan dapat dikontrol risiko.
/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Position Investing by SirSeff', overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0)
strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all'])
strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
src = input(close, title='Source')
modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma'])
length = input(55, title='Length(180-200 for floating S/R , 55 for swing entry)')
switchColor = input(true, 'Color Hull according to trend?')
candleCol = input(false, title='Color candles based on Hull\'s Trend?')
visualSwitch = input(true, title='Show as a Band?')
thicknesSwitch = input(1, title='Line Thickness')
transpSwitch = input.int(40, title='Band Transparency', step=5)
//FUNCTIONS
//HMA
HMA(_src, _length) =>
ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length)))
//EHMA
EHMA(_src, _length) =>
ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length)))
//THMA
THMA(_src, _length) =>
ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length)
//SWITCH
Mode(modeSwitch, src, len) =>
modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]
//COLOR
hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800
//PLOT
///< Frame
Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color=candleCol ? switchColor ? hullColor : na : na)
if HULL[0] > HULL[2] and testPeriod()
strategy.entry('Invest', strategy.long)
if HULL[0] < HULL[2] and testPeriod()
strategy.entry('Pause', strategy.short)