
এই কৌশলটি দুটি সূচক ব্যবহার করে, এটিআর (গড় বাস্তব তরঙ্গ) এবং ইএমএ (ইন্ডেক্সের চলমান গড়) বাজারের ওঠানামাকে সামঞ্জস্য করার জন্য গতিশীলভাবে স্টপ-অফ পয়েন্টের সমন্বয় করে। কৌশলটির মূল ধারণাটি হ’লঃ এটিআর সূচকটি বাজারের ওঠানামা পরিমাপ করতে এবং ওঠানামার আকারের উপর ভিত্তি করে স্টপ-অফ পয়েন্ট সেট করার জন্য ব্যবহার করা হয়। একই সাথে, ইএমএ সূচকটি ট্রেডিংয়ের দিকনির্দেশের জন্য ব্যবহার করা হয়, যখন দামটি ইএমএকে উত্তোলন করে তখন অনেকগুলি আদেশ খোলা হয় এবং যখন ইএমএকে নীচে ভেঙে যায় তখন খালি পয়েন্ট খোলা হয়। এই কৌশলটি বাজারের ওঠানামার পরিবর্তনের উপর ভিত্তি করে স্টপ-অফ পয়েন্টের স্বয়ংক্রিয় সমন্বয় করতে সক্ষম, গতিশীল ঝুঁকি নিয়ন্ত্রণের উদ্দেশ্যে।
এই কৌশলটি এটিআর এবং ইএমএ দুটি সূচক ব্যবহার করে, বাজারের অস্থিরতার পরিবর্তনের সাথে সামঞ্জস্যপূর্ণভাবে স্টপ স্টপ পয়েন্টের গতিশীল সমন্বয় করে এবং ইএমএ সূচক ব্যবহার করে ট্রেডিংয়ের দিকনির্দেশের জন্য। এই কৌশলটির শক্তিশালী স্ব-অনুকরণযোগ্যতা এবং প্রবণতা ট্র্যাকিং ক্ষমতা রয়েছে, তবে প্যারামিটার সেটিং, অস্থির বাজার এবং প্রবণতা পাল্টানোর সময় এটির কিছু ঝুঁকি থাকতে পারে। ভবিষ্যতে আরও প্রযুক্তিগত সূচক, অপ্টিমাইজড স্টপ লস অ্যালগরিদম, সূচক অপ্টিমাইজেশন এবং পজিশন ম্যানেজমেন্ট পদ্ধতি যুক্ত করে কৌশলটির কার্যকারিতা বাড়ানো যেতে পারে।
/*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)