Chiến lược theo dõi xu hướng nhiều sử dụng toàn diện MACD, RSI, ATR và DEMA bốn chỉ số để xác định xu hướng dài hạn và ngắn hạn của cổ phiếu và tiến hành giao dịch theo dõi xu hướng. Chiến lược này kết hợp các lợi thế của giao dịch đột phá và giao dịch theo dõi xu hướng, có thể nắm bắt xu hướng dài hạn trong khi tìm ra các điểm vào tốt hơn trong ngắn hạn.
MACD là viết tắt của Moving Average Convergence Divergence, là một chỉ số theo xu hướng. MACD bao gồm một đường trung bình di chuyển nhanh và một đường trung bình di chuyển chậm, thường sử dụng các thông số EMA 12 ngày cho đường nhanh, EMA 26 ngày cho đường chậm và đường tín hiệu như đường EMA 9 ngày của MACD. Khi MACD vượt qua đường tín hiệu, đó là tín hiệu mua, và khi vượt qua dưới, đó là tín hiệu bán. Chiến lược này sử dụng đường chéo vàng và đường chéo chết của MACD để xác định hướng xu hướng.
Chỉ số RSI là viết tắt của chỉ số sức mạnh tương đối, phản ánh tình trạng mua quá nhiều và bán quá nhiều của một cổ phiếu.
Chiến lược này sử dụng toàn diện MACD, RSI, ATR và DEMA bốn chỉ số, tính đến cả việc theo dõi xu hướng và giao dịch đột phá, có thể tìm ra các điểm nhập tốt hơn trong xu hướng.
MACD có thể xác định hiệu quả hướng và điểm chuyển hướng của xu hướng giá cổ phiếu trung và dài hạn.
Chỉ số RSI có thể đánh giá liệu một cổ phiếu có bị mua quá mức hay bán quá mức trong ngắn hạn để tránh đuổi theo mức cao nhất và bán mức thấp nhất tại các điểm đảo ngược xu hướng.
ATR điều chỉnh động vị trí dừng lỗ để kiểm soát hiệu quả lỗ đơn.
DEMA phục vụ như một chỉ số phán đoán phụ để lọc ra một số tiếng ồn.
Sự kết hợp của nhiều chỉ số có thể cải thiện độ tin cậy của tín hiệu giao dịch.
Có một số rủi ro trong chiến lược này:
Sự khác biệt có thể xảy ra với sự kết hợp của nhiều chỉ số, dẫn đến các tín hiệu giao dịch sai.
ATR như một chỉ số dừng lỗ động có xu hướng bị phá vỡ trong các biến động lớn dẫn đến tổn thất.
DEMA như một bộ lọc xu hướng có thể lọc một số cơ hội giao dịch ngắn hạn mạnh hơn.
Các thông số chiến lược không phù hợp có thể dẫn đến giao dịch thường xuyên, tăng chi phí giao dịch và tổn thất trượt.
Để kiểm soát rủi ro, các tham số chỉ số có thể được điều chỉnh phù hợp. Các chỉ số phán đoán phụ trợ hơn cũng có thể được giới thiệu để xác nhận. Phát triển các chiến lược giao dịch định lượng đòi hỏi phải phân tích kỹ lưỡng các dữ liệu lịch sử, kiểm tra hậu quả mạnh mẽ và quản lý rủi ro thận trọng. Tôi không thể đề nghị các hành động cụ thể, nhưng có thể đề nghị tập trung vào các nguyên tắc phát triển chiến lược hợp lý.
Chiến lược cũng có thể được tối ưu hóa trong các khía cạnh sau:
Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu.
Thêm các chiến lược dừng lỗ như dừng lỗ di chuyển, dừng lỗ trung bình vv để kiểm soát rủi ro hơn nữa.
Giới thiệu nhiều chỉ số phán đoán phụ như KDJ, Bollinger Bands vv để cải thiện độ chính xác tín hiệu.
Tối ưu hóa các lựa chọn thời gian nhập cảnh bằng cách kết hợp các chiến lược đột phá để tìm các điểm nhập cảnh tốt hơn.
Phân biệt các thông số cho thị trường tăng và giảm.
Xây dựng mô hình dựa trên đặc điểm của cổ phiếu để cải thiện khả năng thích nghi.
Chiến lược theo dõi xu hướng nhiều tích hợp MACD, RSI, ATR và DEMA bốn chỉ số, đạt được sự kết hợp hữu cơ của theo dõi xu hướng và đột phá xu hướng. So với các chiến lược chỉ số duy nhất, chiến lược này có thể cung cấp các tín hiệu giao dịch đáng tin cậy hơn và tránh một số tín hiệu sai. Thông qua tối ưu hóa tham số, chiến lược dừng lỗ, phán đoán phụ trợ vv, hiệu suất chiến lược có thể được cải thiện hơn nữa. Chiến lược này phù hợp với giao dịch định lượng đòi hỏi khả năng chuyển đổi xu hướng cao hơn và là một chiến lược ý tưởng đầy hứa hẹn đáng theo dõi và tối ưu hóa dài hạn.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h 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/ // © prim722 // © OTS Music //@version=4 strategy("Atrend by OTS", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD if (crossover(delta, 0)) strategy.entry("MACD buy", strategy.long, comment="MACD buy") if (crossunder(delta, 0)) strategy.entry("MACD sell", strategy.short, comment="MACD sell") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) length = input( 18 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = rsi(price, length) co = crossover(vrsi, overSold) cu = crossunder(vrsi, overBought) if (not na(vrsi)) if (co) strategy.entry("RSI buy", strategy.long, comment="RSI buy") if (cu) strategy.entry("RSI sell", strategy.short, comment="RSI sell") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=false) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.white) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="", text="", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.white, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_line, linewidth=2, color=color.gray) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="", text="", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.white : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.gray : color.white) : color.white fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) alertcondition(buySignal, title="ATrend Buy", message="ATrend Buy!") alertcondition(sellSignal, title="ATrend Sell", message="ATrend Sell!") changeCond = trend != trend[1] alertcondition(changeCond, title="ATrend Direction Change", message="ATrend has changed direction!") length1 = input(25, minval=1) srcb = input(close, title="Source") e1 = ema(srcb, length1) e2 = ema(e1, length) dema = 2 * e1 - e2 plot(dema, "DEMA", color.red)