
Chiến lược này tích hợp các yếu tố RSI, MACD trung bình, Bollinger Bands và Stop Loss để thực hiện giao dịch luân chuyển động đa yếu tố. Chiến lược này đầu tiên đánh giá xem liệu nhiều chỉ số kỹ thuật có phát ra tín hiệu mua hoặc bán cùng một lúc hay không, và nếu có, thực hiện giao dịch mua hoặc bán tương ứng.
Chính sách bao gồm các phần sau:
Xác định yếu tố
Vào và ra sân
Tối ưu hóa chiến lược
Chiến lược này không chỉ xem xét một chỉ số kỹ thuật duy nhất, mà là kết hợp nhiều yếu tố như RSI, MACD, chuỗi TD để giảm tín hiệu sai do chỉ số duy nhất và cải thiện độ chính xác của nhập cảnh.
Các chỉ số như RSI, MACD có tính năng động rõ ràng hơn, có thể nắm bắt được sự thay đổi xu hướng của giá cổ phiếu. Những chỉ số này có độ nhạy cảm hơn so với các chỉ số theo dõi xu hướng như đường trung bình.
Chấm dừng di động có thể dừng lại theo thời gian và hoạt động, để khóa lợi nhuận tốt hơn. Thiết lập dừng lỗ có thể kiểm soát tổn thất đơn.
Chính sách này kết hợp các chỉ số kỹ thuật thông thường, có một số tính phổ quát. Các quy tắc tương đối đơn giản, rõ ràng, dễ hiểu và vận hành.
Chiến lược này được sử dụng để điều khiển thị trường ngược và thuộc chiến lược đảo ngược. Trong thị trường bò, việc sử dụng chiến lược này có thể bị hỏng thường xuyên và không hiệu quả.
Nếu các tham số được đặt quá nhạy cảm, tần số giao dịch có thể quá cao, làm tăng chi phí giao dịch và mất điểm trượt.
Chiến lược này phụ thuộc vào nhiều chỉ số tín hiệu đồng hướng, nhưng đôi khi các chỉ số có thể khác nhau, do đó phát ra tín hiệu sai.
Thiết lập điểm dừng cố định có thể bị phá vỡ, bạn có thể thiết lập dừng động hoặc xem xét thay đổi cổ phiếu để tránh rủi ro này.
Bạn có thể thử nghiệm các tham số của RSI và tham số chu kỳ của đường trung bình để tìm ra sự kết hợp với tần suất giao dịch thấp hơn.
Có thể kết hợp các đặc tính thống kê của cổ phiếu, chẳng hạn như biến động, tính thanh khoản, để thiết lập các tham số, tăng hiệu quả chiến lược.
Các tham số của chiến lược có thể được điều chỉnh dựa trên chỉ số hoảng loạn toàn thị trường như VIX, giảm tần suất giao dịch khi thị trường hoảng loạn.
Có thể thử nghiệm các chu kỳ giữ vị trí khác nhau để đánh giá tác động của việc giữ dài hạn hoặc chuyển động ngắn hạn đối với hiệu quả chiến lược.
Có thể nghiên cứu các phương pháp dừng động lực nâng cao hơn để đo lại hiệu quả.
Chiến lược này xem xét tổng hợp nhiều chỉ số kỹ thuật, sử dụng dừng lỗ di động để khóa lợi nhuận và kiểm soát rủi ro, dựa trên việc đảm bảo độ chính xác cao hơn. Ý tưởng chiến lược đơn giản, rõ ràng, dễ hiểu hoạt động, có thể nâng cao hiệu quả hơn nữa bằng cách tối ưu hóa tham số và ưu tiên chỉ số. Tuy nhiên, chiến lược này phù hợp hơn với thị trường ngược và xung đột, hiệu quả có thể kém hơn trong tình huống tăng vọt liên tục.
/*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)