
Tinjauan Strategi
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada saluran Donchian dan rata-rata amplitudo riil (ATR). Strategi ini memanfaatkan orbit tengah saluran Donchian dalam siklus K-line 4 jam dan tingkat penyimpangan dari harga saat ini, digabungkan dengan ATR sebagai indikator untuk mengukur fluktuasi dinamis, untuk mencari peluang masuk dan keluar dalam fluktuasi pasar. Strategi ini menggunakan peningkatan gradien dan mekanisme stop loss, untuk mengelola posisi dengan cara jumlah perdagangan tetap (USD 5.1T), untuk memanfaatkan dana yang efektif dalam situasi pergerakan yang besar.
Prinsip Strategi
Logika inti dari strategi ini didasarkan pada beberapa elemen kunci:
- Kerangka analisis multi-siklusStrategi: melakukan transaksi pada garis K 1 menit, tetapi menggunakan indikator teknis komputasi data pada garis K 4 jam (240 menit), untuk mencapai keunggulan analisis multi-siklus.
- Perhitungan Jalur Dongxian: Berdasarkan data K-line 4 jam selama 20 periode, perhitungan rata-rata bergerak sederhana dari harga di atas rel, di bawah rel, dan di tengah rel.
- Determinasi interval dinamis: Menggunakan 2 kali nilai ATR sebagai interval perdagangan dinamis, sehingga strategi dapat beradaptasi dengan perubahan volatilitas pasar.
- Logika Eksekusi Transaksi:
- Status awal ((tidak memegang posisi): melakukan pembelian pertama ketika rel tengah saluran Dongguan dikurangi harga saat ini lebih besar dari interval yang ditetapkan.
- Status memegang posisi: ketika harga acuan dengan harga saat ini lebih dari selisih, melakukan operasi kenaikan atau penurunan posisi.
- Manajemen posisi: jumlah transaksi berdasarkan harga saat ini dengan jumlah transaksi tetap per transaksi (<5.1 USDT)
- Mekanisme posisi rata: Eksekusi penjualan ketika kenaikan harga melebihi interval, dan penjualan semua posisi yang tersedia jika posisi tidak mencukupi.
Keunggulan Strategis
- Keunggulan analisis multi siklusDengan melakukan perdagangan dalam periode waktu yang lebih pendek (line K 1 menit) tetapi membuat keputusan berdasarkan indikator teknis yang lebih lama (line K 4 jam), mengurangi gangguan dari kebisingan pasar jangka pendek, sambil mempertahankan kemampuan untuk melacak tren jangka menengah dan panjang.
- Beradaptasi dengan perubahan pasar yang dinamisDengan menggunakan ATR sebagai metrik volatilitas, strategi dapat secara otomatis menyesuaikan interval perdagangan sesuai dengan perubahan volatilitas pasar, dengan interval yang lebih besar di pasar yang berfluktuasi tinggi dan interval yang lebih kecil di pasar yang berfluktuasi rendah.
- Mekanisme penambangan gradienKetika harga terus turun, strategi ini akan melakukan penambahan posisi pada setiap titik interval, dengan biaya rata-rata untuk membangun posisi, mengurangi risiko pada satu transaksi.
- Transaksi dengan jumlah tetap: Menggunakan jumlah tetap dari setiap transaksi daripada jumlah tetap, lebih sesuai dengan prinsip manajemen risiko, menghindari masalah overinvestment pada harga tinggi atau underinvestment pada harga rendah.
- Rekaman log lengkapStrategi: Strategi mengimplementasikan catatan log transaksi yang terperinci dan label visualisasi, termasuk jenis transaksi, harga, interval, jumlah dan jumlah total saham, untuk memudahkan analisis dan optimalisasi strategi.
Risiko Strategis
- Risiko pembalikan trenSolusi: Memperkenalkan indikator pengakuan tren atau menetapkan batas maksimum kenaikan posisi.
- Risiko kehabisan danaDalam situasi yang terus berlanjut, beberapa kali penargetan dengan jumlah tetap dapat menyebabkan penggunaan dana yang terlalu cepat atau terlalu terkonsentrasi. Solusi: Tetapkan batas persentase penggunaan dana total atau menyesuaikan jumlah transaksi secara dinamis.
- Parameter SensitivitasPilihan: ATR ganda ((2x) dan siklus saluran Dongxian ((20) memiliki dampak besar pada kinerja strategi, pengaturan parameter yang tidak tepat dapat menyebabkan terlalu banyak atau terlalu sedikit sinyal. Solusi: Temukan kombinasi parameter yang optimal melalui retrospeksi sejarah, atau implementasi mekanisme penyesuaian parameter.
- Risiko likuiditasDalam pasar dengan likuiditas rendah, harga pasar dapat menyebabkan slippage yang lebih besar, yang mempengaruhi efektivitas pelaksanaan strategi yang sebenarnya. Solusi: Pertimbangkan untuk menggunakan harga terikat atau menambahkan kondisi penyaringan likuiditas.
- Biaya komisi terakumulasiStrategi: Mungkin sering diperdagangkan, menghasilkan biaya transaksi yang tinggi (setakan 0,1%), dan dapat mengikis keuntungan dalam jangka panjang. Solusi: Optimalkan frekuensi perdagangan atau pertimbangkan untuk menggunakan bursa dengan komisi yang lebih rendah.
Arah optimasi strategi
- Meningkatkan filter lingkungan pasarMenggabungkan indikator volatilitas (seperti bandwidth Brin atau ATR relatif) untuk menilai kondisi pasar saat ini, menyesuaikan parameter strategi atau menghentikan perdagangan dalam kondisi pasar yang berbeda. Dengan demikian, dapat dihindari kerugian biaya yang dihasilkan oleh perdagangan yang sering terjadi di pasar yang rendah volatilitas atau bergolak.
- Dinamika penyesuaian ATRATR dapat disesuaikan berdasarkan volatilitas historis atau dinamika intensitas tren pasar, menggunakan kelipatan yang lebih kecil di pasar tren yang kuat untuk mengikuti harga lebih erat, dan menggunakan kelipatan yang lebih besar di pasar yang bergolak untuk mengurangi sinyal palsu.
- Memperkenalkan mekanisme stop loss: Tetapkan batas kerugian maksimum atau pelacakan stop loss untuk mencegah kerugian dalam satu transaksi terlalu besar. Terutama setelah melakukan beberapa kali penambahan, pertimbangkan untuk mengatur tingkat stop loss komprehensif untuk melindungi keamanan dana.
- Mengoptimalkan manajemen posisiPertimbangan untuk menggunakan jumlah transaksi yang menurun atau meningkat, bukan jumlah tetap, proporsi dana per transaksi disesuaikan dengan ukuran posisi yang telah dibuat atau dinamika volatilitas pasar.
- Tambahkan filter waktu transaksiAnalisis kinerja dari berbagai periode perdagangan, menghindari periode yang tidak efisien atau berisiko tinggi, seperti waktu persimpangan perdagangan Asia, Eropa dan Amerika atau sebelum dan sesudah publikasi data ekonomi besar.
- Integrasi dengan Indikator LainIndikator RSI, MACD, dan lain-lain dapat digunakan sebagai konfirmasi tambahan untuk meningkatkan kualitas sinyal perdagangan dan mengurangi kesalahan masuk.
- Adaptasi terhadap siklus saluran DongqiangPeriode yang lebih pendek digunakan untuk meningkatkan kecepatan respons di pasar yang berfluktuasi tinggi, dan periode yang lebih lama digunakan untuk mengurangi kebisingan di pasar yang berfluktuasi rendah.
Meringkaskan
Strategi perdagangan yang mengikuti pergerakan pada interval yang dinamis antara saluran multi-siklus dan ATR adalah sistem perdagangan kuantitatif yang menggabungkan analisis teknis dan manajemen risiko. Strategi ini memungkinkan pelacakan tren jangka menengah yang efektif dengan menggunakan data siklus 4 jam untuk melakukan keputusan pada garis K 1 menit, sambil menggunakan ATR untuk menyesuaikan interval perdagangan secara dinamis agar sesuai dengan berbagai kondisi pasar.
Strategi ini sangat cocok untuk lingkungan pasar yang lebih berfluktuasi, tetapi perlu diperhatikan risiko reversal tren dan masalah manajemen dana. Dengan menambahkan filter lingkungan pasar, penyesuaian parameter dinamis, dan mekanisme stop loss, langkah-langkah optimasi dapat meningkatkan lebih lanjut stabilitas strategi dan profitabilitas jangka panjang. Dalam aplikasi praktis, disarankan untuk melakukan pengembalian yang cukup, mengoptimalkan parameter untuk varietas perdagangan tertentu, dan menerapkan langkah-langkah kontrol risiko yang ketat untuk memastikan keamanan dana.
Kode Sumber Strategi
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("Donchian Channel and ATR Strategy", overlay=true, currency="USDT", commission_type=strategy.commission.percent, commission_value=0.1)
// 用pine编写策略,实时执行。
// 获得suiusdt合约的4小时K线,用4小时k线20周期,计算唐奇安通道 和ATR。
// 最新的 ATR * 2 为间隔。每次买卖金额都是5.1usdt,根据金额计算交易数量。
// 策略基于1分钟k线执行。
// 开始时,baseprice为空。
// 如果 唐奇安通道中轨 - 当前价格 > 间隔, 则市价买入5.1usdt,记录成交价格为 baseprice。
// 重新计算计算唐奇安通道 和ATR, 还是使用4小时K线的20个周期。
// baseprice不为空,
// 如果 baseprice - 当前价格 > 间隔, 则市价买入5.1usdt,记录成交价格为 baseprice;
// 如果 当前价格 - baseprice > 间隔, 则市价卖出5.1usdt,记录成交价格为 baseprice。
// 卖出时,判断仓位是否足够卖出,不够则卖出剩余的仓位。卖出后,如果没有仓位了,设置baseprice为空。
// 标签和日志记录:买还是卖(buy/sell),初次买入标记为initBuy,价格,间隔,买入的数量,买入后仓位的总数量。
// 用不同颜色区分买卖。
// 获取4小时K线数据
resolution_4h = "240" // 4小时K线
high_4h = request.security(syminfo.tickerid, resolution_4h, high)
low_4h = request.security(syminfo.tickerid, resolution_4h, low)
close_4h = request.security(syminfo.tickerid, resolution_4h, close)
// 计算唐奇安通道和ATR(基于4小时K线)
length = 20
donchian_upper = ta.highest(high_4h, length)
donchian_lower = ta.lowest(low_4h, length)
donchian_middle = ta.sma(close_4h, length)
atr_value = ta.atr(length) // 使用4小时K线计算ATR
// 设置交易参数
trade_amount = 5.1 // 每次交易金额(USDT)
var float baseprice = na // 当前基准价格
var float total_position_qty = 0 // 总仓位数量
// 日志记录函数
log_trade(action, price, interval, qty, total_qty, color) =>
log_text = str.format("{0} @ {1} | Interval: {2} | Qty: {3} | Total Qty: {4}",
action, str.tostring(price), str.tostring(interval),
str.tostring(qty), str.tostring(total_qty))
// 策略逻辑
interval = atr_value * 2 // 间隔 = ATR * 2
if (na(baseprice))
if (donchian_middle - close > interval) // 使用1分钟K线的close价格判断
qty = trade_amount / close // 计算交易数量
strategy.entry("Buy", strategy.long, qty=qty)
baseprice := close // 更新基准价格
total_position_qty += qty // 更新总仓位数量
log_trade("initBuy", baseprice, interval, qty, total_position_qty, color.green) // 记录日志和标签
else
if (baseprice - close > interval) // 使用1分钟K线的close价格判断
qty = trade_amount / close
strategy.entry("Buy", strategy.long, qty=qty)
baseprice := close
total_position_qty += qty
log_trade("Buy", baseprice, interval, qty, total_position_qty, color.blue)
else if (close - baseprice > interval)
if (total_position_qty > 0)
qty = trade_amount / close
if (total_position_qty >= qty)
strategy.close("Buy", qty=qty)
total_position_qty -= qty
log_trade("Sell", baseprice, interval, qty, total_position_qty, color.red)
else
strategy.close("Buy")
total_position_qty := 0
log_trade("Sell (Full Position)", baseprice, interval, total_position_qty, 0, color.red)
baseprice := na // 清空基准价格
// 绘制唐奇安通道和ATR(基于4小时K线)
plot(donchian_upper, title="Donchian Upper", color=color.blue, linewidth=2)
plot(donchian_middle, title="Donchian Middle", color=color.orange, linewidth=2)
plot(donchian_lower, title="Donchian Lower", color=color.blue, linewidth=2)
plot(atr_value, title="ATR", color=color.red, linewidth=2)