Chiến lược theo dõi đảo ngược trung bình hai yếu tố

Tác giả:ChaoZhang, Ngày: 2023-12-19 11:09:20
Tags:

img

Tổng quan

Chiến lược này thuộc về chiến lược theo dõi đảo ngược trung bình hai yếu tố trong lĩnh vực giao dịch định lượng. Nó tích hợp chiến lược đảo ngược 123 và chiến lược kênh Keltner với hai yếu tố, nhằm phát hiện các tín hiệu đảo ngược và thực hiện ý tưởng giao dịch mua thấp và bán cao.

Nguyên tắc

Chiến lược này bao gồm hai chiến lược phụ. Chiến lược phụ đầu tiên là chiến lược đảo ngược 123. Nó đánh giá liệu thị trường có ở điểm đảo ngược bằng cách tính toán sự thay đổi giá đóng trong hai ngày giao dịch trước đó và kết hợp chỉ số Stochastic. Cụ thể, khi giá đóng tăng trong hai ngày liên tiếp và chỉ số Stochastic dưới 50, một tín hiệu mua được phát hành; Khi giá đóng giảm trong hai ngày liên tiếp và chỉ số Stochastic trên 50, một tín hiệu bán được phát hành.

Chiến lược phụ thứ hai là chiến lược kênh Keltner. Chiến lược này tính toán mức trung bình chuyển động giá điển hình và phạm vi biến động trong n ngày giao dịch gần đây nhất. Khi giá tiếp cận đường ray trên hoặc dưới, các tín hiệu giao dịch ngược được phát hành. Khi giá dưới đường ray dưới, đi ngắn; khi nó trên đường ray trên, đi dài.

Cuối cùng, bằng cách đánh giá các hướng tín hiệu của hai chiến lược phụ, chiến lược tính toán tín hiệu vị trí cuối cùng. Khi các tín hiệu của hai chiến lược phụ phù hợp, các lệnh giao dịch thực được phát hành, nếu không không có giao dịch nào được thực hiện để đạt được mục đích xác minh hai yếu tố.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược theo dõi đảo ngược trung bình hai yếu tố này là nó có thể nắm bắt các cơ hội trong thời gian khi thị trường đảo ngược và thực hiện ý tưởng giao dịch mua thấp và bán cao.

Cụ thể, cài đặt tham số của chỉ số Stochastic trong chiến lược đảo ngược 123 tương đối bảo thủ, có thể lọc hiệu quả các đảo ngược sai trong thị trường dao động. Và ý tưởng theo dõi kênh Keltner Bollinger Bands cũng có thể nắm bắt các cơ hội đảo ngược khi giá vượt qua đường ray trên và dưới. Cả hai bổ sung lẫn nhau để giảm các giao dịch không cần thiết và do đó có tỷ lệ thắng cao hơn.

Phân tích rủi ro

Rủi ro chính của chiến lược này là thời gian của các tín hiệu đảo ngược là rất quan trọng. Nếu sự đảo ngược sai liên tục xảy ra hoặc thời gian của các tín hiệu đảo ngược được chọn không đúng cách, nó sẽ dẫn đến việc không duy trì một xu hướng hoàn chỉnh, do đó ảnh hưởng đến lợi nhuận cuối cùng.

Ngoài ra, các chiến lược hai yếu tố có khó khăn hơn trong việc lựa chọn và tối ưu hóa tham số so với các chiến lược một yếu tố.

Cuối cùng, giao dịch ngược chính nó có tỷ lệ rủi ro-lợi nhuận không cân xứng. Điều kiện thị trường bất thường có thể dễ dàng dẫn đến thanh lý. Điều này cần được tránh thông qua việc dừng lỗ nghiêm ngặt.

Hướng dẫn tối ưu hóa

Theo phân tích rủi ro trên, chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra các thiết lập khác nhau của các thông số chỉ số đảo ngược để tìm kết hợp với khả năng chịu lỗi cao hơn và ít tín hiệu sai
  2. Cố gắng các giá trị tham số của các chiều dài chu kỳ khác nhau để tìm các giá trị nắm bắt đảo ngược chính xác hơn
  3. Thêm một mô-đun dừng lỗ để kiểm soát chặt chẽ mức lỗ tối đa cho mỗi giao dịch
  4. Kiểm tra tác động của các khoảng thời gian giữ khác nhau để tìm các điểm thoát phù hợp hơn với logic chiến lược
  5. Tăng số lượng các vị trí mở hoặc thêm các mô-đun kiểm soát vị trí để làm cho tỷ lệ rủi ro-lợi nhuận hợp lý hơn

Tóm lại

Như một chiến lược theo dõi đảo ngược trung bình hai yếu tố điển hình, bằng cách tích hợp các chiến lược phụ đảo ngược 123 và kênh Keltner, chiến lược này nhằm mục đích nắm bắt chính xác hơn thời gian mua thấp và bán cao tại các điểm đảo ngược thị trường. Với tối ưu hóa tham số và kiểm soát rủi ro thích hợp, một chiến lược như vậy có thể đạt được alpha tương đối đáng kể. Nhưng các nhà giao dịch vẫn cần chú ý đến tính đặc biệt của giao dịch đảo ngược và ngăn chặn sự mở rộng tổn thất do điều kiện thị trường bất thường gây ra.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/12/2020
// 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
// The Keltner Channel, a classic indicator 
// of technical analysis developed by Chester Keltner in 1960. 
// The indicator is a bit like Bollinger Bands and Envelopes.
//
// 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

KeltnerChn(nPeriod) =>
    pos = 0.0
    xPrice = sma(hlc3, nPeriod)
    xMove = sma(high - low, nPeriod)
    reverse = input(false, title="Trade reverse")
    xUpper = xPrice + xMove
    xLower = xPrice - xMove
    pos := iff(close < xLower, -1,
             iff(close > xUpper, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Keltner Channel", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nPeriod = input(title="Period", defval=10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKeltnerChn = KeltnerChn(nPeriod)
pos = iff(posReversal123 == 1 and posKeltnerChn == 1 , 1,
	   iff(posReversal123 == -1 and posKeltnerChn == -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