
Strategi ini adalah strategi mengikuti trend berdasarkan petunjuk saluran Dongxian, digabungkan dengan stop loss dinamik indikator ATR untuk mengunci keuntungan, termasuk dalam kategori strategi mengikuti trend.
Strategi ini menggunakan indikator saluran Dongxian dengan panjang 20 kitaran, dengan garis tengah saluran sebagai purata harga tertinggi dan terendah. Apabila harga naik, ia melintasi garis tengah saluran, dan apabila harga turun, ia melintasi garis tengah saluran.
Strategi ini mempunyai kelebihan utama:
Strategi ini mempunyai risiko utama:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi ini secara keseluruhannya adalah strategi mengikuti trend yang mudah dan praktikal, dengan menentukan arah trend melalui saluran Tongxian, dan menggunakan stop loss dinamik untuk mengunci keuntungan, dapat mengesan trend capturing dengan berkesan. Strategi ini sangat praktikal, tetapi dapat dioptimumkan lebih jauh dengan pelbagai cara, sehingga strategi masih dapat mengekalkan keuntungan yang stabil dalam persekitaran pasaran yang lebih kompleks.
/*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)