
Phương pháp mở vị trí dần dần theo giá trị trung bình là một kịch bản chiến lược giao dịch định lượng tiên tiến do HedgerLabs thiết kế, tập trung vào kỹ thuật mở vị trí dần dần theo giá trị trung bình của thị trường tài chính. Chiến lược này hướng đến các nhà giao dịch thích phương pháp có hệ thống và nhấn mạnh cách mở vị trí dần dần dựa trên giá tương đối di chuyển trung bình.
Trung tâm của chiến lược này là đường trung bình di chuyển đơn giản (SMA). Tất cả các giao dịch vào và ra đều được thực hiện xung quanh đường trung bình di chuyển. Các nhà giao dịch có thể tùy chỉnh chiều dài MA để phù hợp với phong cách giao dịch và khoảng thời gian khác nhau.
Điều đặc biệt về chiến lược này là cơ chế mở vị trí dần dần của nó. Khi giá lệch khỏi đường trung bình di chuyển hơn một phần trăm nhất định, chiến lược sẽ khởi động vị trí đầu tiên. Sau đó, khi giá tiếp tục lệch khỏi đường trung bình di chuyển càng lớn hơn, chiến lược sẽ tăng vị trí theo cách dần dần mà nhà giao dịch xác định. Phương pháp này có thể mang lại lợi nhuận cao hơn khi thị trường biến động.
Chiến lược này cũng quản lý vị trí một cách thông minh. Khi giá thấp hơn trung bình di chuyển, hãy làm nhiều hơn khi bạn không có, để thích nghi với các điều kiện thị trường khác nhau. Điểm yên được thiết lập khi giá chạm vào trung bình di chuyển, nhằm mục đích nắm bắt các điểm đảo ngược tiềm năng để thực hiện vị trí đóng cửa tối ưu.
Bằng cách kích hoạtcalc_on_every_tickChiến lược này có thể liên tục đánh giá các điều kiện thị trường và phản ứng kịp thời.
Chiến lược mở vị trí dần dần theo giá trị trung bình có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Các rủi ro trên có thể được giảm bớt bằng cách tối ưu hóa các lối ra thích hợp, đánh giá xu hướng tốt hơn hoặc giảm tỷ lệ mở vị trí thích hợp.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược mở vị trí dần dần theo giá trị trung bình tập trung vào kỹ thuật giao dịch quay trở lại giá trị trung bình, sử dụng vị trí quản lý mở vị trí dần dần có hệ thống, các tham số có thể tùy chỉnh được áp dụng cho các loại giao dịch khác nhau. Chiến lược này hoạt động tốt trong thị trường biến động và phù hợp với các nhà giao dịch định lượng quan tâm đến hoạt động ngắn.
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)
// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)
// Calculating Moving Average
ma = ta.sma(close, maLength)
// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)
var float lastBuyPrice = na
var float lastSellPrice = na
// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
diff = math.abs(price1 - price2) / price2 * 100
diff
// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
pricePercentDiff(price, ma) >= initialPercent
// Enhanced Entry Logic for Buy and Sell
if (low < ma)
if (na(lastBuyPrice))
if (initialEntryCondition(low, ma, initialPercent))
strategy.entry("Buy", strategy.long)
lastBuyPrice := low
else
if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
strategy.entry("Buy", strategy.long)
lastBuyPrice := low
if (high > ma)
if (na(lastSellPrice))
if (initialEntryCondition(high, ma, initialPercent))
strategy.entry("Sell", strategy.short)
lastSellPrice := high
else
if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
strategy.entry("Sell", strategy.short)
lastSellPrice := high
// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
strategy.close("Buy")
lastBuyPrice := na
if (close <= ma and strategy.position_size < 0)
strategy.close("Sell")
lastSellPrice := na
// Reset last order price when position is closed
if (strategy.position_size == 0)
lastBuyPrice := na
lastSellPrice := na