
Chiến lược này là chiến lược theo xu hướng dựa trên chỉ số đường Đông Dương, kết hợp với dừng động của chỉ số ATR để khóa lợi nhuận, thuộc loại chiến lược theo xu hướng.
Chiến lược này sử dụng chỉ số đường truyền Đường Chiên với độ dài 20 chu kỳ, đường trung bình của đường là giá cao nhất và giá thấp nhất. Khi giá vượt qua đường trung bình trên đường, nó sẽ bị phá vỡ khi giá vượt qua đường trung bình dưới đường. Điều kiện thanh toán là giá chạm vào Dây dừng động, đường dừng được tính bằng giá thấp nhất của 3 đường K gần nhất trừ đi một phần ba giá trị chỉ số ATR như là một dừng nhiều, cao nhất của 3 đường K gần đây cộng với một phần ba giá trị chỉ số ATR như là một dừng trống.
Chiến lược này có những lợi thế chính như sau:
Chiến lược này có những rủi ro:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng thực tế đơn giản, xác định hướng xu hướng thông qua kênh Tăng Chiên và sử dụng dừng động để khóa lợi nhuận, có thể theo dõi hiệu quả xu hướng capture. Chiến lược có tính thực tế mạnh mẽ, nhưng có thể được tối ưu hóa thêm bằng nhiều cách để chiến lược vẫn có thể duy trì thu nhập ổn định trong môi trường thị trường phức tạp hơn.
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "dc", overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)
testPeriod() =>
true
//time >= testPeriodStart ? true : false
dcPeriod = input(20, "Period")
dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)
useTakeProfit = na
useStopLoss = na
useTrailStop = na
useTrailOffset = na
//@version=1
Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")
plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)
plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")
strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when= ( close< Buy_stop))
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( close > Sell_stop))
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)