Strategi ini menghasilkan isyarat perdagangan apabila harga melintasi EMA dan menggunakan ATR sebagai stop loss dinamik untuk menguruskan risiko.
Logika utama ialah:
Mengira ATR sebagai garis stop loss, nilai ATR menentukan jarak stop nLoss
Sumber harga adalah harga penutupan secara lalai, gunakan penutupan Heikin Ashi jika pilihan Heikin Ashi h diaktifkan
xATRTrailingStop menyemak garis stop loss dinamik berdasarkan perbandingan harga dengan berhenti sebelumnya
Posisi pos adalah 1 untuk panjang apabila harga melintasi di atas garis stop loss, -1 untuk pendek apabila melintasi di bawah, sebaliknya 0
Isyarat silang EMA, di atas EMA adalah isyarat beli, di bawah isyarat jual
Masuk perdagangan pada isyarat beli/jual, keluar pada isyarat bertentangan
Bar warna berdasarkan kedudukan, isyarat tanda dan garis stop loss
Strategi ini mengikuti trend dengan berhenti dinamik berdasarkan ATR. Ia boleh mengenal pasti trend dan menguruskan risiko dengan berkesan.
Kelebihan adalah:
Hentikan dinamik berasaskan ATR menyesuaikan diri dengan turun naik pasaran
Penapis EMA mengurangkan isyarat palsu dari bunyi bising
Pilihan Heikin Ashi penapis bunyi dan mengenal pasti trend
Clear long/short position avoids whipsaws from trailing stop order dalam bahasa Inggeris
Bantuan visual seperti garisan, label dan pewarnaan
Sederhana dan mudah difahami logik untuk mengubah suai
Tempoh ATR yang boleh disesuaikan dan pengganda untuk pasaran yang berbeza
Ringkasnya, dengan menggabungkan trend berikut dan berhenti dinamik, strategi ini boleh menangkap trend dan menguruskan risiko dengan baik untuk perdagangan ayunan.
Terdapat beberapa risiko yang perlu dipertimbangkan:
Isyarat EMA mungkin ketinggalan pergerakan jangka pendek yang hilang
Pemicu stop loss yang kerap mungkin dalam pasaran yang bergolak
Tiada pertimbangan kos seperti komisen
Kekurangan kawalan saiz kedudukan
Prestasi bergantung pada penyusunan parameter
Risiko whipsaws di pasaran yang berbeza
Memerlukan pemantauan dan campur tangan
Risiko boleh dikurangkan dengan mengoptimumkan parameter, menambah penapis, mengukur kedudukan dengan betul, memantau prestasi, dan campur tangan apabila perlu.
Beberapa cara untuk meningkatkan strategi:
Sesuaikan parameter ATR untuk pasaran yang berbeza
Uji purata bergerak lain untuk menapis isyarat
Tambah penunjuk penapis trend untuk kebarangkalian yang lebih tinggi
Melaksanakan had saiz kedudukan
Tambah syarat kemasukan seperti jumlah, jarak dari MA
Menggabungkan kos seperti komisen dalam berhenti
Mengoptimumkan masa masuk dan keluar dengan lebih banyak isyarat
Memperkenalkan mengambil keuntungan atau hentian
Pengoptimuman parameter automatik
Dengan menggabungkan lebih banyak teknik untuk masuk, keluar, penapis, dan penyesuaian parameter, strategi dapat diperkukuhkan lagi.
Strategi ini menggabungkan berhenti dinamik dan trend berikut dengan baik. Dengan berhenti yang berkesan, penjejakan trend yang lancar, kemudahan penggunaan, dan penyesuaian, ia sesuai untuk trend perdagangan ayunan. Tetapi pengurusan risiko, pemantauan, dan penyesuaian parameter yang betul diperlukan. Apabila digunakan dengan baik di pasaran trend, hasil yang baik dapat dicapai. Secara keseluruhan ia menyediakan pendekatan yang mudah dan praktikal untuk menggabungkan perdagangan trend dan pengurusan 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)