Chiến lược trung bình động thích ứng


Ngày tạo: 2023-12-07 11:08:18 sửa đổi lần cuối: 2023-12-07 11:08:18
sao chép: 2 Số nhấp chuột: 753
1
tập trung vào
1619
Người theo dõi

Chiến lược trung bình động thích ứng

Tổng quan

Chiến lược Đường trung bình di chuyển thích ứng (tiếng Anh: Mala Adaptive Moving Average Strategy) là một chiến lược giao dịch định lượng dựa trên chỉ số Đường trung bình di chuyển thích ứng của MESA của John Ehlers. Chiến lược này sử dụng sóng âm để đưa ra quyết định giao dịch, mua ở mức thấp và bán ở mức cao, cho phép sóng âm tự điều chỉnh các tham số bằng cách trượt để thích ứng với các giống và môi trường thị trường khác nhau.

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

Chiến lược trung bình di chuyển thích ứng sử dụng máy tạo sóng dương để tạo ra tín hiệu giao dịch. Sóng dương được xác định bởi bóng râm của một vector xoay (được gọi là pha) trên trục trục. Khi vector quay 360 độ, nó hoàn thành một chu kỳ.

Cụ thể, chiến lược này xử lý giá bằng phẳng và giảm xu hướng trước tiên, sau đó tính hai phần của sóng dương: phần đồng pha I và phần ngang qua Q. Hai phần này được chồng lên nhau và trúng sóng bằng cách di chuyển phẳng, Re và Im. Re và Im phản ánh thông tin tần số của sóng dương, và thông qua atAnIm / Re có thể đưa ra một giai đoạn chu kỳ. Xác định một giai đoạn mịn theo phạm vi chu kỳ mong muốn.

Phân tích lợi thế

Chiến lược trung bình di chuyển thích ứng có những ưu điểm sau:

  1. Sử dụng sóng âm và pha như tín hiệu giao dịch, làm cho chiến lược trở nên mạnh hơn, không bị ảnh hưởng bởi hình dạng sóng thời gian.

  2. Chu kỳ và tham số có thể được điều chỉnh động để thích ứng với sự thay đổi của thị trường, có khả năng thích ứng mạnh mẽ.

  3. Các đường cong MAMA và FAMA chỉ phụ thuộc vào các đặc điểm của chính giá cả, không có sự chậm trễ, có thể bắt kịp sự chuyển đổi xu hướng.

  4. Bạn có thể điều chỉnh độ nhạy của chiến lược bằng cách đặt các tham số, phù hợp với các thương nhân với phong cách khác nhau.

  5. Chiến lược logic rõ ràng, đơn giản, dễ hiểu và sửa đổi, phù hợp cho nghiên cứu và giảng dạy.

Phân tích rủi ro

Các chiến lược trung bình di chuyển thích nghi cũng có những rủi ro sau:

  1. Do phụ thuộc vào chu kỳ và giai đoạn của đường cong hợp âm, tín hiệu sai sẽ được tạo ra khi giá bị biến dạng bất thường.

  2. Giới hạn cứng được thiết lập khi đánh giá chu kỳ, điều này sẽ làm cho sự thay đổi của chu kỳ không đủ mượt mà.

  3. Hiệu ứng tế bào của vị trí và chu kỳ làm cho đường cong dao động gần các điểm quan trọng, có thể bỏ lỡ các mục nhập và lối ra tốt nhất.

  4. Khi thị trường biến động, các tham số và đường cong có thể giảm khả năng tự điều chỉnh.

  5. Là một chỉ số kỹ thuật, chiến lược dễ bị đột phá giả và tín hiệu sai ở các vị trí kỹ thuật quan trọng.

Những rủi ro này có thể được giảm nhẹ bằng cách đặt các tham số mượt hơn, lọc kết hợp với các chỉ số khác, điều chỉnh quy mô nắm giữ.

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

Chiến lược trung bình di chuyển thích ứng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Phương pháp tính toán của chu kỳ và tham số được cải thiện để thay đổi của nó trở nên trơn tru hơn. Ví dụ, các phương pháp thống kê có thể được đưa vào để mô hình hóa tốt hơn về giá cả.

  2. Kết hợp các chỉ số như tỷ lệ dao động, số lượng giao dịch để lọc tín hiệu, tăng độ chính xác. Nó cũng có thể kết hợp với sự tin cậy của tín hiệu để hiểu cơ bản.

  3. Tối ưu hóa thiết lập tham số và kiểm soát điểm trượt, giảm chi phí giao dịch và tăng sự ổn định của hệ thống.

  4. Tiến hành các phương pháp tối ưu hóa động như học máy và thuật toán di truyền, để các tham số hệ thống liên tục phát triển và cập nhật.

  5. Thiết lập các Entries và Exits khác nhau, kết hợp xu hướng và hệ thống đảo ngược, xây dựng danh mục đầu tư, nâng cao khả năng lợi nhuận bền vững.

Tóm tắt

Chiến lược đường trung bình di chuyển thích ứng sử dụng phân tích sóng âm để tạo ra tín hiệu giao dịch, thông qua các tham số điều chỉnh động cho phép hệ thống tự động thích ứng với sự thay đổi của môi trường thị trường, có tính mạnh mẽ và khả năng áp dụng rộng rãi. So với các chiến lược đường trung bình di chuyển thích ứng khác, nó có tính thực tế và ổn định cao hơn.

Mã nguồn chiến lược
/*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)