Chiến lược phá vỡ kênh Donchian với ATRSL Trailing Stop

Tác giả:ChaoZhang, Ngày: 2024-03-22 16:13:58
Tags:

img

Tổng quan chiến lược

Chiến lược Breakout kênh Donchian là một chiến lược giao dịch định lượng theo xu hướng. Nó sử dụng các kênh Donchian để nắm bắt xu hướng thị trường trong khi sử dụng ATRSL trailing stop để quản lý rủi ro. Khi giá vượt qua dải trên của kênh Donchian, chiến lược đi vào một vị trí dài; khi giá giảm xuống dưới đường ATRSL trailing stop, chiến lược đóng vị trí.

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

  1. Tính toán kênh Donchian: Dựa trên người dùng xác địnhdonLengththam số, tính toán cao nhất cao nhất và thấp nhất thấp của quá khứdonLengththời gian như dải trêndonUppervà dải dướidonLowercủa kênh Donchian, tương ứng.donBasislà trung bình của các dải trên và dưới.
  2. Tính toán ATRSL Trailing Stop: Dựa trên xác định của người dùngAP2AF2các thông số, tính giá trị ATRSL2. Sau đó, điều chỉnh động giá dừng theo dõiTrail2theo mối quan hệ giữa giá đóng cửa hiện tạiSCvà giá dừng kéo dài trước đóTrail2[1].
  3. Điều kiện nhập cảnh: Khi giá đóng cửa hiện tại vượt qua dải trên của kênh Donchian, nhập vào vị trí dài.
  4. Điều kiện thoát: Khi giá đóng hiện tại vượt qua dưới đường dừng ATRSL, đóng vị trí.

Ưu điểm chiến lược

  1. Theo dõi xu hướng: Bằng cách sử dụng các kênh Donchian để xác định hướng xu hướng, chiến lược có thể nắm bắt hiệu quả xu hướng thị trường.
  2. Đánh giá giá trị của các loại chứng khoán có thể được tính toán theo các quy định của quy định tại đây:
  3. Parameter linh hoạt: Người dùng có thể điều chỉnh các tham số như:donLength, AP2, vàAF2theo nhu cầu của họ để tối ưu hóa hiệu suất chiến lược.

Rủi ro chiến lược

  1. Rủi ro tham số: Cài đặt tham số khác nhau có thể dẫn đến sự khác biệt đáng kể trong hiệu suất chiến lược, đòi hỏi phải kiểm tra kỹ lưỡng và tối ưu hóa tham số.
  2. Rủi ro thị trường: Trong khi thị trường bất ổn hoặc xu hướng đảo ngược, chiến lược có thể gặp phải sự giảm đáng kể.
  3. Chi phí trượt và giao dịch: Giao dịch thường xuyên có thể dẫn đến chi phí trượt và giao dịch cao, ảnh hưởng đến lợi nhuận chiến lược.

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

  1. Thêm bộ lọc xu hướng: Trong điều kiện nhập cảnh, các chỉ số như ADX có thể được thêm vào để đánh giá sức mạnh của xu hướng và chỉ nhập các vị trí khi xu hướng mạnh mẽ, cải thiện chất lượng nhập cảnh.
  2. Tối ưu hóa Stop Loss: Thử nghiệm với các phương pháp stop loss khác, chẳng hạn như stop loss dựa trên tỷ lệ phần trăm hoặc ATR stop loss, hoặc kết hợp nhiều cách tiếp cận stop loss để tăng tính linh hoạt của stop loss.
  3. Tích hợp kích thước vị trí: Điều chỉnh kích thước vị trí một cách năng động dựa trên biến động thị trường và rủi ro tài khoản để quản lý rủi ro.

Tóm lại

Chiến lược đột phá kênh Donchian là một chiến lược theo xu hướng cổ điển nắm bắt xu hướng bằng cách sử dụng các kênh Donchian và quản lý rủi ro bằng cách dừng lại ATRSL. Lợi thế của chiến lược bao gồm logic đơn giản và rõ ràng, dễ thực hiện và tiềm năng tối ưu hóa. Tuy nhiên, nhược điểm của nó bao gồm hiệu suất kém trong các thị trường hỗn loạn và đảo ngược xu hướng và tác động đáng kể của cài đặt tham số đối với hiệu suất chiến lược. Trong ứng dụng thực tế, chiến lược có thể được tăng cường bằng cách thêm các bộ lọc xu hướng, tối ưu hóa stop loss và kết hợp các mô-đun kích thước vị trí để cải thiện sự ổn định và lợi nhuận.


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

//@version=4
strategy("Stock Trend USE THIS", overlay = true)
donLength = input(100, minval=1)

//Donchian Long
donLower = lowest(donLength)
donUpper = highest(donLength)
donBasis = avg(donUpper,donLower)

// ATRSL
SC = close

// Slow Trail //
AP2 = input(10, title="Slow ATR period")  // ATR Period
AF2 = input(3, title="Slow ATR multiplier")  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
iff_3 = SC > nz(Trail2[1], 0) ? SC - SL2 : SC + SL2
iff_4 = SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0) ? min(nz(Trail2[1], 0), SC + SL2) : iff_3
Trail2 := SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0) ? max(nz(Trail2[1], 0), SC - SL2) : iff_4



// Long and Short Conditions
longCondition = (crossover(close,donUpper[1])) 

// Close Conditions
closeLongCondition = crossunder(close,Trail2)

// Strategy logic
if (longCondition) 
    strategy.entry("Long", strategy.long)
    alert("Open Long position")

if (closeLongCondition)
    strategy.close("Long")
    alert("Close Long position")

// Plot Donchian
l = plot(donLower, color=color.blue)
u = plot(donUpper, color=color.blue)
plot(donBasis, color=color.orange)
fill(u, l, color=color.blue)
plot(Trail2, color=color.blue, title="ATRSL Trail")

Thêm nữa