
이 전략은 평균선과 MACD 지표에 기반한 트렌드 역전 거래 시스템이다. 이 전략은 빠른 지수 이동 평균 ((EMA), 간단한 이동 평균 ((SMA) 과 MACD 지표를 결합하여 시장 추세 변화의 구매 기회를 포착하여 수익을 얻는다. 이 전략은 주로 가격의 평균선 돌파, MACD 지표의 0 축 아래의 바닥 역전과 같은 기술적인 특성에 초점을 맞추어 시장이 전환 할 때 배치된다.
이 전략은 EMA ((10) 와 MA ((20) 를 양평선으로 트렌드를 판단하는 기준으로 사용하고 MACD 지표 ((12,26,9) 와 결합하여 신호 확인을 수행한다. 구체적으로, 입시 신호는 다음과 같은 조건을 동시에 충족해야합니다.
이 전략은 평선 시스템과 MACD 지표의 조합을 통해 비교적 완전한 트렌드 역전 거래 시스템을 구축한다. 약간의 지연과 가짜 신호 위험이 있지만, 합리적인 파라미터 최적화 및 위험 제어 조치를 통해 여전히 실전 응용 가치가 있다. 실전에서 사용할 때, 시장 환경과 개인 위험 선호와 결합하여 전략 파라미터를 타겟 조정하는 것이 좋습니다.
/*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)