Xu hướng theo chiến lược dựa trên đường trung bình động và MACD

Tác giả:ChaoZhang, Ngày: 2023-11-15 15:58:19
Tags:

img

Tổng quan

Chiến lược này kết hợp các đường trung bình động và chỉ số MACD để xác định xu hướng và tạo ra tín hiệu giao dịch. Nó thuộc về một chiến lược theo xu hướng điển hình. Nó sử dụng hai đường trung bình động ZLSMA của các khung thời gian khác nhau để xác định hướng xu hướng và giao thoa MACD để tạo ra các tín hiệu mua và bán cụ thể. Điều này cho phép nó nắm bắt hiệu quả xu hướng trung và dài hạn trong khi tránh bị đánh lừa bởi tiếng ồn thị trường ngắn hạn.

Chiến lược logic

Chiến lược bao gồm các thành phần chính sau:

  1. Fast ZLSMA và Slow ZLSMA: So sánh trung bình động ZLSMA của các khung thời gian khác nhau xác định hướng xu hướng tổng thể. Đường nhanh bao gồm ZLSMA 32 giai đoạn, và đường chậm bao gồm ZLSMA 400 giai đoạn. Khi đường nhanh vượt qua đường chậm, đó là tín hiệu tăng và ngược lại.

  2. Chỉ số MACD: MACD được tính bằng cách trừ đường chậm (EMA 26 giai đoạn) từ đường nhanh (EMA 12 giai đoạn). Đường tín hiệu là đường EMA 9 giai đoạn của MACD. Khi MACD vượt qua đường tín hiệu, đó là tín hiệu mua, và khi MACD vượt qua dưới đường tín hiệu, đó là tín hiệu bán.

  3. Các tín hiệu giao dịch: Các tín hiệu mua và bán chỉ được tạo ra khi hướng xu hướng ZLSMA phù hợp với các tín hiệu chéo MACD. Cụ thể, đi dài khi xu hướng tăng trùng với đường chéo vàng của MACD và đi ngắn khi xu hướng giảm trùng với đường chéo chết của MACD.

  4. Dừng lỗ và lấy lợi nhuận: Chiến lược hiện không bao gồm logic dừng lỗ và lấy lợi nhuận, cần tối ưu hóa thêm.

Sự kết hợp của việc sử dụng các đường trung bình động để xác định xu hướng chính và MACD để thời gian vào có thể lọc hiệu quả các đột phá sai và tránh bị đánh lừa bởi tiếng ồn thị trường ngắn hạn.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Bắt được xu hướng: Sử dụng trung bình động của các khung thời gian khác nhau để xác định hướng xu hướng cho phép giao dịch với xu hướng và nắm bắt xu hướng trung và dài hạn một cách hiệu quả.

  2. lọc tiếng ồn: Ứng dụng chỉ số MACD giúp lọc tiếng ồn thị trường ngắn hạn và tránh bị đánh lừa bởi các thị trường nhỏ.

  3. Các tham số có thể tùy chỉnh: Các giai đoạn trung bình động và các tham số MACD có thể tùy chỉnh và có thể được tối ưu hóa cho các thị trường khác nhau.

  4. Dễ thực hiện: Tất cả các chỉ số được sử dụng là các chỉ số kỹ thuật chung.

  5. Rủi ro có thể kiểm soát được: Với lệnh dừng lỗ và lấy lợi nhuận rõ ràng, rủi ro và lợi nhuận của mỗi giao dịch có thể được kiểm soát.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Xác định xu hướng sai: Nếu xu hướng chính được xác định sai, tất cả các giao dịch có thể dẫn đến lỗ.

  2. Tối ưu hóa tham số không chính xác: Các thông số trung bình động và MACD phải được kiểm tra và tối ưu hóa kỹ lưỡng, nếu không kết quả có thể không thỏa mãn.

  3. Thiếu lệnh dừng lỗ: Hiện tại không có lệnh dừng lỗ, gây ra nguy cơ mất mát quá lớn.

  4. Tiềm năng lợi nhuận hạn chế: Là một chiến lược theo xu hướng, tiềm năng lợi nhuận của mỗi giao dịch là hạn chế, đòi hỏi khối lượng lớn để tăng lợi nhuận.

  5. Tần suất giao dịch cao: Điều chỉnh tham số không đúng có thể dẫn đến tần suất giao dịch quá cao, tăng chi phí giao dịch và trượt.

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

Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Thêm cơ chế dừng lỗ: Thiết lập các điểm dừng lỗ thích hợp để kiểm soát chặt chẽ mức lỗ tối đa cho mỗi giao dịch.

  2. Tối ưu hóa các thông số: Kiểm tra lại và tối ưu hóa để tìm ra kết hợp thông số chuyển động tối ưu và MACD.

  3. Tần suất giao dịch thấp hơn: Điều chỉnh các tham số để đảm bảo tín hiệu giao dịch chỉ được tạo ra khi xu hướng rõ ràng.

  4. Bao gồm các yếu tố khác: Các yếu tố như thay đổi khối lượng có thể được thêm vào để xác nhận xu hướng và tín hiệu.

  5. Cải thiện thời gian nhập: Tăng cường sử dụng MACD để tăng độ chính xác nhập.

  6. Làm cho áp dụng phổ quát: Tối ưu hóa các tham số để làm cho chiến lược áp dụng rộng rãi trên các sản phẩm khác nhau, mở rộng khả năng áp dụng.

Kết luận

Kết luận, chiến lược này có hiệu quả nắm bắt xu hướng trung và dài hạn thông qua sự kết hợp đơn giản nhưng hiệu quả của đường trung bình động và MACD, làm cho nó trở thành một nền tảng chiến lược giao dịch định lượng vững chắc. Nhưng các thông số cần tối ưu hóa hơn nữa, rủi ro cần kiểm soát tốt hơn và các yếu tố khác nên được kết hợp để đạt được kết quả nhất quán hơn. Nó có giá trị thực tế và có nhiều chỗ để cải thiện.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-11-10 05:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © veryfid

//@version=5
strategy("Stratégie ZLSMA Bruno", shorttitle="Stratégie ZLSMA Bruno", overlay=false)

source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")

//res = useCurrentRes ? period : resCustom

fastLength = input(12), 
slowLength=input(26)
signalLength=input(9)

fastMA = ta.ema(source, fastLength)
slowMA = ta.ema(source, slowLength)

macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
hist = macd - signal

outMacD =  macd
outSignal = signal
outHist =  hist

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

//plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? color.lime : color.red : color.red
//signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
//plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
//plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
//plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and ta.cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=plot.style_circles, linewidth=4, color=macd_color)
hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white)

// Paramètres de la ZLSMA
length = input(32, title="Longueur")
offset = input(0, title="Décalage")
src = input(close, title="Source")
lsma = ta.linreg(src, length, offset)
lsma2 = ta.linreg(lsma, length, offset)
eq = lsma - lsma2
zlsma = lsma + eq

length_slow = input(400, title="Longueur")
offset_slow = input(0, title="Décalage")
lsma_slow = ta.linreg(src, length_slow, offset_slow)
lsma2_slow = ta.linreg(lsma_slow, length_slow, offset_slow)
eq_slow = lsma_slow - lsma2_slow
zlsma_slow = lsma_slow + eq_slow

// Paramètres de la sensibilité
sensitivity = input(0.5, title="Sensibilité")

// Règles de trading
longCondition = zlsma < zlsma_slow and  zlsma_slow < zlsma_slow[1] and zlsma > zlsma[1] and ta.cross(outMacD, outSignal) and  macd_color == color.lime//ta.crossover(zlsma, close) and ta.crossover(zlsma, zlsma[1]) // Croisement vers le haut
shortCondition = zlsma > zlsma_slow and  zlsma_slow > zlsma_slow[1] and zlsma < zlsma[1] and ta.cross(outMacD, outSignal) and  macd_color == color.lime   //ta.crossunder(zlsma, close) and ta.crossunder(zlsma, zlsma[1]) // Croisement vers le bas

// Entrée en position
strategy.entry("Achat", strategy.long, when=longCondition)
strategy.entry("Vente", strategy.short, when=shortCondition)
botifySignalZLSMA = longCondition ? 1 : shortCondition ? -1 : 0
plot(botifySignalZLSMA, title='Botify_signal', display=display.none)
// Sortie de position
strategy.close("Achat", when=ta.crossunder(zlsma, close)) // Close the "Achat" position
strategy.close("Vente", when=ta.crossover(zlsma, close)) // Close the "Vente" position


// Tracé de la courbe ZLSMA
plot(zlsma, color=color.yellow, linewidth=3)
plot(zlsma_slow, color=color.red, linewidth=3)



Thêm nữa