Strategi ini dinamakan strategi pembalikan trend berdasarkan indikator ADX. Strategi ini menggunakan indikator ADX untuk menilai kekuatan trend dan menangkap peluang pembalikan semasa overbought dan oversold.
ADX menunjukkan indeks trend rata-rata, yang mencerminkan kekuatan trend. Nilai ADX yang lebih tinggi, menunjukkan trend yang lebih kuat. Apabila ADX lebih besar daripada 25, dianggap terdapat trend yang lebih jelas.
DMI terdiri daripada dua baris DI+ dan DI- DI+ menunjukkan trend naik, DI- menunjukkan trend menurun.
Logik perdagangan untuk strategi ini:
Apabila ADX lebih tinggi daripada 45, trend dianggap sangat kuat.
Pada masa ini, jika DI+ lebih rendah daripada DI-, ia dianggap sebagai keadaan oversold, peluang untuk membalikkan trend dan melakukan lebih banyak.
Sebaliknya, jika DI- lebih rendah daripada DI+, ia dianggap sebagai overbought, peluang untuk berbalik, kosong.
Berhenti tepat pada masanya selepas berbalik.
Kelebihan strategi ini ialah menggunakan ADX untuk menentukan titik balik trend yang kuat, nilai ADX yang tinggi dapat menyaring isyarat palsu pasaran yang bergolak dengan berkesan. Tetapi parameter ADX perlu dioptimumkan, dan strategi hentikan kerugian juga penting.
Secara keseluruhan, ADX lebih baik dalam menentukan masa untuk membalikkan trend yang kuat. Namun, pedagang masih perlu memperhatikan lebih banyak faktor, ADX hanya sebagai salah satu petunjuk penilaian tambahan.
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='DMI swings',title='DMI swings', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
[pos_dm, neg_dm, avg_dm] = dmi(14, 14)
//Entry
strategy.entry(id="long", long = true, when = avg_dm > 45 and pos_dm < neg_dm and window())
//Exit
strategy.close("long", when = avg_dm > 45 and pos_dm > neg_dm and window())