
Chiến lược này là một hệ thống giao dịch định lượng tần số cao kết hợp phân tích xu hướng nhiều chu kỳ thời gian và mối quan hệ giá trị. Nó chủ yếu đánh giá xu hướng thị trường thông qua chỉ số di chuyển trung bình ((EMA) cho hai chu kỳ thời gian 3 phút và 1 giờ, đồng thời kết hợp phân tích giao dịch tổng hợp để xác nhận tín hiệu giao dịch và thiết kế cơ chế thoát đôi dựa trên giá cao nhất cả ngày và thời điểm cố định.
Logic cốt lõi của chiến lược bao gồm ba phần chính:
Một tín hiệu nhập phải đáp ứng cả ba điều kiện trên cùng một lúc. Chiến lược thoát sử dụng bất kỳ điều kiện nào trong hai điều kiện: giá chạm mức cao nhất trong ngày hoặc đến lúc 3 giờ chiều.
Chiến lược này kết hợp phân tích nhiều chu kỳ thời gian và quan hệ giá trị, xây dựng một hệ thống giao dịch tương đối hoàn chỉnh. Ưu điểm của nó là rõ ràng về logic, thực hiện đơn giản, nhưng vẫn cần tối ưu hóa về kiểm soát rủi ro.
/*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")