Chiến lược này sử dụng hai đường trung bình động (MA) để tạo ra tín hiệu giao dịch. Khi MA ngắn hạn vượt qua trên MA dài hạn, một tín hiệu mua được tạo ra; khi MA ngắn hạn vượt qua dưới MA dài hạn, một tín hiệu bán được tạo ra. Chiến lược cũng thiết lập một khoảng thời gian giao dịch (8 AM đến 20 PM UTC) và mục tiêu lợi nhuận (150 điểm).
Chiến lược này tạo ra tín hiệu giao dịch dựa trên sự chéo chéo của hai đường trung bình động với các khoảng thời gian khác nhau, phù hợp với thị trường xu hướng. Bằng cách thiết lập một khoảng thời gian giao dịch và mục tiêu lợi nhuận cố định, nó có thể kiểm soát rủi ro đến một mức độ nhất định. Tuy nhiên, chiến lược có thể không hoạt động tốt trong các thị trường hỗn loạn, và mục tiêu lợi nhuận cố định có thể hạn chế tiềm năng lợi nhuận của chiến lược. Trong tương lai, người ta có thể xem xét kết hợp nhiều chỉ số kỹ thuật hơn, tối ưu hóa việc thiết lập mục tiêu lợi nhuận và dừng lỗ, kết hợp thông tin cấu trúc vi mô thị trường và áp dụng các thiết lập tham số khác nhau cho các trạng thái thị trường khác nhau để tối ưu hóa chiến lược này.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Moving Average Crossover Strategy", overlay=true) // User-defined moving average periods ma1Periods = input(5, title="First Moving Average Periods") ma2Periods = input(20, title="Second Moving Average Periods") // Calculate moving averages ma1 = sma(close, ma1Periods) ma2 = sma(close, ma2Periods) // Plot moving averages plot(ma1, color=color.red, linewidth=2, title="First Moving Average") plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average") // Detect crossovers and crossunders bullishCross = crossover(ma1, ma2) bearishCross = crossunder(ma1, ma2) // Define trading hours (8 AM to 2 PM UTC) startHour = 8 endHour = 20 utcHour = hour(time, "UTC") isMarketOpen = true // Define profit target profitTarget = 150 // Check if the price has closed above/below the MA for the past 4 bars aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1] belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1] // Create buy and sell signals if (bullishCross and isMarketOpen and aboveMa) strategy.entry("Buy", strategy.long) strategy.exit("Sell", "Buy", profit=profitTarget) if (bearishCross and isMarketOpen and belowMa) strategy.entry("Sell", strategy.short) strategy.exit("Cover", "Sell", profit=profitTarget) // Plot shapes on crossovers plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")