
Chiến lược này là một hệ thống giao dịch đảo ngược xu hướng dựa trên đường trung bình và MACD. Nó kết hợp các chỉ số di chuyển nhanh (EMA), trung bình di chuyển đơn giản (SMA) và MACD để thu lợi nhuận bằng cách nắm bắt các cơ hội mua trong các thay đổi xu hướng thị trường. Chiến lược này tập trung vào các đặc điểm kỹ thuật như giá phá vỡ đường trung bình, MACD ở phía dưới dưới của trục 0 để bố trí thị trường khi thị trường sắp biến đổi.
Chiến lược sử dụng hai đường trung bình EMA ((10) và MA ((20) làm chuẩn để đánh giá xu hướng, đồng thời kết hợp với chỉ số MACD ((12,26,9) để xác nhận tín hiệu. Cụ thể, tín hiệu nhập cảnh cần đáp ứng các điều kiện sau cùng:
Chiến lược này được xây dựng một hệ thống giao dịch đảo ngược xu hướng tương đối hoàn chỉnh thông qua việc sử dụng hệ thống đồng bằng và chỉ số MACD. Mặc dù có một số rủi ro bị tụt hậu và tín hiệu sai, nhưng vẫn có giá trị ứng dụng thực tế tốt thông qua các biện pháp tối ưu hóa tham số và kiểm soát rủi ro hợp lý.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-01-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("MACD Strategy", overlay=true)
//Macd 参数
fastLength = input(12, title="快线长度")
slowLength = input(26, title="慢线长度")
MACDLength = input(9, title="MACD 信号线长度")
// 计算 MACD
MACD = ta.ema(close, fastLength) - ta.ema(close, slowLength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD
// 计算 EMA(10) 和 MA(20)
ema10 = ta.ema(close, 10)
ma20 = ta.sma(close, 20)
// 在图表上绘制 EMA(10) 和 MA(20),用于调试
plot(ema10, title="EMA 10", color=color.blue, linewidth=2)
plot(ma20, title="MA 20", color=color.red, linewidth=2)
// 实时检查条件
// 检查 EMA(10) 是否高于 MA(20)
bool emaAboveMa = ema10 > ma20
// 检查 MACD 是否在信号线上方,且 MACD 和信号线均在 0 轴下方
bool macdCondition = (MACD > aMACD) and (MACD < 0) and (aMACD < 0)
// 添加调试信息 - 当条件满足时绘制图形
plotshape(emaAboveMa, title="EMA Above MA Condition", size=size.small, text="eam")
plotshape(macdCondition, title="MACD Condition", size=size.small, text="macd")
// 当两个条件都满足时,触发买入操作
if (emaAboveMa and macdCondition)
strategy.entry("多头", strategy.long, comment="买入信号")
// 显示买入信号的标签
label.new(bar_index, high, "买入", textcolor=color.white, style=label.style_label_up, size=size.normal)
// 平仓条件
if (ta.crossunder(delta, 0) and MACD > 0 and aMACD > 0)
strategy.close("MacdLE", comment="Close Long")
//if (ta.crossunder(delta, 0))
// strategy.entry("MacdSE", strategy.short, comment="MacdSE")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)