
Strategi ini didasarkan pada Average True Range Indicator (ATR) dan Trend Indicator (DMI) untuk menentukan waktu beli dan jual. Strategi ini termasuk dalam strategi pelacakan tren untuk menentukan titik balik tren melalui persilangan DI + dan DI- dan ATR digunakan untuk menetapkan harga stop loss dan stop loss.
Menghitung ATR ((14): Menghitung rentang rata-rata pergerakan yang sebenarnya dengan menggunakan harga tertinggi, terendah, dan harga penutupan dalam 14 hari terakhir
Hitung DI+ dan DI-:
DI+ = 100 * RMA(MAX(UP,0),N) / ATNR
DI- = 100 * RMA(MAX(DOWN,0),N) / ATNR
di mana UP adalah perbedaan antara harga tertinggi hari dan harga penutupan kemarin, DOWN adalah perbedaan antara harga terendah hari dan harga penutupan kemarin, N adalah panjang parameter, default 14, ATNR adalah ATR yang diperoleh dari langkah sebelumnya
Ini adalah salah satu cara yang paling efektif untuk membedakan antara pembelian dan penjualan:
Ketika DI+ memakai DI-, menghasilkan sinyal beli
Ketika DI+ melewati DI-, menghasilkan sinyal jual
Pengaturan Stop Loss:
Multiple Stop Loss adalah harga masuk dikurangi ATR dikali stop loss kali ganda
Multi-Stop Leverage ditambah ATR dikali Stop Leverage
Stop loss untuk tiket kosong ditambah ATR dengan stop loss ganda
Harga tiket berhenti kosong adalah harga masuk dikurangi ATR dikalikan dengan stop multiplier
Menggunakan DI+ dan DI-cross-judgment untuk menilai titik-titik pergeseran tren, dapat menangkap arah tren baru secara tepat waktu
ATR sebagai indikator stop loss yang dinamis, dapat mengatur stop loss yang masuk akal sesuai dengan tingkat fluktuasi pasar
Parameter kebijakan yang lebih sedikit, mudah dipahami dan diterapkan
Data retrospektif menunjukkan bahwa strategi ini memiliki faktor keuntungan yang positif dan lebih baik daripada strategi buy-hold.
DI Cross-Transaction Menghasilkan Risiko Kesalahan
Stop loss stop stop stop terlalu dekat
Tidak mampu menangani pasar yang bergejolak
Risiko penarikan diri
Indikator yang digabungkan dengan moving averages untuk memfilter sinyal silang DI untuk menghindari kesalahan perdagangan dalam situasi yang bergejolak
Menambahkan mekanisme manajemen posisi, seperti fixed share, Martingale, dan lain-lain, untuk mengendalikan penarikan balik dan meningkatkan profitabilitas
Optimalkan parameter ATR agar stop loss lebih sesuai dengan kisaran fluktuasi dari berbagai jenis perdagangan
Optimalkan parameter untuk menemukan kombinasi parameter yang optimal, seperti siklus DI, siklus ATR, dan kelipatan ATR
Menambahkan logika penilaian perdagangan di malam hari dan pagi hari, membuat strategi berjalan sepanjang waktu
Strategi ini secara keseluruhan relatif sederhana dan praktis, menentukan waktu jual beli melalui persilangan DI, dan mengatur stop loss dengan ATR secara dinamis. Jumlah parameter strategi kecil, mudah untuk diuji dan divalidasi secara langsung, juga mudah untuk melakukan penyesuaian yang optimal. Namun, penyambungan DI tidak efektif untuk menilai situasi yang bergolak, dan ini adalah arah yang perlu diperbaiki oleh strategi ini. Secara keseluruhan, strategi ini berkinerja stabil, cocok 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)