
Chiến lược phá vỡ kênh Dongguan là một chiến lược giao dịch định lượng theo xu hướng. Chiến lược này sử dụng kênh Dongguan để nắm bắt xu hướng thị trường, đồng thời sử dụng ATRSL để kiểm soát rủi ro. Chiến lược mở nhiều vị trí khi giá vượt qua kênh Dongguan; chiến lược bằng phẳng khi giá giảm xuống ATRSL.
donLengthCác tham số được tính trước.donLengthGiá cao nhất và giá thấp nhất của một chu kỳ, tương ứng với đường ray trên đường DongxiandonUpperVà đường ray.donLower, đường trung tâm .donBasisLà trung bình của đường ray lên xuống.AP2 Và AF2Các tham số tính ATRSL2Sau đó, tính theo giá đóng cửa hiện tại.SCVà trước đó là giá dừng động.Trail2[1]Các quan hệ, động lực điều chỉnh giá dừng di chuyểnTrail2。donLength、AP2 Và AF2Các tham số khác nhau, tối ưu hóa hiệu suất chiến lược.Chiến lược phá vỡ kênh Đồng Chi An là một chiến lược theo dõi xu hướng cổ điển, nắm bắt xu hướng thông qua kênh Đồng Chi An và sử dụng ATRSL để kiểm soát rủi ro dừng lỗ di động. Ưu điểm của chiến lược là logic đơn giản, rõ ràng, dễ thực hiện và tối ưu hóa; nhược điểm là hoạt động kém khi thị trường dao động và xu hướng đảo ngược, và cài đặt tham số có ảnh hưởng lớn đến hoạt động của chiến lược. Trong ứng dụng thực tế, có thể thêm các mô-đun quản lý xu hướng, tối ưu hóa dừng lỗ và vị trí trên cơ sở của chiến lược gốc để tăng cường sự ổn định và lợi nhuận của chiến lược.
/*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")