
Đây là một chiến lược giao dịch định lượng dựa trên sự giao thoa của nhiều chỉ số trung bình di chuyển (EMA) để xác định xu hướng thị trường và tạo ra tín hiệu giao dịch bằng cách nắm bắt các điểm giao thoa của EMA trong các khoảng thời gian khác nhau. Chiến lược này nhằm nắm bắt động lực thị trường bằng cách xác nhận từng bước và cung cấp cơ chế phán đoán xu hướng trực quan và trực quan.
Lý luận cốt lõi của chiến lược dựa trên tín hiệu chéo của bốn EMA khác nhau:
Chiến lược hiển thị trực quan tình cảm thị trường bằng cách mã hóa màu: dải xanh cho thấy xu hướng đi lên và dải đỏ cho thấy xu hướng giảm. Màu sắc mờ phản ánh mối quan hệ vị trí của EMA ngắn hạn so với EMA dài hạn.
Chiến lược giao chéo EMA đa dạng cung cấp cho các nhà giao dịch một phương pháp có hệ thống để nắm bắt xu hướng thị trường thông qua việc tạo ra tín hiệu dần dần và cơ chế hiển thị trực quan. Mặc dù có một số hạn chế, chiến lược này vẫn có giá trị thực tế đáng kể thông qua việc tối ưu hóa liên tục và quản lý rủi ro.
/*backtest
start: 2025-02-08 00:00:00
end: 2025-04-02 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © joll3d
//@version=5
strategy("Multi-EMA Crossover Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, pyramiding=4, default_qty_value=25)
// Calculate EMAs
ema1 = ta.ema(close, 1)
ema5 = ta.ema(close, 5)
ema3 = ta.ema(close, 3)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema40 = ta.ema(close, 40)
// Define crossover conditions
longCondition1 = ta.crossover(ema1, ema5)
longCondition2 = ta.crossover(ema3, ema10)
longCondition3 = ta.crossover(ema5, ema20)
longCondition4 = ta.crossover(ema10, ema40)
shortCondition1 = ema1 < ema5
shortCondition2 = ema3 < ema10
shortCondition3 = ema5 < ema20
shortCondition4 = ema10 < ema40
// Execute long entries
if (longCondition1)
strategy.entry("Long 1-5", strategy.long)
if (longCondition2)
strategy.entry("Long 3-10", strategy.long)
if (longCondition3)
strategy.entry("Long 5-20", strategy.long)
if (longCondition4)
strategy.entry("Long 10-40", strategy.long)
if (shortCondition1)
strategy.close("Long 1-5")
if (shortCondition2)
strategy.close("Long 3-10")
if (shortCondition3)
strategy.close("Long 5-20")
if (shortCondition4)
strategy.close("Long 10-40")
// Calculate trend strength
bullishStrength = 0
bullishStrength := (ema1 > ema5 ? 1 : 0) +
(ema3 > ema10 ? 1 : 0) +
(ema5 > ema20 ? 1 : 0) +
(ema10 > ema40 ? 1 : 0)
//set bar colors
bullishColor = color.blue
semiBullishColor = color.rgb(175, 213, 243)
semiBearishColor = color.rgb(245, 178, 178)
bearishColor = color.red
barColor = bearishColor
if bullishStrength == 2
barColor := semiBearishColor
if bullishStrength == 3
barColor := semiBullishColor
if bullishStrength == 4
barColor := bullishColor
barcolor(barColor)