इस रणनीति में मुख्य रूप से एक अनुकूली रोक तंत्र को लागू किया गया है, जो कीमतों में उतार-चढ़ाव के आधार पर रोक की स्थिति को स्वचालित रूप से समायोजित कर सकता है, जिससे बेहतर रोक प्रभाव प्राप्त होता है। रणनीति एटीआर संकेतक का उपयोग करके उचित रोक की सीमा की गणना करती है, और ईएमए की समानता के साथ मिलकर एक व्यापारिक संकेत उत्पन्न करती है, ईएमए की समानता को तोड़ने पर स्थिति खोलने के लिए अधिक खाली करती है, जबकि अनुकूली रोक एल्गोरिदम का उपयोग करके रोक को ट्रैक करती है।
इस रणनीति के समग्र विचार स्पष्ट और समझने में आसान है, एटीआर संकेतक का उपयोग करने के लिए अनुकूलित स्टॉप लॉस रेंज सेट करें, और ईएमए के साथ मिलकर ट्रेडिंग सिग्नल उत्पन्न करें, जिससे नुकसान को प्रभावी ढंग से नियंत्रित किया जा सके। हालांकि, रणनीति स्वयं ही निष्क्रिय है, अनुकूलन के लिए जगह अधिक है, रणनीति को अधिक सक्रिय बनाने के लिए प्रवृत्ति के निर्णय को शामिल करने पर विचार किया जा सकता है, बाजार की स्थिति के आधार पर पैरामीटर को समायोजित करना आदि। कुल मिलाकर, यह रणनीति एक अच्छा विचार और टेम्पलेट है, लेकिन इसे विभिन्न प्रकार की विशेषताओं के अनुसार अनुकूलित करने की आवश्यकता है, इसे हार्डवेयर का उपयोग करने के लिए स्थानांतरित नहीं किया जा सकता।
/*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)