
এটি একটি ট্রেন্ড ট্র্যাকিং কৌশল যা এটিআর (অর্ধ-সত্যিকারের পরিসীমা) সূচকের উপর ভিত্তি করে, গতিশীল স্টপ এবং মিডল লাইন ক্রস সিগন্যালের সাথে মিলিত। এটিআর গণনা করে বাজারের অস্থিরতা নির্ধারণ করে এবং এই তথ্যটি ব্যবহার করে একটি গতিশীল ট্র্যাকিং স্টপ লাইন তৈরি করে। যখন দাম এবং ইএমএ (চলমান গড়) সূচকটি এটিআর ট্র্যাকিং স্টপ লাইনটি ভেঙে দেয়, তখন একটি ট্রেডিং সংকেত তৈরি হয়। কৌশলটি সাধারণ কে লাইন বা সুরক্ষিত কে লাইন ব্যবহার করে গণনা করার বিকল্পও সরবরাহ করে, কৌশলটির নমনীয়তা বাড়ায়।
কৌশলটির মূল যুক্তি নিম্নলিখিত কয়েকটি মূল গণনার উপর ভিত্তি করে তৈরি করা হয়েছেঃ
এটি একটি সম্পূর্ণ ট্রেডিং কৌশল যা গতিশীল ট্র্যাকিং স্টপ লস এবং সমান্তরাল সিস্টেমকে একত্রিত করে। এটিআর সূচকগুলি দ্বারা বাজারের ওঠানামা বৈশিষ্ট্যগুলি ক্যাপচার করে, সমান্তরাল ক্রসগুলি ব্যবহার করে ট্রেডিং সিগন্যাল সরবরাহ করে, একটি যুক্তিসঙ্গত কঠোর ট্রেডিং সিস্টেম তৈরি করে। কৌশলটির সুবিধা হ’ল এর গতিশীল অভিযোজনযোগ্যতা এবং ঝুঁকি নিয়ন্ত্রণের ক্ষমতা, তবে এটির দিকেও মনোযোগ দেওয়া দরকার। প্রস্তাবিত অপ্টিমাইজেশনের দিকনির্দেশের মাধ্যমে কৌশলটি আরও বাড়ানোর জায়গা রয়েছে।
/*backtest
start: 2024-05-15 00:00:00
end: 2024-08-08 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy(title="UT Bot Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
a = input.float(1, title="Key Value. 'This changes the sensitivity'")
c = input.int(10, title="ATR Period")
h = input.bool(false, title="Signals from Heikin Ashi Candles")
// Calculate ATR
xATR = ta.atr(c)
nLoss = a * xATR
// Source for calculations
src = h ? request.security(syminfo.tickerid, timeframe.period, hlc3) : close
// ATR Trailing Stop logic
var float xATRTrailingStop = na
if (not na(xATRTrailingStop[1]) and src > xATRTrailingStop[1] and src[1] > xATRTrailingStop[1])
xATRTrailingStop := math.max(xATRTrailingStop[1], src - nLoss)
else if (not na(xATRTrailingStop[1]) and src < xATRTrailingStop[1] and src[1] < xATRTrailingStop[1])
xATRTrailingStop := math.min(xATRTrailingStop[1], src + nLoss)
else
xATRTrailingStop := src > xATRTrailingStop[1] ? src - nLoss : src + nLoss
// Position logic
var int pos = 0
if (not na(xATRTrailingStop[1]) and src[1] < xATRTrailingStop[1] and src > xATRTrailingStop[1])
pos := 1
else if (not na(xATRTrailingStop[1]) and src[1] > xATRTrailingStop[1] and src < xATRTrailingStop[1])
pos := -1
else
pos := pos[1]
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
// Entry and Exit Signals
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
// Strategy Execution
if (buy)
strategy.entry("UT Long", strategy.long)
if (sell)
strategy.entry("UT Short", strategy.short)
// Plotting and Alerts
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(src > xATRTrailingStop ? color.green : src < xATRTrailingStop ? color.red : na)
alertcondition(buy, title="UT Long", message="UT Long")
alertcondition(sell, title="UT Short", message="UT Short")