Ide inti dari strategi ini adalah menggunakan rata-rata bergerak dinamis untuk pelacakan tren, mengatur stop loss dan mengambil keuntungan, dan menggabungkan teknik lilin Heikin Ashi untuk penilaian sinyal panjang / pendek. Indikator ATR digunakan untuk menghitung rata-rata bergerak dinamis dan posisi stop loss.
Strategi ini pertama-tama menghitung indikator ATR, kemudian menggabungkan sumber harga input dan parameter untuk menghitung rata-rata bergerak dinamis. Sinyal panjang / pendek dihasilkan ketika harga melintasi di atas / di bawah rata-rata bergerak dinamis. Sementara itu, posisi stop loss dan take profit diatur untuk melacak perubahan harga secara real time.
Secara khusus, indikator ATR dan parameter nLoss dihitung terlebih dahulu. Kemudian harga periode saat ini dan posisi stop loss periode sebelumnya dibandingkan untuk memperbarui garis stop loss. Ketika harga menembus garis stop loss periode sebelumnya, sinyal panjang / pendek pos dan warna yang sesuai dihasilkan. Ketika sinyal perdagangan dipicu, tanda panah digambarkan. Akhirnya posisi ditutup berdasarkan logika stop loss / take profit.
Keuntungan terbesar dari strategi ini adalah penggunaan rata-rata bergerak dinamis untuk melacak perubahan harga secara real time. Hal ini menangkap tren lebih baik daripada rata-rata bergerak tetap tradisional dan mengurangi kemungkinan stop loss. Selain itu, menggabungkan stop loss berbasis ATR memungkinkan penyesuaian posisi stop loss yang fleksibel berdasarkan volatilitas pasar untuk mengontrol risiko secara efektif.
Risiko utama dari strategi ini adalah bahwa harga dapat naik/turun secara signifikan, menyebabkan sinyal palsu ketika stop loss dipukul.
Solusi termasuk mengoptimalkan periode rata-rata bergerak, menyesuaikan koefisien ATR dan stop loss untuk menurunkan probabilitas sinyal palsu. Filter tambahan dapat ditambahkan untuk menghindari perdagangan yang terlalu padat.
Strategi dapat dioptimalkan dalam aspek berikut:
Uji berbagai jenis dan periode rata-rata bergerak untuk menemukan kombinasi parameter yang optimal
Mengoptimalkan parameter periode ATR untuk menyeimbangkan sensitivitas stop loss
Tambahkan filter dan indikator tambahan untuk meningkatkan kualitas sinyal
Sesuaikan nilai stop loss/take profit untuk mengoptimalkan rasio reward risiko
Ide inti dari strategi ini adalah menggunakan rata-rata bergerak dinamis untuk melacak perubahan harga secara real time, memanfaatkan indikator ATR untuk mengatur posisi stop loss secara dinamis, mengendalikan risiko secara ketat sambil melacak tren.
/*backtest start: 2022-11-23 00:00:00 end: 2023-11-05 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Binance","currency":"BTC_USDT","stocks":0}] */ //@version=5 strategy(title='UT Bot v5', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. //Edited and converted to @version=5 by SeaSide420 for Paperina // Inputs AllowBuy = input(defval=true, title='Allow Buy?') AllowSell = input(defval=false, title='Allow Sell?') h = input(false, title='Signals from Heikin Ashi Candles') //revclose = input(defval=true, title='Close when reverse signal?') Price = input(defval=open, title='Price Source (recommended OPEN to avoid repainting)') smoothing = input.string(title="Moving Average Type", defval="HMA", options=["SMA", "EMA", "WMA", "HMA"]) MA_Period = input(2, title='This changes the MAPeriod') a = input.float(1, title='This changes the sensitivity',step=0.1) c = input(11, title='ATR Period') TakeProfit = input.int(defval=50000, title='Take Profit ($)', minval=1) StopLoss = input.int(defval=50000, title='Stop Loss ($)', minval=1) xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, Price, lookahead=barmerge.lookahead_off) : Price xATRTrailingStop = 0.0 iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1 xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ma_function(src, MA_Period) => switch smoothing "SMA" => ta.sma(src, MA_Period) "EMA" => ta.ema(src, MA_Period) "WMA" => ta.wma(src, MA_Period) => ta.hma(src, MA_Period) thema = ma_function(src, MA_Period) above = ta.crossover(thema, xATRTrailingStop) below = ta.crossover(xATRTrailingStop, thema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop plot(thema,title="The M.A.",color=color.green,linewidth=2) plot(xATRTrailingStop,title="The M.A.",color=color.red,linewidth=2) plotshape(buy, title = "Buy", text = "Buy", style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, size = size.tiny) plotshape(sell, title = "Sell", text = "Sell", style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) strategy.close_all(when=strategy.openprofit>TakeProfit,alert_message="Close- TakeProfit", comment = "TP") strategy.close_all(when=strategy.openprofit<StopLoss-(StopLoss*2),alert_message="Close- StopLoss", comment = "SL") strategy.close("buy", when = sell and AllowSell==false , comment = "close buy") strategy.close("sell", when = buy and AllowBuy==false, comment = "close sell") strategy.entry("buy", strategy.long, when = buy and AllowBuy) strategy.entry("sell", strategy.short, when = sell and AllowSell)