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í.
donLength
tham số, tính toán cao nhất cao nhất và thấp nhất thấp của quá khứdonLength
thời gian như dải trêndonUpper
và dải dướidonLower
của kênh Donchian, tương ứng.donBasis
là trung bình của các dải trên và dưới.AP2
vàAF2
các thông số, tính giá trị ATRSL2
. Sau đó, điều chỉnh động giá dừng theo dõiTrail2
theo mối quan hệ giữa giá đóng cửa hiện tạiSC
và giá dừng kéo dài trước đóTrail2[1]
.donLength
, AP2
, vàAF2
theo nhu cầu của họ để tối ưu hóa hiệu suất chiến lược.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")