
Strategi ini berdasarkan purata yang benar rentang indikator ((ATR) dan trend indikator ((DMI) untuk menentukan masa membeli dan menjual di persilangan positif indikator ((DI +) dan negatif indikator ((DI -)). Strategi ini adalah strategi trend-mengikuti untuk menentukan titik perubahan trend melalui persilangan DI + dan DI - , ATR digunakan untuk menetapkan stop loss dan harga berhenti.
Hitung ATR ((14): Menggunakan harga tertinggi, terendah dan harga penutupan 14 hari yang lalu untuk mengira julat pergerakan sebenar purata
Hitung DI+ dan DI-:
DI+ = 100 * RMA(MAX(UP,0),N) / ATNR
DI- = 100 * RMA(MAX(DOWN,0),N) / ATNR
Di mana UP adalah perbezaan antara harga tertinggi hari ini dan harga penutupan semalam, DOWN adalah perbezaan antara harga terendah hari ini dan harga penutupan semalam, N adalah panjang parameter, default 14, ATNR adalah ATR yang diperoleh dari langkah sebelumnya
Saya tidak tahu apa-apa tentang harga.
Apabila DI+ memakai DI-, ia menghasilkan isyarat beli
Apabila DI+ di bawah DI-, menghasilkan isyarat menjual
Tetapkan Stop Loss Stop:
Stop Loss Multiple adalah harga permulaan tolak ATR kali ganda Stop Loss
Harga kenaikan single-stop ditambah ATR kali ganda kenaikan harga
Hentikan kerugian tiket kosong sebagai harga masuk ditambah ATR kali ganda penghentian kerugian
Hentikan tiket kosong dengan harga kemasukan dikurangkan ATR dengan pengganda hentikan
Menggunakan DI+ dan DI- untuk menilai titik peralihan trend, dapat menangkap arah trend baru dalam masa yang tepat
ATR sebagai penunjuk stop loss yang dinamik, dapat menetapkan titik stop loss yang munasabah berdasarkan tahap turun naik pasaran
Lebih sedikit parameter strategi, lebih mudah difahami dan dilaksanakan
Data retrospektif menunjukkan bahawa strategi ini mempunyai faktor keuntungan yang positif dan lebih baik daripada strategi beli dan pegang.
DI yang bercampur-campur membawa risiko perdagangan yang salah
Hentikan Kerosakan Hentikan terlalu dekat
Tidak dapat menangani pasaran yang bergolak
Risiko penarikan balik
Menapis isyarat silang DI dengan penunjuk seperti purata bergerak untuk mengelakkan perdagangan yang salah dalam keadaan goyah
Menambah mekanisme pengurusan kedudukan, seperti pegangan tetap, Martingale dan sebagainya, untuk mengawal penarikan balik dan meningkatkan keuntungan
Mengoptimumkan parameter ATR untuk menjadikan stop loss lebih sesuai dengan pelbagai jenis perdagangan
Mengoptimumkan parameter untuk mencari kombinasi parameter yang terbaik, seperti kitaran DI, kitaran ATR dan kelipatan ATR
Menambah logik keputusan perdagangan pada malam dan pagi, membolehkan strategi beroperasi sepanjang masa
Strategi ini secara keseluruhan agak mudah dan praktikal, menentukan masa beli dan jual beli melalui penyambungan DI, dan menetapkan stop loss dengan ATR secara dinamik. Jumlah parameter strategi kecil, mudah untuk penguji dan pengujian langsung, juga mudah untuk menyesuaikan penyesuaian. Tetapi penyambungan DI tidak berfungsi dengan baik untuk menilai keadaan goyah, dan ini adalah arah strategi yang perlu diperbaiki. Secara keseluruhan, strategi ini menunjukkan prestasi yang stabil, sesuai untuk digunakan sebagai strategi perdagangan garis pendek dalam sehari.
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TheHulkTrading
//@version=4
strategy("DI Crossing Daily Straregy HulkTrading", overlay=true)
// ATR Multiplier. Recommended values between 1..4
atr_multiplier = input(1, minval=1, title="ATR Multiplier")
//Length of DI. Recommended default value = 14
length = input(14, minval=1, title="Length di")
up = change(high)
down = -change(low)
range = rma(tr, 14)
//DI+ and DI- Calculations
di_plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / range)
di_minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / range)
//Long and short conditions
longCond = crossover(di_plus,di_minus)
shortCond = crossunder(di_plus,di_minus)
//Stop levels and take profits
stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14)
take_level_long = strategy.position_avg_price + 2*atr_multiplier*atr(14)
stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14)
take_level_short = strategy.position_avg_price - 2*atr_multiplier*atr(14)
//Entries and exits
strategy.entry("Long", strategy.long, when=longCond)
strategy.exit("Close Long","Long", stop=stop_level_long, limit = take_level_long)
strategy.entry("Short", strategy.short, when=shortCond)
strategy.exit("Close Short","Short", stop=stop_level_short, limit = take_level_short)