Chiến lược giao dịch dao động của CMO

Tác giả:ChaoZhang, Ngày: 2023-09-19 21:16:26
Tags:

Tổng quan

Chiến lược này sử dụng Chande Momentum Oscillator (CMO) để xác định mức mua quá mức và bán quá mức cho các tín hiệu giao dịch. Các giá trị CMO tuyệt đối trong 3 giai đoạn được tính trung bình để làm mịn dao động để xác định cực đoan. Một chiến lược giao dịch dao động đảo ngược trung bình điển hình.

Chiến lược logic

Logic chính bao gồm:

  1. Tính toán giá trị hoàn toàn của CMO trong 3 giai đoạn khác nhau
  2. Lấy trung bình của các giá trị hoàn toàn của CMO 3 giai đoạn
  3. Đi ngắn khi giá trị trung bình vượt quá ngưỡng trên
  4. Đi dài khi giá trị trung bình giảm xuống dưới ngưỡng thấp hơn
  5. Khóa các vị trí khi CMO quay trở lại phạm vi bình thường

CMO phản ánh đà thay đổi giá. Các giá trị tuyệt đối cao đại diện cho sự khác biệt giá vào khu vực mua quá mức / bán quá mức. Chiến lược sử dụng đặc điểm này của CMO, sử dụng trung bình nhiều giai đoạn để làm mịn đường cong để xác định cực đoan.

Ưu điểm

  • Sử dụng CMO để xác định các khu vực mua quá mức / bán quá mức
  • Trung bình nhiều giai đoạn làm mịn đường cong và tránh tín hiệu sai
  • Cơ sở lý thuyết hợp lý cho việc phát hiện mua quá mức/bán quá mức
  • Các ngưỡng tham số có thể tùy chỉnh để điều chỉnh
  • Thực hiện đảo ngược trung bình đơn giản

Rủi ro và giảm thiểu

  • Khả năng tín hiệu CMO sai
  • Cần tối ưu hóa ngưỡng liên tục
  • Các cực đoan duy trì trong thời gian xu hướng có thể gây ra tổn thất

Hạn chế:

  1. Thêm bộ lọc xu hướng để tránh giao dịch ngược xu hướng
  2. Tối ưu hóa tham số để có độ nhạy tốt hơn của CMO
  3. Sử dụng lệnh dừng để hạn chế lỗ

Cơ hội gia tăng

Chiến lược có thể được tăng cường thông qua:

  1. Xác nhận khối lượng để tránh sự đột phá sai
  2. Bao gồm các điểm dừng để quản lý rủi ro tốt hơn
  3. Tự động tối ưu hóa các thông số thông qua máy học
  4. Định giá vị trí dựa trên sự biến động
  5. Kết hợp với các chiến lược khác để đa dạng hóa và cải thiện lợi nhuận

Kết luận

Chiến lược này sử dụng CMO để xác định quá mua / quá bán cho giao dịch đảo ngược trung bình. Trung bình nhiều giai đoạn giúp tránh các tín hiệu sai. CMO có cơ sở lý thuyết vững chắc để đo sự khác biệt. Cải thiện thông qua các thông số, điểm dừng và bộ lọc tốt hơn có thể làm cho nó trở thành một chiến lược giao dịch dao động ổn định.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
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="CMOabsav")

Thêm nữa