Cette stratégie est basée sur l’indicateur ATR de la longueur d’onde réelle moyenne pour juger de la direction de la tendance, en faisant plus lorsque la tendance augmente et en faisant moins lorsque la tendance diminue, et appartient au type de stratégie de suivi de la tendance.
La stratégie commence par calculer la moyenne mobile simple sma et la moyenne mobile indicielle ema des prix. Ensuite, elle calcule l’indicateur ATR, c’est-à-dire la gamme moyenne des fluctuations des derniers N jours.
La stratégie utilise la direction de la tendance à partir de la moyenne de l’ema, de la trajectoire ascendante ((ema + ATR *) et descendante ((ema - ATR *) . Lorsque le prix monte sur la trajectoire ascendante, faites plus; lorsque le prix descend sur la trajectoire descendante, faites moins.
La logique principale du code:
Les positions sont ajustées dynamiquement via ATR, permettant de suivre efficacement les tendances.
La solution est simple:
L’ATR est une stratégie de suivi des tendances qui a une conception globale claire et qui permet de déterminer la direction des tendances à l’aide des indicateurs ATR. Elle est une stratégie de suivi des tendances typique. L’avantage de la stratégie est sa simplicité et sa facilité d’utilisation. Elle permet de suivre efficacement les tendances.
/*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)