Tài nguyên đang được tải lên... tải...

Chiến lược tăng cường động lực xu hướng giá-kích thước

Tác giả:ChaoZhang, Ngày: 2025-01-10 15:40:37
Tags:MACDATRMAEMASMA

 Enhanced Price-Volume Trend Momentum Strategy

Tổng quan

Chiến lược này là một hệ thống giao dịch dựa trên chỉ số MACD và mối quan hệ giá - khối lượng, xác định các điểm đảo ngược xu hướng thị trường bằng cách quan sát những thay đổi trong các mô hình biểu đồ MACD. Chiến lược sử dụng một cơ chế lấy lợi nhuận và dừng lỗ năng động bằng cách sử dụng chỉ số ATR để thích nghi với biến động thị trường và kiểm soát rủi ro hiệu quả.

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

Lý thuyết cốt lõi của chiến lược được xây dựng dựa trên sự thay đổi màu sắc của biểu đồ MACD, kết hợp với hệ thống EMA và SMA di chuyển kép. Khi biểu đồ MACD chuyển từ màu tối sang màu sáng, nó chỉ ra sự thay đổi động lực, kích hoạt hệ thống thực hiện giao dịch. Cụ thể: 1. Tính toán giá trị MACD bằng cách sử dụng trung bình di chuyển nhanh ((12) và chậm ((26) 2. MACD trơn tru với đường tín hiệu 9 giai đoạn 3. Theo dõi sự thay đổi độ sâu màu sắc trong biểu đồ MACD Đặt mục tiêu lợi nhuận năng động và dừng lỗ bằng cách sử dụng ATR 14 giai đoạn

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

  1. Sự kết hợp khoa học của các chỉ số, với MACD nắm bắt hiệu quả xu hướng và ATR thích nghi với biến động
  2. Thiết lập lợi nhuận và dừng lỗ linh hoạt có thể điều chỉnh thông qua các tham số nhân cho các đặc điểm thị trường khác nhau
  3. Các tín hiệu giao dịch rõ ràng với thời gian đầu vào trực quan dựa trên sự thay đổi màu sắc biểu đồ
  4. Phù hợp với cả giao dịch dài và ngắn, tăng tính linh hoạt chiến lược và cơ hội lợi nhuận

Rủi ro chiến lược

  1. MACD như một chỉ số chậm có thể bỏ lỡ các điểm nhập khẩu tối ưu trong các biến động thị trường nhanh chóng
  2. Có thể tạo ra tín hiệu sai trong các thị trường khác nhau, dẫn đến giao dịch thường xuyên
  3. Cài đặt nhân ATR không chính xác có thể dẫn đến việc dừng quá lỏng hoặc quá chặt
  4. Cần quản lý tiền đúng cách để tránh tổn thất quá mức trong giao dịch đơn

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

  1. Tích hợp các tín hiệu xác nhận khối lượng để cải thiện độ tin cậy tín hiệu
  2. Thêm bộ lọc xu hướng để giảm tín hiệu sai trong các thị trường khác nhau
  3. Tối ưu hóa tỷ lệ tăng lợi nhuận và dừng lỗ với điều chỉnh năng động dựa trên các khung thời gian khác nhau
  4. Bao gồm lọc biến động để giảm tần suất giao dịch trong các giai đoạn biến động cao
  5. Xem xét việc thực hiện các bộ lọc thời gian để tránh giao dịch trong thời gian bất lợi

Tóm lại

Đây là một chiến lược toàn diện kết hợp chỉ số phân tích kỹ thuật cổ điển MACD với các phương pháp kiểm soát rủi ro hiện đại. Nó nắm bắt sự thay đổi động lực thị trường bằng cách quan sát sự thay đổi mô hình biểu đồ MACD trong khi sử dụng ATR để kiểm soát rủi ro năng động. Chiến lược được thiết kế tốt với logic hoạt động rõ ràng và giá trị thực tế. Thông qua tối ưu hóa và cải tiến liên tục, chiến lược này cho thấy hứa hẹn cho hiệu suất tốt hơn trong điều kiện giao dịch thực tế.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy(title="軒割MACD 空心量能不足策略", shorttitle="軒割MACD 空心量能不足策略", overlay=true)

//=== 1) 參數 ===//
fast_length   = input.int(title="Fast Length",        defval=12)
slow_length   = input.int(title="Slow Length",        defval=26)
src           = input.source(title="MACD Source",     defval=close)
signal_length = input.int(title="Signal Smoothing",   defval=9,  minval=1, maxval=50)
sma_source    = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA","EMA"])
sma_signal    = input.string(title="Signal MA Type",     defval="EMA", options=["SMA","EMA"])

// 啟用多單 / 空單
useLong       = input.bool(title="啟用多單?(底部紅色)", defval=true)
useShort      = input.bool(title="啟用空單?(頂部綠色)", defval=true)

// 止盈倍數 (1~10倍 ATR)
tpATRmult     = input.int(title="止盈 ATR 倍數 (1~10)", defval=10, minval=1, maxval=500)
// 止損倍數 (1~10倍 ATR)
slATRmult     = input.int(title="止損 ATR 倍數 (1~10)", defval=3, minval=1, maxval=500)

//=== 2) MACD 計算 ===//
fast_ma  = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma  = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd     = fast_ma - slow_ma
signal   = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist     = macd - signal

//=== 3) 判斷深色/淺色(用於變化訊號)===//
darkGreen  = hist >= 0 and hist <= hist[1]   // 上方,柱子縮小或持平
lightGreen = hist >= 0 and hist >  hist[1]   // 上方,柱子變大
darkRed    = hist <  0 and hist <= hist[1]   // 下方,柱子(絕對值)變大或持平
lightRed   = hist <  0 and hist >  hist[1]   // 下方,柱子(絕對值)變小

// 由「深 → 淺」是否發生在上一根
colorChangeToLightGreen = darkGreen[1] and lightGreen
colorChangeToLightRed   = darkRed[1]   and lightRed

//=== 4) ATR 計算 (用於止盈止損) ===//
atrPeriod  = 14
atrValue   = ta.atr(atrPeriod)

//=== 5) 多單策略:深紅 → 淺紅 (底部紅色) ===//
if useLong and colorChangeToLightRed
    // 以當前 K 線 low - ATR倍數 作為多單止損
    longStopLoss   = low - (slATRmult * atrValue)
    // 以當前 close + ATR倍數 作為多單止盈
    longTakeProfit = close + (tpATRmult * atrValue)

    // 進多單
    strategy.entry("Long Entry", strategy.long, comment="多", qty=1)
    strategy.exit("平多", "Long Entry", stop=longStopLoss, limit=longTakeProfit)

//=== 6) 空單策略:深綠 → 淺綠 (頂部綠色) ===//
if useShort and colorChangeToLightGreen
    // 以當前 K 線 high + ATR倍數 作為空單止損
    shortStopLoss   = high + (slATRmult * atrValue)
    // 以當前 close - ATR倍數 作為空單止盈
    shortTakeProfit = close - (tpATRmult * atrValue)

    // 進空單
    strategy.entry("Short Entry", strategy.short, comment="空", qty=1)
    strategy.exit("平空", "Short Entry", stop=shortStopLoss, limit=shortTakeProfit)

//=== 7) 繪製 MACD 與直方圖 ===//
hline(0, "Zero Line", color=color.new(#787B86, 50))

// 長條圖顏色:
//   - 上方 (hist >= 0) 時:hist 比前一根大 (淺綠) 或小 (深綠)
//   - 下方 (hist < 0)  時:hist 比前一根大 (淺紅) 或小 (深紅)
plot(hist,title="Histogram",style=plot.style_columns,color = hist >= 0? (hist > hist[1]  ? #26A69A : #B2DFDB)   : (hist > hist[1]  ? #FFCDD2 : #FF5252)  )

// 繪製 MACD 與 Signal
plot(macd,   title="MACD",   color=#2962FF)
plot(signal, title="Signal", color=#FF6D00)


Có liên quan

Thêm nữa