Strategi ini terutamanya melaksanakan mekanisme stop loss adaptif yang menyesuaikan kedudukan stop loss secara automatik berdasarkan turun naik harga untuk mencapai kesan stop loss yang lebih baik. Strategi ini menggunakan penunjuk ATR untuk mengira julat stop loss yang munasabah, dan menghasilkan isyarat perdagangan dalam kombinasi dengan garis EMA. Ia membuka kedudukan panjang atau pendek apabila harga memecahkan garis EMA, dan menggunakan algoritma stop loss adaptif untuk mengikuti stop loss.
Strategi ini mempunyai logik yang jelas dan mudah, menguruskan risiko dengan stop loss berasaskan ATR adaptif dan EMA untuk isyarat perdagangan. Tetapi ia agak pasif dengan banyak ruang untuk pengoptimuman. Pertimbangkan untuk menambah penilaian trend, pelarasan parameter dinamik berdasarkan keadaan pasaran untuk menjadikannya lebih proaktif. Secara keseluruhan ia berfungsi sebagai idea yang baik dan templat untuk strategi stop loss pembalikan, tetapi parameter harus disesuaikan untuk simbol yang berbeza dan bukannya secara membabi buta menggunakan nilai lalai.
/*backtest start: 2023-09-07 00:00:00 end: 2023-10-07 00:00:00 period: 1h basePeriod: 15m 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") //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2100, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// 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 and time_cond) strategy.entry("short", false, when = sell and time_cond)