Cette stratégie est basée sur l’indicateur de la moyenne de la vraie plage (Average True Range, ATR) pour construire un canal de super-tendance (SuperTrend), générant des signaux d’achat et de vente en fonction du prix de la rupture du canal de super-tendance. La stratégie combine les avantages du suivi de la tendance et de la gestion des arrêts de perte pour suivre efficacement la direction de la tendance.
La trajectoire ascendante et descendante d’un canal hypertrendyque est calculée par la formule suivante:
La trajectoire est la somme de la valeur maximale et la valeur minimale de l’option 2 + ATR (n) * facteur La trajectoire descendante = (le prix le plus élevé + le prix le plus bas) / 2 - ATR (n) * facteur
Dans ce cas, ATR ((n) représente l’amplitude réelle moyenne sur n jours, dont le facteur est un paramètre réglable, par défaut 3。
La stratégie détermine l’entrée et la sortie du marché en fonction des signaux de hausse et de baisse.
Comment gérer les risques:
Cette stratégie utilise le canal hypertrend pour réaliser le suivi des tendances et la gestion des pertes. La correspondance des paramètres ATR et des facteurs est essentielle à l’efficacité de la stratégie. La prochaine étape consiste à optimiser davantage la stratégie en termes d’optimisation des paramètres, de filtrage des signaux, etc., afin de l’adapter à un environnement de marché plus complexe.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Backtest", shorttitle="STBT", overlay=true)
// Input for ATR Length
atrLength = input.int(10, title="ATR Length", minval=1)
atrFactor = input.float(3.0, title="Factor", minval=0.01, step=0.01)
// Calculate SuperTrend
[supertrend, direction] = ta.supertrend(atrFactor, atrLength)
supertrend := barstate.isfirst ? na : supertrend
// Define entry and exit conditions
longCondition = ta.crossover(close, supertrend)
shortCondition = ta.crossunder(close, supertrend)
// Plot the SuperTrend
plot(supertrend, color=color.new(color.blue, 0), title="SuperTrend")
// Plot Buy and Sell signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Strategy Entry and Exit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)