Xu hướng theo chiến lược với EMA

Tác giả:ChaoZhang, Ngày: 2023-12-06 17:55:42
Tags:

img

Tổng quan

Tên của chiến lược này là Trend Following with EMA, đó là một chiến lược giao dịch định lượng dựa trên các chỉ số kỹ thuật theo xu hướng và trung bình động theo cấp số nhân (EMA).

Chiến lược logic

Lý thuyết chính của chiến lược này là:

  1. Sử dụng đường chéo giữa mức giá thấp và mức giá đóng cửa 180 giai đoạn để xác định xu hướng tăng. Khi mức giá thấp vượt qua mức giá đóng cửa, nó cho thấy giá bắt đầu tăng và xu hướng được hình thành, một vị trí dài sẽ được mở tại thời điểm này;

  2. Khi giá thay đổi từ xu hướng giảm sang xu hướng tăng, tức là giá đóng vượt trên giá mở và đường EMA dưới, một vị trí dài cũng sẽ được mở;

  3. Khi giá thay đổi từ xu hướng tăng lên sang xu hướng giảm, tức là giá đóng vượt dưới giá mở, vị trí dài hiện tại sẽ được đóng;

  4. Sử dụng đường chéo giữa mức cao nhất 180 giai đoạn và EMA để xác định xu hướng giảm. Khi mức cao nhất vượt qua dưới EMA và mức cao nhất thấp hơn EMA, một vị trí ngắn sẽ được mở;

  5. Khi giá thay đổi từ xu hướng tăng lên sang xu hướng giảm, tức là giá đóng vượt dưới giá mở và đường EMA trên, một vị trí ngắn cũng sẽ được mở;

  6. Khi giá thay đổi từ xu hướng giảm lên xu hướng tăng, tức là giá đóng vượt quá giá mở, vị trí mua hiện tại sẽ được đóng.

Phân tích lợi thế

Chiến lược này kết hợp các chỉ số theo xu hướng và trung bình động, có thể nắm bắt hiệu quả các điểm chuyển đổi của xu hướng giá.

  1. Xu hướng sau phần có thể xác định hướng xu hướng giá và giảm xác suất các hoạt động sai;
  2. Phần trung bình động có thể lọc hiệu quả các biến động giá nhỏ và xác định các xu hướng độ rộng lớn hơn;
  3. Kết hợp hai chỉ số có thể cải thiện độ tin cậy của tín hiệu giao dịch và tránh các tín hiệu dương tính sai;
  4. Các thiết lập tham số là hợp lý và linh hoạt để thích nghi với các sản phẩm và phong cách giao dịch khác nhau.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Trong các kịch bản biến động giá mạnh mẽ, sẽ có sự chậm trễ trong EMA, có thể bỏ lỡ điểm khởi đầu tốt nhất;
  2. Các chỉ số đánh giá xu hướng nhạy cảm với các thông số. Các thiết lập chu kỳ khác nhau sẽ dẫn đến các tín hiệu giao dịch và lợi nhuận khác nhau;
  3. Tần suất chuyển đổi các vị trí dài và ngắn có thể quá cao, làm tăng chi phí trượt và hoa hồng.

Các giải pháp cho các rủi ro là:

  1. Tối ưu hóa tham số chu kỳ của EMA để giảm xác suất chậm;
  2. Thực hiện tối ưu hóa tham số để tìm các tham số chu kỳ phù hợp nhất cho sản phẩm;
  3. Thiết lập các điều kiện dừng lỗ và lấy lợi nhuận để tránh chuyển vị trí quá thường xuyên.

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. Thêm một mô-đun quản lý vị trí dựa trên biến động để điều chỉnh động các vị trí theo biến động thị trường;
  2. Thêm các mô hình học máy để đánh giá xu hướng giá, thay thế các đánh giá chéo đơn giản để cải thiện độ chính xác;
  3. Cải thiện tín hiệu giao dịch bằng cách kết hợp dữ liệu cơ bản để tránh tín hiệu sai khi hiệu suất của công ty thay đổi;
  4. Thực hiện tối ưu hóa tham số đa sản phẩm để tìm kết hợp tham số tốt nhất cho chu kỳ và cải thiện sự ổn định và tối đa hóa lợi nhuận.

Kết luận

Nói chung, đây là một chiến lược theo xu hướng điển hình sử dụng các đặc điểm của chính giá để xác định hướng và theo dõi xu hướng. Nó đơn giản, hiệu quả, dễ thực hiện và phù hợp với một chiến lược giao dịch định lượng mới bắt đầu. Tuy nhiên, có một số vấn đề như độ trễ chỉ số và độ nhạy của tham số. Những vấn đề này có thể được cải thiện bằng cách giới thiệu nhiều nguồn dữ liệu hơn và sử dụng máy học. Vì vậy, có tiềm năng lớn để mở rộng và tối ưu hóa chiến lược này. Đây là một chiến lược giao dịch định lượng tần số cao được khuyến cáo.


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

//@version=2
strategy("Trend + EMA", overlay=true, initial_capital=10000, currency=currency.USD, pyramiding=0)

tim=input("180", title="Period for trend")
ema_period=input(180, title="EMA period")

opn = request.security(syminfo.tickerid, tim, open)
cls = request.security(syminfo.tickerid, tim, close)

emaline = ema(close, ema_period)

plot(opn, color=red)
plot(cls, color=green)
plot(emaline, color=black)

if (crossover(low, emaline))
    strategy.entry("long", strategy.long)

if (crossover(cls, opn) and emaline < opn and strategy.position_size == 0)
    strategy.entry("long", strategy.long)

if (crossunder(cls, opn) and strategy.position_size > 0)
    strategy.close_all()

if (crossunder(high, emaline) and high < emaline)
    strategy.entry("short", strategy.short)

if (crossunder(cls, opn) and emaline > opn and strategy.position_size == 0)
    strategy.entry("short", strategy.short)

if (crossover(cls, opn) and strategy.position_size < 0)
    strategy.close_all()


Thêm nữa