Cette stratégie est une stratégie de rupture de tendance basée sur l'indicateur ATR. Son idée principale est de prendre des transactions de rupture de tendance lorsque le prix dépasse un certain multiple d'ATR. La stratégie comprend également la confirmation de la tendance et la limitation des transactions dans des plages de dates.
La stratégie utilise l'indicateur ATR pour mesurer la volatilité des prix. ATR signifie Average True Range et mesure la volatilité moyenne sur une période. Le paramètre de longueur de la stratégie calcule la période ATR et numATRs représente le multiplicateur ATR pour la rupture.
Lorsque le prix dépasse le multiple numATRs supérieur de l'ATR, une position longue est prise.
En outre, la stratégie comprend des variables bool needlong et needshort pour contrôler uniquement les transactions longues ou courtes.
La stratégie utilise une variable de taille pour déterminer la taille de la position et calcule la taille de l'ordre en fonction du pourcentage du capital du compte.
Utilise l'ATR pour s'adapter automatiquement à la volatilité du marché sans réglage manuel des profits/pertes.
La sélection est flexible: long, short ou long/short seulement.
Peut définir des plages de dates pour éviter les transactions lors d'événements importants.
Taille flexible des positions basée sur le pourcentage de fonds propres du compte.
L'ATR ne prend en compte que la volatilité des prix. Il peut avoir un stop loss insuffisant lors d'énormes fluctuations du marché. D'autres indicateurs peuvent être combinés.
Les limites de la plage de dates peuvent manquer des opportunités si aucune bonne configuration avant/après.
La taille en pourcentage des actions risque d'entraîner des pertes importantes sur les transactions uniques.
Ajouter des moyennes mobiles pour le filtre de tendance afin de réduire les faux bruits de rupture.
Testez les périodes ATR pour trouver les paramètres optimaux.
Combinez avec d'autres stratégies pour utiliser les points forts et améliorer la stabilité.
Il s'agit d'une tendance compréhensible à la suite d'une stratégie utilisant l'ATR pour s'adapter à la volatilité. L'optimisation des paramètres et la combinaison avec d'autres stratégies peuvent améliorer davantage les performances et la stabilité.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") length = input(5) numATRs = input(0.75) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Indicator atrs = sma(tr, length) * numATRs //Trading size = strategy.position_size lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[length])) and needlong strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needlong == false strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if (not na(close[length])) and needshort == false strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))