Xu hướng theo chiến lược dựa trên đường trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-18 12:23:59
Tags:

img

Tổng quan

Chiến lược này là một chiến lược theo xu hướng dựa trên đường trung bình động. Nó sử dụng các đường EMA của các giai đoạn khác nhau để xây dựng nhiều bộ tín hiệu giao dịch để theo dõi xu hướng. Khi giá phá vỡ dưới đường trung bình động dài hơn, chiến lược sẽ dần dần xây dựng các vị trí dài để giảm chi phí trung bình. Chiến lược cũng thiết lập các điều kiện dừng lỗ dựa trên vòng trung bình động ngắn để đảm bảo lợi nhuận.

Chiến lược logic

Chiến lược sử dụng 5 đường EMA của các giai đoạn khác nhau để xây dựng các tín hiệu giao dịch, đó là đường EMA 10 ngày, 20 ngày, 50 ngày, 100 ngày và 200 ngày. Chiến lược xác định 4 điều kiện mua dựa trên mối quan hệ giá với các đường EMA này để thực hiện giao dịch kim tự tháp.

Khi giá dưới EMA 20 ngày trong khi trên EMA 50 ngày, tín hiệu mua đầu tiên được kích hoạt. Khi dưới EMA 50 ngày trong khi trên EMA 100 ngày, tín hiệu mua thứ hai được kích hoạt. Các tín hiệu mua thứ ba và thứ tư được kích hoạt khi giá giảm xuống dưới EMA 100 ngày và EMA 200 ngày tương ứng. Kích thước vị trí cũng mở rộng dần từ qt1 đến qt4.

Ở phía bán, có hai nhóm các điều kiện dừng lỗ. Điều kiện đầu tiên là dừng lỗ khi giá vượt quá đường EMA 10 ngày trong khi đường EMA 10 ngày nằm trên các đường EMA khác. Điều thứ hai tương tự nhưng nó thoát khi giá giảm xuống dưới mức đóng trước của đường EMA 10 ngày. Hai điều kiện này là để đảm bảo lợi nhuận ngắn hạn trong xu hướng.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là khả năng tự động theo dõi xu hướng thị trường cho các khoản giữ dài hạn. Bằng cách sử dụng nhiều điều kiện nhập cảnh và xây dựng vị trí tiến bộ, nó liên tục giảm cơ sở chi phí để mang lại lợi nhuận dư thừa. Nó cũng đa dạng hóa rủi ro định giá liên quan đến một mức giá nhập cảnh duy nhất.

Về phía dừng lỗ, chiến lược theo dõi các điểm chuyển động trung bình ngắn hạn để nhanh chóng kiếm lợi nhuận và tránh tổn thất thêm. Điều này giảm thiểu rủi ro giảm.

Phân tích rủi ro

Rủi ro lớn nhất mà chiến lược này phải đối mặt là bị mắc kẹt trong sự củng cố lâu dài hoặc xu hướng giảm. Khi thị trường tổng thể bước vào kênh dao động hoặc giảm, tín hiệu trung bình động trở nên kém đáng tin cậy hơn. Điều này có thể dẫn đến tổn thất bền vững từ việc tiếp tục xây dựng dài.

Một điểm rủi ro khác là các đường trung bình động không phải lúc nào cũng xác định chính xác các vòng quay. Khoảng cách giá hoặc các chuyển động bùng nổ có thể dẫn đến tín hiệu bị lỗi. Điều này đòi hỏi các chỉ số kỹ thuật bổ sung để xác minh và tối ưu hóa.

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

Các chỉ số kỹ thuật khác như khối lượng hoặc Bollinger Bands có thể được kết hợp vào các điều kiện mua để tiếp tục cải thiện độ chính xác đầu vào.

Các lớp thứ hai của dừng lỗ dựa trên Bollinger Upper Band hoặc các khu vực hỗ trợ chính cũng có thể được thêm vào. Điều này giúp tránh dừng nhỏ không cần thiết. Thực hiện dừng lỗ thích nghi với giá đường mòn là một lĩnh vực nâng cao khác để bảo vệ lợi nhuận tốt hơn.

Kết luận

Chiến lược này thực hiện xu hướng sau khi giao dịch thông qua một hệ thống trung bình động. Thông qua xây dựng vị trí kim tự tháp, nó nhằm mục đích tối đa hóa lợi nhuận từ xu hướng bền vững trong khi bảo vệ vốn với cơ chế dừng lỗ kép. Đây là một chiến lược đáng để theo dõi hơn nữa và thử nghiệm trực tiếp. Các tham số và mô hình có thể được tối ưu hóa dần dựa trên hiệu suất thực tế.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Thêm nữa