Strategi pembalikan tren berdasarkan indikator ADX

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

Strategi ini disebut Trend Reversal Strategy Based on ADX Indicator. Ini menggunakan indikator ADX untuk mengukur kekuatan tren dan menangkap peluang pembalikan ketika overbought / oversold.

ADX adalah singkatan dari Average Directional Index, yang mencerminkan kekuatan tren. Semakin tinggi nilai ADX, semakin kuat tren.

DMI mencakup garis DI+ dan DI-. DI+ di atas DI- menunjukkan tren naik, sementara DI- di atas DI+ menandai tren turun.

Logika perdagangan adalah:

  1. Ketika ADX di atas 45, tren dianggap sangat curam.

  2. Jika DI+ di bawah DI- maka, itu menandakan keadaan oversold dan peluang pembalikan tren, pergi panjang.

  3. Sebaliknya, jika DI- di bawah DI+, itu menunjukkan kondisi overbought dan peluang pembalikan untuk short.

  4. Ambil keuntungan tepat waktu setelah pembalikan.

Keuntungan adalah menggunakan ADX untuk menentukan titik pembalikan tren yang kuat. Nilai ADX yang tinggi menyaring sinyal palsu dari berbagai pasar secara efektif.

Kesimpulannya, ADX mahir mengukur waktu pembalikan tren yang kuat.


/*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 banyak