ADX Filtered Chande Kroll Stop Loss Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-06 14:52:27
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator stop loss Chande Kroll dan indikator Average Directional Movement Index (ADX) untuk menerapkan strategi tren yang relatif sederhana.

Logika Strategi

Strategi ini pertama-tama menghitung long stop long dan short stop short line dari stop loss Chande Kroll. Long line dihitung berdasarkan harga tertinggi selama periode p terakhir. Short line dihitung berdasarkan harga terendah selama periode p terakhir. Titik tertinggi dari garis panjang dan pendek selama periode q terakhir kemudian digunakan sebagai garis stop loss panjang dan pendek saat ini. Ini menyaring fluktuasi harga jangka pendek dan hanya memicu stop loss pada titik pembalikan tren.

Ketika harga penutupan melintasi di atas garis pendek stop_short, sinyal panjang dihasilkan.

Selain itu, indikator ADX digunakan untuk menilai kekuatan tren. Hanya ketika ADX lebih besar dari ambang batas sinyal stop loss akan memicu masuk. Ini memfilter keluar whipsaw non-arah dalam konsolidasi.

Keuntungan

Strategi ini menggabungkan keuntungan dari indikator tren dan indikator stop loss. Ini dapat menangkap pembalikan tren tepat waktu sambil menghindari whipsaws di pasar non-arah. Optimalisasi parameter stop loss Chande Kroll dapat meluruskan penyaringan dan memastikan stop loss hanya pada titik pembalikan tren. Indikator ADX memastikan masuk hanya ketika tren signifikan, menghindari whipsaws stop loss selama konsolidasi pasar.

Risiko

Pengaturan parameter ADX yang tidak benar dapat kehilangan peluang pada awal tren. Jika ambang ADX ditetapkan terlalu tinggi, peluang masuk dapat dilewatkan pada awal tren ketika nilai ADX masih rendah.

Titik stop loss yang terlalu dekat juga dapat menyebabkan seringnya pembukaan dan penutupan posisi strategi. Hal ini akan meningkatkan biaya perdagangan dan slippage. Titik stop loss perlu diatur secara wajar untuk memungkinkan beberapa ruang untuk tren.

Optimalisasi

Pertimbangkan untuk memungkinkan sinyal stop loss untuk memicu hanya ketika ADX melanggar batas. Ini dapat meningkatkan keandalan waktu masuk. Indikator tren lainnya juga dapat dikombinasikan untuk kondisi konjungtif, seperti menggabungkan nilai ADX dengan kemiringan EMA.

Garis stop loss juga dapat disesuaikan secara dinamis berdasarkan ATR, memungkinkan stop yang lebih luas ketika volatilitas pasar meningkat untuk menghindari sensitivitas yang berlebihan.

Ringkasan

Strategi ini mengintegrasikan kekuatan stop loss dan indikator ADX Chande Kroll untuk membangun strategi tren yang relatif sederhana dan praktis. Melalui optimasi parameter, stabilitas dan profitabilitas strategi dapat ditingkatkan.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-06-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title = "Chande Kroll Stop", overlay=true)
p = input.int(10, minval=1)
x = input.int(1, minval=1)
q = input.int(9, minval=1)
first_high_stop = ta.highest(high, p) - x * ta.atr(p)
first_low_stop = ta.lowest(low, p) + x * ta.atr(p)
stop_short = ta.highest(first_high_stop, q)
stop_long = ta.lowest(first_low_stop, q)
plot(stop_long, color=color.blue)
plot(stop_short, color=color.orange)

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_sig = input.int(20, title="minimum ADX threshold for signal")
dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)


if ta.crossunder(close, stop_long) and sig>ADX_sig
    strategy.entry("long", strategy.long)
if ta.crossover(close, stop_short) and sig>ADX_sig
    strategy.entry("short", strategy.short)

Lebih banyak