Chiến lược giao dịch robot dừng lỗ và dừng lãi ATR dựa trên vùng hành động CDC

TA EMA ATR
Ngày tạo: 2024-06-03 16:19:32 sửa đổi lần cuối: 2024-06-03 16:19:32
sao chép: 3 Số nhấp chuột: 647
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch robot dừng lỗ và dừng lãi ATR dựa trên vùng hành động CDC

Tổng quan

Chiến lược này là một chiến lược robot giao dịch dựa trên khu vực hoạt động của CDC. Nó sử dụng trung bình di chuyển chỉ số 12 chu kỳ và 26 chu kỳ (EMA) để xác định xu hướng thị trường khi EMA ngắn hạn làm nhiều hơn EMA dài hạn, thay vào đó là tháo lỗ. Chiến lược này sử dụng chiều rộng sóng thực trung bình (ATR) để thiết lập mức dừng và dừng động.

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

  1. Tính EMA 12 chu kỳ và 26 chu kỳ để xác định xu hướng thị trường.
  2. Tính toán ATR để thiết lập mức dừng động và mức dừng lỗ.
  3. Khi EMA ngắn hạn ở trên EMA dài hạn, hãy gửi tín hiệu mua và đặt nhiều hơn.
  4. Khi EMA ngắn hạn ở dưới EMA dài hạn, hãy gửi tín hiệu bán và mở lệnh trượt.
  5. Mức dừng được xác định dựa trên ATR và một số nhân, khi giá đạt đến mức dừng.
  6. Mức dừng lỗ được cố định là 5% của giá đóng cửa hiện tại, khi giá đạt đến mức dừng lỗ.

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

  1. Sử dụng EMA để nắm bắt xu hướng thị trường, có thể thích ứng hiệu quả với các môi trường thị trường khác nhau.
  2. ATR được sử dụng để thiết lập mức dừng động, bảo vệ lợi nhuận tốt hơn.
  3. Mức dừng lỗ cố định giúp kiểm soát rủi ro, hạn chế tổn thất trong phạm vi chấp nhận được.
  4. Cấu trúc mã rõ ràng, dễ hiểu và sửa đổi, phù hợp để tối ưu hóa hơn nữa.

Rủi ro chiến lược

  1. EMA là một chỉ số chậm trễ, có thể phát ra tín hiệu sai khi thị trường thay đổi nhanh chóng.
  2. Mức ATR có thể không bảo vệ lợi nhuận kịp thời khi thị trường biến động lớn.
  3. Trong một số trường hợp, mức dừng cố định có thể dẫn đến việc xóa vị trí sớm và bỏ lỡ lợi nhuận tiềm năng.
  4. Chiến lược này không tính đến chi phí giao dịch và điểm trượt, kết quả giao dịch thực tế có thể khác với kết quả đo lường.

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

  1. Cố gắng sử dụng các chỉ số xu hướng khác như MACD hoặc đường trung bình di chuyển để cải thiện độ chính xác của tín hiệu.
  2. Tối ưu hóa ATR và Stop Loss để thích ứng tốt hơn với các điều kiện thị trường khác nhau
  3. Tham gia các cơ chế dừng động, chẳng hạn như dừng theo dõi hoặc dừng dựa trên tỷ lệ biến động, để kiểm soát rủi ro tốt hơn.
  4. Cân nhắc chi phí giao dịch và điểm trượt, chọn loại giao dịch phù hợp và thời gian giao dịch để cải thiện hiệu suất thực tế của chiến lược.

Tóm tắt

Chiến lược này là một chiến lược robot giao dịch dừng lỗ ATR dựa trên khu vực hoạt động CDC, sử dụng EMA để nắm bắt xu hướng thị trường, ATR để thiết lập mức dừng động và sử dụng phần trăm dừng lỗ cố định để kiểm soát rủi ro. Mặc dù chiến lược này có một số ưu điểm, nhưng vẫn có một số rủi ro và không gian cải tiến.

Mã nguồn chiến lược
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CDC Action Zone Trading Bot with ATR for Take Profit and 5% Stop Loss", overlay=true)

// ดึงข้อมูลราคาปิด
close_price = close

// คำนวณเส้น EMA 12 และ EMA 26
ema12 = ta.ema(close_price, 12)
ema26 = ta.ema(close_price, 26)

// คำนวณ ATR
atr_length = input.int(14, title="ATR Length")
atr = ta.atr(atr_length)

// กำหนด Multiplier สำหรับ ATR Trailing Stoploss
mult_atr_stoploss = input.float(2.5, title="ATR Stoploss Multiplier")

// คำนวณ ATR Trailing Stoploss
prev_stoploss = close_price
for i = 1 to 10
    prev_stoploss := math.max(prev_stoploss, high[i] - mult_atr_stoploss * atr)

// กำหนด Take Profit เป็น ATR Trailing Stoploss
takeProfitPercent = input.float(10, title="Take Profit (%)") / 100
takeProfit = close_price + (close_price - prev_stoploss) * takeProfitPercent

// กำหนด Stop Loss เป็น 5% ของราคาปิดปัจจุบัน
stopLossPercent = input.float(5, title="Stop Loss (%)") / 100
stopLoss = close_price * stopLossPercent

// กำหนดสีแท่งกราฟ
buyColor = input.color(color.green, title="Buy Color")
sellColor = input.color(color.red, title="Sell Color")
neutralColor = input.color(color.gray, title="Neutral Color")
color = if (ema12 > ema26)
    buyColor
else if (ema12 < ema26)
    sellColor
else
    neutralColor

// สัญญาณ Buy
buySignal = (color == buyColor) and (color[1] != buyColor)

// สัญญาณ Sell
sellSignal = (color == sellColor) and (color[1] != sellColor)

// เปิด Position Long
if (buySignal)
    strategy.entry("Long", strategy.long)

// เปิด Position Short
if (sellSignal)
    strategy.entry("Short", strategy.short)

// ปิด Position เมื่อถึง Take profit
if (strategy.position_size > 0 and close_price > takeProfit)
    strategy.exit("Long", profit=takeProfit)

// ปิด Position เมื่อถึง Stop loss
if (strategy.position_size > 0 and close_price < stopLoss)
    strategy.exit("Long", loss=stopLoss)

// ปิด Position เมื่อถึง Take profit
if (strategy.position_size < 0 and close_price < takeProfit)
    strategy.exit("Short", profit=takeProfit)

// ปิด Position เมื่อถึง Stop loss
if (strategy.position_size < 0 and close_price > stopLoss)
    strategy.exit("Short", loss=stopLoss)