
Chiến lược này sử dụng chỉ số EMA để xác định xu hướng giá cổ phiếu và kết hợp với tín hiệu mua và bán bằng cách tính toán chênh lệch tiêu chuẩn, để thực hiện chiến lược giao dịch theo dõi xu hướng. Ý tưởng chính là tính toán chênh lệch giá hiện tại với EMA và đặt mua giá trị.
Chiến lược đầu tiên tính toán chênh lệch v của giá đóng với EMA với độ dài là ema_length. Sau đó tính toán chênh lệch tiêu chuẩn của chu kỳ ema_length của v. Sau đó xác định hệ số mua theo hướng k, k là 1 cho thấy mua mua và k là -1 cho thấy mua mua. Sau đó tính toán ngưỡng tín hiệu mua dev_limit, đó là k nhân với dev và nhân với factor giới hạn.
Chiến lược này cung cấp hai mô hình:
Mua giảm giá, mua khi v vượt mức dev_limit âm, theo dõi xu hướng giảm.
Mua theo xu hướng giá, khi dev_limit trên v đi đúng, tức là theo xu hướng giá lên.
Tóm lại, chiến lược này thực hiện theo dõi xu hướng bằng cách tính năng động chênh lệch tiêu chuẩn giữa giá và EMA, thiết lập ngưỡng mua. Các tham số yếu tố điều khiển độ nhạy của tín hiệu mua. Độ dài của EMA điều khiển chu kỳ EMA. Mô hình mua điều khiển hướng mua.
Chiến lược này có những ưu điểm sau:
Sử dụng chỉ số EMA để xác định xu hướng giá, chỉ số EMA làm phẳng giá, xác định xu hướng hiệu quả.
Kết hợp với sự chênh lệch tiêu chuẩn tính toán giảm giá động, hơn so với giảm giá cố định có thể thích ứng với sự thay đổi của thị trường.
Hai mô hình mua có thể chọn theo dõi xu hướng tăng hoặc xu hướng giảm.
Các tham số factor cung cấp không gian để điều chỉnh độ nhạy mua. Các tham sốema_length có thể điều chỉnh các tham số tối ưu hóa chu kỳ EMA.
Lập luận của chiến lược rất rõ ràng, đơn giản, dễ hiểu và dễ sửa đổi.
Có thể quản lý vị trí một cách linh hoạt và có chiến lược tích cực để theo đuổi xu hướng tăng/tăng/giảm.
Chiến lược này cũng có những rủi ro sau:
Các chỉ số EMA bị tụt hậu và có thể đã bỏ lỡ một bước ngoặt.
Tùy thuộc vào tối ưu hóa tham số, nếu tham số được đặt không đúng cách, có thể quá nhạy cảm hoặc chậm.
Rủi ro của việc theo đuổi xu hướng, có thể gây ra tổn thất lớn nếu xu hướng đảo ngược.
Chuyển đổi đa không gian thường xuyên dẫn đến giao dịch thường xuyên.
Các tín hiệu thường xuyên trong các cơn động đất lớn làm tăng chi phí giao dịch.
Đối với những rủi ro này, bạn có thể xem xét thêm các rủi ro kiểm soát chiến lược dừng lỗ, tối ưu hóa thử nghiệm tham số để tìm tham số tối ưu, thêm các điều kiện lọc để tránh giao dịch quá thường xuyên.
Chiến lược này có thể được tối ưu hóa bằng cách:
Kiểm tra hiệu quả của các tham số của các chu kỳ EMA khác nhau để tìm ra độ dài chu kỳ EMA tối ưu.
Lấy các giá trị khác nhau của các yếu tố thử nghiệm để tìm ra độ nhạy thấu hiệu tối ưu.
Tối ưu hóa chiến lược quản lý vị trí mở, ví dụ như tăng vị trí theo xu hướng.
Thêm các bộ lọc cho các chỉ số khác để tránh giao dịch sai trong tình huống chấn động.
Tăng chiến lược ngăn chặn tổn thất để kiểm soát tổn thất đơn lẻ.
Tìm các tham số tối ưu hóa cho hai mô hình mua và tìm các tham số kết hợp tốt nhất.
Nghiên cứu tín hiệu đảo ngược xu hướng, thiết lập tắt theo dõi xu hướng.
Chiến lược này dựa trên định hướng EMA nhận diện xu hướng, và động tính toán ngưỡng tạo ra mua và bán tín hiệu, để thực hiện theo dõi xu hướng. Lập luận của chiến lược đơn giản và rõ ràng, có thể được cấu hình linh hoạt để quản lý vị trí tích cực theo dõi xu hướng. Tuy nhiên, chiến lược cũng có một số rủi ro, cần phải kiểm tra tối ưu hóa các bộ tham số và kiểm soát rủi ro với chiến lược StopIteration. Chiến lược này có thể được sử dụng như một ví dụ tốt để áp dụng các chỉ số học tập kết hợp với các thiết lập tham số tối ưu hóa.
/*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)