
Strategi ini adalah sistem perdagangan berbalik arah berdasarkan garis rata dan MACD. Ia menggabungkan indeks bergerak cepat (EMA), purata bergerak sederhana (SMA) dan MACD untuk memperoleh keuntungan dengan menangkap peluang pembelian dalam perubahan trend pasaran. Strategi ini memfokuskan pada ciri-ciri teknikal seperti harga yang melanggar garis rata-rata, MACD berbalik arah di bawah sumbu sifar, dan dengan itu diletakkan di pasaran ketika perubahan akan berlaku.
Strategi ini menggunakan EMA ((10) dan MA ((20) sebagai penanda aras untuk menentukan trend, dan digabungkan dengan MACD ((12,26,9) untuk pengesahan isyarat. Secara khusus, isyarat masuk perlu memenuhi syarat berikut:
Strategi ini menggunakan sistem garis rata dan penunjuk MACD, untuk membina sistem perdagangan pembalikan trend yang agak lengkap. Walaupun terdapat risiko ketinggalan dan isyarat palsu, tetapi dengan pengoptimuman parameter yang munasabah dan langkah-langkah kawalan risiko, ia masih mempunyai nilai aplikasi yang baik di lapangan.
/*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)