
Strategi ini adalah sistem perdagangan kuantitatif yang direka khusus untuk perdagangan dalam hari, dengan pemikiran teras yang berpusat pada tindakan harga pada jam pertama pasaran. Strategi ini membina sistem perdagangan yang lengkap dengan mengenal pasti titik tinggi dan rendah pada jam pertama pasaran sebagai tahap penembusan utama, digabungkan dengan EMA, VWAP, dan dinamika ATR. Strategi ini memberi tumpuan khusus kepada pilihan untuk kembali ke peluang, yang hanya membenarkan isyarat perdagangan untuk dicetuskan setelah jam pertama pasaran berakhir.
Logik teras strategi boleh dibahagikan kepada beberapa bahagian utama:
Tempoh tertinggi dan terendah di jam pertamaStrategi: Memantau dan merekodkan harga tertinggi dan terendah pada jam pertama selepas pasaran dibuka (60 minit bermula dari 9:15), dua tahap harga yang akan digunakan sebagai titik penembusan yang berpotensi.
Pengiraan penunjuk teknikal:
Syarat kemasukan:
Strategi keluar:
Pengurusan wang:
Konsep reka bentuk ini menggabungkan perdagangan terobosan, pengesahan trend dan pengurusan risiko dinamik untuk membentuk kaedah perdagangan yang lengkap dan sistematik. Dengan meminta harga terobosan dan pengesahan petunjuk teknikal berlaku pada masa yang sama, strategi ini berkesan mengurangkan risiko terobosan palsu.
Dengan mengkaji kod strategi ini secara mendalam, beberapa kelebihan yang jelas dapat dirumuskan:
Masa kemasukan yang tepatDengan menggunakan paras tinggi dan rendah pada jam pertama sebagai tahap penting, strategi dapat menangkap peluang penembusan penting pada hari itu. Jam pertama pasaran sering menetapkan kawasan dagangan pada hari itu, dan penembusan tahap ini biasanya bermaksud dorongan yang kuat.
Mekanisme pengesahan bergandaStrategi ini tidak hanya bergantung pada harga yang terganggu, tetapi juga memerlukan EMA untuk mengesahkan silang dengan VWAP dan kesesuaian arah pada kemerosotan EMA. Penapisan berganda ini mengurangkan banyak isyarat palsu.
Pengurusan risiko dinamikDengan menggunakan ATR sebagai asas berhenti, strategi ini dapat menyesuaikan jarak berhenti secara automatik mengikut turun naik pasaran, memberikan lebih banyak ruang nafas kepada harga apabila turun naik lebih besar, dan mengetatkan berhenti untuk melindungi keuntungan apabila turun naik lebih kecil.
Peraturan perdagangan yang jelasStrategi ini menentukan syarat masuk dan keluar yang jelas, mengurangkan penilaian subjektif, dan membantu mengekalkan disiplin perdagangan.
Fungsi bantuan visual: Kod mengandungi penanda isyarat dan visualisasi tahap penting untuk membantu peniaga memahami logik strategi secara intuitif dan memantau peluang perdagangan dalam masa nyata.
Menyesuaikan diri dengan pasaranDengan hanya membenarkan masuk selepas jam pertama, strategi ini mengelakkan pergerakan yang tidak teratur yang biasa berlaku pada waktu pembukaan dan memberi tumpuan kepada pergerakan yang lebih berkemungkinan berterusan.
Walaupun strategi ini direka dengan baik, terdapat beberapa risiko dan batasan yang berpotensi:
Terlalu bergantung pada satu tempoh masaTerlalu banyak bergantung pada kenaikan dan penurunan yang berlaku pada jam pertama, jika tempoh itu tidak mewakili (misalnya, turun naik yang luar biasa atau dipengaruhi oleh berita sementara), ia boleh menyebabkan penurunan kualiti isyarat perdagangan seterusnya.
Batasan nisbah penangguhan tetapSasaran penangguhan tetap 1: 1% mungkin tidak dapat disesuaikan dengan keadaan pasaran yang berbeza dan aset yang berbeza yang tidak menentu. Pada hari trend yang kuat, ini mungkin menyebabkan keuntungan yang terlalu awal berakhir dan kehilangan potensi keuntungan yang lebih besar.
Risiko kelewatan EMA dan VWAPSebagai penunjuk ketinggalan, isyarat silang EMA dan VWAP mungkin muncul selepas harga telah melangkaui secara ketara, menyebabkan harga masuk tidak sesuai.
Tidak mempertimbangkan keadaan keseluruhan pasaranStrategi tidak memasukkan penilaian persekitaran pasaran yang lebih luas (seperti trend pasaran keseluruhan, persekitaran yang tidak menentu atau analisis hubungan) yang mungkin tidak berfungsi dengan baik dalam keadaan pasaran tertentu.
Cabaran dalam melaksanakan strategi hari iniSebagai strategi dalam hari, ia memerlukan kecekapan pelaksanaan yang lebih tinggi dan titik slippage yang lebih rendah, yang mungkin menjadi cabaran dalam perdagangan sebenar.
Untuk mengurangkan risiko ini, disyorkan untuk:
Berdasarkan analisis logik strategi dan potensi risiko, berikut adalah beberapa arah pengoptimuman yang perlu dipertimbangkan:
Penyesuaian parameter:
Menambah penapisan persekitaran pasaran:
Mengoptimumkan logik jam pertama:
Peningkatan mekanisme perlawanan:
Meningkatkan pengurusan risiko:
Arahan pengoptimuman ini bertujuan untuk mengekalkan logik teras strategi sambil meningkatkan daya serap dan kestabilan yang membolehkan ia kekal berkesan dalam keadaan pasaran yang lebih luas.
Strategi pengoptimuman hentian ATR dan kemerosotan EMA pada jam pertama adalah sistem perdagangan kuantitatif dalam masa sehari yang tersusun dengan baik, yang menyediakan cara perdagangan yang sistematis kepada peniaga dengan menggabungkan penembusan paras tinggi dan rendah pada jam pertama, pengesahan petunjuk teknikal dan pengurusan risiko dinamik. Kelebihan terbesar strategi ini adalah mekanisme pengesahan berganda dan peraturan perdagangan yang jelas, yang membantu mengurangkan isyarat palsu dan mengekalkan disiplin perdagangan.
Walau bagaimanapun, strategi juga mempunyai beberapa batasan, seperti masalah kesesuaian yang terlalu bergantung pada satu tempoh masa dan sasaran penangguhan tetap. Dengan melaksanakan langkah-langkah pengoptimuman yang disyorkan, seperti penyesuaian parameter yang disesuaikan, peningkatan penapisan keadaan pasaran dan peningkatan mekanisme keluar, peniaga dapat meningkatkan lagi strategi yang kuat dan bersesuaian.
Secara keseluruhannya, ini adalah strategi perdagangan yang kuat dan jelas, yang sangat sesuai untuk pedagang kuantitatif yang berminat untuk berdagang dalam sehari. Dengan penyesuaian dan pengoptimuman parameter yang sesuai, ia berpotensi menjadi alat yang berkesan dalam portfolio perdagangan.
/*backtest
start: 2024-02-29 00:00:00
end: 2025-02-26 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("FnO Intraday Strategy with ATR SL, EMA Slope & Signals", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// INPUTS
atrPeriod = input.int(14, "ATR Period")
atrMultiplier = input.float(1.0, "ATR Stop Loss Multiplier", step=0.1)
targetPercent = input.float(1.0, "Profit Target (%)", step=0.1) * 0.01
// Define session start and first candle period (for Indian market, session starts at 09:15)
sessionStartHour = input.int(9, "Session Start Hour", minval=0, maxval=23)
sessionStartMinute = input.int(15, "Session Start Minute", minval=0, maxval=59)
firstCandleMins = 60 // First candle duration in minutes
// Compute today's session start and first candle end timestamps
currYear = year(time)
currMonth = month(time)
currDay = dayofmonth(time)
sessionStartTS = timestamp(currYear, currMonth, currDay, sessionStartHour, sessionStartMinute)
sessionEndTS = sessionStartTS + firstCandleMins * 60 * 1000 // PineScript time is in ms
// INITIALIZE first-hour high/low (reset at the start of each day)
var float firstHourHigh = na
var float firstHourLow = na
if (ta.change(time("D")))
firstHourHigh := na, firstHourLow := na
// Update first-hour high/low while within the first candle period
if (time >= sessionStartTS and time <= sessionEndTS)
firstHourHigh := na(firstHourHigh) ? high : math.max(firstHourHigh, high)
firstHourLow := na(firstHourLow) ? low : math.min(firstHourLow, low)
// Plot the first-hour high and low once the first candle period is over
plot(time > sessionEndTS ? firstHourHigh : na, title="First Hour High", color=color.green, style=plot.style_linebr)
plot(time > sessionEndTS ? firstHourLow : na, title="First Hour Low", color=color.red, style=plot.style_linebr)
// Calculate indicators: 9 EMA, VWAP, and EMA slope
ema9 = ta.ema(close, 9)
vwapVal = ta.vwap(hlc3) // Using typical price for VWAP calculation
emaSlope = ema9 - ema9[1]
// Define "first hour complete" flag so entries only occur after the first candle period
firstHourComplete = time > sessionEndTS
// ENTRY CONDITIONS
// Long: Price breaks above first-hour high, and 9 EMA crosses above VWAP with a positive slope.
longBreakout = ta.crossover(close, firstHourHigh)
longEMAConfirmation = ta.crossover(ema9, vwapVal) and (emaSlope > 0)
longCondition = firstHourComplete and longBreakout and longEMAConfirmation
// Short: Price breaks below first-hour low, and 9 EMA crosses below VWAP with a negative slope.
shortBreakout = ta.crossunder(close, firstHourLow)
shortEMAConfirmation = ta.crossunder(ema9, vwapVal) and (emaSlope < 0)
shortCondition = firstHourComplete and shortBreakout and shortEMAConfirmation
// Generate entries
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Add buy and sell signals on the chart
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Calculate ATR for dynamic stop loss
atrValue = ta.atr(atrPeriod)
// Set exits using ATR-based stop loss and fixed profit target (1% gain)
if (strategy.position_size > 0)
longStop = strategy.position_avg_price - atrValue * atrMultiplier
longTarget = strategy.position_avg_price * (1 + targetPercent)
strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTarget)
if (strategy.position_size < 0)
shortStop = strategy.position_avg_price + atrValue * atrMultiplier
shortTarget = strategy.position_avg_price * (1 - targetPercent)
strategy.exit("Short Exit", from_entry="Short", stop=shortStop, limit=shortTarget)
// Plot EMA and VWAP for visual confirmation
plot(ema9, title="9 EMA", color=color.blue)
plot(vwapVal, title="VWAP", color=color.orange)