Strategi ini didasarkan pada rata-rata real amplitude indikator ATR untuk menilai arah tren, melakukan lebih banyak ketika tren naik, melakukan shorting ketika tren turun, dan merupakan jenis strategi yang mengikuti tren.
Strategi ini pertama-tama menghitung harga SMA dan EMA. Kemudian menghitung indikator ATR, yaitu rentang rata-rata pergerakan selama N hari terakhir.
Strategi untuk menilai arah tren melalui rata-rata ema, uptrend ((ema + ATR * faktor) dan downtrend ((ema - ATR * faktor)). Ketika harga naik naik, lakukan lebih banyak; Ketika harga turun turun, lakukan lebih sedikit.
Logika utama kode:
Menggunakan ATR untuk mengadaptasi posisi secara dinamis, Directions dapat secara efektif melacak tren.
Solusi:
Strategi pelacakan tren ATR ini memiliki ide yang jelas, menentukan arah tren melalui indikator ATR, dan merupakan strategi pelacakan tren yang khas. Keuntungan dari strategi ini adalah sederhana dan mudah dioperasikan, dan dapat secara efektif melacak tren; tetapi ada juga risiko tertentu, yang perlu disesuaikan secara optimal untuk berbagai lingkungan pasar, agar strategi dapat memberikan manfaat maksimal. Secara keseluruhan, strategi ini memiliki ruang pengembangan dan nilai penggunaan yang besar sebagai alat perdagangan kuantitatif.
/*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)