
Chiến lược này kết hợp ba chỉ số trung bình di chuyển, dải Brin và chỉ số tương đối mạnh mẽ để giao dịch cổ phiếu nhiều chu kỳ. Khi mua, nó sẽ xem xét cả ba điều kiện là trung bình di chuyển chậm trên trung bình di chuyển nhanh, chỉ số tương đối mạnh mẽ dưới 50 và giá đóng cửa thấp hơn đường trung tâm dải Brin. Khi bán, nó sẽ xem xét cả hai điều kiện là chỉ số tương đối mạnh mẽ trên 70 và giá đóng cửa cao hơn đường trung tâm dải Brin.
Chiến lược này chủ yếu sử dụng ba chỉ số để phán đoán. Đầu tiên là chỉ số MACD, nó bao gồm một trung bình di chuyển của hai chu kỳ khác nhau, nhanh và chậm, tạo ra tín hiệu mua khi đường nhanh đi qua đường chậm. Chỉ số thứ hai là dải Brin, nó bao gồm ba đường trung đạo, đường trên và đường dưới.
Trong giao dịch cụ thể, chiến lược này yêu cầu đầu tiên một đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm, cho thấy giá cổ phiếu tăng lên và có thể mua. Ngoài ra, yêu cầu RSI thấp hơn 50, cho thấy giá cổ phiếu có thể ở khu vực bán tháo, vào thời điểm mua. Ngoài ra, yêu cầu giá đóng cửa thấp hơn đường trung tâm của vùng Brin, cho thấy giá cổ phiếu ở vùng thung lũng, cũng là điểm mua tốt.
Về dừng và dừng, khi RSI cao hơn 70, cho thấy giá cổ phiếu có thể ở trong khu vực mua quá mức, cho thấy đà tăng giảm, nên xem xét dừng. Ngoài ra, khi giá đóng cửa cao hơn đường băng Brin, cũng cho thấy giá cổ phiếu có thể quá cao, có nguy cơ quay trở lại, nên dừng đúng cách.
Chiến lược tổng hợp này sử dụng lợi thế của ba chỉ số Moving Average, Boll band và RSI để xác định chính xác hơn thời gian mua và bán. Các lợi thế cụ thể như sau:
Đường trung bình di chuyển có thể xác định nhịp độ tăng của giá cổ phiếu, đường trung tâm của Brin có thể tìm thấy điểm mua ở đáy giá cổ phiếu, RSI có thể ngăn chặn việc mua cổ phiếu ở điểm cao. Sự kết hợp của cả ba có thể xác định thời điểm mua tốt hơn trong thời gian trung bình của giá cổ phiếu.
Sự kết hợp giữa RSI và BRI có thể giúp nắm bắt được đỉnh của giá cổ phiếu, tránh quá mua và dừng lại kịp thời.
Sử dụng phân tích đa chu kỳ, bạn có thể nắm bắt các cơ hội giao dịch ở nhiều cấp độ khác nhau, mở rộng không gian lợi nhuận.
Chiến lược này có logic giao dịch đơn giản, rõ ràng và dễ hiểu, phù hợp với các khoản đầu tư dài hạn.
Mặc dù chiến lược này kết hợp nhiều chỉ số đánh giá, tăng độ chính xác của quyết định giao dịch. Tuy nhiên, vẫn có những rủi ro chính sau:
Rủi ro khi đặt tham số. Các tham số của đường trung bình di chuyển, đường Brin và RSI cần được điều chỉnh theo tình hình thực tế. Nếu các tham số được đặt không đúng cách, sẽ ảnh hưởng đến hiệu quả giao dịch.
Trong thị trường gấu, giá cổ phiếu giảm nhanh hơn, và các biện pháp ngăn chặn tổn thất của chiến lược này có thể không có hiệu quả.
Rủi ro một cổ phiếu. Chiến lược này phù hợp hơn với danh mục đầu tư, rủi ro một cổ phiếu vẫn tồn tại và cần phân tán đầu tư.
Tần suất giao dịch có thể quá cao. Nếu các tham số được đặt đúng, chiến lược này có thể giao dịch thường xuyên. Điều này sẽ làm tăng chi phí giao dịch và phí thuế.
Giải pháp tương ứng:
Cần điều chỉnh các tham số dựa trên dữ liệu phản hồi để các chỉ số phát ra tín hiệu có tần số phù hợp hơn.
Có thể điều chỉnh chu kỳ trung bình di chuyển để giảm tần suất mua và giảm tổn thất.
Tăng các loại đầu tư, giảm rủi ro trên một cổ phiếu thông qua đầu tư phân tán.
Thích hợp cho các điều kiện mua và dừng để giảm tần suất giao dịch.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Có thể giới thiệu thêm các bộ lọc chỉ số, chẳng hạn như chỉ số khối lượng giao dịch, để đảm bảo khối lượng giao dịch được tăng lên khi mua và tăng độ chính xác của quyết định.
Bạn có thể thêm mô-đun quản lý vị trí để điều chỉnh vị trí động theo tình hình thị trường.
Có thể kết hợp với các thuật toán học tập sâu để tự động tối ưu hóa các tham số bằng cách đào tạo với một lượng lớn dữ liệu.
Có thể thêm nhiều thời gian đánh giá, mở rộng diện tích ứng dụng.
Chiến lược này nói chung là logic rõ ràng, dễ hiểu, sử dụng nhiều chỉ số đánh giá tổng hợp, giảm tín hiệu sai ở một mức độ nhất định. Bằng cách tối ưu hóa tham số và thêm nhiều chỉ số kỹ thuật, bạn có thể nâng cao thêm độ chính xác quyết định, tăng cường sức mạnh chiến lược. Chiến lược này phù hợp hơn với đầu tư dài hạn và có thể được sử dụng để định lượng giao dịch. Tuy nhiên, không có chiến lược nào có thể hoàn toàn tránh rủi ro thị trường, cần kiểm soát kích thước vị trí và điểm dừng lỗ.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//
//@author Alorse
//@version=4
strategy("MACD + BB + RSI [Alorse]", shorttitle="BB + MACD + RSI [Alorse]", overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)
txtVer = "1.0.1"
version = input(title="Version", type=input.string, defval=txtVer, options=[txtVer], tooltip="This is informational only, nothing will change.")
src = input(title="Source", type=input.source, defval=close)
// MACD
fast_length = input(title="Fast Length", type=input.integer, defval=12, group="MACD")
slow_length = input(title="Slow Length", type=input.integer, defval=26, group="MACD")
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9, group="MACD")
sma_source = input(title="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD")
sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD")
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
// Bollinger Bands
bbGroup = "Bollindger Bands"
length = input(20, title="Length", group=bbGroup)
mult = input(2.0, title="StdDev", minval=0.001, maxval=5, group=bbGroup)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
// RSI
rsiGroup = "RSI"
lenRSI = input(14, title="Length", minval=1, group=rsiGroup)
// lessThan = input(50, title="Less than", minval=1 , maxval=100, group=rsiGroup)
RSI = rsi(src, lenRSI)
// Strategy Conditions
buy = crossover(macd, signal) and RSI < 50 and close < basis
sell = RSI > 70 and close > upper
// Stop Loss
slGroup = "Stop Loss"
useSL = input(false, title="╔══════ Enable ══════╗", group=slGroup, tooltip="If you are using this strategy for Scalping or Futures market, we do not recommend using Stop Loss.")
SLbased = input(title="Based on", type=input.string, defval="Percent", options=["ATR", "Percent"], group=slGroup, tooltip="ATR: Average True Range\nPercent: eg. 5%.")
multiATR = input(10.0, title="ATR Mult", type=input.float, group=slGroup, inline="atr")
lengthATR = input(14, title="Length", type=input.integer, group=slGroup, inline="atr")
SLPercent = input(10, title="Percent", type=input.float, group=slGroup) * 0.01
longStop = 0.0
shortStop = 0.0
if SLbased == "ATR"
longStop := valuewhen(buy, low, 0) - (valuewhen(buy, rma(tr(true), lengthATR), 0) * multiATR)
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop := (valuewhen(sell, rma(tr(true), lengthATR), 0) * multiATR) + valuewhen(sell, high, 0)
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] > shortStopPrev ? max(shortStop, shortStopPrev) : shortStop
if SLbased == "Percent"
longStop := strategy.position_avg_price * (1 - SLPercent)
shortStop := strategy.position_avg_price * (1 + SLPercent)
strategy.entry("Long", true, when=buy)
strategy.close("Long", when=sell, comment="Exit")
if useSL
strategy.exit("Stop Loss", "Long", stop=longStop)