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


Ngày tạo: 2023-10-24 14:23:58 sửa đổi lần cuối: 2023-10-24 14:23:58
sao chép: 0 Số nhấp chuột: 619
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

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

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

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

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

    • Sử dụng hình thức 123 để đánh giá điểm đảo ngược xu hướng. Cụ thể, nếu giá đóng cửa tăng 2 ngày liên tiếp và đường chậm Stochastic thấp hơn 50 ngày thứ 9, thì đi lên; Nếu giá đóng cửa giảm 2 ngày liên tiếp và đường nhanh Stochastic cao hơn 50 ngày thứ 9, thì đi xuống.
  2. Chiến lược biến động thống kê

    • Sử dụng phương pháp giá trị cực đoan để tính toán tỷ lệ biến động thống kê trong gần 30 ngày. Nếu tỷ lệ biến động cao hơn 0,5% thì tăng, nếu thấp hơn 0,16% thì giảm.

Cuối cùng, nếu hai tín hiệu chiến lược phù hợp, tức là cả hai đều là bullish hoặc bearish, một tín hiệu giao dịch sẽ được tạo ra; nếu không phù hợp, giao dịch sẽ không được thực hiện.

Phân tích lợi thế chiến lược

Chiến lược này kết hợp hai loại chiến lược khác nhau để cải thiện độ tin cậy của tín hiệu.

  1. 123 hình thức phán đoán có thể nắm bắt chính xác các điểm đảo ngược xu hướng, tránh bị lừa bởi biến động giá đột ngột.

  2. Số liệu thống kê biến động phản ánh sự biến động của thị trường trong một tháng gần đây nhất, có thể lọc các khoảng thời gian có biến động cao, nhiều cơ hội giao dịch.

Hai chiến lược này được xác minh lẫn nhau, kết hợp với việc sử dụng các điểm biến động quan trọng của thị trường để có được tín hiệu giao dịch chính xác và đáng tin cậy hơn.

Phân tích rủi ro

  1. Hình thức 123 không thể hoàn toàn tránh được nguy cơ phá vỡ giả. Nếu có rung động bất thường, có thể hiểu sai tín hiệu.

  2. Tỷ lệ biến động thống kê chỉ xem xét dữ liệu lịch sử và không thể dự đoán xu hướng biến động trong tương lai. Nếu biến động thị trường đột ngột tăng lên hoặc thu hẹp, nó có thể tạo ra tín hiệu sai.

  3. Cả hai chiến lược đều phụ thuộc vào tối ưu hóa tham số. Nếu tham số được thiết lập không đúng cách, chất lượng tín hiệu sẽ bị giảm đáng kể.

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

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

  1. Có một số chỉ số khác, như Brin, KDJ và nhiều hơn nữa, tạo ra một cơ chế bỏ phiếu.

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

  3. Thiết lập tín hiệu lọc ngưỡng mạnh và yếu, tránh nhiễu tiếng ồn.

  4. Tối ưu hóa thiết lập tham số, điều chỉnh tham số cho các giống và chu kỳ khác nhau.

  5. Tăng cơ chế ngăn chặn thiệt hại để kiểm soát rủi ro của chiến lược chung.

Tóm tắt

Chiến lược này cải thiện chất lượng tín hiệu bằng cách sử dụng chiến lược đảo ngược xu hướng và chiến lược biến động thống kê để đưa ra chỉ thị giao dịch chính xác hơn tại các điểm biến động quan trọng của thị trường. Tuy nhiên, cũng cần chú ý đến rủi ro sai lầm và các vấn đề tối ưu hóa tham số. Kết hợp với nhiều chỉ số và các phương tiện học máy để tối ưu hóa hơn nữa, có thể có được giao dịch ổn định và đáng tin cậy hơn.

Mã nguồn chiến lược
/*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 )