Isi artikel
- Bukti dan cakupan
- Ilustrasi
- Proses
- Batas bergulir bukan swing terkonfirmasi
- Buat referensi sebelum mengklasifikasikan peristiwa tersebut.
- Satu batasan dapat menghasilkan hasil valid yang berbeda.
- Waktu pemesanan, pembatalan, dan kedaluwarsa
- Volume dapat memilih langkah yang lebih kuat dan pengisian yang lebih mahal.
- Uji perhitungan referensi sebelum menerapkan strategi.
- Kesalahan umum
- Daftar periksa praktis
- Pertanyaan umum
- Sumber riset
Bukti dan cakupan
Sumber-sumber tersebut mendukung rumus saluran, pergeseran data, dan simulasi waktu pemesanan. Tidak ada klaim mengikuti tren historis yang diperlakukan sebagai bukti bahwa titik masuk, ambang volume, dan titik keluar tertentu yang diusulkan di sini menguntungkan.
Alur kerja praktis
- Kumpulkan N batangGunakan pengamatan yang telah selesai sebelum bar saat ini.
- Bekukan U dan DSimpan harga dan usia setiap ekstrem.
- Klasifikasikan peristiwa tersebutBreakout yang dikonfirmasi harga penutupan berbeda dari pergerakan melewati batas yang kemudian kembali ke dalamnya.
- Terapkan volumeGunakan hanya fitur yang tersedia saat pesanan diajukan.
- Simulasikan eksekusiTerapkan kebijakan entri, stop, dan kedaluwarsa yang telah ditetapkan.
Batas bergulir bukan swing terkonfirmasi
Donchian mengambil nilai ekstrem dari N pengamatan; TradingView menggambarkan pita atas dan bawah serta titik tengahnya [1]. Tidak seperti pivot dua sisi, ia tidak memerlukan pembalikan selanjutnya. Jendela sebelumnya yang telah selesai sudah diketahui ketika bar berikutnya dimulai. Selama tren, batas atasnya dapat terus naik tanpa berfungsi sebagai resistensi yang menahan.
Definisi kausal yang diusulkan adalah U[t]=max(H[t−N:t]), D[t]=min(L[t−N:t]), M[t]=(U[t]+D[t])/2, dengan titik akhir atas dari irisan tersebut dikecualikan. Dengan demikian, jendela berakhir di t−1. Jika H[t] termasuk dalam U[t], kondisi H[t]>U[t] menjadi tidak mungkin berdasarkan konstruksi.
Perbedaan sederhana ini memengaruhi seluruh eksperimen. Indikator grafik dapat menampilkan pita yang mencakup bar aktif untuk tujuan visual; strategi tersebut tetap harus menentukan snapshot historis mana yang digunakan. Simpan stempel waktu ekstrem yang mendasarinya serta harganya sehingga diagnostik selanjutnya dapat membedakan batas baru dari ekstrem lama yang akan segera berakhir.
Buat referensi sebelum mengklasifikasikan peristiwa tersebut.
Dalam pandas, menggeser nilai memisahkan jendela referensi dari baris yang sedang dievaluasi [2]. Salah satu implementasinya adalah high.shift(1).rolling(N).max(). Menggeser indeks dengan freq bukanlah pengganti untuk memindahkan nilai yang diamati relatif terhadap baris keputusan. Membutuhkan jendela valid penuh alih-alih secara diam-diam mengizinkan perubahan jumlah pengamatan.
Garis dasar mengklasifikasikan penutupan yang telah selesai di luar pita dengan b=max(2 ticks,0.1×ATR[t−1]); N=20 dan 0.1 adalah pengaturan penelitian yang diusulkan. Untuk klasifikasi satu bar langsung, hitung referensi jendela sebelumnya baru setiap bar. Untuk penyapuan multi-bar dan kandidat klaim ulang, bekukan level asli saat kandidat dimulai.
Jika tidak, bilah ekskursi memasuki jendela bergulir berikutnya dan memindahkan batas yang diklaim kembali. Kembali di bawah batas yang diperbarui dapat menjadi peristiwa yang berbeda dari kembali di bawah level yang sebenarnya dilanggar. Pertahankan candidate_id, frozen_level, stempel waktu referensi, dan kedaluwarsa agar pertanyaan yang dimaksud tetap stabil selama pengaturan.
U = max(H[t-N:t]); D = min(L[t-N:t])
b = max(2*tick, 0.1*ATR[t-1])
if no_active_setup and C[t] > U+b:
emit('up_breakout', signal_at=t, frozen_level=U)
if no_active_setup and H[t] > U+b and C[t] < U:
emit('upper_reclaim', signal_at=t, frozen_level=U)
# These labels represent different hypotheses.
# A close-confirmed order can be processed only after close t.
Satu batasan dapat menghasilkan hasil valid yang berbeda.
Contoh sintetis: bar 20 sebelumnya memiliki U=105, D=99, dan ATR=1. Dengan tick=0.01, b=0.10. Bar saat ini dengan H=106 dan C=105.4 menciptakan breakout penutupan ke atas. Usulan pembelian pembukaan berikutnya di 105.5, stop loss di 103.9, dan target di 108.7 memiliki risiko harga awal 1.6 poin dan target 2R sebelum biaya.
Alur kegagalan: setelah dibuka di 105.5, harga turun ke 103.8. Stop loss dapat tercapai meskipun penutupan pemicu memenuhi setiap kondisi detektor. Jika sebaliknya bar pemicu asli memiliki H=106 dan C=104.7, itu bukan breakout penutupan. Itu bisa jadi reclaim kembali ke bawah band atas untuk strategi short yang ditentukan secara terpisah. Jangan mengubah label breakout yang merugi menjadi sweep setelah melihat kerugian.
Kasus yang lebih rumit terjadi ketika harga tertinggi sebelumnya di 105 keluar dari jendela N-bar dan U turun ke 104. Harga di 104.5 sekarang dapat melampaui saluran tanpa membuat harga tertinggi yang diperdagangkan baru-baru ini. Itu adalah peristiwa jendela bergulir yang sah. Pengecualiannya memerlukan kondisi terdaftar tambahan pada asal atau pergerakan level referensi.
Uji kasus kesetaraan secara sengaja. Harga penutupan tepat di U+b ditolak karena versi dasar mensyaratkan nilai yang benar-benar lebih besar. Lakukan pembulatan tick menurut aturan tetap sebelum mengirim order; jika tidak, galat floating-point dapat menentukan apakah pengamatan sedikit di atas atau tepat pada batas.
Waktu pemesanan, pembatalan, dan kedaluwarsa
TradingView membedakan pembuatan order setelah penutupan dari eksekusi pada tick berikutnya yang tersedia di emulatornya [3]. Oleh karena itu, baseline yang dikonfirmasi penutupan yang diusulkan membutuhkan harga, spread, dan slippage yang dapat dieksekusi selanjutnya. Buy stop yang berada di atas U adalah model yang berbeda: order tersebut dapat dieksekusi intrabar dan berbalik arah sebelum penutupan. Penutupan yang tidak menguntungkan tidak dapat menghapus eksekusi tersebut secara retroaktif.
Pilihan exit meliputi stop loss struktural tetap, trailing order saluran bawah yang lebih pendek, atau exit berdasarkan waktu. Pilih konfigurasi sederhana sebelum evaluasi. Untuk entry retest, tentukan seberapa jauh harga dapat kembali, reaksi mana yang memenuhi syarat, dan berapa bar order tetap valid. Breakout yang tidak pernah melakukan retest adalah peluang yang terlewatkan, bukan peralihan otomatis untuk mengejar harga.
Bar yang menyentuh stop dan target memerlukan data yang lebih terperinci atau aturan konservatif yang dinyatakan untuk urutan kejadian. Pengujian gap harus mengubah harga eksekusi dan risiko yang terealisasi tanpa mengubah waktu sinyal asli atau acuan yang telah dibekukan. Penolakan eksekusi sebelum pengiriman order dan order yang sudah tereksekusi lalu merugi adalah dua hasil berbeda.
Stop loss bergulir juga membutuhkan aturan waktu. Jika batas bawah kemarin diperbarui setelah penutupan hari ini, stop loss baru tidak dapat melindungi pergerakan intrabar sebelumnya. Simpan setiap revisi stop loss dan waktu aktivasinya daripada menerapkan trailing stop terakhir secara mundur melintasi bar.
Volume dapat memilih langkah yang lebih kuat dan pengisian yang lebih mahal.
Filter breakout yang diusulkan memerlukan RVOL≥1.5 terhadap riwayat sesi waktu yang sebanding. Pada keputusan penutupan yang lengkap, volume penuh bar pemicu tersedia. Untuk order stop untuk entri yang sudah diajukan dan masih menunggu, hanya volume yang sudah diamati pada saat pengajuan yang dapat menentukan apakah pesanan tersebut ada. Volume bar penuh yang diukur setelah pengisiannya tidak dapat menjadi izin entri retrospektif.
Pisahkan cabang yang hanya mempertimbangkan harga, cabang likuiditas minimum, dan cabang volume abnormal. Masing-masing cabang ini menjawab pertanyaan yang berbeda: kemampuan perdagangan dasar versus informasi tambahan. Subset dengan RVOL tinggi mungkin bergerak lebih jauh sekaligus mengalami gap dan spread yang lebih besar, sehingga respons harga bruto tidak mencukupi.
Bandingkan ekspektasi bersih, eksposur, dan jumlah peluang yang dibuang. Sesuaikan anggaran risiko di seluruh cabang dan laporkan hasilnya berdasarkan likuiditas atau waktu dalam sehari menggunakan definisi kelompok yang ditetapkan berdasarkan data masa lalu. Tingkat kemenangan yang lebih tinggi pada subset kecil tidak secara otomatis meningkatkan pengembalian atau penurunan portofolio.
Untuk reclaim multi-bar, simpan volume ekskursi dan volume reclaim secara terpisah. Rasio keduanya dapat dipelajari, tetapi panjang interval yang tidak sama perlu dinormalisasi. Agregat OHLCV tidak dapat menentukan apakah aktivitas tersebut terjadi tepat di level Donchian atau di tempat lain di dalam bar yang lebar.
Uji perhitungan referensi sebelum menerapkan strategi.
Daftarkan grid pengembangan kecil seperti N=10,20,40. Catat harga band, stempel waktu ekstrem, dan usia level pada setiap sinyal, termasuk apakah level tersebut bergerak karena ekstrem lama telah kedaluwarsa. Ini memisahkan perilaku ekonomi dari efek jendela mekanis dan membuat sensitivitas lebih mudah diinterpretasikan.
Uji kausalitas langsung mengubah H[t] sambil mempertahankan awalan tetap: U[t] harus tetap tidak berubah. Mengubah H[t−1] dapat mengubah U[t]. Tambahkan fixture untuk bar yang hilang, hari libur, celah pembukaan, dan data usang. Bandingkan perhitungan batch dengan implementasi streaming sehingga kesalahan selisih satu tidak dapat tersembunyi di dalam grafik yang tampak masuk akal secara visual.
Barulah kemudian evaluasi periode di luar sampel yang terkunci dengan mempertimbangkan perputaran, biaya, eksposur, penurunan nilai, dan sensitivitas pengisian. Jika memilih berita khusus, subset sesi pembukaan atau penutupan, hitung itu sebagai uji coba riset. Laporkan kandidat yang gagal dan pengujian ulang yang tidak pernah terjadi, bukan hanya perdagangan yang selesai dari batas yang menguntungkan.
Kesalahan umum
Membiarkan level mengikuti pergerakan harga di luar batas
Reclaim terhadap batas band yang baru diperbarui bisa berbeda dari kembalinya harga melewati batas asli yang semula ditembus.
Menyamakan sentuhan level dengan perlintasan melewatinya
Kesamaan di U tidak secara otomatis berarti terobosan; tetapkan pembulatan tick dan aturan perbandingan.
Jendela pendek menyembunyikan biaya frekuensi transaksi
Nilai N yang lebih kecil dapat menghasilkan sinyal yang sering muncul, dan biaya eksekusi sinyal tersebut mendominasi keunggulan kotornya.
Daftar periksa sebelum menggunakan metode ini
Centang setiap butir setelah memverifikasinya pada data Anda. Kemajuan disimpan di browser ini; bukan sertifikasi bahwa strategi menghasilkan laba.
Pertanyaan umum
Haruskah menjual ketika harga menyentuh band atas?
Tidak ada kesimpulan umum. Bertransaksi melawan pergerakan saat harga menyentuh batas dan membeli breakout adalah hipotesis berlawanan yang memerlukan definisi serta pengujian terpisah.
Dapatkah Donchian menggantikan pivot harga?
Indikator ini dapat memberikan referensi breakout, tetapi tidak memberikan konfirmasi pembalikan sisi kanan atau pengurutan ayunan seperti pada detektor pivot.
Sumber riset
Setiap sumber mendukung definisi atau bukti yang dijelaskan di sampingnya. Pseudocode, contoh sintetis, dan parameter usulan perlu divalidasi secara terpisah.
- Donchian ChannelsTradingView. Baca rumus saluran dan penggunaan deskriptifnya. Diperiksa: .
- pandas.Series.shiftpandas. Baca API untuk memverifikasi pergeseran nilai. Diperiksa: .
- Pine Script: StrategiesTradingView. Membaca perilaku pembuatan order, next-available-tick, dan stop order. Diperiksa: .
Metode terkait
Catatan risiko
Konten ini mendukung pembelajaran dan perancangan riset, bukan nasihat keuangan. Backtest adalah simulasi historis, tidak menjamin kinerja mendatang, dan tidak menempatkan order sungguhan. Metode dalam pustaka ini tidak otomatis tersedia sebagai fitur aplikasi. Lihat metodologi dan pusat pembelajaran.
Validasi aturan sebelum mempertaruhkan modal nyata
Periksa dukungan aplikasi, data, dan setiap transaksi simulasi; detektor tingkat lanjut mungkin perlu implementasi tersendiri.
Unduh Backtest di App Store