Strategi Pembalikan Trend Berdasarkan Indikator ADX

Penulis:ChaoZhang, Tarikh: 2023-09-13 17:02:31
Tag:

Strategi ini dinamakan Strategi Pembalikan Trend Berdasarkan Indikator ADX. Ia menggunakan penunjuk ADX untuk mengukur kekuatan trend dan menangkap peluang pembalikan apabila terlalu banyak dibeli / terlalu banyak dijual.

ADX bermaksud Indeks Arah Purata, yang mencerminkan kekuatan trend. Semakin tinggi nilai ADX, semakin kuat trend. ADX di atas 25 menunjukkan trend yang signifikan ada.

DMI merangkumi garis DI + dan DI-. DI + di atas DI- menunjukkan trend menaik, sementara DI- di atas DI + menandakan trend menurun.

Logik perdagangan adalah:

  1. Apabila ADX melebihi 45, trend dianggap sangat curam.

  2. Jika DI+ di bawah DI- maka, ia menandakan keadaan oversold dan peluang pembalikan trend, pergi lama.

  3. Sebaliknya, jika DI- adalah di bawah DI+, ia menunjukkan keadaan overbought dan peluang pembalikan untuk pergi pendek.

  4. Ambil keuntungan tepat pada masanya selepas pembalikan.

Kelebihan adalah menggunakan ADX untuk menentukan titik pembalikan trend yang kuat. Nilai ADX yang tinggi menapis isyarat palsu dari pasaran yang berbeza dengan berkesan. Tetapi parameter ADX memerlukan pengoptimuman, dan stop loss juga penting.

Kesimpulannya, ADX mahir mengukur masa pembalikan trend yang kuat. Tetapi peniaga masih perlu menonton lebih banyak faktor, menggunakan ADX sebagai satu petunjuk 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())

Lebih lanjut