
Strategi ini adalah sistem perdagangan kuantitatif frekuensi tinggi yang menggabungkan analisis trend dan hubungan harga kuantitatif dalam pelbagai tempoh masa. Ia menilai trend pasaran terutamanya melalui purata bergerak indeks ((EMA) dalam dua tempoh masa 3 minit dan 1 jam, sambil menggabungkan analisis kuantitatif untuk mengesahkan isyarat perdagangan, dan merancang mekanisme keluar ganda berdasarkan harga tertinggi sepanjang hari dan titik waktu tetap.
Logik teras strategi terdiri daripada tiga bahagian utama:
Isyarat masuk perlu memenuhi ketiga-tiga syarat di atas secara serentak. Strategi keluar menggunakan harga yang menyentuh titik tertinggi dalam hari atau mencapai 3 petang kedua-dua syarat.
Strategi ini membina sistem dagangan yang agak lengkap dengan menggabungkan analisis pelbagai kitaran masa dan hubungan kuantiti. Kelebihannya adalah kejernihan logik, kesederhanaan pelaksanaan, tetapi masih memerlukan pengoptimuman dalam pengendalian risiko. Pedagang disarankan untuk melakukan ujian data sejarah yang mencukupi sebelum digunakan secara langsung, dan mengoptimumkan parameter mengikut ciri-ciri jenis dagangan tertentu.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Intraday + 1-Hour Trend Match", overlay=true)
// Inputs
emaLength3Min = input.int(50, title="EMA Length (3-Min)")
emaLength1Hr = input.int(50, title="EMA Length (1-Hour)")
volumeMultiplier = input.float(1.5, title="Volume Spike Multiplier")
// Intraday (3-Minute) EMA and Volume Spike
ema3Min = ta.ema(close, emaLength3Min)
volumeSMA = ta.sma(volume, 20)
isVolumeSpike = volume > (volumeSMA * volumeMultiplier)
// 1-Hour Trend (EMA)
ema1Hr = request.security(syminfo.tickerid, "60", ta.ema(close, emaLength1Hr))
is1HrUptrend = close > ema1Hr
// Intraday Signal
buyCondition3Min = close > ema3Min and isVolumeSpike
// Combined Signal: Match 3-Min Signal with 1-Hour Trend
finalBuyCondition = buyCondition3Min and is1HrUptrend
// All-Day High Tracking
var float allDayHigh = na
if (hour == 9 and minute == 0)
allDayHigh := high // Reset the all-day high at market open
else
allDayHigh := math.max(allDayHigh, high) // Update all-day high
// Debugging Plots
plot(ema3Min, color=color.blue, title="EMA 3-Min")
plot(ema1Hr, color=color.orange, title="EMA 1-Hour")
plotshape(isVolumeSpike, style=shape.circle, color=color.blue, title="Volume Spike (3-Min)")
plotshape(finalBuyCondition, style=shape.triangleup, color=color.green, title="Buy Signal")
plot(allDayHigh, color=color.red, title="All-Day High", linewidth=2)
// Strategy Execution
if (finalBuyCondition)
strategy.entry("Buy Signal", strategy.long)
// Exit Conditions
exitCondition = (close == allDayHigh) or (hour == 15 and minute >= 0)
if (exitCondition)
strategy.close("Buy Signal")