
Tóm tắt: Chiến lược cú quạt K kép là một chiến lược kết hợp các lợi thế của chiến lược đảo ngược 123 và chiến lược K đặc biệt của Martin Pring. Chiến lược này nhằm tận dụng lợi thế của chiến lược đảo ngược và chiến lược chỉ số vòng lặp để đạt được tín hiệu mua bán chính xác hơn.
Nguyên tắc chiến lược:
Chiến lược K-quả cung có hai phần:
123 Chiến lược đảo ngược: Chiến lược này dựa trên đặc điểm giá đóng cửa của cổ phiếu đảo ngược trong 2 ngày liên tiếp, kết hợp với chỉ số ngẫu nhiên để xác định thời gian mua và bán. Khi giá đóng cửa cao hơn ngày trước và chỉ số ngẫu nhiên thấp hơn 50, được coi là trong giai đoạn thu hồi, tạo ra tín hiệu mua; Khi giá đóng cửa thấp hơn ngày trước và chỉ số ngẫu nhiên cao hơn 50, được coi là trong giai đoạn phân bổ, tạo ra tín hiệu bán.
Chiến lược K của Martin Pringle: Chiến lược này sử dụng sự chồng lên của các đường cong giá trị theo chu kỳ khác nhau để tạo thành một chỉ số chu kỳ tổng hợp. Khi chỉ số này đi qua đường trung bình di chuyển của nó, nó tạo ra tín hiệu mua; khi đi qua đường trung bình di chuyển của nó, nó tạo ra tín hiệu bán.
Chiến lược cú quạt K kép xử lý kết hợp hai tín hiệu chiến lược, tức là hai chiến lược phát ra tín hiệu mua / bán cùng một lúc, thì giao dịch thực tế sẽ xảy ra. Điều này có thể sử dụng lợi thế của hai chiến lược về thời điểm phán đoán của mỗi chiến lược, tránh một chiến lược tạo ra tín hiệu sai.
Phân tích lợi thế:
Sự kết hợp của hai chiến lược này giúp tín hiệu mua và bán trở nên đáng tin cậy hơn và tránh các giao dịch sai lầm.
Chiến lược đảo ngược 123 có thể nắm bắt cơ hội đảo ngược ngắn hạn, chiến lược Martin Pringter K có thể xác định xu hướng dài hạn, kết hợp cả ngắn hạn và dài hạn.
Sử dụng đường cong giá trị đa chu kỳ, có sự phán đoán sắc bén về nhịp độ thị trường chu kỳ lớn.
Các tham số chỉ số ngẫu nhiên có thể được tối ưu hóa để thích ứng với các đặc điểm của cổ phiếu trong các tình huống khác nhau.
Phân tích rủi ro:
Các tín hiệu hợp nhất có thể bỏ lỡ một số điểm mua và bán, không thể hoàn toàn gắn bó với thị trường ngắn hạn.
Trong trường hợp ngoài mẫu, hai tín hiệu chiến lược có thể không phù hợp và cần xác nhận chính xác hướng ưu tiên.
Các tham số cần phải được giám sát và tối ưu hóa cho cả hai chiến lược cùng một lúc, và tối ưu hóa là khó khăn hơn.
Không tối ưu hóa các tham số chỉ số chu kỳ dài hoặc ngắn có thể bỏ lỡ điểm chuyển đổi chu kỳ.
Định hướng tối ưu hóa:
Kiểm tra các tham số khác nhau ảnh hưởng đến hiệu quả của chiến lược và tìm ra sự kết hợp tối ưu của các tham số.
Thêm mô-đun dừng lỗ để tránh tổn thất mở rộng.
Thêm mô-đun tối ưu hóa khối lượng mở vị trí, điều chỉnh vị trí tùy theo tình hình thị trường.
Kết hợp các phương pháp học máy để đào tạo mô hình tín hiệu mua và bán tốt hơn.
Thêm mô-đun tối ưu hóa tham số thích ứng để tham số chiến lược theo dõi động lực của thị trường.
Tóm lại:
Chiến lược Double K Bounce đã kết hợp thành công các ưu điểm của chiến lược đảo ngược và chiến lược chỉ số vòng quay, đồng thời đảm bảo chất lượng tín hiệu, cân nhắc cơ hội lợi nhuận ngắn hạn và dài hạn. Chiến lược này là một ý tưởng mới, đáng để thử nghiệm và tối ưu hóa hơn nữa, có tiềm năng trở thành một chiến lược ổn định.
/*backtest
start: 2023-09-17 00:00:00
end: 2023-10-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 17/02/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
// Pring's Special K is a cyclical indicator created by Martin Pring.
// His method combines short-term, intermediate and long-term velocity
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// 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
MPSK(a, sources) =>
pos = 0.0
roc1 = (sma(roc(sources,10),10)*1)
roc2 = (sma(roc(sources,15),10)*2)
roc3 = (sma(roc(sources,20),10)*3)
roc4 = (sma(roc(sources,30),15)*4)
roc5 = (sma(roc(sources,40),50)*1)
roc6 = (sma(roc(sources,65),65)*2)
roc7 = (sma(roc(sources,75),75)*3)
roc8 = (sma(roc(sources,100),100)*4)
roc9 = (sma(roc(sources,195),130)*1)
roc10 = (sma(roc(sources,265),130)*2)
roc11 = (sma(roc(sources,390),130)*3)
roc12 = (sma(roc(sources,530),195)*4)
osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
oscsmt = sma(osc,a)
pos := iff(osc > oscsmt, 1,
iff(osc < oscsmt, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Martin Pring's Special K", 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, "---- Martin Pring`s ----")
a = input(10, title = "Smooth" )
sources = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPSK = MPSK(a,sources)
pos = iff(posReversal123 == 1 and posMPSK == 1 , 1,
iff(posReversal123 == -1 and posMPSK == -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 )