Chiến lược lọc động lực trung bình động

Tác giả:ChaoZhang, Ngày: 2023-12-12 12:35:05
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch trung bình động được xây dựng bằng các kỹ thuật lọc đà. Nó đặt ngưỡng cho các thay đổi giá để lọc ra các biến động giá nhỏ, chỉ chọn các biến động giá lớn để tính toán, do đó cải thiện sự ổn định của chiến lược.

Chiến lược logic

Chỉ số cốt lõi của chiến lược này là Chande Momentum Oscillator (CMO) được lọc theo động lực. Chande Momentum Oscillator là một loại chỉ số động lực đánh giá động lực của xu hướng bằng cách tính tỷ lệ của tổng các giá trị tuyệt đối của ngày tăng và giảm với tổng giá tăng và giảm. Chiến lược này cải thiện nó bằng cách thiết lập ngưỡng tối thiểu của sự thay đổi giá gọi là Filter. Chỉ khi sự thay đổi giá vượt quá ngưỡng này, nó sẽ tham gia tính toán CMO. Điều này lọc ra rất nhiều biến động nhỏ trên thị trường và làm cho chỉ số ổn định và đáng tin cậy hơn.

Dựa trên tính toán chỉ số, nó thiết lập đường trên TopBand và đường dưới LowBand. Khi chỉ số vượt quá hai đường này, các tín hiệu giao dịch được tạo ra. Cuối cùng, tham số đầu vào ngược có thể đảo ngược các tín hiệu ban đầu để nhận ra hoạt động ngược.

Phân tích lợi thế

Đây là một chiến lược theo xu hướng rất ổn định và đáng tin cậy. Bằng cách áp dụng các kỹ thuật lọc động lực, nó có thể lọc hiệu quả tiếng ồn thị trường và tránh bị mắc kẹt. Chiến lược có không gian tối ưu hóa tham số lớn, các tham số như Filter, TopBand, LowBand, vv có thể được điều chỉnh để tối ưu hóa chỉ số chiến lược. Nó cũng có chức năng giao dịch ngược có thể thích nghi linh hoạt với các môi trường thị trường khác nhau.

Phân tích rủi ro

Chiến lược này chủ yếu dựa vào việc theo xu hướng, vì vậy nó có xu hướng tạo ra tín hiệu sai và thua lỗ trong các thị trường giới hạn phạm vi. Ngoài ra, tối ưu hóa tham số không đúng cũng có thể dẫn đến tần suất giao dịch quá cao hoặc tín hiệu không ổn định. Cuối cùng, việc sử dụng không đúng tham số giao dịch ngược có thể dẫn đến thua lỗ không cần thiết.

Để giảm những rủi ro này, các tham số nên được tối ưu hóa hợp lý để làm cho các tín hiệu ổn định và đáng tin cậy hơn; tránh sử dụng chiến lược này trong các thị trường giới hạn phạm vi, chọn các công cụ chiến lược phù hợp hơn; sử dụng các chức năng giao dịch ngược với sự thận trọng, tránh kích hoạt nó khi tối ưu hóa tham số không phải là lý tưởng.

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

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

  1. Tối ưu hóa giá trị tham số Filter, đảm bảo lọc tiếng ồn thị trường trong khi giữ tần suất giao dịch không quá thấp.

  2. Tối ưu hóa phạm vi tham số của TopBand và LowBand để phù hợp với phạm vi biến động thị trường để ngăn chặn tín hiệu sai.

  3. Sử dụng phân tích tiến bộ và các phương pháp khác để tối ưu hóa các tham số một cách năng động để các tham số chiến lược thích nghi với những thay đổi của thị trường.

  4. Thêm logic dừng lỗ và thiết lập các điểm dừng lỗ hợp lý để kiểm soát lỗ.

  5. Bộ lọc với các chỉ số kỹ thuật khác như MACD, KD để tránh giao dịch sai trên các thị trường không có xu hướng.

Tóm lại

Đây là một chiến lược theo xu hướng rất thực tế. Nó áp dụng các kỹ thuật lọc động lực để hạn chế hiệu quả tiếng ồn thị trường và tạo ra các tín hiệu rõ ràng và đáng tin cậy hơn. Thông qua tối ưu hóa tham số và tối ưu hóa logic, nó có thể được điều chỉnh thành một công cụ giao dịch định lượng đáng tin cậy và ổn định. Tuy nhiên, cần lưu ý những rủi ro từ việc sử dụng nó trong các thị trường giới hạn phạm vi và tối ưu hóa tham số không đúng cách. Nói chung, đây là một mẫu chiến lược có triển vọng ứng dụng tuyệt vời.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/03/2017
// 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.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

strategy(title="CMOfilt", shorttitle="CMOfilt")
Length = 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")
hline(0, color=gray, linestyle=line)
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
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))) 
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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="CMOfilt")


Thêm nữa