Xu hướng theo chiến lược dựa trên sự kết hợp trung bình động

Tác giả:ChaoZhang, Ngày: 2024-02-23 14:54:34
Tags:

img

Tổng quan

Chiến lược này xác định hướng xu hướng bằng cách tính toán sự kết hợp của nhiều đường trung bình di chuyển nhanh và chậm. Nó tạo ra tín hiệu mua khi các MAs nhanh vượt qua trên các MAs chậm, và bán tín hiệu khi các MAs nhanh vượt qua dưới các MAs chậm.

Chiến lược logic

  1. Tính toán 7 nhóm EMA nhanh với thời gian 3/6/9/12/15/18/21 ngày.
  2. Tính toán 14 nhóm EMA chậm với thời gian 24/27/30/.../200 ngày.
  3. Thiết lập các quy tắc màu cho EMA nhanh: 3MA trên 6MA là xu hướng tăng (aqua), dưới đây là xu hướng giảm (màu cam).
  4. Thiết lập các quy tắc màu cho EMA chậm: 24MA trên 25MA là xu hướng tăng (cáp), dưới đây là xu hướng giảm (màu đỏ).
  5. Khi nhóm EMA nhanh vượt qua nhóm EMA chậm, tạo tín hiệu mua, cho thấy xu hướng tăng.
  6. Khi nhóm EMA nhanh vượt qua dưới nhóm EMA chậm, tạo tín hiệu bán, chỉ ra xu hướng giảm.

Bằng cách kết hợp các MAs nhanh và chậm, nó có thể xác định hiệu quả sự thay đổi trong xu hướng trung bình và dài hạn để theo dõi vị trí.

Ưu điểm

  1. Các MAs nhanh và chậm kết hợp có thể xác định mạnh mẽ những thay đổi xu hướng.
  2. Nhiều MA kết hợp có thể cung cấp các tín hiệu rõ ràng và đáng tin cậy hơn, tránh các tín hiệu sai.
  3. Chu kỳ hoạt động linh hoạt bằng cách sử dụng các khoảng thời gian EMA khác nhau.
  4. Theo dõi vị trí dài phù hợp với cách hoạt động của hầu hết các quỹ tư nhân.

Rủi ro

  1. Giữ các vị trí quá lâu có thể bỏ lỡ các cơ hội giao dịch ngắn hạn.
  2. Sự kết hợp EMA không phù hợp để nắm bắt biến động giá mạnh.
  3. Cài đặt tham số không chính xác có thể dẫn đến tín hiệu quá thường xuyên hoặc thận trọng.

Các đề xuất tối ưu hóa

  1. Thêm nhiều EMA nhanh hơn để cải thiện đánh giá xu hướng ngắn hạn.
  2. Thêm các EMA chậm hơn để cải thiện đánh giá xu hướng trung bình và dài hạn.
  3. Thêm xác nhận tín hiệu MA để giảm tín hiệu sai.
  4. Bao gồm phân tích khối lượng để tránh sự phá vỡ sai trên các thị trường khác nhau.

Tóm lại

Chiến lược này xác định những thay đổi xu hướng trung và dài hạn bằng cách xây dựng các hệ thống MA nhanh và chậm, đây là một chiến lược theo dõi vị trí điển hình.


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

//@version=3
strategy("CM Super Guppy ala WY", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=99, overlay=true)


///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(3, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

///////////////////////////////////////////////

src = close, 
len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(6, minval=1, title="Fast EMA 2")
len3 = input(9, minval=1, title="Fast EMA 3")
len4 = input(12, minval=1, title="Fast EMA 4")
len5 = input(15, minval=1, title="Fast EMA 5")
len6 = input(18, minval=1, title="Fast EMA 6")
len7 = input(21, minval=1, title="Fast EMA 7")
//Slow EMA
len8 = input(24, minval=1, title="Slow EMA 8")
len9 = input(27, minval=1, title="Slow EMA 9")
len10 = input(30, minval=1, title="Slow EMA 10")
len11 = input(33, minval=1, title="Slow EMA 11")
len12 = input(36, minval=1, title="Slow EMA 12")
len13 = input(39, minval=1, title="Slow EMA 13")
len14 = input(42, minval=1, title="Slow EMA 14")
len15 = input(45, minval=1, title="Slow EMA 15")
len16 = input(48, minval=1, title="Slow EMA 16")
len17 = input(51, minval=1, title="Slow EMA 17")
len18 = input(54, minval=1, title="Slow EMA 18")
len19 = input(57, minval=1, title="Slow EMA 19")
len20 = input(60, minval=1, title="Slow EMA 20")
len21 = input(63, minval=1, title="Slow EMA 21")
len22 = input(66, minval=1, title="Slow EMA 22")
len23 = input(200, minval=1, title="EMA 200")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
ema7 = ema(src, len7)

//Slow EMA
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
ema13 = ema(src, len13)
ema14 = ema(src, len14)
ema15 = ema(src, len15)
ema16 = ema(src, len16)
ema17 = ema(src, len17)
ema18 = ema(src, len18)
ema19 = ema(src, len19)
ema20 = ema(src, len20)
ema21 = ema(src, len21)
ema22 = ema(src, len22)

//EMA 200
ema23 = ema(src, len23)

//Fast EMA Color Rules
colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6 and ema6 > ema7)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6 and ema6 < ema7)
//Slow EMA Color Rules
colslowL = ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 and ema12 > ema13 and ema13 > ema14 and ema14 > ema15 and ema15 > ema16 and ema16 > ema17 and ema17 > ema18 and ema18 > ema19 and ema19 > ema20 and ema20 > ema21 and ema21 > ema22
colslowS = ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 and ema12 < ema13 and ema13 < ema14 and ema14 < ema15 and ema15 < ema16 and ema16 < ema17 and ema17 < ema18 and ema18 < ema19 and ema19 < ema20 and ema20 < ema21 and ema21 < ema22 
//Fast EMA Final Color Rules
colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=colFinal)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=colFinal)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=colFinal)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=colFinal)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=colFinal)
plot(ema6, title="Fast EMA 6", style=line, linewidth=1, color=colFinal)
p2=plot(ema7, title="Fast EMA 7", style=line, linewidth=2, color=colFinal)

//Slow EMA Plots
p3=plot(ema8, title="Slow EMA 8", style=line, linewidth=1, color=colFinal2)
plot(ema9, title="Slow EMA 9", style=line, linewidth=1, color=colFinal2)
plot(ema10, title="Slow EMA 10", style=line, linewidth=1, color=colFinal2)
plot(ema11, title="Slow EMA 11", style=line, linewidth=1, color=colFinal2)
plot(ema12, title="Slow EMA 12", style=line, linewidth=1, color=colFinal2)
plot(ema13, title="Slow EMA 13", style=line, linewidth=1, color=colFinal2)
plot(ema14, title="Slow EMA 14", style=line, linewidth=1, color=colFinal2)
plot(ema15, title="Slow EMA 15", style=line, linewidth=1, color=colFinal2)
plot(ema16, title="Slow EMA 16", style=line, linewidth=1, color=colFinal2)
plot(ema17, title="Slow EMA 17", style=line, linewidth=1, color=colFinal2)
plot(ema18, title="Slow EMA 18", style=line, linewidth=1, color=colFinal2)
plot(ema19, title="Slow EMA 19", style=line, linewidth=1, color=colFinal2)
plot(ema20, title="Slow EMA 20", style=line, linewidth=1, color=colFinal2)
plot(ema21, title="Slow EMA 21", style=line, linewidth=1, color=colFinal2)
plot(ema22, title="Slow EMA 22", style=line, linewidth=2, color=colFinal2)
p4=plot(ema23, title="EMA 200", style=line, linewidth=2)


// Strategy Center
enterLong = colfastL and colslowL
exitLong = not colfastL

if testPeriod()
    strategy.entry("WY Long", strategy.long, when=enterLong, comment="WY Long")
else
    strategy.cancel(id="WY Long")

if testPeriod()
    strategy.close("WY Long", when=exitLong)

Thêm nữa