
Strategi ini menggunakan kombinasi indikator bergerak (DMI) dan Hull Moving Average (HMA) untuk menentukan arah pasar, dan HMA untuk mengkonfirmasi kekuatan tren, sehingga memungkinkan perdagangan tanpa manajemen risiko.
Hitung True Range, DIPlus, DIMinus, dan ADX.
Hull rata-rata cepat (fasthull) dan Hull rata-rata lambat (slowhull) dihitung.
Trigger dengan beberapa kondisi: DIPlus memakai DIMinus dan fasthull memakai slowhull。
Kondisi pemicu vakum: DIMinus melalui DIPlus dan fasthull melalui slowhull。
Setelah memenuhi kondisi melakukan lebih banyak pengosongan, sinyal melakukan lebih banyak dan mengosongkan.
Strategi ini dikombinasikan dengan pengesahan ganda dari indikator DMI dan Hull Average untuk menilai tren, yang dapat secara efektif mengidentifikasi arah tren pasar, menghindari pengulangan pasar overhead dan pasar overhead. Manajemen tanpa risiko mengurangi frekuensi perdagangan, dan tingkat keuntungan keseluruhan yang baik dalam jangka panjang.
Risiko terbesar dari strategi ini adalah pengaturan tanpa kerugian, tidak dapat mengontrol kerugian secara efektif ketika terjadi fluktuasi besar. Selain itu, ruang untuk mengoptimalkan parameter terbatas, dan kurangnya target yang kuat juga merupakan kelemahan besar.
Risiko dapat dikurangi dengan menambahkan stop loss bergerak, kombinasi parameter optimasi, dan sebagainya.
Termasuk ATR stop loss yang memanfaatkan real bandwidth trailing stop loss.
Optimalkan parameter siklus Hull untuk menemukan kombinasi optimal.
Pengaturan dinamis untuk parameter ambang batas kosong.
Menambahkan filter seperti indikator energi kuantitatif untuk memastikan bahwa tren terus berlanjut.
Kombinasi strategi DMI dan HMA, penilaian yang akurat, sederhana dan efektif, cocok untuk operasi garis tengah dan panjang. Setelah menambahkan stop loss dan optimasi parameter yang tepat, dapat menjadi sistem pelacakan tren yang sangat baik.
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Tuned_Official
//@version=4
strategy(title="DMI + HMA - No Risk Management", overlay = false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.025)
//Inputs
hullLen1 = input(title="Hull 1 length", type=input.integer, defval=29)
hullLen2 = input(title="Hull 2 length", type=input.integer, defval=2)
len = input(title="Length for DI", type=input.integer, defval=76)
//Calculations
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
//Indicators
fasthull = hma(close, hullLen1)
slowhull = hma(close, hullLen2)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
//Plots
plot(DIPlus, color=color.green, title="DI+")
plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
//conditions
go_long = crossover(DIPlus, DIMinus) and fasthull > slowhull //crossover(fasthull, slowhull) and DIPlus > DIMinus
go_short = crossover(DIMinus, DIPlus) and fasthull < slowhull //crossunder(fasthull, slowhull) and DIMinus > DIPlus
//Entry
if strategy.position_size < 0 or strategy.position_size == 0
strategy.order("long", strategy.long, when=go_long)
if strategy.position_size > 0 or strategy.position_size == 0
strategy.order("Short", strategy.short, when=go_short)