Chiến lược chéo giữa hai mức trung bình động

Tác giả:ChaoZhang, Ngày: 2023-11-22
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch định lượng đơn giản dựa trên các chỉ số trung bình động. Nó sử dụng thập giá vàng và thập giá chết của trung bình di chuyển nhanh và chậm để xác định tín hiệu vào và ra. Khi MA nhanh vượt trên MA chậm từ dưới, một tín hiệu mua được tạo ra. Khi MA nhanh vượt dưới MA chậm từ trên, một tín hiệu bán được tạo ra.

Chiến lược logic

Chiến lược này chủ yếu tận dụng khả năng theo dõi xu hướng của các đường trung bình động. MA nhanh có tham số nhỏ hơn và có thể phản ứng nhanh với những thay đổi giá, trong khi MA chậm có tham số lớn hơn và đại diện cho xu hướng dài hạn. MA nhanh vượt qua trên MA chậm báo hiệu sự đảo ngược trong các chuyển động ngắn hạn và sự bắt đầu của xu hướng tăng. MA nhanh vượt qua dưới MA chậm báo hiệu sự đảo ngược sang xu hướng giảm. Bằng cách nắm bắt các tín hiệu này, chúng ta có thể giao dịch cùng với đà tăng.

Cụ thể, chiến lược này xác định một trung bình di chuyển kép 5 ngày (nhanh) và 34 ngày (chậm). Nó tính toán hai MA này hàng ngày và kiểm tra xem MA nhanh vượt qua trên hoặc dưới MA chậm. Nếu một đường chéo vàng xảy ra, nó đi dài. Nếu một đường chéo chết xảy ra, nó thoát khỏi vị trí.

Phân tích lợi thế

Đây là một chiến lược đơn giản và dễ hiểu, phù hợp với những người mới bắt đầu giao dịch lượng.

Chiến lược MA kép có thể lọc tiếng ồn thị trường hiệu quả và nắm bắt xu hướng chính. Bằng cách điều chỉnh các thông số ngày MA, nó có thể thích nghi với biến động giá trong các khung thời gian khác nhau.

Nó cũng có một cơ chế dừng lỗ tích hợp. Khi giá bắt đầu đảo ngược hướng và đường chéo chết của MA xảy ra, nó sẽ thoát khỏi các vị trí kịp thời để kiểm soát rủi ro.

Phân tích rủi ro

Chiến lược MA kép có rủi ro như thất bại dừng lỗ hoặc thất bại phù hợp đường cong.

  1. MAs có tác dụng chậm trễ và có thể tạo ra tín hiệu chỉ sau khi xu hướng đã đảo ngược.

  2. Trong các thị trường dao động, có thể có nhiều tín hiệu sai, gây ra các giao dịch không cần thiết, tăng chi phí và trượt.

  3. Nó chỉ dựa vào các chỉ số kỹ thuật mà không kết hợp phân tích cơ bản. Nó có thể hoạt động kém trong các sự kiện thúc đẩy chuyển động thị trường.

  4. Nó không xem xét kích thước vị trí và quản lý rủi ro. Một sự kiện thiên nga đen có thể khiến chiến lược nổ tung.

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

Để tận dụng tốt hơn những điểm mạnh của nó và giảm rủi ro, tối ưu hóa có thể được thực hiện theo các cách sau:

  1. Thêm các chỉ số xu hướng như MACD và các chỉ số biến động như KDJ để thiết lập các quy tắc nhập cảnh nghiêm ngặt hơn và lọc ra các tín hiệu sai.

  2. Kết hợp các cơ chế dừng lỗ thích hợp, chẳng hạn như thoát sau khi giá giảm một tỷ lệ phần trăm nhất định sau khi chéo vàng, hoặc sau khi giá giảm một phạm vi thiết lập từ mức cao / thấp mới.

  3. Tối ưu hóa kết hợp ngày MA nhanh và chậm để thích nghi với biến động giá trên các khung thời gian khác nhau.

  4. Chỉ số thị trường tham chiếu rộng để xác định chế độ thị trường tổng thể và tránh giao dịch quá mức trên các thị trường khác nhau.

  5. Bao gồm thay đổi khối lượng giao dịch để xác minh độ tin cậy của tín hiệu xu hướng.

Kết luận

Chiến lược chéo trung bình động kép là một chiến lược giao dịch định lượng rất điển hình. Nó có những ưu điểm như sự đơn giản, trực quan và dễ thực hiện. Với việc kiểm tra liên tục và điều chỉnh tham số, nó có thể tạo ra kết quả tốt. Tuy nhiên, các vấn đề như nhận dạng tín hiệu chậm và tín hiệu sai vẫn tồn tại. Các bộ lọc và cơ chế quản lý rủi ro bổ sung cần được kết hợp để làm cho nó trở thành một chiến lược tạo lợi nhuận ổn định.


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

//@version=2
////////////////////////////////////////////////////////////
// This strategy is a modification to the "Bill Williams, Awesome Oscillator
// (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016)
//
// This version of the strategy by Midnight Mouse. 10/4/2018
//
// DESCRIPTION
//
// This indicator plots the oscillator as a column where periods fit for buying
// are marked as green, and periods fit for selling as orange/brown. If the
// current value of AO (Awesome Oscillator) is > the previous, the period is
// deemed fit for buying and the indicator is marked green. If the AO values is
// not over the previous, the period is deemed fit for selling and the indicator 
// is marked orange/brown.
//
// You can change long to short in the Input Settings
//
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy("Awesome Oscillator.MMouse_Lager_BCE")

// === SETTINGS ===

// Strategy start date
FromMonth   = input(defval = 1,    title = "From Month", minval = 1)
FromDay     = input(defval = 1,    title = "From Day",   minval = 1)
FromYear    = input(defval = 2017, title = "From Year",  minval = 2014)

// Strategy settings
nLengthSlow = input(34, minval=1,  title="Length Slow")
nLengthFast = input(5,  minval=1,  title="Length Fast")
allowShorts = input(false,         title="Include Short Trades")
reverse     = input(false,         title="Trade reverse")


// === BODY ===

// Use Heikin-Ashi candles for the buy/sell signal
ha_t        = heikinashi(syminfo.tickerid)
ha_high     = security(ha_t, timeframe.period, high)
ha_low      = security(ha_t, timeframe.period, low)
length      = input( 14 )
price       = open
vrsi        = rsi(price, length)

// Calc (H+L)/2 for each length
xSMA1_hl2   = sma((ha_high + ha_low)/2, nLengthFast)
xSMA2_hl2   = sma((ha_high + ha_low)/2, nLengthSlow)

// Get SMA difference (Fast - Slow)
xSMA1_SMA2  = xSMA1_hl2 - xSMA2_hl2

// Derive the color of the column
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d

// Determine the position to take (Long vs. Short)
pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1],  1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos))

// Only apply strategy from the start date
if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00))
    if (possig == 1)
        // Market is currently fit for a Long position
        strategy.entry("Long", strategy.long)

    if (possig == -1)
        // Market is currently fit for a Short position
        if(allowShorts)
            // Shorts are allowed. Record a Short position
            strategy.entry("Short", strategy.short)	   	    
        else
            // Shorts are not allowed. Closec the Long position.
            strategy.close("Long")

// Define the candle colors
//barcolor(possig == -1 ? red : 
//         possig ==  1 ? green : 
//         blue )

// Plot the oscillator
plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)

Thêm nữa