
Chiến lược này là sự kết hợp của chiến lược giao dịch đảo ngược hình dạng 123 của Wolf Jansen trong tác phẩm của ông với dao động trung bình chuyển động trọng lượng (KST) của Martin Prinker, để xây dựng một chiến lược định lượng tổng hợp sử dụng các chỉ số đảo ngược hình dạng và biến động xu hướng để tạo ra tín hiệu giao dịch.
Lập luận cốt lõi của chiến lược này là theo dõi xem liệu giá cổ phiếu đã có biến động trong vòng 2 ngày gần đây hay không, cụ thể là:
Nếu giá đóng cửa trong 2 ngày gần đây đang có xu hướng giảm, tức là giá đóng cửa ngày trước cao hơn giá đóng cửa 2 ngày trước; và giá đóng cửa ngày hôm nay đã tăng so với ngày trước, tức là cao hơn giá đóng cửa ngày trước, thì có thể đánh giá được sự đảo ngược của đáy, tạo ra tín hiệu mua.
Ngược lại, nếu giá đóng cửa trong 2 ngày gần đây đang có xu hướng tăng, tức là giá đóng cửa ngày trước thấp hơn giá đóng cửa 2 ngày trước; và giá đóng cửa ngày hôm nay đã giảm so với giá đóng cửa ngày trước, tức là thấp hơn giá đóng cửa ngày trước, thì có thể đánh giá top reversal, tạo ra tín hiệu bán.
Chiến lược này cũng kết hợp với chỉ số Stochastic để xác định xem có quá mua hay quá bán, và lọc các tín hiệu giao dịch tại các thời điểm không đảo ngược.
ROC trong chỉ số KST đại diện cho tốc độ thay đổi của giá cả, được tính ROC 6 ngày, 10 ngày, 15 ngày và 20 ngày, và sau khi làm mượt trung bình di chuyển của các tham số khác nhau, cộng trọng lượng để tạo thành chỉ số KST.
Trong trường hợp này, đường nhanh là giá trị KST nguyên bản và đường chậm là trung bình di chuyển của KST.
Chiến lược này sử dụng KST> 0 để xác định là giá lên và KST < 0 để xác định là giá xuống.
Kết hợp chiến lược đảo ngược hình dạng 123 và tín hiệu Judgment của chỉ số KST:
Có thể thấy rằng, chiến lược tổng hợp sử dụng hình thức đảo ngược và chỉ số để đánh giá hai loại chỉ số kỹ thuật khác nhau, kết hợp với cường độ tín hiệu của chúng, để thiết kế một chiến lược giao dịch định lượng tiên tiến hơn.
Có thể kiểm soát rủi ro bằng cách điều chỉnh tham số, tối ưu hóa logic phán quyết đảo ngược, giới thiệu cơ chế dừng lỗ.
Chiến lược này tích hợp nhiều loại chỉ số kỹ thuật khác nhau, được xác nhận và tối ưu hóa bằng cách kết hợp, được thiết kế một cách khoa học để tạo ra một chiến lược giao dịch định lượng mạnh mẽ, có thể được gọi là một ví dụ điển hình của các chiến lược kết hợp. Hiệu suất thực tế vẫn còn cần được kiểm chứng thêm, nhưng về mặt lý thuyết, nó đã xem xét tổng hợp nhiều kịch bản, giải quyết các hạn chế của chỉ số đơn lẻ và đáng để nghiên cứu và ứng 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 )