Chiến lược đảo ngược động lượng kép


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

Tổng quan

Chiến lược đảo ngược động lượng kép kết hợp các lợi thế của chiến lược đảo ngược và chiến lược động lượng, sử dụng tín hiệu của cả hai loại chỉ số để kết hợp, hoạt động ngược tại điểm đột phá để kiếm lợi nhuận.

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

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

Phần thứ nhất là chiến lược 123 reversal.

  • Khi giá đóng cửa cao hơn giá đóng cửa ngày trước trong 2 ngày liên tiếp và đường K trung bình chậm trong 9 ngày thấp hơn 50;

  • Khi giá đóng cửa thấp hơn giá đóng cửa ngày trước trong 2 ngày liên tiếp và đường K trung bình nhanh hơn 50 ngày, hãy làm trống.

Phần thứ hai là chỉ số lượng dao động của nhôm. Các bước tính toán cho chỉ số này là:

  1. Tính giá trị biến động xMom = close - close[1]

  2. Tính toán giá trị tuyệt đối biến đổi xMomAbs = abs ((close - close)[1])

  3. Filter cho giá biến động, nếu nhỏ hơn Threshold Filter thì ghi là 0

  4. Filter cho giá biến động tuyệt đối, nếu nhỏ hơn Threshold Filter được ghi là 0

  5. Tính tổng nSum của giá biến động sau n ngày cuối cùng

  6. Tính tổng nAbsSum của biến động giá tuyệt đối sau n ngày cuối cùng

  7. Tính toán giá trị động lượng: nRes = 100 * nSum / nAbsSum

  8. Xác định giá trị động lực liên quan đến ranh giới TopBand và LowBand, đầu ra tín hiệu giao dịch

Chỉ số này được sử dụng để lọc các biến động nhỏ và chỉ trích các thông tin động từ các xu hướng lớn.

Cuối cùng, một tín hiệu giao dịch được tạo ra khi hai loại tín hiệu chỉ số phù hợp với nhau.

Phân tích lợi thế

Chiến lược này kết hợp lợi thế của hai loại chỉ số khác nhau để cải thiện chất lượng tín hiệu:

  1. Chiến lược đảo ngược 123 có thể bắt được xu hướng đảo ngược tại các điểm đảo ngược và tránh bị mắc kẹt.

  2. Chỉ số số số lượng dao động chỉ quan tâm đến sự biến động lớn, có thể lọc tiếng ồn và nắm bắt xu hướng chính.

  3. Kết hợp cả hai có thể xác minh tín hiệu, giảm khả năng giao dịch sai và tăng tỷ lệ thắng.

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. Phân tích một chu kỳ thời gian có thể bỏ lỡ xu hướng ở cấp độ lớn hơn.

  2. Các tham số được thiết lập quá cứng nhắc, không thể thích ứng với sự thay đổi của thị trường.

  3. Việc xác minh kép có thể làm mất đi một số cơ hội và làm giảm lợi nhuận.

  4. Các tín hiệu giao dịch kém chất lượng cũng sẽ được xác nhận và gây ra tổn thất.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thêm nhiều vòng xác minh thời gian để tránh bị mắc kẹt

  2. Thiết lập tham số thích ứng, điều chỉnh tham số chỉ số theo thị trường.

  3. Tối ưu hóa độ phân tích và giảm tỷ lệ báo cáo sai.

  4. Tăng chiến lược dừng lỗ, kiểm soát tổn thất đơn lẻ

  5. Điều chỉnh quản lý vị thế, tối ưu hóa hiệu quả sử dụng vốn.

Tóm tắt

Nói tóm lại, chiến lược đảo ngược số lượng động đôi kết hợp các lợi thế của chiến lược đảo ngược và chỉ số số số lượng dao động của chu kỳ, có thể cải thiện chất lượng tín hiệu và hiệu quả lợi nhuận ở một mức độ nhất định. Tuy nhiên, chiến lược này cũng có một số vấn đề, chẳng hạn như bỏ qua xu hướng cấp độ lớn hơn, tham số cứng, tín hiệu báo cáo sai và các rủi ro khác. Bằng cách xác minh nhiều khung thời gian, tham số thích ứng, thiết lập dừng lỗ, các phương pháp có thể tối ưu hóa chiến lược này, giảm rủi ro và tăng khả năng lợi nhuận ổn định.

Mã nguồn chiến lược
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/09/2019
// 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 plots a CMO which ignores price changes which are less 
// than a threshold value. CMO was developed by Tushar Chande. A scientist, 
// an inventor, and a respected trading system developer, Mr. Chande developed 
// the CMO to capture what he calls "pure momentum". For more definitive 
// information on the CMO and other indicators we recommend the book The New 
// Technical Trader by Tushar Chande and Stanley Kroll.
// The CMO is closely related to, yet unique from, other momentum oriented 
// indicators such as Relative Strength Index, Stochastic, Rate-of-Change, etc. 
// It is most closely related to Welles Wilder`s RSI, yet it differs in several ways:
// - It uses data for both up days and down days in the numerator, thereby directly 
// measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term extreme 
// movements in price are not hidden. Once calculated, smoothing can be applied to the 
// CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly see 
// changes in net momentum using the 0 level. The bounded scale also allows you to 
// conveniently compare values across different securities.
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

CMOfilt(Length,Filter, TopBand, LowBand) =>
    pos = 0
    xMom = close - close[1]
    xMomAbs = abs(close - close[1])
    xMomFilter = fFilter(xMom, xMomAbs, Filter)
    xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
    nSum = sum(xMomFilter, Length)
    nAbsSum = sum(xMomAbsFilter, Length)
    nRes =   100 * nSum / nAbsSum
    pos := iff(nRes > TopBand, 1,
	         iff(nRes < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & CMOfilt", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOfilt = CMOfilt(LengthCMO,Filter, TopBand, LowBand)
pos = iff(posReversal123 == 1 and posCMOfilt == 1 , 1,
	   iff(posReversal123 == -1 and posCMOfilt == -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 )