Chiến lược giao cắt vàng và giao cắt chết của MACD

MACD EMA DIF DEA
Ngày tạo: 2024-04-26 12:08:24 sửa đổi lần cuối: 2024-04-26 12:08:24
sao chép: 0 Số nhấp chuột: 1107
1
tập trung vào
1617
Người theo dõi

Chiến lược giao cắt vàng và giao cắt chết của MACD

Tổng quan

Chiến lược này sử dụng đường DIF và đường DEA trong chỉ số MACD để tạo ra tín hiệu giao dịch. Khi đường DIF đi từ dưới lên qua đường DEA, nó tạo ra tín hiệu nhiều; Khi đường DIF đi từ trên xuống qua đường DEA, nó tạo ra tín hiệu lỗ. Kết quả đánh giá của chiến lược cho thấy tỷ lệ thắng khoảng 40% trên cặp giao dịch BTCUSDT, với lợi nhuận hàng năm là 1.05, nhưng sẽ dẫn đến số lượng tài sản đang nắm giữ tăng lên, do đó không thể sử dụng như một chiến lược tháo gỡ độc lập.

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

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

Lợi thế chiến lược

  1. Chiến lược này sử dụng các 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 rõ ràng, tín hiệu giao dịch rõ ràng.
  3. Nó được sử dụng cho các thị trường có xu hướng để theo dõi xu hướng chính của thị trường.

Rủi ro chiến lược

  1. Chiến lược này có tỷ lệ thành công thấp, chỉ 40%, có nghĩa là 60% các giao dịch có thể bị mất.
  2. Chiến lược này sẽ dẫn đến sự gia tăng số lượng tài sản được nắm giữ, điều này có thể dẫn đến các lỗ hổng rủi ro bổ sung.
  3. Trong một thị trường bất ổn, 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 tính đến 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 lớn.

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

  1. Tham gia bộ lọc xu hướng, chẳng hạn như trung bình di chuyển dài hạn, để tránh giao dịch trong thị trường bất ổn.
  2. Tối ưu hóa các tham số của chỉ số MACD, chẳng hạn như EMA nhanh, EMA chậm và chu kỳ của đường tín hiệu, để phù hợp 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 để tăng độ tin cậy của tín hiệu giao dịch.

Tóm tắt

Chiến lược MACD Gold Fork Dead Fork là một chiến lược giao dịch đơn giản và dễ hiểu, phù hợp với thị trường đang có xu hướng. Tuy nhiên, chiến lược này có tỷ lệ thắng thấp và thiếu các biện pháp quản lý rủi ro, do đó cần được tối ưu hóa và cải thiện hơn nữa. Hiệu suất và độ tin cậy của chiến lược có thể được cải thiện bằng cách giới thiệu bộ lọc xu hướng, tham số tối ưu hóa, 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.

Mã nguồn chiến lược
/*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)