Strategi mengikuti tren berdasarkan stop loss Chande Kroll dan filter ADX


Tanggal Pembuatan: 2023-11-06 14:52:27 Akhirnya memodifikasi: 2023-11-06 14:52:27
menyalin: 0 Jumlah klik: 981
1
fokus pada
1617
Pengikut

Strategi mengikuti tren berdasarkan stop loss Chande Kroll dan filter ADX

Ringkasan

Strategi ini menggabungkan indikator stop loss Chande Kroll dan indeks trend rata-rata (ADX) untuk mencapai strategi pelacakan tren yang relatif sederhana. Stop loss Chande Kroll digunakan untuk menghasilkan sinyal masuk posisi panjang dan pendek, dan ADX digunakan untuk menyaring situasi pasar tanpa tren yang jelas, untuk menghindari pasar yang bergoyang tanpa arah yang menyebabkan stop loss berulang.

Prinsip Strategi

Strategi ini pertama-tama menghitung stop_long dan stop_short dari Chande Kroll stop loss. The long line is calculated from the highest price in the past p cycle, and the short line is calculated from the lowest price in the past p cycle. Kemudian, the current long short stop loss is calculated from the highest and lowest points of the long short line in the past q cycle.

Ketika melewati garis pendek stop_short di atas harga penutupan, menghasilkan sinyal do lebih; Ketika melewati garis panjang stop_long di bawah harga penutupan, menghasilkan sinyal do lebih.

Selain itu, strategi untuk memasukkan indikator ADX untuk menilai tren yang kuat dan lemah. Hanya jika ADX lebih besar dari titik terendah, sinyal stop loss akan memicu masuk. Ini dapat menyaring laporan palsu tentang stop loss pada saat bergulir.

Keunggulan Strategis

Strategi ini menggabungkan keunggulan indikator tren dan stop loss, baik untuk menangkap pergeseran tren tepat waktu dan untuk menghindari whip saw di pasar tanpa arah. Optimasi parameter Chande Kroll stop loss dapat meluruskan filter, memastikan stop loss hanya terjadi saat pergeseran tren. Indikator ADX memastikan hanya masuk saat tren jelas, untuk menghindari stop loss di pasar yang bergoyang.

Risiko Strategis

Jika parameter ADX tidak disetel dengan benar, kemungkinan kehilangan peluang untuk memulai tren. Jika ADX terendah disetel terlalu tinggi, kemungkinan kehilangan peluang masuk karena ADX terlalu rendah pada tahap awal tren.

Stop loss yang terlalu dekat juga dapat menyebabkan posisi strategi yang sering dibuka dan ditutup. Hal ini akan meningkatkan biaya transaksi dan biaya slippage. Stop loss perlu diatur secara rasional untuk memberikan perspektif tertentu pada tren.

Optimasi Strategi

Anda dapat mempertimbangkan untuk mengizinkan sinyal stop loss untuk dipicu ketika ADX melampaui batas tertentu, sehingga meningkatkan keandalan waktu masuk. Anda juga dapat melakukan penilaian kombinasi dengan indikator tren lainnya, seperti menggabungkan nilai ADX dengan kemiringan EMA.

Stop loss line juga dapat dipertimbangkan untuk menyesuaikan dengan ATR yang dinamis, memperluas ruang stop loss ketika pasar berfluktuasi, menghindari terlalu sensitif. Atau dapat digabungkan dengan indikator tambahan untuk menilai kekuatan dan kelemahan tren, menyesuaikan stop loss line secara dinamis.

Meringkaskan

Strategi ini mengintegrasikan keuntungan dari stop loss Chande Kroll dan indikator ADX, untuk mencapai strategi pelacakan tren yang relatif sederhana dan praktis. Dengan pengoptimalan parameter, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut. Namun, perlu diperhatikan untuk mencegah risiko yang disebabkan oleh stop loss yang terlalu sensitif dan penyaringan ADX yang terlalu longgar.

Kode Sumber Strategi
/*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)