
এই কৌশলটি স্ব-অনুকূলিত প্রবণতা ট্র্যাকিংয়ের জন্য গড় সত্যিকারের অস্থিরতার পরিসীমা ((এটিআর), আপেক্ষিকভাবে শক্তিশালী সূচক ((আরএসআই) এবং চলমান স্টপ ব্যবহার করে। এটির মাধ্যমে গতিশীল স্টপ লেভেল গণনা করুন, বাজারের প্রবণতার দিকনির্দেশের জন্য আরএসআই ব্যবহার করুন, মুনাফা সর্বাধিকীকরণের জন্য দামের অস্থিরতা ট্র্যাক করুন। এটি একটি খুব সাধারণ প্রবণতা ট্র্যাকিং কৌশল।
এটিআর গণনা করুন। এটিআর বাজারের অস্থিরতা এবং ঝুঁকির স্তরকে প্রতিফলিত করে। এই কৌশলটি এটিআর দ্বারা গতিশীল স্টপ লস গণনা করে এবং স্বতঃস্ফূর্ত স্টপ লাভ করে।
RSI গণনা করুন। RSI বাজারের ওভার-বয় ওভার-সেলিংয়ের সিদ্ধান্ত নিতে পারে। RSI যখন 50 এর চেয়ে বড় হয় তখন এটি একটি উত্সাহী এবং 50 এর চেয়ে কম হলে এটি একটি পতনশীল। এই কৌশলটি RSI ব্যবহার করে দামের প্রবণতার দিকনির্দেশনা নির্ধারণ করে।
মোবাইল স্টপ ট্র্যাকিং: এই কৌশলটি ATR-এর হিসাব করা স্টপ লেভেল এবং RSI-এর দ্বারা নির্ধারিত ট্রেন্ডের দিকনির্দেশের উপর ভিত্তি করে, মোবাইল স্টপ ক্রমাগত মূল্যের ওঠানামার উপর নজর রাখে, ক্ষতির ক্ষতি নিশ্চিত করার সময় ধীরে ধীরে স্টপ লেভেল বাড়ায় এবং মুনাফা সর্বাধিক করে তোলে।
বিশেষ করে, যখন RSI 50 এর চেয়ে বড় হয় তখন অতিরিক্ত পজিশন খোলা হয় এবং 50 এর চেয়ে কম খালি পজিশন খোলা হয়। তারপরে এটিআর গণনা করা স্টপ-অফ-প্রাইস ব্যবহার করে স্টপ-অফ সরানো হয় এবং মূল্যের ওঠানামা অনুসরণ করা হয়।
এটিআর ব্যবহার করে স্বনির্ধারিত স্টপ করা যায়, বাজারের অস্থিরতার গতিশীলতার উপর নির্ভর করে স্টপ আকারের সমন্বয় করা যায়, যাতে স্টপ আকারের অপ্রয়োজনীয়তা এড়ানো যায়।
আরএসআই ট্রেন্ডের দিকনির্দেশনা সঠিকভাবে এবং নির্ভরযোগ্যভাবে দেয়, যাতে ট্রেডিং বাজারের অস্থিরতার মধ্যে আটকে না পড়ে।
মোবাইল স্টপ মূল্যের পরিবর্তনকে ট্র্যাক করে, স্টপ পজিশনকে প্রসারিত করে এবং প্রবণতা অনুসরণ করে মুনাফা অর্জন করে।
এটিআর এবং আরএসআই প্যারামিটার সেটিংগুলি পুনরায় পরীক্ষা করে অপ্টিমাইজ করা দরকার, অন্যথায় এটি কৌশলটির কার্যকারিতা প্রভাবিত করবে।
স্টপ লস সুরক্ষা থাকা সত্ত্বেও, বড় আকারের উড়ে যাওয়া এড়ানো কঠিন যে স্টপ লস ভেঙে যাওয়ার ঝুঁকি রয়েছে। ঝুঁকি নিয়ন্ত্রণের জন্য পজিশনটি যথাযথভাবে ছোট করা যেতে পারে।
ট্রেডিং প্রজাতির প্যারামিটার অপ্টিমাইজেশনের উপর নির্ভরশীলতা বেশি, বিভিন্ন প্রজাতির জন্য প্যারামিটারগুলি সামঞ্জস্য করতে হবে।
মেশিন লার্নিং অ্যালগরিদম যুক্ত করার কথা বিবেচনা করা যেতে পারে।
একটি পজিশন কন্ট্রোল মডিউল যুক্ত করা হয়েছে, যা বাজারের অবস্থার উপর ভিত্তি করে পজিশন স্কেলকে গতিশীলভাবে সামঞ্জস্য করতে পারে, যার ফলে স্টপ লস ভেঙে যাওয়ার সম্ভাবনা হ্রাস পায়।
প্রবণতা নির্ধারণের জন্য সূচকগুলি বাড়ান, যাতে ক্ষতির কারণগুলি এড়ানো যায়।
এই কৌশলটি এটিআর, আরএসআই এবং মোবাইল স্টপ ইত্যাদির মতো মডিউলগুলিকে একত্রিত করে একটি আদর্শ স্বনির্ধারিত প্রবণতা ট্র্যাকিং কৌশল গঠন করে। প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে বিভিন্ন ট্রেডিং জাতের সাথে খুব নমনীয়ভাবে খাপ খাইয়ে নেওয়া একটি প্রস্তাবিত সাধারণ প্রবণতা ট্র্যাকিং কৌশল। আরও সূচক বিচার এবং মেশিন লার্নিং অ্যালগরিদম অপ্টিমাইজেশনের সাথে যুক্ত হওয়ার পরে এই কৌশলটির কার্যকারিতা আরও বাড়ানো যেতে পারে।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-19 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="UTBot Strategy", overlay = true )
// CREDITS to @HPotter for the orginal code.
// CREDITS to @Yo_adriiiiaan for recently publishing the UT Bot study based on the original code -
// CREDITS to @TradersAITradingPlans for making this Strategy.
// Strategy fixed with Time period by Kirk65.
// I am using this UT bot with 2 hours time frame with god resultss. Alert with "Once per bar" and stoploss 1.5%. If Alerts triggered and price goes against Alert. Stoploss will catch it. Wait until next Alert.
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above, witch is a lot less risky, but less profitable.
testStartYear = input(2019, "BACKTEST START YEAR", minval = 1980, maxval = 2222)
testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = true
SOURCE = input(hlc3)
RSILENGTH = input(14, title = "RSI LENGTH")
RSICENTERLINE = input(52, title = "RSI CENTER LINE")
MACDFASTLENGTH = input(7, title = "MACD FAST LENGTH")
MACDSLOWLENGTH = input(12, title = "MACD SLOW LENGTH")
MACDSIGNALSMOOTHING = input(12, title = "MACD SIGNAL SMOOTHING")
a = input(10, title = "Key Vaule. 'This changes the sensitivity'")
SmoothK = input(3)
SmoothD = input(3)
LengthRSI = input(14)
LengthStoch = input(14)
RSISource = input(close)
c = input(10, title="ATR Period")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color = pos == -1 ? red: pos == 1 ? green : blue
ema= ema(close,1)
above = crossover(ema,xATRTrailingStop )
below = crossover(xATRTrailingStop,ema)
buy = close > xATRTrailingStop and above
sell = close < xATRTrailingStop and below
barbuy = close > xATRTrailingStop
barsell = close < xATRTrailingStop
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= green,textcolor = white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= red,textcolor = white, transp = 0, size = size.tiny)
barcolor(barbuy? green:na)
barcolor(barsell? red:na)
//alertcondition(buy, title='Buy', message='Buy')
//alertcondition(sell, title='Sell', message='Sell')
if (buy)
strategy.entry("UTBotBuy",strategy.long, when=testPeriod)
if (sell)
strategy.entry("UTBotSell",strategy.short, when=testPeriod)