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