Die Strategie basiert auf dem mittleren realen Wellenlängenindikator ATR, um die Richtung des Trends zu bestimmen. Wenn der Trend steigt, wird mehr getan, und wenn der Trend fällt, wird kurz gemacht. Sie gehört zu den Strategien, die dem Trend folgen.
Die Strategie berechnet zunächst den einfachen Moving Average sma und den Index Moving Average ema der Preise. Dann wird der ATR-Indikator berechnet, also die durchschnittliche Bandbreite der Preise in den letzten N Tagen.
Die Strategie beurteilt die Richtung des Trends anhand der Ema-Durchschnitts-, der Ema-Oberstraße (EMA + ATR *-Faktor) und der Ema-Unterstraße (EMA - ATR *-Faktor). Wenn der Preis oben ist, machen Sie mehr; wenn der Preis unten ist, machen Sie weniger.
Hauptsächliche Logik:
Durch ATR kann die Position dynamisch angepasst werden, um Trends zu verfolgen.
Die Lösung:
Die ATR-Trendverfolgungsstrategie ist eine typische Trendverfolgungsstrategie. Die Strategie hat den Vorteil, dass sie einfach und einfach zu bedienen ist und die Trends effektiv verfolgen kann. Es besteht jedoch ein gewisses Risiko, dass sie für verschiedene Marktumgebungen optimiert und angepasst werden muss, um die Strategie optimal zu nutzen.
/*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)