Tren ATR Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-28 11:32:09
Tag:

Gambaran umum

Strategi ini menggunakan indikator Average True Range (ATR) untuk menentukan arah tren. Ini akan panjang ketika tren naik dan akan pendek ketika tren turun.

Logika Strategi

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:

  1. Menghitung harga SMA dan EMA rata-rata
  2. Menghitung rentang rata-rata ATR
  3. Menghitung band atas dan bawah
  4. Tentukan sinyal panjang: harga pecah di atas band atas
  5. Tentukan sinyal pendek: harga pecah di bawah band bawah
  6. Atur stop loss untuk menutup posisi: price break di bawah band atas untuk menutup long; price break di atas band bawah untuk menutup short.

Dengan menyesuaikan posisi secara dinamis berdasarkan ATR, ia dapat secara efektif mengikuti arah tren.

Keuntungan

  1. Menggunakan ATR untuk menentukan arah tren dapat secara efektif menangkap tren harga
  2. Stop loss berdasarkan rata-rata bergerak dapat secara wajar mengendalikan risiko
  3. Logika strategi yang sederhana dan jelas, mudah dimengerti dan diterapkan
  4. Parameter konfigurasi yang fleksibel, dapat disesuaikan dengan lingkungan pasar yang berbeda

Risiko

  1. Indikator ATR akan gagal di pasar samping yang sangat fluktuatif
  2. Pengaturan parameter yang tidak benar dapat menyebabkan perdagangan yang terlalu sering
  3. Pembalikan mendadak dapat membuat stop loss tidak sah
  4. Biaya perdagangan yang lebih tinggi membutuhkan penyesuaian untuk pengaturan pelacakan

Solusi:

  1. Hentikan strategi atau gunakan indikator lain dengan volatilitas tinggi
  2. Mengoptimalkan parameter untuk mengurangi frekuensi perdagangan
  3. Meningkatkan rasio stop loss untuk peristiwa data utama
  4. Sesuaikan rentang ATR berdasarkan produk tertentu

Arah Peningkatan

  1. Menggabungkan dengan indikator tren untuk mengoptimalkan parameter, misalnya menambahkan MACD untuk tren
  2. Tambahkan filter seperti Bollinger Bands untuk entri
  3. Mengoptimalkan metode stop loss, seperti indikator trailing stop atau exit
  4. Mengoptimalkan rentang ATR berdasarkan produk tertentu
  5. Tambahkan manajemen risiko seperti ukuran posisi pecahan tetap
  6. Optimalkan parameter secara dinamis menggunakan pembelajaran mesin

Ringkasan

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)

Lebih banyak