Chiến lược MACD Golden Cross và Death Cross

Tác giả:ChaoZhang, Ngày: 2024-04-26 12:08:24
Tags:MACDEMADIFDEA

img

Tổng quan

Chiến lược này sử dụng sự chéo chéo giữa đường DIF và đường DEA trong chỉ số MACD để tạo ra tín hiệu giao dịch. Khi đường DIF vượt qua trên đường DEA, nó tạo ra tín hiệu dài; khi đường DIF vượt qua dưới đường DEA, nó tạo ra tín hiệu ngắn. Kết quả kiểm tra lại của chiến lược này cho thấy trên cặp giao dịch BTCUSDT, tỷ lệ thắng khoảng 40%, và lợi nhuận hàng năm là 1,05. Tuy nhiên, nó sẽ làm cho số lượng tài sản được giữ tăng liên tục, vì vậy nó không thể được sử dụng như một chiến lược trọng tài độc lập.

Nguyên tắc chiến lược

  1. Tính toán trung bình di chuyển theo cấp số nhân nhanh (EMA) và trung bình di chuyển theo cấp số nhân chậm (EMA).
  2. Tính toán đường DIF, đó là sự khác biệt giữa EMA nhanh và EMA chậm.
  3. Tính toán đường DEA, là đường EMA của đường DIF.
  4. Tính toán biểu đồ MACD, đó là sự khác biệt giữa đường DIF và đường DEA.
  5. Khi đường DIF vượt qua đường DEA, tạo ra tín hiệu dài và mở một vị trí dài.
  6. Khi đường DIF vượt qua dưới đường DEA, tạo tín hiệu ngắn, đóng vị trí dài và mở vị trí ngắn.
  7. Khi tín hiệu chéo ngược lại xuất hiện một lần nữa, đóng vị trí hiện tại và mở vị trí theo hướng ngược lại.

Ưu điểm chiến lược

  1. Chiến lược này sử dụng chỉ số MACD được sử dụng rộng rãi, dễ hiểu và thực hiện.
  2. Chiến lược logic là rõ ràng, và các tín hiệu giao dịch là rõ ràng.
  3. Nó phù hợp với các thị trường xu hướng và có thể theo dõi các xu hướng chính của thị trường.

Rủi ro chiến lược

  1. Tỷ lệ thắng của chiến lược này thấp, chỉ 40%, có nghĩa là 60% các giao dịch có thể thua.
  2. Chiến lược này sẽ làm cho số lượng tài sản được nắm giữ tăng liên tục, có thể mang lại rủi ro bổ sung.
  3. Trong một thị trường biến động, chiến lược này có thể tạo ra các tín hiệu giao dịch thường xuyên, dẫn đến chi phí giao dịch cao.
  4. Chiến lược này không xem xét quản lý rủi ro, chẳng hạn như dừng lỗ và quản lý vị trí, có thể dẫn đến tổn thất đáng kể.

Hướng dẫn tối ưu hóa chiến lược

  1. Thiết lập các bộ lọc xu hướng, chẳng hạn như trung bình động dài hạn, để tránh giao dịch trên thị trường biến động.
  2. Tối ưu hóa các thông số của chỉ số MACD, chẳng hạn như thời gian của EMA nhanh, EMA chậm và đường tín hiệu, để thích nghi với các điều kiện thị trường khác nhau.
  3. Thêm các biện pháp quản lý rủi ro, chẳng hạn như dừng lỗ và quản lý vị trí, để kiểm soát tổn thất tiềm ẩn.
  4. Kết hợp với các chỉ số kỹ thuật hoặc phân tích cơ bản khác để cải thiện độ tin cậy của tín hiệu giao dịch.

Tóm lại

Chiến lược MACD Golden Cross và Death Cross là một chiến lược giao dịch đơn giản và dễ hiểu phù hợp với các thị trường xu hướng. Tuy nhiên, tỷ lệ thắng của chiến lược này thấp, và nó thiếu các biện pháp quản lý rủi ro, vì vậy nó cần tối ưu hóa và cải thiện hơn nữa. Bằng cách giới thiệu các bộ lọc xu hướng, tối ưu hóa các tham số, thêm quản lý rủi ro và kết hợp với các phương pháp phân tích khác, hiệu suất và độ tin cậy của chiến lược này có thể được cải thiện. Tuy nhiên, chiến lược này vẫn không thể được sử dụng như một chiến lược trọng tài độc lập và cần được kết hợp với các chiến lược khác để có được kết quả giao dịch tốt hơn.


/*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)

		
		

Có liên quan

Thêm nữa