Chiến lược này tạo ra các tín hiệu giao dịch chéo vàng và chéo chết bằng cách tính toán sự giao thoa giữa đường EMA nhanh và đường EMA chậm. Khi đường EMA nhanh vượt qua đường EMA chậm, nó tạo ra tín hiệu mua; khi đường EMA nhanh vượt qua đường EMA chậm, nó tạo ra tín hiệu bán. Chiến lược này tận dụng lợi thế của đường trung bình di chuyển để theo dõi hiệu quả xu hướng thị trường và tạo ra tín hiệu giao dịch trong giai đoạn khởi động 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 này được thực hiện bằng cách thiết lập hai đường EMA khác nhau, đường EMA nhanh được thiết lập thành 10, đường EMA chậm được thiết lập thành 20. Trong đó, đường EMA 10 ngày phản ứng nhanh hơn với biến động giá, trong khi đường 20 ngày phản ứng chậm hơn. Khi đường EMA ngắn đi qua đường EMA dài, đường trung bình ngắn bắt đầu dẫn đường trung bình dài lên, báo hiệu rằng thị trường có thể đi vào trạng thái tăng giá, khi đó tín hiệu mua được tạo ra; ngược lại, khi đường trung bình ngắn đi qua đường trung bình dài, đường trung bình ngắn bắt đầu mất ưu thế dẫn đường trung bình dài, báo hiệu thị trường có thể đi vào trạng thái giảm giá, khi đó tín hiệu bán được tạo ra.
Thông qua nguyên tắc giao thoa của đường EMA chậm, chiến lược này có thể nắm bắt đầy đủ thời điểm chuyển đổi xu hướng thị trường và tạo ra tín hiệu giao dịch kịp thời. Đồng thời, chỉ số EMA có khả năng lọc tín hiệu giả mạo để tránh mở cửa thường xuyên khi thị trường biến động. Điều này cho phép chiến lược này nắm bắt các điểm chuyển đổi thị trường, có khả năng lợi nhuận cao trong khi giảm các giao dịch sai.
Đối với các rủi ro trên, tối ưu hóa có thể được thực hiện bằng cách đưa ra các chỉ số bổ sung, chẳng hạn như tăng điều kiện lọc giao dịch, kết hợp chỉ số MACD để tránh tín hiệu sai, sử dụng tốc độ phản ứng EMA tăng tốc tự điều chỉnh, v.v.
Các phương án có thể được tối ưu hóa hơn trong chiến lược này bao gồm:
Chiến lược này có hiệu quả thực tế mạnh mẽ bằng cách nắm bắt các điểm biến đổi quan trọng của thị trường thông qua nguyên tắc giao thoa đường chậm nhanh của hai EMA. Kết hợp với các chỉ số phụ trợ và tối ưu hóa dừng lỗ, có thể tăng cường thêm sự ổn định của chiến lược. Ý tưởng chiến lược đơn giản, rõ ràng, đáng được học và sử dụng theo định lượng, cũng có nhiều khả năng mở rộng và tối ưu hóa.
/*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)