
Strategi ini menggunakan penunjuk dinamik seperti penunjuk rata-rata ((ADX), penunjuk trend ((DMI) dan indeks jalan komoditi ((CCI) untuk menentukan arah trend, untuk mengesan trend. Apabila ADX dan penunjuk trend mengesahkan trend terbentuk, kedudukan ditubuhkan pada masa overbought CCI.
Hitung ADX, DMI dan CCI.
Mencari arah trend.
Masuk ke dalam arena.
Keluar rugi.
Gunakan ADX untuk menilai trend yang kuat atau lemah, dan elakkan berdagang tanpa trend yang jelas.
Menggunakan DMI untuk menentukan arah trend, mengurangkan kemungkinan salah penilaian.
Memasuki permainan ketika CCI overheat, anda dapat menangkap titik perubahan trend tepat pada masanya, mengurangkan risiko masuk.
Penggunaan gabungan penunjuk momentum dapat meningkatkan ketepatan penilaian.
Terdapat mekanisme untuk mengehadkan setiap kerugian.
Apabila ADX turun, terdapat beberapa dagangan kecemasan yang menyebabkan kerugian. Anda boleh menaikkan nilai masuk ADX dengan sewajarnya untuk memastikan trendnya cukup jelas.
Indeks DMI berada di belakang dan mungkin terlepas peluang awal trend. Ia boleh digunakan bersama-sama dengan petunjuk lain atau analisis grafik untuk menentukan masa masuk.
CCI mudah menghasilkan perdagangan yang kerap. Anda boleh melepaskan margin CCI dengan betul, menyaring beberapa bunyi.
Apabila melakukan lebih banyak shorting dan memegang kedudukan, anda boleh mempertimbangkan untuk menggunakan strategi neutral pasaran saham, membuat peraturan perlindungan nilai jangka masa, dan mengurangkan risiko kedudukan keseluruhan.
Mengoptimumkan parameter ADX untuk mencari keseimbangan terbaik antara penapisan bunyi dan menangkap trend dalam masa.
Mengoptimumkan parameter DMI, keseimbangan keterbelakangan dan kepekaan.
Mengoptimumkan parameter CCI, keseimbangan frekuensi perdagangan dan keupayaan untuk menangkap reversals.
Ujian menambah atau mengubah suai petunjuk lain untuk mencari kombinasi yang lebih baik. Contohnya MACD, KDJ dan sebagainya.
Uji varieti perdagangan untuk mencari varieti yang paling sesuai.
Mengoptimumkan strategi pengurusan kedudukan, mengawal risiko dengan mengekalkan keupayaan untuk mengesan trend.
Strategi ini menggunakan trend ADX menilai, DMI menentukan arah, CCI kedudukan titik balik pemikiran untuk trend mengikuti perdagangan, mempunyai logik yang lebih kuat. Tetapi masih perlu mengoptimumkan parameter, dan bekerjasama dengan pengurusan kedudukan untuk mengawal risiko. Jika parameter disesuaikan dengan tahap yang sesuai, digunakan pada varieti yang jelas trend, strategi ini dijangka untuk mendapatkan keuntungan yang stabil.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX Strategy", currency = "USD", initial_capital = 1000, overlay=true)
adxlen = input(9, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_Entry = input(25, title="ADX Entry")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[sig, up, down] = adx(dilen, adxlen)
cci_length = input(20, minval=1, title="CCI Length")
cci_ma = sma(close, cci_length)
cci = (close - cci_ma) / (0.015 * dev(close, cci_length))
stop_loss = syminfo.mintick * 100
open_longs = strategy.position_size > 0
open_shorts = strategy.position_size < 0
possible_bull = false
possible_bull := not open_longs ? (possible_bull[1] and not crossunder(up,down) ? true : false) : false
possible_bear = false
possible_bear := not open_shorts ? (possible_bear[1] and not crossunder(down,up) ? true : false) : false
bool bull_entry = crossover(up,down)
if(bull_entry and up < ADX_Entry and cci < 0)
possible_bull := true
bull_entry := false
if(possible_bull and up > ADX_Entry and cci > -100)
bull_entry := true
bool bear_entry = crossover(down,up)
if(bear_entry and down < ADX_Entry and cci > 0)
possible_bear := true
bear_entry := false
if(possible_bear and down >= ADX_Entry and cci < 100)
bear_entry := true
strategy.entry("Short", strategy.short, qty = 1,comment="Short", stop=high[1] - stop_loss, when = bear_entry)
strategy.entry("Long", strategy.long, qty = 1, comment="Long", stop=low[1] - stop_loss, when = bull_entry )
strategy.close_all(when = (open_shorts and (crossover(up,down) or crossover(sig,down))) or (open_longs and ( crossover(down,up) or crossover(sig, up))))