
Strategi ini adalah sistem perdagangan reversal tren yang didasarkan pada garis rata-rata dan MACD. Ini menggabungkan indeks cepat moving average (EMA), moving average sederhana (SMA) dan MACD untuk mendapatkan keuntungan dengan menangkap peluang pembelian dalam perubahan tren pasar. Strategi ini berfokus pada fitur teknis seperti harga yang melanggar garis rata-rata, MACD berbalik di bagian bawah bawah sumbu nol, sehingga melakukan penataan ketika pasar akan bergeser.
Strategi ini menggunakan EMA ((10) dan MA ((20) dua garis rata sebagai acuan untuk menilai tren, dan digabungkan dengan MACD ((12,26,9) untuk konfirmasi sinyal. Secara khusus, sinyal masuk harus memenuhi persyaratan berikut:
Strategi ini dengan menggunakan kombinasi sistem garis rata dan indikator MACD, membangun sistem perdagangan reversal tren yang relatif lengkap. Meskipun ada beberapa risiko keterlambatan dan sinyal palsu, namun dengan optimasi parameter yang masuk akal dan langkah-langkah pengendalian risiko, masih memiliki nilai aplikasi nyata yang baik.
/*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)