Strategi Perdagangan Dwi Arah Indeks Arah


Tarikh penciptaan: 2023-12-19 14:13:52 Akhirnya diubah suai: 2023-12-19 14:13:52
Salin: 0 Bilangan klik: 371
1
fokus pada
1166
Pengikut

Strategi Perdagangan Dwi Arah Indeks Arah

Gambaran keseluruhan

Strategi ini mewujudkan perdagangan dua hala dengan mengira indeks pergerakan komoditi ((DI) dan menggabungkan parameter sekatan. Buat lebih banyak apabila DI + lebih besar daripada DI - satu parameter sekatan dan kosong apabila DI - lebih besar daripada DI + satu parameter sekatan.

Prinsip Strategi

Penunjuk teras strategi ini adalah indeks pergerakan ((DI) ≠ DI dikira dengan formula berikut:

DI+ = (DM+ / Julat sebenar) × 100 DI- = (DM- / julat sebenar) × 100

Di mana DM+ mewakili pergerakan multihead, DM- mewakili pergerakan kosong. Julat sebenar mewakili kadar turun naik baru-baru ini dengan mengira nilai maksimum untuk tiga hari harga tertinggi, harga rendah dan harga penutupan semalam.

Berdasarkan definisi DI, apabila DI+ > DI- , menunjukkan kekuatan kepala kosong yang lebih besar daripada kekuatan kepala kosong, termasuk dalam pasaran kepala kosong; apabila DI- > DI+ , menunjukkan kekuatan kepala kosong yang lebih kuat daripada kekuatan kepala kosong, termasuk dalam pasaran kepala kosong.

Strategi ini menggunakan ciri ini untuk menetapkan parameter had. Apabila DI+ lebih besar daripada DI-satu parameter had, maka ia dianggap sebagai pasaran bertopeng, dan melakukan lebih banyak; apabila DI-lebih besar daripada DI+ satu parameter had, ia dianggap sebagai pasaran kosong, dan melakukan kosong.

Sebagai contoh, jika parameter had ditetapkan kepada 3, maka peraturan dagangan tertentu adalah:

  1. Apabila DI+ - DI- > 3, lakukan lebih banyak
  2. Apabila DI- - DI+ > 3, kosongkan

Oleh kerana terdapat sedikit perubahan nilai perbezaan antara DI + dan DI - , penyetempatan parameter sekatan dapat menyaring beberapa isyarat perdagangan yang tidak mempunyai arah yang jelas, mengurangkan perdagangan yang tidak perlu, yang merupakan kelebihan strategi tersebut.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama:

  1. Menggunakan DI untuk menilai keadaan yang baik dan boleh dipercayai

DI menilai pergerakan pasaran secara langsung dengan mengira kekuatan kedua-dua belah pihak, tanpa algoritma rumit seperti penyesuaian kurva, teori yang mudah dan boleh dipercayai.

  1. Menetapkan parameter sekatan boleh menapis isyarat yang berkesan

Dengan mengehadkan parameter penapisan tanpa turun naik kecil yang jelas arah, hanya pilih segmen yang jelas arah yang lebih kuat untuk berdagang, untuk mengelakkan terikat.

  1. Menerapkan perdagangan dua hala automatik

Kedudukan kosong berbilang boleh ditukar secara automatik mengikut petunjuk DI, tanpa penilaian manual, mengurangkan kesukaran perdagangan.

  1. Tempoh perdagangan yang boleh disesuaikan

Tetapan sokongan untuk berdagang hanya dalam julat tarikh yang disesuaikan, penutupan automatik selepas tamat, fleksibiliti dan kemudahan.

  1. Anda boleh memilih untuk melakukan lebih atau kosong.

Dengan suis pelbagai ruang hanya boleh memilih isyarat satu arah, mewujudkan hanya melakukan lebih banyak atau hanya kosong, menyesuaikan diri dengan keadaan pasaran yang berbeza.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Kemungkinan DI menghantar isyarat yang salah

Apabila pasaran mengalami turun naik yang teruk, DI mungkin menghantar isyarat yang salah dalam jangka pendek, menyebabkan perdagangan gagal. Ia perlu digabungkan dengan petunjuk lain untuk pemeriksaan.

  1. Parameter had yang tidak betul

Tetapan parameter yang terlalu besar atau terlalu kecil boleh menyebabkan kurang atau terlalu banyak isyarat perdagangan, perlu menyesuaikan parameter mengikut pasaran.

  1. Tidak dapat menentukan hujung trend

DI hanya dapat menentukan arah trend semasa, tidak dapat menentukan sama ada trend berakhir atau berbalik, memerlukan kombinasi indikator lain.

Penyelesaian untuk menghadapi risiko termasuk:

  1. Penapisan isyarat DI dengan penunjuk seperti purata bergerak

  2. Menyesuaikan parameter sekatan mengikut hasil pengukuran semula

  3. Mengambil keputusan sama ada trend akan berbalik atau tidak, dengan menggabungkan Volumes, MACD dan sebagainya.

Arah pengoptimuman

Strategi ini boleh terus dioptimumkan dengan:

  1. Indikator lain untuk menilai trend, seperti carta pendapat awam

Di samping itu, pengkajian yang lebih intuitif seperti carta hujan rakyat (CPP) dan penunjuk kuasa udara (CFO) digabungkan dengan ID, dapat meningkatkan ketepatan penilaian.

  1. Menyertai strategi Stop Loss

Tetapkan Hentian Bergerak, Hentian Waktu atau Hentian Kadar untuk mengunci keuntungan dan mengurangkan kerugian.

  1. Penyesuaian parameter untuk varieti tertentu

Menyesuaikan parameter had dan masa dagangan mengikut ciri-ciri dagangan yang berbeza dapat meningkatkan keberkesanan strategi.

  1. Mengoptimumkan dinamik menggunakan teknologi pembelajaran mesin

Menggunakan teknik seperti pembelajaran penguatan untuk menetapkan parameter pengoptimuman isyarat pada cakera.

ringkaskan

Strategi ini secara keseluruhannya agak mudah dan praktikal. Ia menggunakan kaedah pengiraan DI untuk menentukan arah trend; dengan mengehadkan parameter penapisan isyarat; boleh berdagang dua hala, atau hanya boleh melakukan lebih atau kosong; menyokong tempoh masa perdagangan yang ditetapkan. Kelebihan utama adalah kebolehpercayaan yang tinggi, isyarat penapisan yang berkesan.

Kod sumber strategi
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()