Chiến lược kết hợp của sự đảo ngược trung bình di chuyển kép và ATR Trailing Stop

Tác giả:ChaoZhang, Ngày: 2024-01-26 11:26:40
Tags:

img

Tổng quan

Chiến lược kết hợp đảo ngược trung bình di chuyển kép và ATR trailing stop là một chiến lược giao dịch định lượng rất thực tế. Chiến lược đầu tiên sử dụng thập giá chết và thập giá vàng được hình thành bởi các đường trung bình di chuyển kép để xác định xu hướng thị trường và điểm đảo ngược. Đồng thời, chiến lược cũng kết hợp phạm vi trung bình thực để thiết lập các điểm dừng để đảm bảo lợi nhuận trong khi kiểm soát rủi ro.

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

Chiến lược đảo ngược trung bình di chuyển kép

Chiến lược đảo ngược trung bình di chuyển kép sử dụng sự chéo chéo của các đường nhanh và chậm để xác định xu hướng thị trường. Khi đường nhanh vượt qua dưới đường chậm từ trên xuống dưới, nó tạo thành một đường chéo chết, cho thấy xu hướng thị trường đang thay đổi từ tăng xuống giảm. Khi đường nhanh vượt qua trên đường chậm từ dưới lên trên, nó tạo thành một đường chéo vàng, cho thấy xu hướng thị trường đang thay đổi từ giảm lên tăng. Chiến lược đi ngắn trên đường chéo chết và đi dài trên đường chéo vàng.

Cụ thể, chiến lược sử dụng đường nhanh STOCH 9 ngày như đường nhanh và đường EMA 3 ngày như đường chậm. Khi đóng thấp hơn so với đường đóng trước và đường nhanh vượt trên 50 để vượt trên đường chậm, nó xóa vị trí để đi ngắn. Khi đóng cao hơn so với đường đóng trước và đường nhanh vượt dưới 50 để vượt dưới đường chậm, nó xóa vị trí để đi dài.

Chiến lược ATR Trailing Stop

Chiến lược ATR trailing stop sử dụng phạm vi trung bình thực sự để thiết lập các điểm dừng lỗ. Chỉ số ATR có thể phản ánh hiệu quả sự biến động ngắn hạn của thị trường. Chiến lược đặt trail stop dựa trên giá trị của ATR để thoát khi xu hướng giá đảo ngược.

Cụ thể, chiến lược này sử dụng ATR 5 ngày và đặt điểm dừng lỗ ở mức đóng trừ 3,5 lần ATR. Khi giá đạt đến điểm dừng lỗ, nó đóng vị trí để dừng lỗ.

Phân tích lợi thế

Chiến lược kết hợp của đảo ngược trung bình di chuyển kép và ATR trailing stop kết hợp lợi thế của chiến lược trung bình di chuyển trong việc xác định xu hướng và đảo ngược và lợi thế của chiến lược ATR trail stop trong việc kiểm soát rủi ro, làm cho nó trở thành một chiến lược rất thực tế.

Cụ thể, chiến lược có những lợi thế sau:

  1. Sử dụng chữ thập chết và chữ thập vàng được hình thành bởi các đường trung bình động kép để xác định các điểm đảo ngược xu hướng thị trường và xác định chính xác các tín hiệu đảo ngược.

  2. Kết hợp chỉ báo STOCH để xác nhận tín hiệu đảo ngược và tránh tín hiệu sai.

  3. ATR trailing stop linh hoạt thiết lập điểm dừng lỗ dựa trên biến động thị trường để tối đa hóa việc khóa lợi nhuận.

  4. Chiến lược tích hợp nhiều chỉ số và phương pháp phân tích kỹ thuật để làm cho chiến lược mạnh mẽ hơn.

  5. Ý tưởng chiến lược rõ ràng và dễ hiểu, các tham số linh hoạt để điều chỉnh, và nó dễ dàng hoạt động trong giao dịch trực tiếp.

Phân tích rủi ro

Mặc dù chiến lược này có nhiều lợi thế, nhưng vẫn có một số rủi ro cần lưu ý:

  1. Các tín hiệu được tạo ra bởi các đường trung bình động kép có thể bị chậm và không thể mua và bán chính xác tại các điểm đảo ngược. Thời gian có thể được rút ngắn một cách vừa phải hoặc kết hợp với các chỉ số khác để tối ưu hóa.

  2. Chỉ số ATR không nhạy cảm với biến động thị trường lớn và không thể cập nhật stop loss theo thời gian.

  3. Sự kết hợp của nhiều thông số và điều kiện làm tăng sự phức tạp của chiến lược. Các thông số không phù hợp có thể gây ra giao dịch quá hung hăng và làm tăng rủi ro. Các thông số cần được đánh giá cẩn thận và điều chỉnh dần dần.

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

Theo phân tích rủi ro trên, chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Điều chỉnh các thông số trung bình động theo thời gian để rút ngắn các thời gian để nắm bắt sớm các cơ hội đảo ngược.

  2. Thêm các chỉ số khác để xác định các tín hiệu đảo ngược, chẳng hạn như MACD, KD, v.v. để tạo ra nhiều xác nhận.

  3. Điều chỉnh động các khoảng thời gian ATR hoặc giới thiệu biến động thị trường để cập nhật stop loss trong thời gian thực.

  4. Đánh giá sự khác biệt giữa thị trường chứng khoán và thị trường tương lai, và điều chỉnh các tham số tương ứng để làm cho chúng phù hợp hơn với cả hai thị trường.

  5. Thêm chi phí giao dịch và trượt trong backtesting để làm cho chiến lược gần gũi hơn với môi trường giao dịch trực tiếp.

  6. Xem xét thêm các mô hình học máy để tối ưu hóa nhiều thông số một cách năng động.

Tóm lại

Chiến lược kết hợp đảo ngược trung bình di chuyển kép và ATR trailing stop là một chiến lược định lượng hiệu quả và thực tế. Nó kết hợp hai lợi thế của việc xác định đảo ngược thị trường với trung bình di chuyển và kiểm soát rủi ro bằng cách thiết lập ATR trail stop. Nó đảm bảo lợi nhuận trong khi giảm lỗ không cần thiết. Chiến lược có điều chỉnh tham số linh hoạt và dễ hoạt động trong giao dịch trực tiếp. Đồng thời, nó cũng có thể được mở rộng và tối ưu hóa trong nhiều khía cạnh để thích nghi với môi trường thị trường rộng lớn hơn. Nhìn chung, chiến lược cung cấp một khung chiến lược tuyệt vời cho giao dịch định lượng.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Secon strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


ATR_TrailingStop(nATRPeriod, nATRMultip) =>
    xATR = atr(nATRPeriod)
    nLoss = nATRMultip * xATR
    pos = 0.0
    xATRTrailingStop = 0.0
    xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
                         iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
                           iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
    pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
    	     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Average True Range Trailing Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nATRPeriod = input(5)
nATRMultip = input(3.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posATR_TrailingStop = ATR_TrailingStop(nATRPeriod, nATRMultip)
pos = iff(posReversal123 == 1 and posATR_TrailingStop == 1 , 1,
	   iff(posReversal123 == -1 and posATR_TrailingStop == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 

Thêm nữa