Chiến lược đảo ngược đảo ngược trung bình dựa trên trung bình động

Tác giả:ChaoZhang, Ngày: 2023-12-21 15:45:23
Tags:

img

Chiến lược này được gọi là Mean Reversion Reverse Strategy Based on Moving Average. Ý tưởng chính là mua khi giá vượt qua các đường trung bình động chính và kiếm lợi nhuận khi đạt được mục tiêu đã đặt trước.

Nguyên tắc chính của chiến lược này là nắm bắt các cơ hội phục hồi trong các thị trường giới hạn phạm vi bằng cách sử dụng sự đảo ngược của trung bình động ngắn hạn. Cụ thể, khi giá vượt qua các trung bình động chu kỳ dài hơn (như MA 20 ngày và 50 ngày) và hiển thị các dấu hiệu bán quá mức mạnh, giá có xu hướng phục hồi ở một mức độ nào đó do đặc điểm đảo ngược trung bình của biến động thị trường. Tại thời điểm này, nếu các trung bình động chu kỳ ngắn hơn (như MA 10 ngày) hiển thị tín hiệu đảo ngược tăng, đó sẽ là thời điểm tốt để mua. Trong chiến lược này, nó sẽ mua khi giá đóng dưới MA 20 ngày trong khi trên MA 50 ngày, để nắm bắt sự phục hồi của nó với sự đảo ngược MA ngắn hạn.

Lý thuyết nhập khẩu cụ thể là: Mua 1 lô khi giá vượt qua MA 20 ngày, thêm 1 lô khi vượt qua MA 50 ngày, tiếp tục thêm 1 lô khi vượt qua MA 100 ngày và thêm đến 1 lô khi vượt qua MA 200 ngày, tối đa 4 lô. Lấy lợi nhuận sau khi đạt được các mục tiêu đã đặt trước. Nó cũng đặt thời gian và điều kiện dừng lỗ.

Phân tích lợi thế

  1. Xác định hiệu quả các cơ hội phục hồi ngắn hạn bằng cách sử dụng các đặc điểm đảo ngược của đường trung bình động
  2. Giảm rủi ro của điểm duy nhất bằng cách đặt lệnh kim tự tháp
  3. Chốt lợi nhuận bằng cách thiết lập mục tiêu lợi nhuận
  4. Tránh các sự phá vỡ sai bằng cách sử dụng giá mở và các bộ lọc giá thấp trước đó

Phân tích rủi ro

  1. Có thể đối mặt với rủi ro đảo ngược trong thời gian nắm giữ dài.
  2. Các tín hiệu MA có thể đưa ra các tín hiệu sai, dẫn đến tổn thất
  3. Có thể không hoàn toàn hoặc một phần lợi nhuận nếu mục tiêu lợi nhuận không đạt được

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

  1. Kiểm tra lợi nhuận và ổn định dưới các thiết lập tham số khác nhau
  2. Xem xét kết hợp các chỉ số khác như MACD, KD để quyết định mục
  3. Chọn thời gian MA phù hợp dựa trên các đặc điểm của các sản phẩm khác nhau
  4. Đưa ra các thuật toán học máy để tối ưu hóa các tham số một cách năng động

Tóm lại

Nói chung, đây là một chiến lược giao dịch MA cổ điển và phổ quát. Nó sử dụng đúng tính năng làm mịn của MA, kết hợp với nhiều MA để xác định các cơ hội mua ngắn hạn. Nó kiểm soát rủi ro bằng cách đặt hàng kim tự tháp và thu lợi nhuận kịp thời. Nhưng phản ứng của nó đối với các sự kiện thị trường như tin tức chính sách quan trọng có thể bị động hơn. Đây là điều có thể được tối ưu hóa hơn nữa. Nhìn chung, với những cải tiến thích hợp trong tối ưu hóa tham số và kiểm soát rủi ro, chiến lược này có thể đạt được lợi nhuận dư thừa ổn định.


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
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