Chiến lược này kết hợp RSI, MACD, Bollinger Bands và giới hạn các yếu tố tăng / giảm để thực hiện giao dịch xoay chuyển động nhiều yếu tố. Chiến lược đầu tiên đánh giá liệu nhiều chỉ số kỹ thuật có cung cấp tín hiệu mua hoặc bán đồng thời hay không. Nếu có, các hoạt động mua hoặc bán tương ứng sẽ được thực hiện. Trong khi đó, chiến lược áp dụng dừng chuyển động lợi nhuận và dừng lỗ để khóa lợi nhuận và kiểm soát rủi ro.
Các thành phần chính của chiến lược này là:
Đánh giá yếu tố
Nhập và xuất cảnh
Tối ưu hóa chiến lược
Nhiều yếu tố cải thiện độ chính xác nhập
Chiến lược này xem xét nhiều yếu tố như RSI và MACD thay vì chỉ một chỉ số duy nhất. Điều này làm giảm các tín hiệu sai và cải thiện độ chính xác đầu vào.
Đặc điểm động lực ghi lại xu hướng
Các chỉ số như RSI và MACD có đặc điểm động lực rõ ràng, nắm bắt sự thay đổi xu hướng giá. Chúng nhạy cảm hơn so với các chỉ số theo xu hướng như MA.
Cơ chế dừng lợi nhuận/mất lỗ kiểm soát rủi ro
Động stop profit có thể khóa trong lợi nhuận theo động thị trường.
Logic đơn giản và rõ ràng
Chiến lược kết hợp các chỉ số kỹ thuật chung và có một số tính phổ quát.
Hiệu suất kém trong thị trường tăng
Chiến lược tập trung vào giao dịch đảo ngược trung bình. Nó có thể kích hoạt dừng lỗ thường xuyên trong thị trường tăng.
Tần suất giao dịch có khả năng quá cao
Nếu các tham số được thiết lập quá nhạy cảm, tần suất giao dịch có thể quá cao, làm tăng chi phí và trượt.
Rủi ro chênh lệch giữa các chỉ số
Chiến lược dựa trên các tín hiệu nhất quán trên các chỉ số, nhưng đôi khi sự khác biệt có thể xảy ra, dẫn đến các tín hiệu sai.
Stop loss đang được thâm nhập
Các điểm dừng lỗ cố định có thể được xâm nhập.
Tối ưu hóa các tham số để giảm tần suất giao dịch
Kiểm tra các thông số RSI và thời gian MA để tìm các kết hợp với tần suất giao dịch thấp hơn.
Thêm các yếu tố thống kê để cải thiện hiệu quả
Kết hợp các số liệu cụ thể về cổ phiếu như biến động và thanh khoản để thiết lập các thông số và cải thiện hiệu quả.
Kết hợp các chỉ số cấp thị trường như VIX
Điều chỉnh các thông số chiến lược dựa trên các chỉ số hoảng loạn thị trường như VIX để giảm tần suất giao dịch trong các vụ sụp đổ trên toàn thị trường.
Kiểm tra các thời gian giữ khác nhau
Kiểm tra giữ dài hạn so với xoay ngắn hạn để xem tác động của chúng đến hiệu suất chiến lược.
Tối ưu hóa và kiểm tra dừng lợi nhuận/mất
Nghiên cứu các kỹ thuật dừng lợi nhuận / lỗ động tiên tiến hơn và kiểm tra lại chúng.
Chiến lược này kết hợp nhiều chỉ số kỹ thuật và áp dụng stop profit/loss để khóa lợi nhuận và kiểm soát rủi ro trong khi đảm bảo độ chính xác nhập cảnh cao. Lý thuyết đơn giản và rõ ràng. Hiệu suất có thể được cải thiện hơn nữa thông qua tối ưu hóa tham số và lựa chọn chỉ số. Nhưng chiến lược này phù hợp hơn với thị trường đảo ngược trung bình và giới hạn phạm vi. Nó có thể hoạt động kém hơn trong xu hướng tăng liên tục. Tóm lại, đây là một chiến lược đà đảo ngược trung bình đa yếu tố điển hình cung cấp ý tưởng và tham chiếu cho giao dịch xoay cổ phiếu.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true) RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") TD = close > close[4] ?nz(TD[1])+1:0 TS = close < close[4] ?nz(TS[1])+1:0 TDUp = TD - valuewhen(TD < TD[1], TD , 1 ) TDDn = TS - valuewhen(TS < TS[1], TS , 1 ) TDcheckUP = iff(TD == 2, true, false) TDCheckDOWN = iff(TS == 2, true, false) [_, _, histLine] = macd(close, 12, 26, 9) MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0 and histLine[4] > 0, true, false) MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false) RSICal = rsi(close, 14) RSICalNewUp = 50 + RSIDifference RSICalNewDown = 50 - RSIDifference RSICheckUp = iff(RSICal <= RSICalNewUp, true, false) RSICheckDown = iff(RSICal >= RSICalNewDown, true, false) basis = sma(close, 20) dev = 2 * stdev(close, 20) upperBB = basis + dev lowerBB = basis - dev BBCheckUp = iff(close > upperBB, true, false) BBCheckDown = iff(close < lowerBB, true, false) //BBCheckUp = false //BBCheckDown = false BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false) SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false) ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) useStopLoss = input(false, title="Use Stop Loss?") LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) ProfitStrat = ProfitStratA * 10 ProfitTrailing = ProfitTrailingA * 10 Lossstrat = useStopLoss ? LossstratA * 10 : 1000000 if (strategy.position_size > 0) strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (strategy.position_size < 0) strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (BuyCheck == true and strategy.position_size == 0) strategy.entry("Buy", strategy.long, comment="Long Entry") if (SellCheck == true and strategy.position_size == 0) strategy.entry("Sell", strategy.short, comment="Short Entry") plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar) plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)