Chiến lược này thực hiện dài và ngắn dựa trên đường chéo trung bình động, và chỉ ra vào buổi chiều dựa trên thống kê thu lợi nhuận sớm để tránh bị mắc kẹt bởi biến động mở cửa cao.
Chiến lược này sử dụng 3 đường trung bình động với các thông số khác nhau: đường 14 ngày, đường 28 ngày và đường 56 ngày. Nó sẽ dài khi đường 14 ngày vượt qua đường 56 ngày và ngắn khi vượt qua đường dưới. Cách tiếp cận cơ bản này theo dõi xu hướng dài hạn. Để lọc một số tiếng ồn, đường 28 ngày được thêm làm tham chiếu, vì vậy các tín hiệu chỉ được kích hoạt khi đường 14 ngày cũng ở trên hoặc dưới đường 28 ngày.
Nhờ đó, giao dịch có khả năng tăng/giảm trong khoảng thời gian từ 4 giờ chiều đến 5 giờ chiều. Để tránh ảnh hưởng từ biến động mở cửa cao, việc ra chỉ được kích hoạt trong giờ giao dịch buổi chiều bình thường.
Những lợi thế của chiến lược này bao gồm:
Ngoài ra còn có một số rủi ro:
Một số cách để tối ưu hóa thêm chiến lược:
Chiến lược có logic rõ ràng và đơn giản, sử dụng hiệu quả các tính năng mở cửa để dừng lỗ để tránh bẫy biến động. Nhưng có nguy cơ bỏ lỡ cơ hội và bị mắc kẹt. Các tham số nên được điều chỉnh theo cổ phiếu. Nhìn chung là một ý tưởng đơn giản nhưng hiệu quả cho những người mới bắt đầu.
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-30 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("MAC 1st Trading Hour Walkover", overlay=true) // Setting up timeperiod for testing startPeriodYear = input(2014, "Backtest Start Year") startPeriodMonth = input(1, "Backtest Start Month") startPeriodDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0) stopPeriodYear = input(2025, "Backtest Stop Year") stopPeriodMonth = input(12, "Backtest Stop Month") stopPeriodDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0) // Moving Averages ema14 = ema(close, 14) ema28 = ema(close, 28) sma56 = sma(close, 56) // Plot plot(ema14, title="ema14", linewidth=2, color=green) plot(ema28, title="ema28", linewidth=2, color=red) plot(sma56, title="sma56", linewidth=3, color=blue) // Strategy goLong = cross(ema14, sma56) and ema14 > ema28 goShort = cross(ema14, sma56) and ema14 < ema28 // Strategy.When to enter if time >= testPeriodStart if time <= testPeriodStop strategy.entry("Go Long", strategy.long, 1.0, when=goLong) strategy.entry("Go Short", strategy.short, 1.0, when=goShort) // Strategy.When to take profit if time >= testPeriodStart if time <= testPeriodStop strategy.exit("Close Long", "Go Long", profit=2000) strategy.exit("Close Short", "Go Short", profit=2000) // Strategy.When to stop out // Some studies show that 70% of the days high low happen in the first hour // of trading. To avoid having that volatility fire our loss stop we // ignore price action in the morning, but allow stops to fire in the afternoon. if time("60", "1000-1600") strategy.exit("Close Long", "Go Long", loss=500) strategy.exit("Close Short", "Go Short", loss=500)