
Strategi ini adalah strategi trend following yang didasarkan pada indikator saluran Dongxian, yang dikombinasikan dengan stop loss dinamis dari indikator ATR untuk mengunci keuntungan, dan termasuk dalam kategori strategi trend following.
Strategi ini menggunakan indikator saluran Dongxian dengan panjang 20 siklus, dengan garis tengah saluran sebagai rata-rata harga tertinggi dan terendah. Jika harga naik, maka harga akan melewati garis tengah saluran, dan jika harga turun, maka harga akan melewati garis tengah saluran.
Strategi ini memiliki beberapa keuntungan utama:
Strategi ini memiliki risiko utama sebagai berikut:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi ini secara keseluruhan merupakan strategi yang sederhana dan praktis untuk mengikuti tren, dengan cara menentukan arah tren melalui saluran Tongxian, dan menggunakan stop loss dinamis untuk mengunci keuntungan. Strategi ini sangat praktis, tetapi dapat dioptimalkan lebih lanjut dengan berbagai cara, sehingga strategi ini masih dapat mempertahankan pendapatan yang stabil dalam lingkungan pasar 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)