Chiến lược này kết hợp chiến lược giao dịch đảo ngược 123 được đề xuất bởi Ulf Jensen trong cuốn sách của mình với Trình dao động Divergence Convergence Moving Average (KST) được đề xuất bởi Martin Pring để xây dựng một chiến lược định lượng tạo ra các tín hiệu giao dịch bằng cách sử dụng các mô hình đảo ngược và các chỉ số dao động xu hướng.
Lý thuyết cốt lõi của phần chiến lược này là theo dõi xem giá đóng của cổ phiếu có đảo ngược trong 2 ngày qua hay không, cụ thể là:
Nếu giá đóng trong 2 ngày qua có xu hướng giảm, tức là giá đóng ngày trước cao hơn giá đóng trước đó; và giá đóng ngày hôm nay tăng lên từ ngày trước, cao hơn giá đóng ngày trước, nó có thể được đánh giá là đảo ngược đáy và tín hiệu mua được tạo ra.
Ngược lại, nếu giá đóng trong 2 ngày qua có xu hướng tăng, tức là giá đóng ngày trước thấp hơn giá đóng ngày trước; và giá đóng ngày hôm nay giảm so với ngày trước, thấp hơn giá đóng ngày trước, nó có thể được đánh giá là đảo ngược trên cùng và một tín hiệu bán được tạo ra.
Phần này của chiến lược cũng kết hợp chỉ số Stochastic để xác định xem nó đã mua quá mức hay đã bán quá mức để lọc ra các tín hiệu giao dịch không đảo ngược.
Trong chỉ số KST, ROC đại diện cho tỷ lệ thay đổi giá, tính toán ROC lần lượt 6 ngày, 10 ngày, 15 ngày và 20 ngày và thực hiện tổng trọng số sau khi làm mịn trung bình động của các tham số khác nhau để xây dựng chỉ số KST.
Khi đường nhanh vượt qua trên đường chậm, nó được đánh giá là tăng; khi đường nhanh vượt qua dưới đường chậm, nó được đánh giá là giảm.
Chiến lược này sử dụng KST>0 để đánh giá tăng và KST<0 để đánh giá giảm.
Các tín hiệu đánh giá của chiến lược đảo ngược 123 và chỉ số KST được kết hợp:
Có thể thấy rằng chiến lược này sử dụng toàn diện hai loại chỉ số kỹ thuật khác nhau, mô hình đảo ngược và đánh giá chỉ số, và kết hợp các điểm mạnh của tín hiệu để thiết kế một chiến lược giao dịch định lượng tiên tiến hơn.
Các phương pháp như điều chỉnh tham số, tối ưu hóa logic đảo ngược, giới thiệu cơ chế dừng lỗ có thể được sử dụng để kiểm soát rủi ro.
Chiến lược này tích hợp nhiều loại chỉ số kỹ thuật khác nhau. Thông qua xác nhận kép và tối ưu hóa kết hợp, nó thiết kế một chiến lược giao dịch định lượng tương đối mạnh và là một mô hình của sự kết hợp chiến lược. Hiệu suất của nó trong giao dịch trực tiếp vẫn chưa được xác minh thêm, nhưng từ quan điểm khái niệm lý thuyết, nó xem xét toàn diện nhiều kịch bản, giải quyết những hạn chế của các chỉ số duy nhất và đáng để nghiên cứu và áp dụng thêm.
/*backtest start: 2023-10-22 00:00:00 end: 2023-11-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 23/03/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 indicator really is the KST indicator presented by Martin Pring. // the KST indicator is a weighted summed rate of change oscillator that // is designed to identify meaningful turns. Various smoothed rate of change // indicators can be combined to form different measurements of cycles. // // 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 MROC() => pos = 0.0 xROC6 = sma(roc(close, 6), 10) xROC10 = sma(roc(close, 10), 10) xROC15 = sma(roc(close, 15), 9) xROC20 = sma(roc(close, 20), 15) nRes = xROC6 + (2 * xROC10) + (3 * xROC15) + (4 * xROC20) pos := iff(nRes > 0, 1, iff(nRes < 0, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & MovROC (KST indicator)", 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) //------------------------- reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posMROC = MROC() pos = iff(posReversal123 == 1 and posMROC == 1 , 1, iff(posReversal123 == -1 and posMROC == -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 )