Strategi panjang dan pendek penunjuk momentum


Tarikh penciptaan: 2023-11-02 16:34:48 Akhirnya diubah suai: 2023-11-02 16:34:48
Salin: 0 Bilangan klik: 644
1
fokus pada
1617
Pengikut

Strategi panjang dan pendek penunjuk momentum

Gambaran keseluruhan

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.

Prinsip Strategi

  1. Hitung ADX, DMI dan CCI.

    • ADX digunakan untuk menilai kekuatan trend, apabila ADX lebih tinggi daripada paras paras paras yang ditetapkan, maka trend dianggap cukup kuat.
    • DMI merangkumi DI+ dan DI-, yang masing-masing menunjukkan kekuatan trend naik dan turun. Apabila DI+ lebih tinggi daripada DI-, ia dianggap dalam trend naik, sebaliknya sebagai trend menurun.
    • CCI digunakan untuk menilai keadaan overbought dan oversold. Apabila CCI di bawah -100, ia adalah overbought dan apabila CCI di atas 100 ia adalah oversold.
  2. Mencari arah trend.

    • Apabila DI+ diletakkan di atas DI-, ia dianggap sebagai trend menaik.
    • Apabila DI- menembusi DI+, ia dianggap sebagai trend menurun.
  3. Masuk ke dalam arena.

    • Apabila tren naik terbentuk, ADX lebih tinggi daripada paras terendah, dan CCI lebih rendah daripada -100, masuk lebih banyak.
    • Apabila trend menurun terbentuk, ADX lebih tinggi daripada nilai terhad dan CCI lebih tinggi daripada 100, masuklah ke dalam shorting.
  4. Keluar rugi.

    • Di bawah DI- apabila memakai DI+ untuk membersihkan simpanan.
    • Apabila kosong, apabila memakai DI+ di atas DI- kosongkan.

Analisis kelebihan strategi

  1. Gunakan ADX untuk menilai trend yang kuat atau lemah, dan elakkan berdagang tanpa trend yang jelas.

  2. Menggunakan DMI untuk menentukan arah trend, mengurangkan kemungkinan salah penilaian.

  3. Memasuki permainan ketika CCI overheat, anda dapat menangkap titik perubahan trend tepat pada masanya, mengurangkan risiko masuk.

  4. Penggunaan gabungan penunjuk momentum dapat meningkatkan ketepatan penilaian.

  5. Terdapat mekanisme untuk mengehadkan setiap kerugian.

Risiko dan perlindungan

  1. Apabila ADX turun, terdapat beberapa dagangan kecemasan yang menyebabkan kerugian. Anda boleh menaikkan nilai masuk ADX dengan sewajarnya untuk memastikan trendnya cukup jelas.

  2. 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.

  3. CCI mudah menghasilkan perdagangan yang kerap. Anda boleh melepaskan margin CCI dengan betul, menyaring beberapa bunyi.

  4. 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.

Arah pengoptimuman strategi

  1. Mengoptimumkan parameter ADX untuk mencari keseimbangan terbaik antara penapisan bunyi dan menangkap trend dalam masa.

  2. Mengoptimumkan parameter DMI, keseimbangan keterbelakangan dan kepekaan.

  3. Mengoptimumkan parameter CCI, keseimbangan frekuensi perdagangan dan keupayaan untuk menangkap reversals.

  4. Ujian menambah atau mengubah suai petunjuk lain untuk mencari kombinasi yang lebih baik. Contohnya MACD, KDJ dan sebagainya.

  5. Uji varieti perdagangan untuk mencari varieti yang paling sesuai.

  6. Mengoptimumkan strategi pengurusan kedudukan, mengawal risiko dengan mengekalkan keupayaan untuk mengesan trend.

ringkaskan

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.

Kod sumber strategi
/*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))))