
Cette stratégie est basée sur la stratégie de suivi de la tendance de l’indicateur du canal de Dongguan, combinée à une stop loss dynamique de l’indicateur ATR pour bloquer les bénéfices, et appartient à la catégorie des stratégies de suivi de la tendance.
La stratégie utilise l’indicateur du canal de Dongxian de 20 cycles de longueur, la ligne médiane du canal étant la moyenne du prix le plus élevé et du prix le plus bas. Lorsque le prix est supérieur à travers la ligne médiane du canal, il est en hausse, et lorsque le prix est inférieur à travers la ligne médiane du canal, il est en baisse.
Les principaux avantages de cette stratégie sont les suivants:
La stratégie présente principalement les risques suivants:
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie est une stratégie de suivi de tendance simple et pratique, qui permet de déterminer la direction de la tendance par le biais du canal de la tangentine et de bloquer les profits en utilisant des arrêts dynamiques. La stratégie est très pratique, mais elle peut être optimisée de plusieurs façons, ce qui lui permet de maintenir des gains stables dans des environnements de marché plus complexes.
/*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)