Tren ATR Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-21 15:13:47
Tag:

Gambaran umum

Strategi ini menggunakan Average True Range (ATR) untuk menangkap tren harga dan menetapkan berhenti berdasarkan ATR untuk mengikuti tren.

Cara Kerjanya

  1. Menghitung nilai ATR.

  2. Tentukan tingkat stop loss berdasarkan ATR.

  3. Masukkan panjang/pendek ketika harga melanggar stop level.

  4. Mengunci keuntungan dengan menyesuaikan berhenti secara dinamis.

Keuntungan

  • ATR secara otomatis menyesuaikan berhenti, tidak perlu intervensi manual
  • Logika sederhana dan intuitif, mudah diterapkan
  • Membantu menghindari terjebak, stop loss tepat waktu
  • Keuntungan dari tren berkuda
  • Frekuensi perdagangan dikendalikan melalui parameter ATR

Risiko

  • Parameter ATR yang buruk dapat menyebabkan berhenti terlalu longgar atau ketat
  • Tidak dapat secara efektif mengidentifikasi akhir tren
  • Beberapa waktu lag ada
  • Kembali dapat mengurangi keuntungan

Arahan Optimasi

  • Mengoptimalkan parameter periode ATR
  • Uji beberapa kali lipat ATR untuk jarak berhenti
  • Tambahkan filter untuk mendeteksi pembalikan tren
  • Jelajahi pembelajaran mesin untuk optimasi parameter
  • Pertimbangkan mekanisme pengambilan keuntungan tambahan

Kesimpulan

Strategi ini secara efektif menangkap tren menggunakan ATR dan mengunci keuntungan dengan berhenti dinamis. Parameter penyesuaian halus dapat meningkatkan kinerja.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy(title="ATR Strategy", overlay = true,  commission_type=strategy.commission.percent,commission_value=0.075)
//credits to HPotter for the orginal code
nATRPeriod = input(5)
nATRMultip = input(3.5)
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), math.max(nz(xATRTrailingStop[1]), close - nLoss),
                    iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), math.min(nz(xATRTrailingStop[1]), close + nLoss), 
                        iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
	    iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 

strategy.entry("Long", strategy.long, when = barbuy) 
strategy.entry("Short", strategy.short, when = barsell) 

barcolor(barbuy? color.green:color.red)



Lebih banyak