Strategi ini menghasilkan sinyal perdagangan ketika harga melintasi EMA dan menggunakan ATR sebagai stop loss dinamis untuk mengelola risiko.
Logika kunci adalah:
Menghitung ATR sebagai garis stop loss, nilai ATR menentukan stop distance nLoss
Sumber harga adalah harga penutupan secara default, gunakan Heikin Ashi close jika opsi Heikin Ashi h diaktifkan
xATRTrailingStop melacak garis stop loss dinamis berdasarkan perbandingan harga dengan stop sebelumnya
Posisi pos adalah 1 untuk panjang ketika harga melintasi di atas garis stop loss, -1 untuk pendek ketika melintasi di bawah, sebaliknya 0
Sinyal silang EMA, di atas EMA adalah sinyal beli, di bawah adalah sinyal jual
Masukkan perdagangan pada sinyal beli/jual, keluar pada sinyal berlawanan
Bar warna berdasarkan posisi, tanda tanda dan garis stop loss
Strategi ini mengikuti tren dengan berhenti dinamis berdasarkan ATR. Ini dapat mengidentifikasi tren dan mengelola risiko secara efektif.
Keuntungannya adalah:
Stop dinamis berbasis ATR beradaptasi dengan volatilitas pasar
Filter EMA mengurangi sinyal palsu dari kebisingan
Opsional Heikin Ashi menyaring kebisingan dan mengidentifikasi tren
Clear long/short position avoids whipsaws from trailing stop order (Pengertian posisi panjang/pendek menghindari whipsaws dari trailing stop order):
Bantuan visual seperti garis, label dan pewarnaan
Sederhana dan mudah dipahami logika untuk memodifikasi
Periode ATR dan pengganda yang dapat disesuaikan untuk pasar yang berbeda
Singkatnya, dengan menggabungkan tren mengikuti dan berhenti dinamis, strategi ini dapat menangkap tren dan mengelola risiko dengan baik untuk perdagangan ayunan.
Ada beberapa risiko yang harus dipertimbangkan:
Sinyal EMA mungkin tertinggal dari pergerakan jangka pendek yang hilang
Pemicu stop loss yang sering mungkin terjadi di pasar yang bergolak
Tidak mempertimbangkan biaya seperti komisi
Kurangnya kontrol ukuran posisi
Kinerja tergantung pada pengaturan parameter
Risiko whipsaws di berbagai pasar
Membutuhkan pemantauan dan intervensi
Risiko dapat dikurangi dengan mengoptimalkan parameter, menambahkan filter, mengukur posisi dengan benar, memantau kinerja, dan campur tangan bila diperlukan.
Beberapa cara untuk meningkatkan strategi:
Sesuaikan parameter ATR untuk pasar yang berbeda
Uji rata-rata bergerak lainnya untuk menyaring sinyal
Tambahkan indikator filter tren untuk kemungkinan yang lebih tinggi
Menerapkan batasan ukuran posisi
Tambahkan kondisi masuk seperti volume, jarak dari MA
Masukkan biaya seperti komisi ke stop
Optimalkan waktu masuk dan keluar dengan lebih banyak sinyal
Memperkenalkan profit taking atau trailing stops
Optimasi parameter otomatis
Dengan menggabungkan lebih banyak teknik untuk masuk, keluar, filter, dan penyesuaian parameter, strategi dapat lebih diperkuat.
Strategi ini menggabungkan berhenti dinamis dan mengikuti tren dengan baik. Dengan berhenti yang efektif, pelacakan tren yang mulus, kemudahan penggunaan, dan kustomisasi, ini cocok untuk tren perdagangan swing. Tetapi manajemen risiko, pemantauan, dan penyesuaian parameter yang tepat diperlukan. Ketika diterapkan dengan baik di pasar tren, hasil yang baik dapat dicapai. Secara keseluruhan, ini memberikan pendekatan sederhana dan praktis untuk menggabungkan perdagangan tren dan manajemen risiko.
/*backtest start: 2022-10-25 00:00:00 end: 2023-10-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay = true) //CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. // Inputs a = input(1, title = "Key Vaule. 'This changes the sensitivity'") c = input(10, title = "ATR Period") h = input(false, title = "Signals from Heikin Ashi Candles") xATR = atr(c) nLoss = a * xATR src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema = ema(src,1) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) strategy.entry("long", true, when = buy) strategy.entry("short", false, when = sell)