Chiến lược này tạo ra tín hiệu giao dịch dựa trên sự giao thoa giữa đường EMA nhanh và đường EMA chậm. Khi đường EMA nhanh vượt qua trên đường EMA chậm, một tín hiệu mua được tạo ra. Khi đường EMA nhanh vượt qua dưới đường EMA chậm, một tín hiệu bán được tạo ra. Chiến lược này sử dụng lợi thế của đường trung bình động để theo dõi hiệu quả xu hướng thị trường và tạo ra tín hiệu giao dịch trong quá trình bắt đầu xu hướng.
Các chỉ số cốt lõi của chiến lược này là đường EMA nhanh và đường EMA chậm. Chiến lược thiết lập hai đường EMA với các thông số khác nhau, với 10 cho EMA nhanh và 20 cho EMA chậm. Đường EMA 10 ngày phản ứng nhanh hơn với những thay đổi giá, trong khi đường EMA 20 ngày phản ứng chậm hơn. Khi đường EMA ngắn hạn vượt qua đường EMA dài hạn, điều đó có nghĩa là đường trung bình ngắn hạn bắt đầu dẫn đường đường dài hạn lên, ngụ ý thị trường có thể chuyển sang trạng thái tăng. Tại thời điểm này, một tín hiệu mua được tạo ra. Ngược lại, khi EMA ngắn giảm xuống dưới EMA dài, điều đó có nghĩa là EMA ngắn bắt đầu mất sức mạnh dẫn đầu trước EMA dài, ngụ ý thị trường có thể chuyển sang trạng thái giảm. Theo đó, một tín hiệu bán được tạo ra.
Bằng cách tận dụng logic chéo giữa các đường EMA nhanh và chậm, chiến lược này nắm bắt các điểm chuyển đổi của xu hướng thị trường kịp thời và tạo ra các tín hiệu giao dịch phù hợp. Trong khi đó, EMA có khả năng lọc ra các tín hiệu sai, tránh giao dịch quá mức trong quá trình củng cố thị trường. Điều này cho phép chiến lược nắm bắt các bước ngoặt của thị trường trong khi giảm các giao dịch sai, dẫn đến lợi nhuận cao hơn.
Để giải quyết những rủi ro này, các tối ưu hóa có thể được giới thiệu như thêm các quy tắc lọc, kết hợp MACD để tránh các tín hiệu sai, sử dụng EMA thích nghi để tăng tốc phản ứng v.v. Ngoài ra, các cơ chế dừng lỗ và lợi nhuận thích hợp là cần thiết.
Các hướng tiềm năng để tối ưu hóa hơn bao gồm:
Chiến lược này nắm bắt các bước ngoặt quan trọng của thị trường thông qua logic chéo của hai đường EMA, làm cho nó hiệu quả cho giao dịch trực tiếp. Với các bộ lọc bổ sung, các chỉ số hỗ trợ và tối ưu hóa stop loss, sự ổn định của chiến lược có thể được tăng thêm.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Backtest single EMA cross", overlay=true) qty = input(100000, "Buy quantity") testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #00FF00 : na testPeriod() => true ema1 = input(10, title="Select EMA 1") ema2 = input(20, title="Select EMA 2") expo = ema(close, ema1) ma = ema(close, ema2) avg_1 = avg(expo, ma) s2 = cross(expo, ma) ? avg_1 : na //plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0) p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0) p2 = plot(ma, color=color.orange, linewidth=2, transp=0) fill(p1, p2, color=color.white, transp=80) longCondition = crossover(expo, ma) shortCondition = crossunder(expo, ma) if testPeriod() strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0) plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)