Cette stratégie utilise l'indicateur Average True Range (ATR) pour déterminer la direction de la tendance.
La stratégie calcule d'abord la moyenne mobile simple (sma) et la moyenne mobile exponentielle (ema) du prix. puis elle calcule l'indicateur ATR, qui est la plage moyenne de mouvement des prix au cours des N derniers jours.
La stratégie utilise la ligne moyenne de l'EMA, la bande supérieure (coefficient d'EMA + ATR *) et la bande inférieure (coefficient d'EMA - ATR *) pour déterminer la direction de la tendance.
La logique principale du code:
En ajustant dynamiquement les positions en fonction de l'ATR, il peut suivre efficacement les tendances.
Les solutions:
La stratégie de suivi de tendance ATR a une logique claire pour déterminer la direction de la tendance en utilisant ATR. C'est un système de suivi de tendance typique. Les avantages sont la simplicité et la capacité de suivre les tendances. Mais elle comporte également des risques qui nécessitent des optimisations pour différents marchés. Dans l'ensemble, elle a un grand potentiel et une grande valeur en tant qu'outil de trading quantitatif.
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Investoz //@version=4 strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len = input(26, type=input.integer, minval=1, title="Length") mul = input(2.618, type=input.float, minval=0, title="Length") mullow = input(2.386, type=input.float, minval=0, title="Length") price = sma(close, 1) average = ema(close, len) diff = atr(len) * mul difflow = atr(len) * mullow bull_level = average + diff bear_level = average - difflow bull_cross = crossunder(price, bear_level) bear_cross = crossunder(bull_level, price) FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2008, title = "From Year", minval = 2008) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2019) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) startTimeOk() => true if (startTimeOk()) and ema(close,1) > ema(close,528) strategy.entry("KOP", strategy.long, when=bull_cross) strategy.close("KOP", when=bear_cross) if (startTimeOk()) and ema(close,1) < ema(close,528) strategy.entry("SALJ", strategy.short, when=bear_cross) strategy.close("SALJ", when=bull_cross) plot(price, title="price", color=color.black, transp=50, linewidth=2) a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1) a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1) a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1) fill(a0, a1, color=color.green, transp=97) fill(a0, a2, color=color.red, transp=97)