Chiến lược theo xu hướng đột phá ba đường kết hợp với hệ thống lọc động EMA và quản lý rủi ro ATR

EMA ATR 3LS
Ngày tạo: 2025-02-18 15:30:08 sửa đổi lần cuối: 2025-02-18 15:30:08
sao chép: 1 Số nhấp chuột: 353
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng đột phá ba đường kết hợp với hệ thống lọc động EMA và quản lý rủi ro ATR

Tổng quan

Chiến lược này là một hệ thống giao dịch theo dõi xu hướng hình dạng phá vỡ ba đường trong phân tích kỹ thuật vẽ đồ thị Nhật Bản. Quản lý rủi ro động, tăng độ tin cậy của mô hình phá vỡ ba đường truyền thống bằng cách kết hợp chỉ số trung bình di chuyển ((EMA) làm bộ lọc xu hướng và chỉ số sóng thực ((ATR)). Chiến lược này không chỉ có thể nắm bắt các điểm biến đổi xu hướng của thị trường, mà còn có thể kiểm soát rủi ro hiệu quả, phù hợp cho giao dịch xu hướng trung và dài hạn.

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

Lý luận cốt lõi của chiến lược dựa trên một số yếu tố quan trọng sau đây: Đầu tiên, xác định hình thức đột phá ba đường, tức là một đường ăn ngược lớn xuất hiện sau ba đường dây liên tiếp cùng màu. Thứ hai, sử dụng EMA làm bộ lọc xu hướng, chỉ xem xét nhiều tín hiệu khi giá nằm trên EMA và xem xét tín hiệu trống khi nằm dưới EMA. Cuối cùng, sử dụng động lực chỉ số ATR để thiết lập vị trí dừng lỗ, cụ thể là thiết lập dừng lỗ gấp 2 lần ATR và thiết lập dừng lỗ gấp 1 lần ATR.

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

  1. Kết hợp xác nhận xu hướng định hướng và nhận dạng hình thức đảo ngược, tăng độ tin cậy của tín hiệu giao dịch
  2. Thiết lập dừng lỗ động có thể điều chỉnh theo biến động của thị trường
  3. Chiến lược logic rõ ràng, tham số có thể điều chỉnh mạnh mẽ, dễ dàng tối ưu hóa theo các đặc điểm thị trường khác nhau
  4. Giảm đáng kể các tín hiệu giả thông qua bộ lọc EMA, tăng sự ổn định của chiến lược
  5. Hệ thống quản lý rủi ro đầy đủ, bao gồm quản lý tài chính và hệ thống ngăn chặn thiệt hại

Rủi ro chiến lược

  1. Có thể tạo ra các tín hiệu sai thường xuyên trong thị trường biến động, dẫn đến lỗ hổng liên tục
  2. EMA có thể không phản ứng kịp thời khi có sự thay đổi đột ngột
  3. Cài đặt dừng lỗ ATR với số nhân cố định có thể không phù hợp với tất cả các môi trường thị trường
  4. Chiến lược phụ thuộc vào hướng xu hướng rõ ràng và có thể hoạt động kém trong thời gian không có xu hướng
  5. Tính chính xác của thời gian vào cửa bị ảnh hưởng nhiều bởi lựa chọn chu kỳ K-line

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

  1. Tiếp tục giới thiệu các chỉ số giao thông để hỗ trợ xác nhận và tăng độ tin cậy tín hiệu
  2. Điều chỉnh các tham số EMA theo các biến động của chu kỳ thị trường khác nhau để tăng khả năng thích ứng
  3. Tăng bộ lọc cường độ xu hướng, như chỉ số ADX, giảm tín hiệu giả trong thị trường chấn động
  4. Tối ưu hóa Stop Loss Coefficient, có thể xem xét điều chỉnh động theo tỷ lệ biến động
  5. Thêm cơ chế nhận diện môi trường thị trường, sử dụng các thiết lập tham số khác nhau trong các trạng thái thị trường khác nhau

Tóm tắt

Đây là một hệ thống chiến lược kết hợp lý thuyết cổ điển của phân tích kỹ thuật và tư tưởng giao dịch định lượng hiện đại. Bằng cách kết hợp hình thức đột phá ba đường truyền thống với theo dõi xu hướng và quản lý rủi ro, một hệ thống giao dịch tương đối hoàn chỉnh được xây dựng. Mặc dù có một số hạn chế, nhưng bằng cách cung cấp hướng tối ưu hóa, bạn có thể nâng cao hơn nữa sự ổn định và thích ứng của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy with ATR and EMA Filter',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

// ATR and EMA Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & EMA')
emaLength = input.int(title='EMA Length', defval=200, group='ATR & EMA')

// ### 3 Line Strike
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 zelené sviečky, potom veľká červená sviečka (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 červené sviečky, potom veľká zelená sviečka (engulfing).")

// -----------------------------------------------------------------------------
//                          CALCULATIONS
// -----------------------------------------------------------------------------

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate EMA
ema = ta.ema(close, emaLength)

// Helper Functions
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

isEngulfing(checkBearish) =>
    sizePrevCandle = close[1] - open[1]
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)

    if checkBearish
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

is3LSBear() =>
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    is3LineSetup and isBearishEngulfing()

is3LSBull() =>
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    is3LineSetup and isBullishEngulfing()

// Signals
is3LSBearSig = is3LSBear() and close < ema
is3LSBullSig = is3LSBull() and close > ema

// Take Profit and Stop Loss
longTP = close + 2 * atr
longSL = close - 1 * atr
shortTP = close - 2 * atr
shortSL = close + 1 * atr

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY PRÍKAZY
// -----------------------------------------------------------------------------
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")
    strategy.exit("Exit Bull", from_entry="3LS_Bull", limit=longTP, stop=longSL)

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")
    strategy.exit("Exit Bear", from_entry="3LS_Bear", limit=shortTP, stop=shortSL)