123 Khái ngược trung bình động hội tụ Divergence Combination Strategy

Tác giả:ChaoZhang, Ngày: 2023-11-22 14:49:41
Tags:

img

Tổng quan

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.

Nguyên tắc chiến lược

123 Cơ chế hình thành đảo ngược

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.

Nguyên tắc chỉ số KST

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.

Kết hợp tín hiệu

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:

  • Nếu cả hai tín hiệu là giống nhau, một tín hiệu giao dịch được tạo ra theo hướng đó
  • Nếu hai tín hiệu khác nhau, không có giao dịch xảy ra

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.

Ưu điểm của Chiến lược

  • Phần đảo ngược có thể xác định hiệu quả các điểm chuyển đổi và phần chỉ số có thể theo dõi xu hướng, bổ sung cho nhau
  • Việc lọc bằng các chỉ báo kép có thể cải thiện chất lượng tín hiệu và giảm tín hiệu sai
  • Điều chỉnh linh hoạt các tham số KST để tối ưu hóa cho các cổ phiếu có chu kỳ khác nhau
  • Có thể thích nghi với các cổ phiếu biến động cao, cũng có thể được sử dụng cho các cổ phiếu tương đối ổn định

Rủi ro của chiến lược

  • Nguy cơ thất bại đảo ngược, tín hiệu đảo ngược cũng có thể là phá vỡ sai
  • Một số cơ hội có thể bị bỏ lỡ sau khi kết hợp tín hiệu
  • Các thông số KST không chính xác có thể ảnh hưởng đến kết quả
  • Khi giá cổ phiếu biến động mạnh, KST chậm, tín hiệu không nhất quán có thể xuất hiệ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.

Hướng tối ưu hóa

  • Tối ưu hóa các thông số Stochastic
  • Tối ưu hóa các thông số chiều dài của đường KST
  • Thêm bộ lọc khối lượng giao dịch hoặc chỉ số biến động
  • Thêm phán đoán xu hướng để tránh giao dịch chống lại xu hướng
  • Thiết lập cơ chế dừng lỗ

Kết luận

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 )

Thêm nữa