
Strategi ini menggabungkan penggunaan indikator momentum dan indikator pelacakan dua arah untuk menangkap sinyal terobosan dalam tren yang kuat, untuk mencapai pelacakan tren. Lakukan lebih banyak ketika harga terobosan ke atas, lakukan kosong ketika harga terobosan ke bawah, termasuk dalam kategori strategi pelacakan tren.
Indikator ini menghitung harga pertengahan dengan menggunakan indikator aktivator HiLo. Indikator ini mengambil titik tengah antara harga tertinggi dan terendah sebagai harga pertengahan.
Indeks tren rata-rata ADX digunakan untuk menilai kekuatan tren. Nilai ADX yang lebih besar menunjukkan semakin kuatnya tren. Strategi ini bekerja dengan menggunakan ADX dengan nilai terendah tertentu untuk memfilter sinyal dan hanya menghasilkan sinyal jika tren cukup kuat.
Indikator multi arah DI+ dan DI- masing-masing menunjukkan kekuatan multihead dan kekuatan kosong. Strategi ini bekerja sama dengan DI+ dan DI- dengan nilai terendah tertentu untuk mengkonfirmasi kekuatan multihead dan kosong, untuk mencegah sinyal yang salah.
Sinyal beli dihasilkan ketika harga naik menerobos harga pertengahan, ADX lebih tinggi dari penurunan nilai, DI + lebih tinggi dari penurunan nilai; Sinyal jual dihasilkan ketika harga turun menerobos harga pertengahan, ADX lebih tinggi dari penurunan nilai, DI - lebih tinggi dari penurunan nilai.
Strategi ini menggabungkan keuntungan dari indikator momentum dan indikator tren, mampu menangkap terobosan harga di awal perkembangan tren, sehingga berjalan ketat tren. Pada saat yang sama, kondisi penyaringan tren ketat, membantu untuk menghindari sinyal salah dari pasar konsolidasi dan pasar goyangan.
Strategi ini dapat mengurangi kesalahan sinyal dan meningkatkan probabilitas keuntungan dibandingkan dengan menggunakan indikator momentum secara tunggal. Strategi ini dapat menghasilkan sinyal dengan menerobos dan masuk ke tren lebih awal daripada menggunakan indikator pelacakan tren secara tunggal.
Secara keseluruhan, strategi dapat dengan mudah melacak tren, masuk dan keluar tepat waktu, menghindari kebingungan; dan juga dapat mengurangi kerugian dari pembalikan tren.
Strategi ini memiliki risiko whipsaw tertentu, yaitu bahwa harga dapat mengalami penyesuaian tingkat tertentu sehingga menghasilkan sinyal reversal. Selain itu, menggunakan kondisi penyaringan ADX dan DI dapat melewatkan beberapa peluang awal operasi.
Untuk mengurangi risiko whipsaw, parameter aktivator HiLo dapat disesuaikan dengan tepat untuk meningkatkan amplitudo penembusan. Untuk mendapatkan lebih banyak kesempatan, persyaratan nilai terendah ADX dan DI dapat dikurangi, tetapi kualitas sinyal perlu diseimbangkan.
Selain itu, pengguna perlu memperhatikan perbedaan pengaturan parameter dalam berbagai varietas dan lingkungan pasar. Umumnya, komoditas memerlukan setelan nilai yang lebih tinggi; saham dan forex dapat menggunakan nilai yang lebih rendah.
Strategi ini dapat dioptimalkan dengan menyesuaikan pengaturan parameter.
Sesuaikan siklus aktivator HiLo dan amplitudo pemicu, untuk menyeimbangkan risiko whipsaw dan waktu masuk.
Menyesuaikan siklus ADX dan persyaratan threshold untuk menyeimbangkan kualitas sinyal dan frekuensi masuk.
Adapun nilai-nilai terobosan yang disesuaikan untuk multi-head dan ID, untuk membedakan perbedaan lingkungan antara multi-head dan ID.
Tambahkan strategi stop loss dan atur titik stop loss untuk mengendalikan kerugian tunggal.
Optimalisasi, dikombinasikan dengan indikator tambahan lainnya, untuk meningkatkan stabilitas keseluruhan strategi.
Strategi ini secara komprehensif mempertimbangkan indikator momentum dan indikator tren, menghasilkan sinyal beli dan jual dalam tren yang kuat. Ini memiliki karakteristik tren yang ketat, sesuai untuk menangkap peluang awal tren. Pada saat yang sama, ini juga memiliki kemampuan pengendalian risiko tertentu, yang dapat mengurangi sinyal yang salah dan kerugian yang disebabkan oleh whipsaw. Dengan tambahan strategi penyesuaian parameter dan stop loss, strategi ini dapat memperoleh kinerja yang stabil dan berkelanjutan.
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true)
// Parameters for the HiLo Activator
length_ha = input(14, title="HiLo Activator Period")
offset_ha = input(0, title="Offset")
trigger_ha = input(1, title="Trigger for Buy/Sell")
// Parameters for ADX
adx_length = input(14, title="ADX Period", minval=1)
adx_threshold = input(25, title="ADX Threshold")
di_threshold = input(50, title="DI Threshold")
// Parameter for choosing the number of candles for backtest
backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1)
// Function to get backtest data
getBacktestData() =>
var float data = na
if bar_index >= backtest_candles
data := security(syminfo.tickerid, "D", close[backtest_candles])
data
// HiLo Activator calculations
ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2
// ADX calculations
trh = high - high[1]
trl = low[1] - low
tr = max(trh, trl)
atr = sma(tr, adx_length)
plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0
minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0
smoothed_plus_dm = sma(plus_dm, adx_length)
smoothed_minus_dm = sma(minus_dm, adx_length)
di_plus = 100 * (smoothed_plus_dm / atr)
di_minus = 100 * (smoothed_minus_dm / atr)
dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus)
adx = sma(dx, adx_length)
// Buy and Sell signals based on HiLo Activator and ADX
signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold
signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold
// Plot HiLo Activator and ADX
plot(ha, color=color.blue, title="HiLo Activator")
plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset")
plot(adx, color=color.purple, title="ADX")
// Backtest strategy
strategy.entry("Buy", strategy.long, when = signalLong)
strategy.entry("Sell", strategy.short, when = signalShort)
strategy.close("Buy", when = signalShort)
strategy.close("Sell", when = signalLong)
// Accuracy percentage
var accuracy = 0.0
var totalTrades = 0
var winningTrades = 0
if (signalLong or signalShort)
totalTrades := totalTrades + 1
if (signalLong and (not na(signalLong[1]) and (not signalLong[1])))
winningTrades := winningTrades + 1
if (signalShort and (not na(signalShort[1]) and (not signalShort[1])))
winningTrades := winningTrades + 1
accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0
// Plot accuracy percentage on the chart
plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)