Chiến lược trung bình di chuyển thích nghi của Mala

Tác giả:ChaoZhang, Ngày: 2023-12-07 11:08:18
Tags:

img

Tổng quan

Chiến lược Mala Adaptive Moving Average là một chiến lược giao dịch định lượng dựa trên chỉ số MESA Adaptive Moving Average được phát triển bởi John Ehlers. Chiến lược này sử dụng sóng sinus để đưa ra quyết định giao dịch, mua ở mức thấp, bán ở mức cao. Bằng cách điều chỉnh các thông số trượt, sóng sinus có thể thích nghi với các sản phẩm và môi trường thị trường khác nhau.

Chiến lược logic

Chiến lược Mala Adaptive Moving Average sử dụng máy phát sóng xoắn để tạo ra tín hiệu giao dịch. Sóng xoắn được xác định bởi cái bóng được ném lên trục dọc bởi một vector quay (gọi là phasor). Khi vector quay 360 độ, một chu kỳ được hoàn thành. Các tín hiệu mua được tạo ra khi vector vượt qua một góc, và các tín hiệu bán khi nó vượt qua một góc khác. Do đó, các quyết định giao dịch được xác định về góc trong phạm vi tần số chứ không phải là đặc điểm hình sóng trong phạm vi thời gian, làm cho chiến lược mạnh mẽ hơn trên các hợp đồng tương lai và điều kiện thị trường khác nhau.

Cụ thể, chiến lược này đầu tiên làm mịn và giảm giá, sau đó tính toán hai thành phần của sóng sinus: thành phần trong pha I và thành phần hình vuông Q. Hai thành phần này được chồng lên nhau và lọc bằng cách thay đổi pha để có được Re và Im cuối cùng. Re và Im phản ánh thông tin tần số của sóng sinus. Thời gian có thể được lấy từ atanIm/Re. Một thời gian mịn được xác định dựa trên phạm vi thời gian dự kiến. Thông tin thời gian và giai đoạn xác định đường cong MAMA và FAMA, sự chéo chéo của chúng tạo ra tín hiệu giao dịch.

Phân tích lợi thế

Chiến lược trung bình di chuyển thích nghi Mala có những lợi thế sau:

  1. Sử dụng sóng sinus và pha như tín hiệu giao dịch làm cho chiến lược mạnh mẽ hơn, không bị ảnh hưởng bởi các đặc điểm hình sóng trong phạm vi thời gian.

  2. Tính thích nghi của các giai đoạn và các tham số cho phép thích nghi mạnh mẽ với những thay đổi của thị trường.

  3. Các đường cong MAMA và FAMA chỉ phụ thuộc vào các đặc điểm giá mà không bị chậm trễ, ghi lại sự đảo ngược xu hướng một cách kịp thời.

  4. Độ nhạy của chiến lược có thể được điều chỉnh thông qua điều chỉnh tham số để phù hợp với các phong cách giao dịch khác nhau.

  5. Logic rõ ràng và đơn giản giúp dễ hiểu, sửa đổi và áp dụng cho nghiên cứu và giảng dạy.

Phân tích rủi ro

Chiến lược trung bình động thích nghi của Mala cũng mang những rủi ro sau:

  1. Tùy thuộc vào các giai đoạn và giai đoạn đường cong sinus, sự biến dạng giá bất thường có thể tạo ra tín hiệu không chính xác.

  2. Các ranh giới cứng được thiết lập trong ước tính giai đoạn gây ra sự trơn tru không đủ trong các thay đổi giai đoạn.

  3. Khóa pha và khóa thời gian xung quanh các điểm chính dẫn đến dao động của đường cong, có khả năng thiếu các lối vào và lối ra tối ưu.

  4. Khả năng thích nghi của các thông số và đường cong giảm khi biến động thị trường tăng cường.

  5. Là một chỉ số kỹ thuật, chiến lược có xu hướng tạo ra các đột phá sai và tín hiệu sai xung quanh các mức kỹ thuật quan trọng.

Những rủi ro này có thể được giảm thiểu thông qua các tham số mịn hơn, lọc tín hiệu với các chỉ số khác, điều chỉnh kích thước vị trí, v.v.

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

Chiến lược trung bình di chuyển thích nghi của Mala có thể được cải thiện trong các khía cạnh sau:

  1. Cải thiện thời gian và tính toán tham số để dễ dàng hơn tự nhiên, ví dụ như giới thiệu các phương pháp thống kê để mô hình hóa giá tốt hơn.

  2. Bộ lọc tín hiệu với biến động, khối lượng và các yếu tố cơ bản để tăng độ chính xác.

  3. Tối ưu hóa cài đặt tham số và kiểm soát trượt để giảm chi phí giao dịch và cải thiện độ bền.

  4. giới thiệu máy học và thuật toán di truyền để tối ưu hóa tham số động.

  5. Phát triển sự kết hợp với các hệ thống xu hướng và đảo ngược trung bình dựa trên các mục nhập và đầu ra khác nhau để cải thiện lợi nhuận.

Kết luận

Chiến lược Mala Adaptive Moving Average sử dụng phân tích sóng sinus để tạo ra tín hiệu giao dịch, tự động thích nghi với những thay đổi của thị trường thông qua điều chỉnh tham số động, làm cho nó khá mạnh mẽ và có thể áp dụng rộng rãi. So với các chiến lược trung bình chuyển động thích nghi khác, nó thể hiện khả năng thực tế và ổn định cao hơn. Nhưng như một chiến lược kỹ thuật, nó chịu các tín hiệu sai xung quanh các mức kỹ thuật quan trọng, đòi hỏi lọc và tối ưu hóa với các công cụ phụ trợ. Với sự cải thiện liên tục, chiến lược này có tiềm năng trở thành một hệ thống giao dịch thích nghi được khuyến cáo.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dongyun

//@version=4
strategy("自适应移动平均的MESA系统", overlay=true)

fastlimit = input(0.5,'')
slowlimit = input(0.05,'')

smooth = 0.0
detrender = 0.0
I1 = 0.0
Q1 = 0.0
JI = 0.0
JQ = 0.0
I2 = 0.0
Q2 = 0.0
Re = 0.0
Im = 0.0
period = 0.0
smoothperiod = 0.0
phase = 0.0
deltaphase = 0.0
alpha = 0.0
MAMA = 0.0
FAMA = 0.0
price = 0.0

price := (high + low)/2
PI = 2 * asin(1)

if (bar_index > 5)
	smooth := (4*price + 3*price[1] + 2*price[2] + price[3])/10
	detrender := (.0962*smooth + .5769*nz(smooth[2]) - .5769*nz(smooth[4]) - .0962*nz(smooth[6]))*(.075*nz(period[1]) + .54)

	// compute InPhase and Quadrature components
	Q1 := (.0962*detrender + .5769*nz(detrender[2]) - .5769*nz(detrender[4]) - .0962*nz(detrender[6]))*(.075*nz(period[1]) + .54)

	I1 := nz(detrender[3])

	// advance the pulse of i1 and q1 by 90 degrees
	JI := (.0962*I1 + .5769*nz(I1[2]) - .5769*nz(I1[4]) - .0962*nz(I1[6]))*(.075*nz(period[1]) + .54)
	JQ := (.0962*Q1 + .5769*nz(Q1[2]) - .5769*nz(Q1[4]) - .0962*nz(Q1[6]))*(.075*nz(period[1]) + .54)

	//phase addition for 3-bar averaging 
	I2 := I1 - JQ
	Q2 := Q1 + JI

	//smooth the i and q components before applying
	I2 := .2*I2 + .8*nz(I2[1])
	Q2 := .2*Q2 + .8*nz(Q2[1])

	// hymodyne discriminator
	Re := I2*I2[1] + Q2*nz(Q2[1])
	Im := I2*Q2[1] + Q2*nz(I2[1])
	Re := .2*Re + .8*nz(Re[1])
	Im := .2*Im + .8*nz(Im[1])

	if (Im != 0 and Re != 0)
		period := 2 * PI/atan(Im/Re)

	if (period > 1.5 * nz(period[1]))
		period := 1.5*nz(period[1])

	if (period < .67*nz(period[1]))
		period := .67*nz(period[1])

	if (period < 6)
		period := 6

	if (period > 50)
		period := 50

	period := .2*period + .8*nz(period[1])
	smoothperiod := .33*period + .67*nz(smoothperiod[1])

	if (I1 != 0)
		phase := (180/PI) * atan(Q1/I1)

	deltaphase := nz(phase[1]) - phase

	if (deltaphase < 1)
		deltaphase := 1

	alpha := fastlimit/deltaphase
	if(alpha < slowlimit)
		alpha := slowlimit

	MAMA := alpha*price + (1 - alpha)*nz(MAMA[1])
	FAMA := .5*alpha*MAMA + (1 - .5*alpha)*nz(FAMA[1])

	if (FAMA < MAMA)
		strategy.entry("Long", strategy.long)
	else
		if (FAMA > MAMA)
			strategy.entry("Short", strategy.short)


Thêm nữa