Chiến lược giao dịch định lượng: chiến lược đột phá đường trung bình động kép


Ngày tạo: 2024-02-21 14:28:28 sửa đổi lần cuối: 2024-02-21 14:28:28
sao chép: 0 Số nhấp chuột: 669
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng: chiến lược đột phá đường trung bình động kép

Tổng quan

Chiến lược này được gọi là chiến lược phá vỡ đường hai chiều bằng nhau của chiến lược giao dịch định lượng. Ý tưởng chính của chiến lược này là sử dụng tín hiệu chéo của đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để đánh giá xu hướng giá và sau đó đưa ra quyết định mua và bán.

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

Các chỉ số cốt lõi của chiến lược này là đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm. Chiến lược sử dụng mối quan hệ chéo giữa đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để đánh giá xu hướng giá và đưa ra quyết định mua và bán.

Cụ thể, tham số đường trung bình di chuyển nhanh được thiết lập là 24 chu kỳ và tham số đường trung bình di chuyển chậm được thiết lập là 100 chu kỳ. Khi đường trung bình di chuyển nhanh từ phía dưới giao nhau với đường trung bình di chuyển chậm, giá sẽ đi lên, và chiến lược sẽ gửi tín hiệu mua; khi đường trung bình di chuyển nhanh từ phía trên giao nhau với đường trung bình di chuyển chậm từ phía dưới, giá sẽ đi xuống, và chiến lược sẽ gửi tín hiệu bán.

Do đó, bằng cách đánh giá các đường chéo của các đường trung bình di chuyển nhanh và chậm, bạn có thể nắm bắt hiệu quả các thay đổi trong xu hướng giá, hỗ trợ đưa ra quyết định mua và bán.

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

Chiến lược này có những ưu điểm sau:

  1. Nguyên tắc đơn giản, dễ hiểu và dễ thực hiện. Bi-equilibrium crossover là một trong những chỉ số kỹ thuật cơ bản nhất, dễ hiểu và dễ áp dụng.

  2. Parameters có thể điều chỉnh, có khả năng thích ứng. Các tham số của đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm có thể được điều chỉnh tùy theo tình hình thực tế, làm cho chiến lược linh hoạt hơn.

  3. Khả năng nắm bắt xu hướng thay đổi mạnh mẽ. Bi-equilibrium crossing thường được sử dụng để nắm bắt các điểm chuyển đổi của giá từ cân bằng sang xu hướng.

  4. Có thể lọc hiệu quả các biến động, giảm các giao dịch không hiệu quả. Dây ly đôi có thể được sử dụng để xác định các khu vực biến động, tránh mở lại các vị trí trong biến động.

Rủi ro chiến lược

Chiến lược này cũng có một số rủi ro:

  1. Tín hiệu giao thoa hai đường đều có thể bị chậm trễ. Tín hiệu giao thoa hai đường đều được sử dụng để theo dõi xu hướng, và tín hiệu giao thoa thường bị chậm trễ một khoảng thời gian nhất định. Điều này có thể dẫn đến chi phí cơ hội.

  2. Trong một thị trường bất ổn, các tín hiệu sai có thể được tạo ra. Tuy nhiên, trong một thị trường bất ổn, các tín hiệu sai thường xuyên có thể được tạo ra.

  3. Thiết lập tham số không đúng có thể ảnh hưởng đến hiệu suất chiến lược. Nếu tham số đường trung bình nhanh chậm được thiết lập không đúng, nó sẽ ảnh hưởng đến độ nhạy cảm của việc bắt được xu hướng giao nhau.

Giải pháp tương ứng:

  1. Giảm đúng chu kỳ đường trung bình và tăng độ nhạy của tín hiệu chéo.

  2. Thêm chỉ số biến động hoặc khối lượng giao dịch để lọc, giảm giao dịch không hiệu quả trong thị trường biến động.

  3. Tối ưu hóa tham số, tìm kiếm sự kết hợp tham số tốt nhất. Thêm các phương pháp tự động tối ưu hóa như học máy

Hướng tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Sử dụng các chỉ số trung bình di chuyển công nghệ tiên tiến hơn, chẳng hạn như trung bình di chuyển cân nặng tuyến tính, thay thế cho trung bình di chuyển đơn giản, cải thiện khả năng theo dõi và dự đoán của chỉ số.

  2. Thêm thêm các chỉ số phụ trợ, chẳng hạn như chỉ số giao dịch, chỉ số dao động và các chỉ số khác để lọc kết hợp, giảm tín hiệu không hiệu quả.

  3. Tối ưu hóa tham số đường trung bình chậm và nhanh, cải thiện khả năng thích ứng của tham số. Có thể sử dụng các phương pháp học máy, tối ưu hóa ngẫu nhiên để tìm tham số tối ưu nhất.

  4. Chiến lược này có thể thiết kế điểm dừng lỗ và dừng lỗ di động để kiểm soát tổn thất đơn lẻ. Đồng thời thêm các kỹ thuật tối ưu hóa lợi nhuận để đảm bảo có được đủ lợi nhuận.

  5. Các công nghệ mới như học tập sâu có thể được sử dụng để xác định các mô hình giá phức tạp hơn, hỗ trợ các quyết định mua và bán giao dịch ngang hàng, với mục đích đạt được hiệu quả tốt hơn.

Tóm tắt

Chiến lược này nói chung là khá cổ điển và đơn giản, dựa trên chỉ số hai đường thẳng để đánh giá xu hướng giá, để phát hiện cơ hội chuyển đổi giá từ biến động sang xu hướng. Ưu điểm là ý tưởng rõ ràng, thực tế đơn giản, phù hợp để theo dõi hành vi theo xu hướng.

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

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)

//OBV
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 20, minval = 1, maxval = 100, group="Smoothing")
Limit = input.float(title = "Limit", defval = 1, minval = 0.1, maxval = 10, group="Smoothing")
smoothingLine_ma = ma(obv,smoothingLength, typeMA)
obv_diff = (obv-smoothingLine_ma)*100/obv

//PVT
var cumVolp = 0.
cumVolp += nz(volume)
if barstate.islast and cumVolp == 0
    runtime.error("No volume is provided by the data vendor.")
srcp = close
vt = ta.cum(ta.change(srcp)/srcp[1]*volume)
smoothingLine_map = ma(vt,smoothingLength, typeMA)
pvt_diff = (vt-smoothingLine_map)*100/vt

// plot(obv_diff+close+100 ,title="OBV_DIFF", color = color.rgb(255, 118, 54))
// plot(pvt_diff+close+80 ,title="PVT_DIFF", color = color.rgb(223, 61, 255))

indicator = (pvt_diff+obv_diff)/2
goLongCondition1 = ta.crossover(indicator,Limit)
timePeriod = time >= timestamp(syminfo.timezone, 2023,1, 1, 0, 0)  // Backtesting Time
notInTrade = strategy.position_size <= 0
if goLongCondition1 and timePeriod and notInTrade
    stopLoss = low * 0.99 // -2%
    takeProfit = high * 1.05 // +5%
    strategy.entry('long', strategy.long )
    strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)






// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 100)
// goLongCondition1 = ta.crossover(fastEMA, slowEMA)
// timePeriod = time >= timestamp(syminfo.timezone, 2018, 12, 15, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low * 0.97
//     takeProfit = high * 1.12
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// plot(fastEMA, color=color.new(color.blue, 0))
// plot(slowEMA, color=color.new(color.yellow, 0))