Cette stratégie est basée sur l'indicateur SuperTrend et utilise l'ATR pour définir dynamiquement des lignes de stop loss afin de profiter des fortes tendances d'Ethereum.
La stratégie utilise un indicateur classique de suivi de tendance - l'indicateur SuperTrend pour déterminer la direction de la tendance.
Lorsque le prix passe d'une tendance haussière à une tendance baissière, ouvrez une position courte.
En outre, la stratégie utilise l'indicateur ATR pour ajuster dynamiquement la ligne d'arrêt de perte. Plus précisément, la position de la ligne d'arrêt de perte de tendance haussière est la moyenne du plus haut et du plus bas bas moins ATR multiplié par un coefficient; la position de la ligne d'arrêt de perte de tendance baissière est la moyenne du plus haut et du plus bas plus ATR multiplié par un coefficient. Cela permet d'ajuster le stop loss en fonction de la volatilité du marché.
Après que les signaux d'entrée soient déclenchés, si le prix dépasse la ligne de stop loss, arrêtez la perte.
Il s'agit d'une tendance relativement mûre qui suit une stratégie présentant les avantages suivants:
Cette stratégie comporte également certains risques:
Pour atténuer les risques susmentionnés, le coefficient ATR peut être ajusté ou des filtres avec d'autres indicateurs peuvent être ajoutés.
Des améliorations supplémentaires sont possibles:
Dans l'ensemble, il s'agit d'une stratégie de suivi de tendance mature et fiable. Il utilise l'indicateur SuperTrend pour déterminer la direction de la tendance et adapte le stop loss avec ATR pour contrôler les risques tout en profitant. La stratégie fonctionne bien pour les crypto-monnaies à forte volatilité comme Ethereum.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SuperTrend Strategy", overlay=true, initial_capital=2e3, process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.1 ) length = input(title="ATR Period", type=input.integer, defval=21) mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) useDate = input(title="Start from Specific Date ?", defval=false) yearStart = input(title="Start Year", defval=2019) monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) startFrom = useDate ? time(timeframe.period) >= startTime : true atr = mult * ta.atr(length) longStop = hl2 - atr longStopPrev = nz(longStop[1], longStop) longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = hl2 + atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir longColor = color.green shortColor = color.red plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) longCondition = dir[1] == -1 and dir == 1 if longCondition and startFrom strategy.entry("Long", strategy.long, stop=longStop) else strategy.cancel("Long") shortCondition = dir[1] == 1 and dir == -1 if shortCondition and startFrom strategy.entry("Short", strategy.short, stop=shortStop) else strategy.cancel("Short")