Strategi ini menggunakan dua penunjuk, ATR (Average True Range) dan EMA (Exponential Moving Average), untuk menyesuaikan secara dinamik mengambil keuntungan dan menghentikan kerugian tahap untuk menyesuaikan diri dengan turun naik pasaran. Idea utama strategi ini adalah untuk menggunakan penunjuk ATR untuk mengukur turun naik pasaran dan menetapkan mengambil keuntungan dan menghentikan kerugian tahap berdasarkan besarnya turun naik. Pada masa yang sama, penunjuk EMA digunakan untuk menentukan arah perdagangan. Apabila harga memecahkan di atas EMA, kedudukan panjang dibuka, dan apabila harga memecahkan di bawah EMA, kedudukan pendek dibuka. Strategi ini boleh menyesuaikan secara automatik mengambil keuntungan dan menghentikan kerugian tahap mengikut perubahan dalam turun naik pasaran, dengan itu mencapai tujuan kawalan risiko dinamik.
Strategi ini menggunakan penunjuk ATR dan EMA untuk menyesuaikan secara dinamik tahap mengambil keuntungan dan menghentikan kerugian untuk menyesuaikan diri dengan perubahan dalam turun naik pasaran, sambil menggunakan penunjuk EMA untuk menentukan arah perdagangan. Strategi ini mempunyai daya adaptasi yang kuat dan keupayaan mengikuti trend, tetapi mungkin menghadapi risiko tertentu dalam tetapan parameter, pasaran berayun, dan pembalikan trend.
/*backtest start: 2024-04-27 00:00:00 end: 2024-05-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}] */ //@version=5 strategy(title='UT MB&SS Bot', overlay=true) // Inputs a = input(1, title='Key Value. \'This changes the sensitivity\'') c = input(10, title='ATR Period') h = input(false, title='Signals from Heikin Ashi Candles') stoploss = input(2.0, title='Stop Loss (ATR Multiples)') xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close var xATR_trailing_stop = 0.0 iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1 xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATR_trailing_stop[1], 0) and src < nz(xATR_trailing_stop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATR_trailing_stop[1], 0) and src > nz(xATR_trailing_stop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ema = ta.ema(src, 1) above = ta.crossover(ema, xATR_trailing_stop) below = ta.crossover(xATR_trailing_stop, ema) buy = src > xATR_trailing_stop and above sell = src < xATR_trailing_stop and below barbuy = src > xATR_trailing_stop barsell = src < xATR_trailing_stop plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR stop_level := math.max(stop_level, nz(stop_level[1])) if pos == 1 strategy.exit('Exit Long', 'UT Long', stop=stop_level) else if pos == -1 strategy.exit('Exit Short', 'UT Short', stop=stop_level) if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)