
Strategi ini menggunakan indikator momentum seperti indikator rata-rata arah ((ADX), indikator pergerakan ((DMI) dan indikator jalur komoditas ((CCI) untuk menentukan arah tren, untuk melacak tren. Ketika ADX dan indikator tren mengkonfirmasi tren terbentuk, posisi didirikan pada saat overbought CCI.
Perhitungan ADX, DMI dan CCI.
Menentukan arah tren.
Masuk ke dalam arena
Keluar dari pertandingan.
Menggunakan ADX untuk menilai tren kuat atau lemah, dan menghindari perdagangan yang sia-sia tanpa tren yang jelas.
Menggunakan DMI untuk menentukan arah tren, mengurangi kemungkinan kesalahan penilaian.
Dengan masuk saat over-the-horizon CCI, Anda dapat menangkap titik-titik perubahan tren tepat waktu dan mengurangi risiko masuk.
Penggunaan kombinasi indikator momentum dapat meningkatkan akurasi penilaian.
Ada mekanisme stop loss yang dapat membatasi setiap kerugian.
Pada saat ADX turun, akan ada beberapa transaksi kecemasan yang menyebabkan kerugian. Anda dapat menaikkan nilai masuk ADX dengan tepat untuk memastikan tren cukup jelas.
Indikator DMI tertinggal dan mungkin melewatkan peluang di awal tren. Dapat bekerja sama dengan indikator lain atau analisis teknis grafis untuk menentukan waktu masuk.
CCI mudah menghasilkan transaksi yang sering. Anda dapat dengan tepat melonggarkan margin CCI, memfilter beberapa kebisingan.
Jika Anda melakukan lebih banyak shorting dan memegang posisi pada saat yang sama, pertimbangkan untuk menggunakan strategi netral pasar saham, membuat aturan perlindungan nilai jangka pendek, dan mengurangi risiko posisi secara keseluruhan.
Optimalkan parameter ADX untuk menemukan keseimbangan optimal antara filtering noise dan catching trend in time.
Optimalkan parameter DMI, keseimbangan keterbelakangan dan sensitivitas.
Optimalkan parameter CCI, keseimbangan frekuensi perdagangan dan kemampuan untuk menangkap reversal.
Tes menambahkan atau mengubah indikator lain untuk mencari kombinasi yang lebih baik. Misalnya MACD, KDJ, dll.
Tes varietas perdagangan untuk menemukan varietas yang paling cocok.
Mengoptimalkan strategi manajemen posisi, mengendalikan risiko dengan tetap menjaga kemampuan untuk melacak tren.
Strategi ini menggunakan ADX menilai tren, DMI menentukan arah, CCI posisi titik balik pemikiran untuk trend mengikuti perdagangan, memiliki logika yang lebih kuat. Namun, masih perlu untuk mengoptimalkan parameter, dan bekerja sama dengan manajemen posisi untuk mengendalikan risiko. Jika masing-masing parameter disesuaikan dengan tingkat yang tepat, dan diterapkan pada varietas yang jelas tren, strategi ini diharapkan 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))))