Chiến lược giao dịch đảo ngược động lực

Tác giả:ChaoZhang, Ngày: 2023-10-09 17:21:27
Tags:

Tổng quan

Chiến lược giao dịch đảo ngược động lực kết hợp các lợi thế của các chiến lược đảo ngược và động lực bằng cách sử dụng tín hiệu từ cả hai loại chỉ số để thực hiện các giao dịch theo hướng ngược lại tại các điểm chuyển đổi để kiếm lợi nhuận.

Chiến lược logic

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

Phần đầu tiên là chiến lược đảo ngược 123.

  • Đi dài khi giá đóng cửa cao hơn giá đóng cửa trước đó trong 2 ngày liên tiếp và Trình dao động Stochastic chậm 9 ngày dưới 50.

  • Đi ngắn khi giá đóng cửa thấp hơn giá đóng cửa trước đó trong 2 ngày liên tiếp và Stochastic Oscillator nhanh 9 ngày trên 50.

Phần thứ hai là chỉ số động lượng được lọc.

  1. Tính toán thay đổi giá xMom = đóng - đóng [1]

  2. Tính toán sự thay đổi giá tuyệt đối xMomAbs = abs ((close - close[1])

  3. Xọa xMom nếu nhỏ hơn ngưỡng

  4. Chế độ lọc xMomAbs nếu nhỏ hơn ngưỡng Chế độ lọc đến 0

  5. Tính toán tổng số xMom được lọc trong n ngày nSum

  6. Tính toán tổng số xMomAbs được lọc trong n ngày nAbsSum

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

  8. Tạo tín hiệu dựa trên nRes và băng tần TopBand, LowBand

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

Cuối cùng, các tín hiệu giao dịch được tạo ra khi các tín hiệu từ cả hai chỉ số liên kết dài hoặc ngắn.

Phân tích lợi thế

Chiến lược kết hợp các 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 bắt được xu hướng đảo ngược tại các điểm chuyển hướng, tránh bị mắc kẹt.

  2. Chỉ số động lượng được lọc chỉ tập trung vào các chuyển động lớn, lọc ra tiếng ồn và bắt các xu hướng chính.

  3. Kết hợp chúng xác minh tín hiệu và giảm các giao dịch không chính xác, cải thiện tỷ lệ thắng.

Phân tích rủi ro

Những rủi ro chính của chiến lược này bao gồm:

  1. Phân tích khung thời gian duy nhất có thể bỏ qua xu hướng lớn hơn.

  2. Các thiết lập tham số tĩnh không thể thích nghi với những thay đổi của thị trường.

  3. Kiểm tra hai lần có thể bỏ lỡ một số cơ hội, làm giảm tiềm năng lợi nhuận.

  4. Các tín hiệu chất lượng thấp cũng có thể được xác minh, dẫn đến mất mát.

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

Chiến lược có thể được tối ưu hóa trong một số khía cạnh:

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

  2. Sử dụng các thông số thích nghi để điều chỉnh các chỉ số dựa trên điều kiện thị trường.

  3. Tối ưu hóa ngưỡng bộ lọc để giảm tín hiệu sai.

  4. Thêm stop loss để kiểm soát số tiền lỗ giao dịch duy nhất.

  5. Điều chỉnh kích thước vị trí để tối ưu hóa hiệu quả sử dụng vốn.

Kết luận

Kết luận, chiến lược đảo ngược đà kết hợp các điểm mạnh của các chiến lược đảo ngược và lọc đà để cải thiện chất lượng tín hiệu và lợi nhuận ở một mức độ nào đó. Tuy nhiên, nó cũng có một số nhược điểm như bỏ qua xu hướng lớn hơn, các tham số tĩnh, tín hiệu sai v.v. Các phương pháp như xác thực nhiều khung thời gian, tham số thích nghi, dừng lỗ có thể tối ưu hóa chiến lược bằng cách giảm rủi ro và cải thiện lợi nhuận ổn định.


/*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 )

Thêm nữa