Xu hướng dao động EMA theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-06 09:53:27
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số EMA để xác định xu hướng giá và kết hợp sai lệch chuẩn để tính tín hiệu mua và bán cho xu hướng sau giao dịch. Ý tưởng chính là tính toán sự khác biệt giữa giá đóng và EMA, đặt ngưỡng để kích hoạt lệnh.

Chiến lược logic

Chiến lược này đầu tiên tính toán sự khác biệt v giữa giá đóng và EMA của chiều dài ema_length. Sau đó nó tính toán độ lệch chuẩn dev của v trong các khoảng thời gian ema_length. Sau đó nó xác định hệ số hướng k, với k=1 cho dài và k=-1 cho ngắn. Mức buy signal threshold dev_limit được tính bằng k * dev * factor limit. Khi v vượt qua dev_limit, tín hiệu mua được kích hoạt. tín hiệu thoát là khi v vượt qua 0.

Chiến lược cung cấp hai phương thức:

  1. Mua ngắn, mua dài khi v vượt dưới âm dev_limit, để theo xu hướng giảm.

  2. Mua dài, đi dài khi v vượt trên giới hạn tích cực, để theo xu hướng tăng.

Tóm lại, chiến lược tính toán theo cách năng động độ lệch chuẩn của sự khác biệt giữa giá và EMA để thiết lập ngưỡng và theo xu hướng. Nhân tố điều khiển độ nhạy của tín hiệu mua. Ema_length xác định thời gian EMA. Chế độ mua điều khiển hướng lệnh.

Phân tích lợi thế

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

  1. EMA xác định hướng xu hướng tốt bằng cách làm mịn giá.

  2. Mức ngưỡng động dựa trên độ lệch chuẩn thích nghi tốt hơn so với các ngưỡng cố định.

  3. Hai chế độ mua cho phép theo xu hướng tăng hoặc giảm.

  4. Các yếu tố cung cấp tính linh hoạt trong việc điều chỉnh độ nhạy mua. ema_length cho phép tối ưu hóa thời gian EMA.

  5. Logic là đơn giản và dễ hiểu và sửa đổi.

  6. Định kích thước vị trí có thể được cấu hình linh hoạt để theo xu hướng tích cực.

Phân tích rủi ro

Rủi ro của chiến lược:

  1. EMA có sự chậm trễ và có thể bỏ lỡ các điểm chuyển hướng.

  2. Nó dựa trên tối ưu hóa tham số. Cài đặt không đúng dẫn đến độ nhạy không đủ hoặc quá nhạy.

  3. Theo xu hướng có nguy cơ mất mát lớn hơn khi xu hướng đảo ngược.

  4. Chuyển đổi dài / ngắn thường xuyên làm tăng tần suất giao dịch.

  5. Các tín hiệu thường xuyên trong các thị trường khác nhau làm tăng chi phí.

Để giải quyết rủi ro, hãy xem xét thêm stop loss, tối ưu hóa các tham số, thêm các bộ lọc để tránh giao dịch quá mức, v.v.

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

Chiến lược có thể được tối ưu hóa bằng cách:

  1. Kiểm tra các khoảng thời gian EMA khác nhau để tìm ra chiều dài tối ưu.

  2. Kiểm tra các giá trị yếu tố khác nhau để tìm ra độ nhạy tốt nhất.

  3. Tối ưu hóa các chiến lược định kích thước vị trí, ví dụ như kim tự tháp.

  4. Thêm bộ lọc để tránh giao dịch sai trong thị trường hỗn loạn.

  5. Bao gồm dừng lỗ để kiểm soát lỗ giao dịch duy nhất.

  6. Tối ưu hóa các tham số riêng biệt cho hai chế độ mua.

  7. Nghiên cứu các tín hiệu đảo ngược xu hướng để ngăn chặn xu hướng.

Kết luận

Chiến lược xác định xu hướng với EMA và tạo ra các lệnh ngưỡng năng động để theo xu hướng. Lý thuyết rất đơn giản và rõ ràng. Định kích thước vị trí có thể hung hăng để theo đuổi xu hướng. Nó có những rủi ro cần phải được giải quyết thông qua tối ưu hóa tham số và dừng lỗ. Nó là một ví dụ tốt để học kết hợp chỉ số và điều chỉnh tham số.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
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/
// © Azzrael

// Based on EMA and EMA Oscilator https://www.tradingview.com/script/qM9wm0PW-EMA-Oscilator-Azzrael/

// (EMA - close) + Std Dev + Factor = detecting oversell/overbuy
// Long only!
// Pyramiding - sometimes, depends on ...
// There 2 enter strategies in one script 
// 1 - Classic, buy on entering to OverSell zone (more profitable ~> 70%)
// 2 - Crazy, buy on entering to OverBuy zone (catching trend and pyramiding, more net profit)
// Exit - crossing zero of (EMA - close)

//@version=5
strategy("STR:EMA Oscilator [Azzrael]", overlay=false, 
 margin_long=100, 
 margin_short=100, 
 currency=currency.USD,
 default_qty_type=strategy.percent_of_equity,
 default_qty_value=30,
 pyramiding=3)

entry_name="Buy"

ema_length = input.int(200, "Period", minval=2, step=10)
limit = input.float(1.7, "Factor", minval=1, step=0.1, maxval=10)
dno = input.string(defval="Buy on enter to OverSell", title="Model", options=["Buy on enter to OverSell", "Buy on enter to OverBuy"]) == "Buy on enter to OverSell"

v = close - ta.ema(close, ema_length)
dev = ta.stdev(v, ema_length)
k = dno ? -1 : 1
dev_limit = k*dev*limit

cond_long = dno ? ta.crossunder(v, dev_limit) : ta.crossover(v, dev_limit)
cond_close = ta.cross(v, 0) 

// dev visualization
sig_col = (dno and v <= dev_limit) or (not dno and v >= dev_limit) ? color.green : color.new(color.blue, 80)
plot(dev_limit, color=color.green)
plot(k*dev, color=color.new(color.blue, 60))
plot(v, color=sig_col )
hline(0)

// Make love not war
strategy.entry(entry_name, strategy.long, when=cond_long)
strategy.close(entry_name, when=cond_close)


Thêm nữa