MACD 골든 크로스와 데스 크로스 전략

저자:차오장, 날짜: 2024-04-26
태그:MACDEMADIFDEA

img

전반적인 설명

이 전략은 거래 신호를 생성하기 위해 MACD 지표에서 DIF 라인과 DEA 라인의 교차를 사용합니다. DIF 라인이 DEA 라인의 위를 넘을 때 긴 신호를 생성합니다. DIF 라인이 DEA 라인의 아래를 넘을 때 짧은 신호를 생성합니다. 이 전략의 백테스팅 결과는 BTCUSDT 거래 쌍에서 승률이 약 40%이며 연간 수익률은 1.05입니다. 그러나 보유 자산의 수가 지속적으로 증가하도록 만들므로 독립적인 중재 전략으로 사용할 수 없습니다.

전략 원칙

  1. 빠른 기하급수적 이동 평균 (EMA) 과 느린 기하급수적 이동 평균 (EMA) 을 계산합니다.
  2. 빠른 EMA와 느린 EMA의 차이인 DIF 라인을 계산합니다.
  3. DEA 라인을 계산합니다. DIF 라인의 EMA입니다.
  4. MACD 히스토그램을 계산합니다. DIF 라인과 DEA 라인의 차이입니다.
  5. DIF 라인이 DEA 라인의 위를 넘으면 긴 신호를 생성하고 긴 포지션을 개척합니다.
  6. DIF 라인이 DEA 라인 아래를 넘을 때, 짧은 신호를 생성하고, 긴 포지션을 닫고, 짧은 포지션을 열어야 합니다.
  7. 반대 크로스오버 신호가 다시 나타나면 현재 포지션을 닫고 반대 방향으로 포지션을 열어야 합니다.

전략적 장점

  1. 이 전략은 널리 사용되는 MACD 지표를 사용합니다. 이해하기 쉽고 구현하기 쉽습니다.
  2. 전략 논리는 명확하고 거래 신호는 명확합니다.
  3. 트렌딩 시장에 적합하며 시장의 주요 트렌드를 추적 할 수 있습니다.

전략 위험

  1. 이 전략의 승률은 낮습니다. 40%에 불과합니다. 즉 거래의 60%가 손실될 수 있습니다.
  2. 이 전략은 보유한 자산의 수가 지속적으로 증가하도록 만들 것이고, 이는 추가적인 위험 노출을 가져올 수 있습니다.
  3. 변동적인 시장에서 이 전략은 높은 거래 비용을 초래하는 빈번한 거래 신호를 생성할 수 있습니다.
  4. 이 전략은 상당한 손실을 초래할 수 있는 스톱 로스 및 포지션 관리와 같은 위험 관리를 고려하지 않습니다.

전략 최적화 방향

  1. 변동성 있는 시장에서 거래를 피하기 위해 장기 이동 평균과 같은 트렌드 필터를 도입하십시오.
  2. MACD 지표의 매개 변수를 최적화하십시오. 예를 들어 빠른 EMA, 느린 EMA 및 신호 라인의 기간과 같은 다른 시장 조건에 적응하기 위해.
  3. 잠재적인 손실을 통제하기 위해 스톱 로스 및 포지션 관리와 같은 위험 관리 조치를 추가합니다.
  4. 다른 기술 지표 또는 근본 분석과 결합하여 거래 신호의 신뢰성을 향상시킵니다.

요약

MACD 골든 크로스 및 데스 크로스 전략은 트렌딩 시장에 적합한 간단하고 이해하기 쉬운 거래 전략입니다. 그러나이 전략의 승률은 낮으며 리스크 관리 조치가 부족하므로 추가 최적화 및 개선이 필요합니다. 트렌드 필터, 최적화 매개 변수, 리스크 관리 추가 및 다른 분석 방법과 결합하여 이 전략의 성능과 신뢰성을 향상시킬 수 있습니다. 그럼에도 불구하고이 전략은 여전히 독립적인 중재 전략으로 사용할 수 없으며 더 나은 거래 결과를 얻기 위해 다른 전략과 결합해야합니다.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// @description 该策略使用 MACD DIF 线与 EDA 线产生金叉与死叉时进行入场与出场操作, 回测后发现胜率约 40%, BTCUSDT 年化利率 1.05, 同时会导致持有的资产数量不断上升, 无法作为一个独立的套利策略进行使用.

strategy("MACD 金叉策略", overlay=true)

fastLength = input(12, "快线长度")
slowLength = input(26, "慢线长度")
MACDLength = input(9, "MACD 均线长度")

deltaIncreaseOver0 = input(color.green,'MACD 柱在 0 线以上增长')
deltaIncreaseUnder0 = input(color.rgb(153, 230, 156),'MACD 柱在 0 线以下增长')

deltaDecreaseOver0 = input(color.orange,'MACD 柱在 0 线以上下跌')
deltaDecreaseUnder0 = input(color.red,'MACD 柱在 0 线以下下跌')

buySellEnabled = input(true, '是否显示入场与出场信号')

// @variable 做多轮数
var longRound = 0
// @variable 做空轮数
var shortRound = 0

DIF = ta.ema(close, fastLength) - ta.ema(close, slowLength) // 快慢均线差值
EDA = ta.ema(DIF, MACDLength) // DIF 线的 EMA 均线
delta = DIF - EDA // MACD 柱高度

// plot(0, 'Zero', color.black)
plot(DIF,'DIF', color.yellow)
plot(EDA, "EDA", color.purple)

isDeltaIncreasing = delta[1] < delta
isDeltaOver0 = delta > 0
deltaColor = isDeltaIncreasing ? (isDeltaOver0? deltaIncreaseOver0: deltaIncreaseUnder0) :( isDeltaOver0? deltaDecreaseOver0: deltaDecreaseUnder0)
plot(delta, "Delta", deltaColor, style = plot.style_columns)

isDeltaV = delta > delta[1] and delta[2] > delta[1]
isDeltaA = delta < delta[1] and delta[2] < delta[1]

longBuy(round) =>
	entry = str.format("做多买入 {0}",round)
	// log.info(str.format("{0} {1}",entry,close))
	strategy.entry(entry, strategy.long, comment=entry)

longSell(round) =>
	entry = str.format("做多买入 {0}",round)
	exit = str.format("做多卖出 {0}",round)
	// log.info(str.format("{0} {1}",exit,close))
	strategy.close(entry, comment=exit)		

shortSell(round) =>
	entry = str.format("做空卖出 {0}",round)
	// log.info(str.format("{0} {1}",entry,close))
	strategy.entry(entry, strategy.short, comment= entry) 

shortBuy(round) =>
	entry = str.format("做空卖出 {0}",round)
	exit = str.format("做空买入 {0}",round)
	// log.info(str.format("{0} {1}",exit,close))
	strategy.close(entry, comment=exit)		

if (buySellEnabled) 
	if (ta.crossunder(DIF, EDA))
		longSell(longRound)
	if (ta.crossover(DIF, EDA))
		longRound := longRound + 1
		longBuy(longRound)

		
		

관련

더 많은