Chiến lược giao dịch đảo ngược dựa trên phạm vi trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-25 14:16:28
Tags:

img

Tổng quan

Chiến lược này được gọi là Moving Average Range Reversal. Nó xác định các cơ hội đảo ngược thị trường bằng cách tính toán chéo giữa các đường trung bình động của các khung thời gian khác nhau và có các vị trí dài / ngắn thích hợp.

Chiến lược logic

Chiến lược tính toán 3 đường trung bình động cùng một lúc:

  1. MA nhanh (sự dài): phản ánh sự thay đổi giá gần đây nhất
  2. Slow MA (length): phản ánh xu hướng giá trung hạn
  3. MA chậm nhất (slength): phản ánh xu hướng giá dài hạn

Khi MA nhanh vượt qua trên MA chậm, nó báo hiệu một sự đảo ngược xu hướng ngắn hạn để tăng.

Để tránh các tín hiệu sai, một MA thứ 4 được giới thiệu như bộ lọc dài hạn (tlength). Chỉ trên bộ lọc này các tín hiệu dài được xem xét. Chỉ dưới bộ lọc này các tín hiệu ngắn được xem xét.

Các quy tắc giao dịch cụ thể là:

  1. Khi MA nhanh vượt qua trên MA chậm, và MA chậm cũng vượt qua trên MA chậm nhất (lượng tăng ngắn hạn), trong khi giá vượt quá bộ lọc dài hạn, mua mua.

  2. Khi MA nhanh vượt qua dưới MA chậm, và MA chậm cũng vượt qua dưới MA chậm nhất (giảm ngắn hạn), trong khi giá dưới bộ lọc dài hạn, đi ngắn.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Sử dụng nhiều khung thời gian để xác định sự thay đổi xu hướng chính xác hơn và giảm tín hiệu sai.
  2. Bộ lọc dài hạn tránh giao dịch sai vị trí trước khi đảo ngược xu hướng lớn.
  3. Quy tắc đơn giản và rõ ràng, dễ hiểu và tự động hóa.
  4. Các chiến lược đảo ngược được hưởng lợi từ sự thiên vị tích cực về lợi nhuận và lợi nhuận.
  5. Kết quả backtest tốt trong giao dịch trực tiếp mô phỏng về lợi nhuận và yếu tố lợi nhuận.

Phân tích rủi ro

Các rủi ro của chiến lược bao gồm:

  1. Chiến lược MA nhạy cảm với các thông số. Các thông số khác nhau dẫn đến kết quả khác nhau.
  2. Sự phá vỡ sai của tín hiệu đảo ngược có thể gây ra tổn thất.
  3. Các bước đi bên kéo dài có thể hủy bỏ lợi nhuận từ những bước đảo ngược lặp đi lặp lại.
  4. Giá có thể đảo ngược và tăng tốc với sức mạnh, không dừng lỗ kịp thời.

Giải pháp:

  1. Tối ưu hóa các thông số để tìm kết hợp tốt nhất.
  2. Tăng thời gian xác nhận tín hiệu để tránh tín hiệu sai.
  3. Mở rộng phạm vi dừng lỗ để kiểm soát số tiền mất mát.

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

Chiến lược có thể được cải thiện trong các khía cạnh sau:

  1. Kiểm tra nhiều bộ tham số hơn để tìm giá trị tối ưu.
  2. Thêm bộ lọc âm lượng để tránh tín hiệu sai trong điều kiện âm lượng thấp.
  3. Bao gồm các chỉ số khác để xác nhận tín hiệu nhập cảnh.
  4. Thực hiện điều chỉnh động của stop loss để kiểm soát thoát tốt hơn.
  5. Tối ưu hóa quản lý rủi ro để kiểm soát rủi ro chặt chẽ hơn.

Kết luận

Chiến lược này giao dịch các biến đổi thị trường được xác định bởi các đường chéo MA, với hướng dẫn hướng từ bộ lọc dài hạn. Nó có hiệu quả nắm bắt các cơ hội tại các thời điểm chuyển đổi. Kết quả backtest tích cực cho thấy lợi nhuận tốt cho ứng dụng trực tiếp. Tăng cường tối ưu hóa các thông số, lọc tín hiệu, dừng lỗ v.v.v. có thể làm cho chiến lược mạnh mẽ hơn cho việc sử dụng thực tế.


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

//@version=5

strategy("Moving Average Trap", overlay=true)

flenght = input.int(title="Fast MA Period", minval=1, maxval=2000, defval=3)
llenght = input.int(title="Slower MA Period", minval=1, maxval=2000, defval=5)
sslenght = input.int(title="Slowest MA Period", minval=1, maxval=2000, defval=8)
tlenght = input.int(title="Trend Filter MA Period", minval=1, maxval=2000, defval=200)

ssma = ta.sma(close, sslenght)
fma = ta.sma(close, flenght)
sma = ta.sma(close, llenght)
tma = ta.sma(close, tlenght)

plot(fma, color=color.red)
plot(sma, color=color.white)
plot(ssma, color=color.green)
plot(tma, color=color.maroon, linewidth=2)

short =  (fma > sma and sma > ssma) and close < tma
long = (fma < sma and sma < ssma) and close > tma
closeshort = fma < sma and sma < ssma
closelong = fma > sma and sma > ssma

if long
	strategy.entry("long", strategy.long)
if closelong
	strategy.close("long")
if short
	strategy.entry("short", strategy.short)
if closeshort
	strategy.close("short")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

Thêm nữa