Chiến lược kết hợp biến động đảo ngược xu hướng

Tác giả:ChaoZhang, Ngày: 2023-10-24 14:23:58
Tags:

img

Tổng quan

Chiến lược này kết hợp chiến lược đảo ngược xu hướng với chiến lược biến động thống kê để tạo ra các tín hiệu giao dịch mạnh hơn.

Làm thế nào nó hoạt động

Chiến lược bao gồm hai phần:

  1. Chiến lược đảo ngược xu hướng

    • Xác định các điểm đảo ngược xu hướng bằng cách sử dụng mô hình 123. Cụ thể, đi dài nếu gần đã tăng trong 2 ngày liên tiếp và đường chậm Stochastic 9 ngày dưới 50; đi ngắn nếu gần đã giảm trong 2 ngày liên tiếp và đường nhanh Stochastic 9 ngày trên 50.
  2. Chiến lược biến động thống kê

    • Tính toán biến động thống kê 30 ngày bằng phương pháp giá trị cực đoan. Đi dài nếu biến động trên 0,5%; đi ngắn nếu biến động dưới 0,16%.

Chiến lược chỉ tạo ra tín hiệu giao dịch khi cả hai chiến lược đồng ý về hướng (cả hai dài hoặc cả hai ngắn).

Phân tích lợi thế

Chiến lược combo cải thiện độ tin cậy tín hiệu bằng cách kết hợp hai loại chiến lược khác nhau:

  1. Mô hình 123 nắm bắt chính xác các điểm đảo ngược xu hướng và tránh bị đánh lừa bởi các đợt tăng giá một lần.

  2. Sự biến động thống kê tập trung vào các giai đoạn biến động cao, cơ hội cao dựa trên sự chuyển động của thị trường trong tháng qua.

Bằng cách xác minh lẫn nhau, hai chiến lược kết hợp nắm bắt các bước ngoặt thị trường chính xác hơn và tạo ra các tín hiệu giao dịch chính xác hơn.

Phân tích rủi ro

  1. 123 mô hình không thể tránh hoàn toàn nguy cơ thoát sai.

  2. Sự biến động thống kê chỉ xem xét dữ liệu lịch sử và không thể dự đoán sự thay đổi biến động trong tương lai.

  3. Cả hai chiến lược đều phụ thuộc rất nhiều vào việc điều chỉnh tham số.

  4. Mặc dù tổng thể đáng tin cậy hơn, phương pháp kết hợp có thể bỏ lỡ một số tín hiệu mạnh mẽ từ các chiến lược riêng lẻ.

Các lĩnh vực cải thiện

  1. Kết hợp thêm các chỉ số như Bollinger Bands, KDJ để tạo ra một cơ chế bỏ phiếu.

  2. Thêm các thuật toán học máy để xác định xác suất đảo ngược xu hướng bằng cách sử dụng nhiều dữ liệu lịch sử hơn.

  3. Đặt ngưỡng cường độ tín hiệu để lọc ra tiếng ồn.

  4. Tối ưu hóa các tham số cho các sản phẩm và khung thời gian khác nhau.

  5. Thêm các cơ chế dừng lỗ để kiểm soát rủi ro của chiến lược kết hợp.

Kết luận

Chiến lược này cải thiện chất lượng tín hiệu bằng cách kết hợp các chiến lược đảo ngược xu hướng và biến động thống kê, cung cấp các tín hiệu giao dịch chính xác hơn xung quanh các thời điểm chuyển hướng của thị trường.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/07/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 used to calculate the statistical volatility, sometime 
// called historical volatility, based on the Extreme Value Method.
// Please use this link to get more information about Volatility.
//
// 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


SV(Length,TopBand,LowBand) =>
    pos = 0.0
    xMaxC = highest(close, Length)
    xMaxH = highest(high, Length)
    xMinC = lowest(close, Length)
    xMinL = lowest(low, Length)
    SqrTime = sqrt(253 / Length)
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    nRes = iff(Vol < 0,  0, iff(Vol > 2.99, 2.99, Vol))
    pos := iff(nRes > TopBand, 1,
    	     iff(nRes < LowBand, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Statistical Volatility", 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, "---- Statistical Volatility ----")
LengthSV = input(30, minval=1)
TopBand = input(0.005, step=0.001)
LowBand = input(0.0016, step=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSV = SV(LengthSV,TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSV == 1 , 1,
	   iff(posReversal123 == -1 and posSV == -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