
Strategi ini menggunakan zona harga yang terbentuk di pagi hari sebagai referensi penting, menggabungkan mekanisme stop loss yang mengikuti dinamika, yang dapat menangkap fluktuasi dalam sehari dan dapat secara efektif mengendalikan risiko. Dengan mengidentifikasi dengan tepat titik tinggi dan rendah di periode 8:30 AM, strategi ini memantau harga yang pecah selama periode perdagangan berikutnya (dari 8:40 AM hingga 3:00 PM), dan hanya melakukan perdagangan yang berhasil menembus batas pertama setiap hari, sambil menggunakan stop loss dan stop loss tetap untuk mengelola posisi.
Prinsip inti dari strategi ini adalah menggunakan kisaran harga yang terbentuk pada jam 8:30 AM sebelum pasar dibuka sebagai titik acuan utama. Proses kerja strategi secara rinci adalah sebagai berikut:
Strategi ini menggunakan beberapa variabel kunci untuk melacak status perdagangan: tinggi (((high830) dan rendah (((low830) masing-masing mencatat harga tertinggi dan terendah pada grafik 8:30 AM; variabel tradeTakenToday memastikan hanya satu transaksi yang dilakukan setiap hari; firstBreakoutHappened mengkonfirmasi apakah ada penembusan pertama. Syarat perdagangan harus dipenuhi secara bersamaan: harga mencapai tinggi atau rendah pada pukul 8:30 AM, adalah penembusan pertama hari itu, hari itu belum melakukan perdagangan, berada dalam periode waktu yang diizinkan untuk perdagangan.
Kondisi keluar dari strategi ini meliputi: harga menyentuh garis stop tracking dinamis, mencapai level stop yang telah ditetapkan atau menyentuh garis stop loss tetap. Garis stop tracking dinamis akan disesuaikan sesuai dengan pergerakan harga ke arah yang menguntungkan, sehingga mengunci sebagian keuntungan.
Strategi ini memiliki beberapa keuntungan yang mencolok, melalui analisis kode yang mendalam:
Aturan transaksi yang jelasStrategi ini didasarkan pada tingkat harga yang jelas, dengan sinyal masuk yang ditetapkan, dan kondisi perdagangan yang jelas dan mudah dipahami dan dilaksanakan.
Peningkatan manajemen risikoStrategi ini menggabungkan beberapa mekanisme pengendalian risiko, termasuk stop loss yang dilacak secara dinamis, stop loss tetap, dan pengaturan stop loss, untuk mengontrol risiko setiap perdagangan secara efektif.
Hindari Perdagangan Terlalu BanyakDengan pembatasan satu transaksi per hari, Anda dapat menghindari peningkatan biaya transaksi dan volatilitas emosi yang disebabkan oleh transaksi yang sering terjadi.
Filter waktuDengan mengatur jendela waktu perdagangan tertentu, Anda dapat menghindari pembukaan dan penutupan pasar yang bergejolak.
Perlindungan keuntungan yang dinamis: Mekanisme tracking stop loss mampu menyesuaikan posisi stop loss seiring dengan pergerakan harga ke arah yang menguntungkan, baik untuk melindungi margin yang sudah menguntungkan maupun untuk tidak terlalu cepat mengakhiri potensi tren besar.
Pelaksanaan otomatisStrategi ini sepenuhnya otomatis, menghindari gangguan emosional manusia, dan dapat melakukan transaksi dengan ketat sesuai dengan aturan yang telah ditetapkan.
Sangat mudah beradaptasiDengan pengaturan parameter (misalnya, Tracking Stop Loss Points, Stop Loss Points), strategi dapat disesuaikan dengan kondisi pasar yang berbeda dan preferensi risiko pribadi.
Meskipun strategi ini dirancang dengan baik, ada risiko potensial berikut:
Risiko Penembusan PalsuHarga mungkin akan kembali ke posisi tinggi atau rendah pada pukul 8:30 AM, menyebabkan sinyal yang salah dan kerugian yang tidak perlu. Solusinya adalah dengan menambahkan mekanisme konfirmasi, seperti meminta harga untuk bertahan untuk waktu tertentu atau amplitudo setelah penembusan.
Kurangnya volatilitas: Jika pasar tidak terlalu berfluktuasi, harga mungkin tidak dapat secara efektif menembus kisaran yang ditetapkan pada 8:30 AM, sehingga mengurangi peluang perdagangan. Anda dapat mempertimbangkan untuk menyesuaikan parameter strategi atau menunda penggunaan strategi dalam lingkungan yang rendah fluktuasi.
Terlalu Bergantung pada Satu Titik WaktuStrategi ini sangat bergantung pada kinerja harga pada jam 8:30 AM, dan jika ada fluktuasi yang tidak normal pada jam itu, mungkin mengatur zona perdagangan yang tidak masuk akal. Anda dapat mempertimbangkan untuk menggunakan rata-rata dari beberapa titik waktu atau menggabungkan indikator teknis lainnya.
Parameter Sensitivitas: Tracking stop loss dan stop-loss setting memiliki dampak besar pada kinerja strategi, dan pengaturan parameter yang berbeda mungkin diperlukan dalam lingkungan pasar yang berbeda. Disarankan untuk melakukan retrospeksi menyeluruh untuk menemukan kombinasi parameter yang optimal.
Kegagalan dalam mengelola danaStrategi saat ini tidak menyertakan aturan manajemen posisi yang spesifik, yang dapat menyebabkan kurangnya kontrol risiko. Disarankan untuk menambahkan mekanisme penyesuaian posisi berdasarkan volatilitas.
Risiko Kesenjangan Pasar: Jika ada kekurangan besar di pasar, stop loss tetap mungkin tidak dapat dilaksanakan secara efektif, menyebabkan kerugian melebihi ekspektasi. Pertimbangan untuk menggunakan stop loss persentase dapat digunakan sebagai pengganti stop loss poin tetap.
Berdasarkan analisis kode, strategi ini dapat dioptimalkan dengan beberapa cara:
Menambahkan konfirmasi pengirimanStrategi saat ini hanya didasarkan pada penilaian harga, tanpa mempertimbangkan faktor volume transaksi. Menambahkan konfirmasi volume transaksi dapat meningkatkan keandalan sinyal penembusan, memfilter penembusan palsu dengan volume transaksi rendah. Metode optimasi adalah meningkatkan volume transaksi di atas persyaratan persentase tertentu dari rata-rata volume transaksi beberapa garis K sebelumnya dalam kondisi masuk.
Memperkenalkan filter lingkungan pasarPerforma strategi dapat bervariasi dalam berbagai kondisi pasar. Perdagangan dapat dilakukan dengan menambahkan indikator tren (seperti ADX, moving average, dll.) atau indikator volatilitas (seperti ATR), dalam kondisi pasar yang sesuai.
Optimalkan parameter stop loss dan stop loss: Stop loss dan stop loss yang digunakan saat ini adalah setelan poin tetap, dapat diubah menjadi penyesuaian dinamis berdasarkan volatilitas pasar (seperti ATR) untuk membuat strategi lebih sesuai dengan lingkungan pasar yang berbeda.
Menambahkan analisis multi-frame waktu: Menggabungkan arah pasar pada kerangka waktu yang lebih tinggi dengan sinyal pada kerangka waktu saat ini, dapat meningkatkan tingkat keberhasilan perdagangan. Misalnya, melakukan perdagangan hanya jika arah tren sunny line sesuai dengan arah breakout.
Menambahkan filter sinyal mundurPertimbangkan sinyal kebalikan dari indikator pasar lainnya (seperti indikator overbought overbought RSI, MACD, dll.) dan hindari perdagangan dalam kondisi ekstrem.
Memperkenalkan mekanisme penghentian dinamisSelain pelacakan stop loss, Anda juga dapat mempertimbangkan untuk menyesuaikan target stop secara dinamis, misalnya dengan mengatur beberapa target stop berdasarkan level resistensi dukungan atau kelipatan fluktuasi.
Optimalkan jendela waktu perdagangan: Menggunakan analisis data historis untuk menemukan jendela waktu perdagangan terbaik, mungkin waktu perdagangan terbaik berbeda untuk pasar atau produk yang berbeda.
Strategi pelacakan dinamis penembusan titik tinggi dan rendah di awal hari adalah metode perdagangan intraday yang didasarkan pada penembusan kisaran harga, dengan mengidentifikasi titik tinggi dan rendah yang terbentuk pada jam 8:30 AM, digabungkan dengan mekanisme pelacakan stop loss yang dinamis, untuk menangkap peluang penembusan harga intraday. Aturan strategi ini jelas, manajemen risiko yang sempurna, dengan membatasi jumlah perdagangan per hari dan mengatur jendela waktu perdagangan, risiko perdagangan berlebihan dikendalikan secara efektif.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-03-30 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Breakout of 8:30 AM High/Low", overlay=true)
// Identify 8:30 AM candle
is830 = (hour == 8 and minute == 30)
// Persistent variables for tracking
var float high830 = na
var float low830 = na
var int lastTradeDay = na
var bool tradeTakenToday = false
// Store 8:30 AM high and low
if is830
high830 := high
low830 := low
// Ensure high/low persist throughout the day
high830 := nz(high830, high830)
low830 := nz(low830, low830)
// Plot the high and low of the 8:30 AM candle
plot(high830, color=color.green, title="8:30 High", linewidth=2)
plot(low830, color=color.red, title="8:30 Low", linewidth=2)
// Reset tradeTakenToday at the start of each new trading day
if dayofweek != lastTradeDay or (hour == 0 and minute == 0)
tradeTakenToday := false
lastTradeDay := dayofweek // Update last trade day to the current day
// Track first breakout candle that closes outside the range
firstBreakoutHappened = ta.barssince(close > high830 or close < low830) == 0
// Time restriction: Only trade between 8:40 AM and 3:00 PM
isTradingTime = (hour == 8 and minute >= 40) or (hour > 8 and hour < 15)
// Entry conditions: first 15-min candle close outside the range & within trading time
longEntry = close > high830 and firstBreakoutHappened and not tradeTakenToday and isTradingTime
shortEntry = close < low830 and firstBreakoutHappened and not tradeTakenToday and isTradingTime
// Trailing stop and take profit logic inputs
ticks = input.int(15, title="Trailing Stop Loss Ticks", minval=1) // Trailing stop in ticks
takeProfit = input.int(30, title="Take Profit (in Ticks)", minval=1) // Take profit in ticks
// Variables to track trailing stop levels
var float longTrailingStop = na
var float shortTrailingStop = na
// Update trailing stop levels for long trades
if (longEntry)
longTrailingStop := close - ticks * syminfo.mintick // Initialize trailing stop for long
// Update trailing stop levels for short trades
if (shortEntry)
shortTrailingStop := close + ticks * syminfo.mintick // Initialize trailing stop for short
// Update trailing stop levels during the trade
if (not na(longTrailingStop))
longTrailingStop := math.max(longTrailingStop, close - ticks * syminfo.mintick) // Move trailing stop up for long
if (not na(shortTrailingStop))
shortTrailingStop := math.min(shortTrailingStop, close + ticks * syminfo.mintick) // Move trailing stop down for short
// Exit Conditions (Trailing Stop)
endLongTrade = not na(longTrailingStop) and close <= longTrailingStop
endShortTrade = not na(shortTrailingStop) and close >= shortTrailingStop
// Reset trailing stop levels after exit
if (endLongTrade)
longTrailingStop := na
if (endShortTrade)
shortTrailingStop := na
// Stop loss and take profit settings
stopLoss = 100
// Execute trades (only one per day)
if longEntry
strategy.entry("Long", strategy.long, comment="Breakout Long")
strategy.exit("Long TP/SL", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit * syminfo.mintick)
tradeTakenToday := true
if shortEntry
strategy.entry("Short", strategy.short, comment="Breakout Short")
strategy.exit("Short TP/SL", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit * syminfo.mintick)
tradeTakenToday := true
// Exit trades using trailing stops
if endLongTrade
strategy.close("Long", comment="Trailing Stop Hit for Long")
if endShortTrade
strategy.close("Short", comment="Trailing Stop Hit for Short")