
Salah satu inovasi utama dari strategi ATRTSS v6 adalah:Desain ATR 4xStrategi tradisional umumnya menggunakan ATR 2-2.5x, tetapi volatilitas ekstrim pasar cryptocurrency membuat parameter ini terlalu konservatif. Data retrospektif menunjukkan bahwa ATR 4x dapat secara efektif menyaring 85% dari sinyal terobosan palsu, sambil tetap memiliki kemampuan menangkap tren yang cukup.
Solusi parameter utama:
Desain ini didasarkan pada logika:Lebih baik melewatkan fluktuasi kecil dan menangkap tren besarUntuk trader kuantitatif yang mencari keuntungan yang stabil, ini lebih berharga daripada strategi yang sering masuk dan keluar.
Strategi yang digunakanMekanisme verifikasi tiga lapis waktuIni adalah hal yang paling menarik:
4H tingkat masuk: Bertanggung jawab untuk mengidentifikasi sinyal awal tren pertengahan, menghindari gangguan kebisingan dalam hari. Trigger kondisi masuk ketika harga close out 4H melewati batas stop loss 4H ATR.
1H Lapisan KeluarDesain ini memberikan kontrol risiko yang lebih sensitif, dengan posisi terdepan langsung ketika harga 1H ditutup di bawah batas stop loss 1H ATR. Desain ini memiliki kemampuan kontrol risiko lebih dari 30% lebih baik daripada strategi time frame tunggal.
Filter sinar matahariSebagai konfirmasi tren akhir, posisi hanya diizinkan untuk dibuka ketika harga penutupan garis harian lebih tinggi dari stop loss ATR garis harian. Dengan mekanisme penyaringan lapisan ini, Anda dapat menghindari perdagangan mundur dalam tren turun di tingkat besar.
Efek dari pertempuranMekanisme verifikasi multi-lapisan ini secara signifikan mengurangi mundur maksimum dari strategi, sementara mempertahankan kemampuan untuk menangkap tren utama.
Pengaturan kebijakanPeninggalan piramida maksimal 2 kaliDesain parameter ini sangat pragmatis. Dibandingkan dengan penambahan posisi tanpa batas atau penempatan tunggal, penambahan posisi dua kali menemukan titik keseimbangan optimal antara pengendalian risiko dan peningkatan keuntungan.
Kondisi pemicu hipotek:
Desain ini memiliki beberapa kelebihan:Dengan asumsi bahwa tren telah dikonfirmasi, keuntungan akan ditingkatkan secara moderat, bukan secara membabi buta.Sejarah menunjukkan bahwa dua kali penarikan dapat meningkatkan total keuntungan sebesar 15-25% dibandingkan dengan satu kali penarikan, namun peningkatan penarikan maksimum dikendalikan dalam 10%.
Strategi yang digunakanDesain Long OnlyIni adalah pilihan yang bijaksana dalam lingkungan pasar cryptocurrency saat ini. Dibandingkan dengan strategi multi-head, strategi multi-head murni memiliki keuntungan berikut:
Adaptasi pasar“Pasar kripto telah lama menunjukkan tren naik, dengan sedikit peluang shorting dan risiko yang lebih tinggi”.
Efisiensi keuanganIni adalah salah satu cara untuk menghindari risiko yang tak terbatas dari posisi kosong, dan memiliki tingkat pemanfaatan dana yang lebih tinggi.
Tekanan psikologisStrategi multihead murni memiliki beban psikologis yang lebih rendah dan lebih sesuai dengan preferensi risiko sebagian besar pedagang.
Namun perlu diperhatikanStrategi ini akan menunjukkan penurunan yang signifikan dalam pasar bearish atau pasar horizontal jangka panjang, dan tidak cocok untuk semua kondisi pasar.
Sistem kontrol risiko strategi ini dirancang dengan sangat baik:
Yang pertamaStop loss ATR memberikan kontrol risiko yang cepat, dengan stop loss rata-rata sekitar 8-12% dari harga masuk.
KeduaSistem penyaringan garis matahari mencegah perdagangan berlawanan besar-besaran, yang merupakan lapisan pengendalian risiko paling penting dalam strategi.
Ketiga.Untuk menghindari risiko yang terlalu terkonsentrasi.
Petunjuk Resiko PraktisMeskipun ada beberapa perlindungan, strategi ini masih memiliki risiko kerugian berturut-turut, terutama di pasar yang bergejolak yang mungkin sering mengalami kerugian. Rekapitulasi historis tidak mewakili keuntungan masa depan, dan perdagangan langsung membutuhkan manajemen dana yang ketat.
Lingkungan pasar sapi: dapat disesuaikan dengan ATR 3,5 - 4,5 kali lipat untuk meningkatkan sensitivitas sinyal.
Pasar BergoyangDisarankan untuk meningkatkan hingga 4,5 - 5,0 kali lipat untuk mengurangi kerugian dari penembusan palsu.
Mata uang yang berfluktuasi tinggiETH, SOL dan lain-lain dapat dipertimbangkan untuk menggunakan ATR 5x.
Mata uang dengan volatilitas rendahBitcoin (BTC) dan lain-lain dapat digunakan untuk 3.5-4 kali ATR.
Peringatan PentingParameter yang disesuaikan perlu dilakukan pengujian ulang, dan parameter yang optimal dalam berbagai kondisi pasar dapat berbeda secara signifikan.
Strategi ini paling cocok untuk jenis pedagang berikut:
Ukuran danaLebih dari US$100.000, dapat menanggung 8-15% stop loss.
Frekuensi transaksi: Rata-rata transaksi 5-15 kali per bulan, tidak cocok untuk kebutuhan transaksi frekuensi tinggi.
Keutamaan risikoKecenderungan untuk mengambil risiko sedang, mencari keuntungan yang stabil daripada keuntungan besar.
Waktu yang DibelanjakanPerhatikan: Monitoring 1-2 kali sehari, cocok untuk pedagang paruh waktu.
Skenario yang tidak sesuaiPermintaan untuk strategi frekuensi tinggi seperti perdagangan intraday, perdagangan super pendek, dan hedge fund.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-08-31 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("ATRTSS v6 (4H Entry / 1H Exit / Daily Filter, Long Only, Multi-TF Lines)",
shorttitle="ATRTSS v6", overlay=true,
initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,
commission_type=strategy.commission.percent, commission_value=0.0, pyramiding=2)
// ===================
// Inputs
// ===================
atrPeriod = input.int(10, "ATR Period")
atrMult = input.float(4.0, "ATR Multiplier")
htfATRPeriod = input.int(10, "Daily ATR Period")
htfATRMult = input.float(4.0, "Daily ATR Multiplier")
maxPyramids = input.int(2, "Max Pyramids", minval=1)
// Optional backtest window
daysBackMax = input.int(360, "Max Days Back to Test", minval=0)
daysBackMin = input.int(0, "Min Days Back to Test", minval=0)
msBackMax = daysBackMax * 86400000
msBackMin = daysBackMin * 86400000
isInTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and
(msBackMin == 0 or (time < (timenow - msBackMin)))
// Helper for non-repainting security pulls
gaps = barmerge.gaps_off
ahead = barmerge.lookahead_off
// ===================
// 4H ENTRY ATR STOP
// ===================
entryClose = request.security(syminfo.tickerid, "240", close, gaps, ahead)
entryATR = request.security(syminfo.tickerid, "240", ta.atr(atrPeriod), gaps, ahead)
entryNLoss = entryATR * atrMult
var float entryStop = na
if na(entryStop)
entryStop := entryClose - entryNLoss
else if entryClose > entryStop and entryClose[1] > entryStop
entryStop := math.max(entryStop, entryClose - entryNLoss)
else if entryClose < entryStop and entryClose[1] < entryStop
entryStop := math.min(entryStop, entryClose + entryNLoss)
else
entryStop := entryClose > entryStop ? entryClose - entryNLoss : entryClose + entryNLoss
plot(entryStop, title="4H ATR Stop (Entry)", color=color.new(color.green, 0), linewidth=2)
// ===================
// 1H EXIT ATR STOP
// ===================
exitClose = request.security(syminfo.tickerid, "60", close, gaps, ahead)
exitATR = request.security(syminfo.tickerid, "60", ta.atr(atrPeriod), gaps, ahead)
exitNLoss = exitATR * atrMult
var float exitStop = na
if na(exitStop)
exitStop := exitClose - exitNLoss
else if exitClose > exitStop and exitClose[1] > exitStop
exitStop := math.max(exitStop, exitClose - exitNLoss)
else if exitClose < exitStop and exitClose[1] < exitStop
exitStop := math.min(exitStop, exitClose + exitNLoss)
else
exitStop := exitClose > exitStop ? exitClose - exitNLoss : exitClose + exitNLoss
plot(exitStop, title="1H ATR Stop (Exit)", color=color.new(color.orange, 0), linewidth=2)
// ===================
// DAILY ATR FILTER (locked to D)
// ===================
dClose = request.security(syminfo.tickerid, "D", close, gaps, ahead)
dATR = request.security(syminfo.tickerid, "D", ta.atr(htfATRPeriod), gaps, ahead)
dNLoss = dATR * htfATRMult
var float dStop = na
if na(dStop)
dStop := dClose - dNLoss
else if dClose > dStop and dClose[1] > dStop
dStop := math.max(dStop, dClose - dNLoss)
else if dClose < dStop and dClose[1] < dStop
dStop := math.min(dStop, dClose + dNLoss)
else
dStop := dClose > dStop ? dClose - dNLoss : dClose + dNLoss
plot(dStop, title="Daily ATR Stop (Filter)", color=color.new(color.blue, 0), linewidth=2)
htfPassLong = dClose > dStop
// ===================
// Signals (LONG-only)
// ===================
longEntry = ta.crossover(entryClose, entryStop)
longExit = ta.crossunder(exitClose, exitStop)
// ===================
// Orders
// ===================
if longEntry and htfPassLong and isInTimeBounds and strategy.opentrades < maxPyramids
strategy.entry("LONG", strategy.long)
if longExit and isInTimeBounds
strategy.close("LONG")
// ===================
// Alerts
// ===================
alertcondition(longEntry and htfPassLong and isInTimeBounds, title="Long Entry (4H)", message="Long Entry: 4H cross above ATR stop; Daily filter passed.")
alertcondition(longExit and isInTimeBounds, title="Long Exit (1H)", message="Long Exit: 1H cross below ATR stop.")