Strategi ini menggunakan indikator Average True Range (ATR) untuk menentukan arah tren. Ini akan panjang ketika tren naik dan akan pendek ketika tren turun.
Strategi ini pertama-tama menghitung rata-rata bergerak sederhana (sma) dan rata-rata bergerak eksponensial (ema) dari harga. Kemudian menghitung indikator ATR, yang merupakan rentang rata-rata pergerakan harga selama N hari terakhir.
Strategi ini menggunakan garis rata-rata EMA, band atas (koefisien EMA + ATR *) dan band bawah (koefisien EMA - ATR *) untuk menentukan arah tren.
Logika utama dalam kode:
Dengan menyesuaikan posisi secara dinamis berdasarkan ATR, ia dapat secara efektif mengikuti arah tren.
Solusi:
Strategi mengikuti tren ATR memiliki logika yang jelas untuk menentukan arah tren menggunakan ATR. Ini adalah sistem mengikuti tren yang khas. Keuntungannya adalah kesederhanaan dan kemampuan untuk mengikuti tren. Tetapi juga memiliki risiko yang membutuhkan optimasi untuk berbagai pasar. Secara keseluruhan, ini memiliki potensi dan nilai 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)