Chiến lược đột phá trung bình động kép

Tác giả:ChaoZhang, Ngày: 2024-01-24 14:49:29
Tags:

img

Tổng quan

Chiến lược Breakout Trung bình Di chuyển kép là một chiến lược giao dịch định lượng dựa trên trung bình di chuyển nhanh và trung bình di chuyển chậm. Nó sử dụng hai trung bình di chuyển theo cấp số nhân (EMA) với các khoảng thời gian khác nhau làm tín hiệu giao dịch. Khi EMA nhanh vượt qua trên EMA chậm, một tín hiệu mua được tạo ra. Khi EMA nhanh vượt qua dưới EMA chậm, một tín hiệu bán được tạo ra.

Chiến lược logic

Khái niệm cơ bản của chiến lược này là sử dụng trung bình di chuyển nhanh và trung bình di chuyển chậm để tạo ra tín hiệu giao dịch. Chiến lược xác định thời gian EMA nhanh là 12 ngày và thời gian EMA chậm là 26 ngày. Phương pháp tính toán là như sau:

  1. Tính toán AP động trung bình theo hàm số của mảng giá với khoảng thời gian 2 ngày
  2. Tính toán trung bình di chuyển nhanh nhanh dựa trên AP, với thời gian 12 ngày
  3. Tính toán trung bình di chuyển chậm chậm dựa trên AP, với khoảng thời gian 26 ngày
  4. So sánh trung bình di chuyển nhanh và chậm:
    1. Khi nhanh vượt qua chậm, đó là một tín hiệu tăng
    2. Khi nhanh vượt qua dưới chậm, nó là một tín hiệu giảm
  5. Xác định các tín hiệu giao dịch cụ thể kết hợp giá và mối quan hệ trung bình động:
    1. Tín hiệu tăng: Nhanh> Dần && AP> Nhanh
    2. Tín hiệu giảm: Nhanh

Sử dụng sự chéo chéo của trung bình di chuyển nhanh và chậm để xác định xu hướng thị trường và tạo ra tín hiệu giao dịch là một chiến lược di chuyển trung bình kép điển hình.

Phân tích lợi thế

Chiến lược phá vỡ trung bình di chuyển kép có những lợi thế sau:

  1. Chiến lược logic là đơn giản và rõ ràng, dễ hiểu và thực hiện
  2. Thời gian trung bình động có thể được điều chỉnh để thích nghi với môi trường thị trường khác nhau
  3. Cho phép cả các vị trí dài và ngắn để đạt được lợi nhuận cao hơn
  4. Các tín hiệu giao dịch chính xác hơn có thể được tạo ra bằng cách kết hợp giá và đường trung bình động
  5. Tính năng chậm trễ của đường trung bình động có thể lọc hiệu quả tiếng ồn thị trường

Phân tích rủi ro

Chiến lược phá vỡ trung bình di chuyển kép cũng có một số rủi ro:

  1. Nhiều tín hiệu sai có thể xảy ra khi thị trường bị giới hạn trong phạm vi
  2. Chiến lược trung bình động kép có thể gây ra sự phù hợp đường cong, bỏ qua những thay đổi về cấu trúc thị trường
  3. Chỉ dựa vào các chỉ số kỹ thuật là dễ bị phá vỡ giả, với nguy cơ mất mát

Giải pháp:

  1. Tối ưu hóa thời gian trung bình động để thích nghi tốt hơn với điều kiện thị trường hiện tại
  2. Xác nhận tín hiệu với các chỉ số khác như khối lượng để tránh đột phá giả
  3. Dùng các chiến lược theo xu hướng để kiểm soát tỷ lệ lợi nhuận/mất và giảm rủi ro

Hướng dẫn tối ưu hóa

Chiến lược phá vỡ trung bình di chuyển kép có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tìm kết hợp thời gian trung bình động phù hợp hơn để thích nghi với những thay đổi trên thị trường
  2. Thêm các chỉ số như âm lượng để lọc tín hiệu để đảm bảo tính hợp lệ
  3. Kết hợp các chỉ số cấu trúc thị trường để xác định xu hướng và điều chỉnh các tham số
  4. Sử dụng các đường trung bình động có thể tự động điều chỉnh các giai đoạn dựa trên những thay đổi trên thị trường
  5. Kết hợp các chiến lược dừng lỗ để kiểm soát rủi ro và bảo vệ vốn một cách hiệu quả

Kết luận

Chiến lược Breakout Trung bình Di chuyển kép là một chiến lược giao dịch định lượng đơn giản và thực tế. Nó có những lợi thế như logic và thực hiện dễ dàng, và cũng có một số vấn đề thích nghi thị trường. Chúng ta có thể làm cho nó trở thành một hệ thống giao dịch có lợi nhuận ổn định thông qua tối ưu hóa tham số, lọc tín hiệu, kiểm soát rủi ro vv. Nhìn chung, chiến lược trung bình di chuyển kép là một nguyên mẫu chiến lược tuyệt vời đáng nghiên cứu sâu và áp dụng cho các nhà giao dịch định lượng.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("CDC Action Zone V.2", overlay=true)

// CDC ActionZone V2 29 Sep 2016
// CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market
// 11 Nov 2016 : Ported to Trading View with minor UI enhancement
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
src = input(title="Data Array",type=input.source,defval=ohlc4)
prd1=input(title="Short MA period", type=input.integer,defval=12)
prd2=input(title="Long MA period",type=input.integer,defval=26)
AP = ema(src,2)
Fast = ema(AP,prd1)
Slow = ema(AP,prd2)


Bullish = Fast>Slow
Bearish = Fast<Slow

Green = Bullish and AP>Fast
Red = Bearish and AP<Fast
Yellow = Bullish and AP<Fast
Blue = Bearish and AP>Fast

Buy = Bullish and Bearish[1]
Sell = Bearish and Bullish[1]


alertcondition(Buy,"Buy Signal","Buy")
alertcondition(Sell,"Sell Signal","Sell")


//Plot

l1=plot(Fast,"Fast", linewidth=1,color=color.red)
l2=plot(Slow,"Slow", linewidth=2,color=color.blue)
bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
fill(l1,l2,bcolor)

// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2000, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 1921)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


if LSB == "Long only" and Buy and window()
    strategy.entry("L",true)
if LSB == "Long only" and Sell and window()
    strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Buy and window()
    strategy.entry("L",true)
if LSB == "Both" and Sell and window()
    strategy.entry("S",false)
if LSB == "Short only" and Sell and window()
    strategy.entry("S",false)
if LSB == "Short only" and Buy and window()
    strategy.close("S",qty_percent=100,comment="TP Short")

Thêm nữa