
Chiến lược định lượng đảo ngược hai cơ hội là một chiến lược kết hợp sử dụng cả hai chiến lược 123 Reversal và Stochastic RSI. Chiến lược này trước tiên đánh giá xem giá có xuất hiện hình thức 123 Reversal hay không, sau đó kết hợp với chỉ số Stochastic RSI để xác nhận lại tín hiệu đảo ngược, chỉ khi cả hai tín hiệu phát ra cùng một lúc, thì sẽ mở thêm hoặc bỏ đi.
Chiến lược này bao gồm hai phần:
Phần này sử dụng hình thức 123 để phán đoán giá đảo ngược.
Nếu giá đóng cửa thấp hơn giá đóng cửa ngày hôm qua, và giá đóng cửa hiện tại cao hơn giá đóng cửa ngày hôm qua, và Stochastic chậm ngày 9 thấp hơn 50, hãy làm thêm
Nếu giá đóng cửa cao hơn giá đóng cửa ngày hôm qua và giá đóng cửa hiện tại thấp hơn giá đóng cửa ngày hôm qua, trong khi Fast Stochastic ngày 9 cao hơn 50, hãy làm giảm giá
Điều này cho phép các nhà đầu tư phát hiện các dấu hiệu sớm của sự đảo ngược giá cả.
Phần này sử dụng chỉ số Stochastic để phân tích lại RSI và xác nhận sự đảo ngược:
Tính RSI, độ dài là 14.
Sử dụng phân tích Stochastic cho RSI, độ dài 14, lấy giá trị K
Tính toán giá trị K của SMA D 3 ngày
Nếu giá trị K trên 80 thì xem nhiều, nếu giá trị K dưới 20 thì xem không.
Chỉ khi nào cả hai phần của chiến lược phát ra tín hiệu đồng thời, thì vị trí sẽ được mở.
Lợi thế lớn nhất của chiến lược này là sử dụng phương pháp xác nhận kép, có thể lọc hiệu quả các tín hiệu báo cáo sai và cải thiện sự ổn định. Các lợi thế cụ thể như sau:
123 đảo ngược có thể đoán trước xu hướng đảo ngược giá
Stochastic RSI cung cấp xác nhận đảo ngược, tránh bỏ lỡ điểm đảo ngược
Sự kết hợp của cả hai có thể làm tăng tỷ lệ thắng và giảm khả năng bị sai lệch.
Tối ưu hóa với các tham số kết hợp, có thể điều chỉnh các tham số cho các thị trường khác nhau
Thực hiện theo chương trình đơn giản, rõ ràng và dễ dàng áp dụng trên ổ cứng
Chiến lược này cũng có một số rủi ro cần lưu ý:
Rủi ro thất bại của sự đảo ngược. Thị trường có thể có sự đảo ngược giả tạo dẫn đến thua lỗ.
Rủi ro tối ưu hóa tham số. Sự kết hợp tham số không phù hợp có thể dẫn đến hiệu quả chiến lược kém.
Rủi ro quá tối ưu hóa. Các tham số được tối ưu hóa quá mức đối với dữ liệu lịch sử, và hiệu quả trong tương lai không thể sao chép được.
Tỷ lệ giao dịch quá cao có thể gây nguy hiểm. Tỷ lệ giao dịch có thể tăng lên do tín hiệu kép, dẫn đến chi phí trượt cao hơn.
Rủi ro thực hiện mã. Có lỗi trong mã có thể dẫn đến hiệu quả đĩa cứng bất thường.
Giải pháp tương ứng:
Điều chỉnh quy mô vị trí thích hợp, kiểm soát tổn thất đơn lẻ.
Sử dụng phương pháp walk-forward để tối ưu hóa tham số.
Các nhà đầu tư cũng cần chú ý đến sự ổn định của các tham số, không theo đuổi lợi nhuận cao.
Điều chỉnh điều kiện mở vị trí để giảm tần suất giao dịch.
Kiểm tra mã một cách cẩn thận để đảm bảo logic là chính xác.
Chiến lược này có thể được tối ưu hóa bằng cách:
Các tham số tối ưu hóa. Các tham số như Stochastic có thể được điều chỉnh để tối ưu hóa cho thị trường cụ thể.
Tối ưu hóa các điều kiện mở vị trí. Bạn có thể thêm các yếu tố khác để đánh giá và tránh sự đảo ngược.
Tối ưu hóa cơ chế dừng lỗ. Có thể thiết lập các phương thức dừng di chuyển, dừng thời gian.
Giảm tần suất giao dịch. Có thể tăng điều kiện lọc giao dịch, giảm tần suất giao dịch.
Thêm quản lý vị trí. Điều chỉnh kích thước vị trí theo thị trường.
Xem xét các yếu tố phí. Điều chỉnh các tham số chiến lược theo phí thực tế.
Chiến lược định lượng đảo ngược hai cơ hội nói chung là một chiến lược đảo ngược đường ngắn ổn định và thực tế. Nó đồng thời có tính nhạy cảm để nắm bắt sự đảo ngược và sự ổn định của bộ lọc kép. Với tối ưu hóa tham số và sửa đổi thích hợp, chiến lược này có thể trở thành một thành phần hiệu quả trong hệ thống chiến lược định lượng.
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 03/08/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This strategy used to calculate the Stochastic RSI
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand) =>
pos = 0.0
Source = close
rsi1 = rsi(Source, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
d_cross_80 = cross(d,TopBand)
pos := iff(k > TopBand, 1,
iff(k < LowBand, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Stochastic RSI", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Stochastic RSI ----")
TopBand = input(80, step=0.01)
LowBand = input(20, step=0.01)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
iff(posReversal123 == -1 and posSRSI == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1 )
strategy.entry("Long", strategy.long)
if (possig == -1 )
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )