
Strategi berbalik zona nilai berjangka berdasarkan aturan 80% adalah sistem perdagangan kuantitatif yang dirancang khusus untuk memvalidasi pengaturan aturan 80% klasik. Ide inti dari strategi ini adalah untuk menangkap peluang berbalik setelah harga kembali ke zona nilai hari perdagangan sebelumnya (Value Area). Strategi ini berjalan dalam jangka waktu perdagangan berjangka ETH yang ditentukan dengan baik, sistem akan memicu sinyal perdagangan ketika harga kembali ke zona nilai hari sebelumnya dan bertahan di zona tersebut cukup lama, dengan tujuan utama adalah titik kontrol harga (Point of Control, POC), dan juga untuk melacak perjalanan zona nilai yang lengkap untuk penelitian dan analisis.
Strategi ini didasarkan pada prinsip regresi nilai rata-rata tren pasar, dengan perhatian khusus pada hubungan antara harga dan area nilai. Logika inti dari strategi ini meliputi:
Definisi waktu transaksiStrategi ini ditetapkan pada jendela ETH futures 22 jam yang sebenarnya (05:00 WIB - 03:00 WIB) dan mendukung pengaturan zona waktu global. Ini memastikan bahwa strategi berjalan dalam lingkungan pasar yang benar.
Perhitungan zona nilaiSistem secara otomatis menghitung nilai zona tinggi (VAH), nilai zona rendah (VAL) dan titik kontrol harga (POC):
Mekanisme konfirmasi sinyal: Harga harus kembali ke zona nilai dan tetap berada di zona tersebut setidaknya selama 45 menit ((3 garis K pada grafik 15 menit) untuk mengkonfirmasi sinyal masuk. Persyaratan ini memastikan keaslian niat harga untuk berbalik.
Filter hari efektif:
Kondisi pemicu:
Strategi KeluarTujuan utamanya adalah untuk keluar ketika harga mencapai POC, yang sesuai dengan gagasan inti dari Regression to Average.
Statistik DasarStrategi ini didasarkan pada zona nilai dan aturan 80%, yang keduanya memiliki dasar statistik yang kuat. Zona nilai mewakili area di mana 68% dari aktivitas harga terjadi, mirip dengan standar deviasi dari distribusi normal.
Definisi jendela transaksi yang tepatStrategi menggunakan jendela ETH 22 jam yang sebenarnya, bukan interval harian sederhana, yang lebih akurat mencerminkan struktur pasar.
Dukungan zona waktu yang fleksibel: Global trader dapat menyesuaikan strategi berdasarkan lokasi geografis mereka, sehingga sistem dapat bekerja dengan baik di setiap zona waktu.
Sinyal konfirmasi ketatUntuk mengkonfirmasi sinyal, harga harus berada dalam zona nilai minimal 3 garis K. Ini akan mengurangi kemungkinan sinyal palsu.
Menetapkan Tujuan yang Tepat: Menggunakan POC sebagai target utama memberikan keuntungan yang jelas, sesuai dengan karakteristik regresi rata-rata yang umum di pasar berjangka.
Mekanisme verifikasi gandaTidak hanya meminta harga untuk kembali ke zona nilai, tetapi juga meminta untuk mengukur kembali batas ((VAL atau VAH), yang meningkatkan keandalan sinyal.
Mode penutup manual: Ketika logika otomatis tidak cukup untuk menghadapi kondisi pasar khusus, strategi memungkinkan pedagang untuk menggunakan tingkat zona nilai yang ditetapkan secara manual.
Fungsi Debugging: Memberikan label diagnostik terperinci untuk membantu pengembangan strategi dan pengujian ke depan.
Nilai rata-rata kembali ke risiko kegagalan: Meskipun aturan 80% bekerja dalam banyak situasi, pasar juga akan mengalami tren yang kuat sehingga harga tidak dapat kembali ke POC. Untuk mengurangi risiko ini, pertimbangkan untuk menambahkan filter tren atau mengatur stop loss.
Parameter Sensitivitas: 3 garis K ((45 menit) persyaratan konfirmasi adalah parameter kunci. Terlalu pendek dapat menyebabkan masuk lebih awal, terlalu panjang dapat kehilangan kesempatan. Disarankan untuk menguji pengaturan waktu konfirmasi yang berbeda dalam kondisi pasar yang berbeda.
Ketergantungan lingkungan pasarStrategi ini bekerja paling baik di pasar yang bergejolak, tetapi mungkin tidak bekerja dengan baik di pasar yang bergejolak. Anda harus mempertimbangkan untuk menambahkan filter lingkungan pasar.
Saatnya untuk mengambil risiko: Kinerja strategi dapat dipengaruhi oleh periode perdagangan yang dipilih (New York, London, Tokyo atau cuaca sepanjang hari). Disarankan untuk menganalisis kinerja historis dari berbagai periode perdagangan untuk memilih periode yang optimal.
Keterbatasan metode perhitungan zona nilai: Menggunakan kisaran 68% tetap dan perhitungan POC yang disederhanakan mungkin tidak dapat secara akurat mencerminkan distribusi nilai riil di beberapa pasar. Pertimbangkan untuk menggunakan metode perhitungan zona nilai berdasarkan volume transaksi yang mungkin lebih akurat.
Kurangnya pengendalian kerugianStrategi saat ini tidak memiliki mekanisme stop loss yang jelas, yang dapat menyebabkan kerugian besar dalam tren pasar yang ekstrim. Disarankan untuk menerapkan pengaturan stop loss berdasarkan ATR atau persentase tetap.
Kondisi konfirmasi dinamis: Strategi saat ini menggunakan 3 garis K tetap sebagai kondisi konfirmasi, parameter ini dapat dipertimbangkan untuk disesuaikan dengan volatilitas pasar. Waktu konfirmasi yang lebih lama mungkin diperlukan pada periode fluktuasi tinggi, sementara waktu konfirmasi yang lebih pendek mungkin diperlukan pada periode fluktuasi rendah.
Daerah nilai berdasarkan volume transaksiPerhitungan zona nilai saat ini adalah metode simplifikasi berdasarkan harga. Ini dapat ditingkatkan menjadi analisis TPO (Time Price Opportunity) berdasarkan volume transaksi atau distribusi volume transaksi (Volume Profile), yang akan lebih akurat mencerminkan zona nilai konsensus para peserta pasar.
Konfirmasi multi-frame waktuDengan kombinasi arah tren dari kerangka waktu yang lebih besar, sinyal kontra bisa disaring, hanya 80% dari sinyal aturan perdagangan yang mungkin meningkatkan tingkat keberhasilan strategi.
Pengaturan tujuan adaptifStrategi saat ini tetap menggunakan POC sebagai target. Anda dapat mempertimbangkan untuk menetapkan target dinamis berdasarkan volatilitas pasar, misalnya menetapkan target yang lebih jauh di pasar yang berfluktuasi tinggi (seperti VAH atau VAL).
Filter tingkat fluktuasi: Tambahkan ATR atau indikator volatilitas lainnya sebagai syarat penyaringan untuk menghindari perdagangan di lingkungan pasar yang sangat rendah atau sangat tinggi.
Optimalkan pengaturan waktu: Analisis mendalam dari kinerja strategi di berbagai zona waktu dan waktu perdagangan untuk menemukan kombinasi waktu perdagangan yang optimal.
Mekanisme smart stop lossImplementasi logika stop loss yang cerdas, seperti stop loss berdasarkan titik support/resistance atau stop loss berdasarkan pergerakan harga, untuk mengelola risiko dengan lebih baik.
Skor kekuatan sinyal: Mengembangkan sistem penilaian kualitas sinyal yang menggabungkan kekuatan harga yang kembali masuk, mengkonfirmasi karakteristik garis K, dan faktor pasar lainnya, dan memberikan peringkat kekuatan untuk setiap sinyal untuk menentukan ukuran posisi.
Strategi reversal zona nilai berjangka berdasarkan aturan 80 persen adalah sistem perdagangan kuantitatif yang dirancang dengan baik yang dirancang untuk menangkap peluang reversal ketika harga kembali ke zona nilai. Dengan mekanisme konfirmasi sinyal yang ketat, definisi periode yang tepat, dan pengaturan tujuan yang jelas, ini memberi pedagang cara yang sistematis untuk menerapkan aturan 80 persen klasik.
Keunggulan utama dari strategi adalah dasar statistik, persyaratan konfirmasi sinyal yang ketat, dan opsi konfigurasi yang fleksibel. Namun, ada juga risiko seperti kegagalan rata-rata regresi, sensitivitas parameter, dan ketergantungan pada lingkungan pasar. Ketahanan dan fleksibilitas strategi dapat ditingkatkan secara signifikan dengan menerapkan langkah-langkah optimasi seperti kondisi konfirmasi dinamis, perhitungan zona nilai berdasarkan volume transaksi, konfirmasi multi-frame timeframe, dan pengaturan target yang disesuaikan.
Bagi para pedagang yang mencari strategi pengembalian nilai rata-rata untuk diterapkan di pasar berjangka, sistem yang didasarkan pada aturan 80 persen ini memberikan titik awal yang kuat, yang dapat disesuaikan dan dioptimalkan lebih lanjut sesuai dengan preferensi risiko pribadi dan pandangan pasar.
/*backtest
start: 2025-07-09 00:00:00
end: 2025-07-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_OKX","currency":"SOL_USDT","balance":200000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dscottmuller
// === Update July 15, 2025 ===
// • Converted to strategy for backtesting
// • POC-based exits for precision targeting
// • Full move markers for research tracking
// • Global time zone input (default: America/Los_Angeles)
//@version=5
strategy("80% Rule Backtest", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === General Inputs ===
useAllMarkets = input.bool(false, "Use 24-Hour Session (All Markets)")
sessionChoice = input.string("New York", "Market Session", options=["New York", "London", "Tokyo"])
showSessionBox = input.bool(false, "Highlight Selected Session")
enableSounds = input.bool(false, "Enable Audible Alerts")
extendLines = input.bool(true, "Extend Lines Right")
// === Advanced Session Settings ===
group = "Advanced Session Settings"
showAutoLevels = input.bool(true, "Show Auto-Calculated VAH/POC/VAL", group=group)
useManualLevels = input.bool(false, "Use Manual VAH/POC/VAL", group=group)
manualVAH = input.float(0.0, "Manual VAH", group=group)
manualVAL = input.float(0.0, "Manual VAL", group=group)
manualPOC = input.float(0.0, "Manual POC", group=group)
debugMode = input.bool(false, "Enable Debug Mode", group=group)
// === Time Zone Selection ===
sessionTZ = input.string("America/Los_Angeles", "ETH Session Timezone",
options=[
"America/Los_Angeles", // Default: Pacific Time
"America/New_York",
"America/Chicago",
"America/Denver",
"Europe/London",
"Europe/Paris",
"Asia/Tokyo",
"Australia/Sydney"
], group=group)
// === Market Session Filter ===
nySession = time(timeframe.period, "0930-1600", "America/New_York")
londonSession = time(timeframe.period, "0800-1630", "Europe/London")
tokyoSession = time(timeframe.period, "0900-1500", "Asia/Tokyo")
allSession = time(timeframe.period, "0000-0000")
inSession = useAllMarkets ? not na(allSession) : sessionChoice == "New York" ? not na(nySession) : sessionChoice == "London" ? not na(londonSession) : sessionChoice == "Tokyo" ? not na(tokyoSession) : false
bgcolor(showSessionBox and inSession ? color.new(color.blue, 90) : na)
// === ETH Session Window (22-Hour Futures) ===
ethStart = timestamp(sessionTZ, year, month, dayofmonth - 1, 17, 00)
ethEnd = timestamp(sessionTZ, year, month, dayofmonth, 15, 00)
inEthWindow = time("30") >= ethStart and time("30") <= ethEnd
ethHigh = inEthWindow ? high : na
ethLow = inEthWindow ? low : na
ethClose = inEthWindow ? close : na
extHigh = ta.highest(ethHigh, 100)
extLow = ta.lowest(ethLow, 100)
extClose = ta.valuewhen(not na(ethClose), ethClose, 0)
// === Value Area Calculations ===
vaRange = (extHigh - extLow) * 0.68
vah = extHigh - ((extHigh - extLow - vaRange) / 2)
val = extLow + ((extHigh - extLow - vaRange) / 2)
poc = (extHigh + extLow + extClose) / 3
finalVAH = useManualLevels ? manualVAH : vah
finalVAL = useManualLevels ? manualVAL : val
finalPOC = useManualLevels ? manualPOC : poc
// === Signal Logic ===
validLongDay = extClose < finalVAL
validShortDay = extClose > finalVAH
insideVA = close > finalVAL and close < finalVAH
reenteredFromBelow = validLongDay and close > finalVAL
reenteredFromAbove = validShortDay and close < finalVAH
var int barsInside = 0
barsInside := ta.change(time("D")) ? 0 : insideVA ? barsInside + 1 : 0
insideConfirmed = barsInside >= 3
retestVAL = validLongDay and low <= finalVAL
retestVAH = validShortDay and high >= finalVAH
longSignal = inSession and validLongDay and reenteredFromBelow and insideConfirmed and retestVAL
shortSignal = inSession and validShortDay and reenteredFromAbove and insideConfirmed and retestVAH
longBar = longSignal and not longSignal[1]
shortBar = shortSignal and not shortSignal[1]
// === Strategy Entries ===
if longBar
strategy.entry("Long", strategy.long, comment="80% Long Signal")
if shortBar
strategy.entry("Short", strategy.short, comment="80% Short Signal")
// === Strategy Exits at POC ===
strategy.exit("Long to POC", from_entry="Long", limit=finalPOC)
strategy.exit("Short to POC", from_entry="Short", limit=finalPOC)
// === Track Full Move (Visual Only) ===
longFullHit = longBar and high >= finalVAH
shortFullHit = shortBar and low <= finalVAL
plotshape(longFullHit, title="Full Move Long", location=location.abovebar, color=color.green, style=shape.triangleup, text="FULL")
plotshape(shortFullHit, title="Full Move Short", location=location.belowbar, color=color.red, style=shape.triangledown, text="FULL")
// === Debug Diagnostics ===
if debugMode and (longBar or shortBar)
debugText = (useManualLevels ? "Manual Mode" : "Auto Mode") + " | TZ: " + sessionTZ + " | 80% Triggered | barsInside: " + str.tostring(barsInside)
label.new(bar_index, close, debugText, xloc.bar_index, longBar ? yloc.belowbar : yloc.abovebar, style=label.style_label_left, textcolor=color.white, size=size.small, color=color.new(color.gray, 70))