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


Ngày tạo: 2024-01-23 10:38:18 sửa đổi lần cuối: 2024-01-23 10:38:18
sao chép: 0 Số nhấp chuột: 519
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này là một chiến lược động dựa trên đường trung bình di chuyển. Nó tạo ra tín hiệu giao dịch bằng cách tính toán đường trung bình di chuyển đơn giản của các chu kỳ khác nhau và so sánh các trường hợp chéo của chúng. Cụ thể, khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển dài hạn, nó tạo ra tín hiệu mua; khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển dài hạn, nó tạo ra tín hiệu bán.

Nguyên tắc chiến lược

Lập luận cốt lõi của chiến lược này dựa trên hiệu ứng động lượng, tức là tính liên tục của xu hướng giá cổ phiếu. Đường trung bình di chuyển có thể phản ánh hiệu quả xu hướng thay đổi giá cổ phiếu, khi giá cổ phiếu bắt đầu đi vào xu hướng tăng khi vượt qua đường trung bình di chuyển ngắn hạn trên đường trung bình di chuyển dài hạn; ngược lại, khi vượt qua đường trung bình di chuyển ngắn hạn dưới đường trung bình di chuyển dài hạn, giá cổ phiếu bắt đầu đi vào xu hướng giảm.

Cụ thể, chiến lược xác định một đường trung bình di chuyển đơn giản 13 ngày và một đường trung bình di chuyển đơn giản 34 ngày. Sau khi tính toán hai đường trung bình di chuyển này mỗi ngày, so sánh giá trị của chúng. Nếu đường thứ 13 vượt qua đường thứ 34, sẽ tạo ra tín hiệu mua, cho thấy giá cổ phiếu đi vào xu hướng tăng và nên thiết lập vị trí nhiều đầu; Nếu đường thứ 13 vượt qua đường thứ 34, sẽ tạo ra tín hiệu bán, cho thấy giá cổ phiếu đi vào xu hướng giảm và nên bán sạch.

Lợi thế chiến lược

Lợi thế lớn nhất của chiến lược này là đơn giản, dễ hiểu và dễ thực hiện. Đường trung bình di chuyển là một trong những chỉ số kỹ thuật cơ bản và phổ biến nhất, nguyên tắc của nó đơn giản, dễ hiểu và áp dụng. Đồng thời, tín hiệu kết hợp đường trung bình di chuyển cũng được chứng minh là hiệu quả sau khi thực hành lâu dài.

Ngoài ra, các tham số của chiến lược này được thiết lập linh hoạt, có thể được điều chỉnh theo các loại khác nhau và môi trường thị trường. Ví dụ: tham số chu kỳ của trung bình di chuyển có thể được thay đổi, do đó điều chỉnh độ nhạy của chiến lược. Điều này cung cấp không gian để tối ưu hóa và điều chỉnh chiến lược.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này là có thể xảy ra nhiều tín hiệu sai và được đặt trong thị trường biến động. Khi giá có biến động lớn, trung bình di chuyển có thể tạo ra sự giao nhau thường xuyên, dẫn đến sự xuất hiện của tín hiệu sai. Khi đó, bạn cần điều chỉnh tham số chu kỳ trung bình di chuyển để lọc ra một số tiếng ồn.

Ngoài ra, khi thị trường có sự đảo ngược lớn, điểm dừng của chiến lược có thể bị phá vỡ, dẫn đến tổn thất lớn. Điều này đòi hỏi phải tối ưu hóa chiến lược dừng lỗ và nới lỏng mức dừng lỗ thích hợp.

Hướng tối ưu hóa

Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, tìm ra sự kết hợp tối ưu của các tham số trong các giống và môi trường thị trường khác nhau

  2. Thêm các bộ lọc cho các chỉ số kỹ thuật khác như MACD, KD, v.v. để tránh tín hiệu sai trong trường hợp chấn động

  3. Tối ưu hóa và động điều chỉnh chiến lược dừng lỗ, trong khi đảm bảo dừng lỗ, tránh điểm dừng lỗ quá gần, có nhiều khả năng bị phá vỡ

  4. Tăng cơ chế quản lý vị trí, chẳng hạn như số lượng cố định, tỷ lệ vị trí, để kiểm soát rủi ro giao dịch đơn lẻ

Tóm tắt

Chiến lược này là một chiến lược chéo trung bình di chuyển rất cổ điển, tạo ra tín hiệu mua và bán bằng cách tính toán và so sánh mối quan hệ giữa trung bình di chuyển ngắn hạn và dài hạn. Ưu điểm của chiến lược là đơn giản, dễ hiểu, tham số linh hoạt, phù hợp cho người mới bắt đầu học; nhược điểm là tín hiệu có thể không đủ ổn định, dễ bị lật trong thị trường biến động.

Mã nguồn chiến lược
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// TODO: update strategy name
strategy("{STRATEGY NAME}", overlay=true)

// === TA LOGIC ===

//
//
// TODO: PUT YOUR TA LOGIC HERE
LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34))
SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21))

// === INPUT BACKTEST DATE RANGE ===
enableShorts = input(false, title="Enable short entries?")

FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2018, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy() => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (enableShorts)
        strategy.entry("Short", strategy.short, comment="Short")
    else
        strategy.close("Long")

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(30, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)