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

Chiến lược MACD nâng cao với Martingale hạn chế

Tác giả:ChaoZhang, Ngày: 2024-05-11 17:24:43
Tags:MACDMA

img

Tổng quan

Chiến lược này kết hợp chỉ số MACD với phương pháp quản lý tiền Martingale hạn chế để nắm bắt các cơ hội giao dịch khi xu hướng thị trường thay đổi. Một tín hiệu mua được tạo ra khi đường nhanh MACD vượt qua đường chậm, và một tín hiệu bán được tạo ra khi đường nhanh vượt qua đường chậm. Đồng thời, chiến lược sử dụng phương pháp Martingale hạn chế để kiểm soát rút tiền, với tối đa 3 vị trí bổ sung. Chiến lược đặt mức lợi nhuận cố định và dừng lỗ 1% cho mỗi giao dịch.

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

  1. Tính toán đường nhanh, đường chậm và đường tín hiệu của chỉ số MACD.
  2. Xác định sự giao thoa của các đường nhanh và chậm, đi dài trên một giao thoa tăng và ngắn trên một giao thoa giảm.
  3. Thiết lập khối lượng giao dịch cố định (0,01) cho mỗi giao dịch.
  4. ghi lại lợi nhuận ròng của giao dịch trước đó.
  5. Nếu lợi nhuận ròng hiện tại thấp hơn giao dịch trước và số lượng các vị trí bổ sung ít hơn 3, tăng gấp đôi khối lượng giao dịch tiếp theo và tăng số lượng các vị trí bổ sung thêm 1; nếu không, đặt lại khối lượng giao dịch và số lượng các vị trí bổ sung.
  6. Đối với mỗi vị trí dài, lấy lợi nhuận khi giá tăng 1% và dừng lỗ khi giảm 1%; ngược lại đối với các vị trí ngắn.
  7. Chọn điểm mua và bán trên biểu đồ.

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

  1. Kết hợp chỉ số theo xu hướng MACD với quản lý tiền Martingale, có thể nắm bắt tốt hơn thị trường xu hướng.
  2. Thiết lập mức lợi nhuận cố định và mức dừng lỗ để kiểm soát rủi ro giao dịch cá nhân.
  3. Sử dụng giới hạn vị trí Martingale để đạt được lợi nhuận cao hơn khi xu hướng tiếp tục.
  4. Giới hạn số lượng tối đa các vị trí bổ sung là 3, tránh rủi ro về kích thước vị trí quá lớn dẫn đến việc phá vỡ tài khoản.
  5. Các dấu hiệu mua và bán tín hiệu trên biểu đồ để dễ dàng quan sát hiệu suất chiến lược.

Rủi ro chiến lược

  1. Chỉ số MACD có thể gặp sự khác biệt giữa tín hiệu và giá, dẫn đến đánh giá sai.
  2. Tỷ lệ lợi nhuận cố định và tỷ lệ dừng lỗ có thể bỏ lỡ cơ hội lợi nhuận lớn hơn hoặc phải chịu tổn thất lớn hơn.
  3. Mặc dù kích thước vị trí Martingale được giới hạn ở mức 3 lần, nhưng vẫn có nguy cơ bùng nổ tài khoản khi trải qua các lỗ liên tiếp trên các thị trường hỗn loạn.
  4. Chiến lược không xem xét biến động thị trường bất thường, chẳng hạn như khoảng trống đột ngột, có thể dẫn đến không thể thực hiện như mong đợi.

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

  1. Xem xét việc giới thiệu các chỉ số xác nhận xu hướng, chẳng hạn như MA, để lọc các tín hiệu MACD.
  2. Tối ưu hóa các cài đặt lấy lợi nhuận và dừng lỗ, chẳng hạn như sử dụng ATR hoặc tỷ lệ phần trăm cho các lỗ dừng động.
  3. Tối ưu hóa số lượng và tỷ lệ các vị trí bổ sung để kiểm soát rủi ro rút vốn.
  4. Thiết lập các cơ chế để đối phó với các điều kiện thị trường bất thường, chẳng hạn như đình chỉ giao dịch khi giá giảm.
  5. Xem xét việc giới thiệu kích thước vị trí để điều chỉnh động các vị trí dựa trên biến động thị trường.

Tóm lại

Chiến lược này nắm bắt xu hướng thông qua chỉ số MACD trong khi sử dụng Martingale hạn chế để kiểm soát giảm giá, có thể đạt được kết quả tốt trong thị trường xu hướng. Tuy nhiên, chiến lược cũng có một số rủi ro nhất định, chẳng hạn như thất bại tín hiệu và lỗ dừng cố định. Bằng cách giới thiệu các chỉ số khác, tối ưu hóa cài đặt tham số, kích thước vị trí và các phương pháp khác, độ mạnh mẽ và lợi nhuận của chiến lược này có thể được cải thiện hơn nữa.


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

//@version=5
strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=100)

// MACD 설정
fastLength = 15
slowLength = 30
signalSmoothing = 9
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.01
var int martingaleCount = 0 // 마틴게일 카운트
var float lastTradeResult = 0

// 매수 및 매도 조건
longCondition = ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(macdLine, signalLine)

// 매수 신호
if (longCondition)
    strategy.entry("Long", strategy.long, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 매도 신호
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 익절 및 손절 조건
strategy.close("Long", when=(close / strategy.position_avg_price >= 1.01))
strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01))
strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99))
strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99))

// 마틴게일 전략 적용
if (strategy.netprofit < lastTradeResult)
    if (martingaleCount < 3)
        contractSize := contractSize * 2
        martingaleCount := martingaleCount + 1
    else
        contractSize := 0.01
        martingaleCount := 0
else
    contractSize := 0.01
    martingaleCount := 0

// 매수, 매도 포인트 화살표로 표시
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

Có liên quan

Thêm nữa