यह रणनीति दो गतिशील ट्रेलिंग स्टॉप-लॉस लाइनों का निर्माण करती है दो औसत सच्ची रेंज (एटीआर) संकेतक का उपयोग करते हुए अलग-अलग अवधि के साथ, जब कीमत स्टॉप-लॉस लाइनों को तोड़ती है तो ट्रेडिंग सिग्नल उत्पन्न करती है। यह गतिशील स्टॉप-लॉस और लाभ लेने के लिए वर्तमान मोमबत्ती शरीर की लंबाई के आधार पर लाभ लेने के स्तर को भी गतिशील रूप से निर्धारित करती है। रणनीति में प्रवृत्ति का न्याय करने में सहायता के लिए ईएमए संकेतक भी शामिल हैं।
यह रणनीति एटीआर संकेतक की विशेषताओं का उपयोग दोहरी गतिशील स्टॉप-लॉस का निर्माण करने के लिए करती है, जो विभिन्न बाजार अस्थिरताओं के लिए अच्छी तरह से अनुकूल हो सकती है और बाजार में परिवर्तनों का जल्दी से जवाब दे सकती है। गतिशील लाभ लेने की सेटिंग रणनीति को ट्रेंडिंग बाजारों में अधिक लाभ कमाने की अनुमति देती है। कुल मिलाकर, रणनीति ट्रेंडिंग बाजारों में अच्छा प्रदर्शन करती है लेकिन रेंज-बाउंड बाजारों में लगातार लाभ और हानि ऑफसेट का अनुभव कर सकती है।
यह रणनीति, दोहरी गतिशील स्टॉप-लॉस लाइनों और गतिशील टेक-प्रॉफिट के डिजाइन के साथ, विभिन्न बाजार वातावरणों के अनुकूल हो सकती है और ट्रेंडिंग बाजारों में अच्छी तरह से प्रदर्शन कर सकती है। हालांकि, रेंज-बाउंड बाजारों में, इसे लगातार व्यापार और लाभ और हानि ऑफसेट की समस्या का सामना करना पड़ सकता है। इसलिए, यह रणनीति ट्रेंडिंग बाजारों में उपयोग के लिए अधिक उपयुक्त है और इसे उत्पाद विशेषताओं और बाजार की स्थिति के आधार पर अनुकूलित और समायोजित करने की आवश्यकता है। इसके अलावा, अभी भी आगे के अनुकूलन के लिए जगह है, जैसे कि रणनीति की मजबूती और लाभप्रदता में सुधार के लिए अधिक फ़िल्टरिंग स्थितियों, स्थिति प्रबंधन और जोखिम नियंत्रण मॉड्यूल की शुरुआत करना। कुल मिलाकर, रणनीति में एक स्पष्ट विचार, सरल और समझने में आसान तर्क है, और इसमें कुछ व्यावहारिक मूल्य और अनुकूलन के लिए जगह है, जो आगे के शोध और अनुप्रयोग के योग्य है।
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay=true) // Inputs a1 = input(1, title="Key Value 1 ('This changes the sensitivity')") c1 = input(10, title="ATR Period 1") a2 = input(2, title="Key Value 2 ('This changes the sensitivity')") c2 = input(20, title="ATR Period 2") 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 = time >= startDate and time <= finishDate //////////////////////////////////////////////////////////////////////////////// xATR1 = atr(c1) nLoss1 = a1 * xATR1 xATR2 = atr(c2) nLoss2 = a2 * xATR2 src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close xATRTrailingStop1 = 0.0 xATRTrailingStop1 := iff(src > nz(xATRTrailingStop1[1], 0) and src[1] > nz(xATRTrailingStop1[1], 0), max(nz(xATRTrailingStop1[1]), src - nLoss1), iff(src < nz(xATRTrailingStop1[1], 0) and src[1] < nz(xATRTrailingStop1[1], 0), min(nz(xATRTrailingStop1[1]), src + nLoss1), iff(src > nz(xATRTrailingStop1[1], 0), src - nLoss1, src + nLoss1))) xATRTrailingStop2 = 0.0 xATRTrailingStop2 := iff(src > nz(xATRTrailingStop2[1], 0) and src[1] > nz(xATRTrailingStop2[1], 0), max(nz(xATRTrailingStop2[1]), src - nLoss2), iff(src < nz(xATRTrailingStop2[1], 0) and src[1] < nz(xATRTrailingStop2[1], 0), min(nz(xATRTrailingStop2[1]), src + nLoss2), iff(src > nz(xATRTrailingStop2[1], 0), src - nLoss2, src + nLoss2))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop1[1], 0) and src > nz(xATRTrailingStop1[1], 0), 1, iff(src[1] > nz(xATRTrailingStop1[1], 0) and src < nz(xATRTrailingStop1[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema1 = ema(src, 1) above1 = crossover(ema1, xATRTrailingStop1) below1 = crossover(xATRTrailingStop1, ema1) buy1 = src > xATRTrailingStop1 and above1 sell1 = src < xATRTrailingStop1 and below1 barbuy1 = src > xATRTrailingStop1 barsell1 = src < xATRTrailingStop1 ema2 = ema(src, 1) above2 = crossover(ema2, xATRTrailingStop2) below2 = crossover(xATRTrailingStop2, ema2) buy2 = src > xATRTrailingStop2 and above2 sell2 = src < xATRTrailingStop2 and below2 barbuy2 = src > xATRTrailingStop2 barsell2 = src < xATRTrailingStop2 plotshape(buy1, title="Buy 1", text='Buy 1', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny) plotshape(sell1, title="Sell 1", text='Sell 1', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny) plotshape(buy2, title="Buy 2", text='Buy 2', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny) plotshape(sell2, title="Sell 2", text='Sell 2', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny) barcolor(barbuy1 ? color.green : na) barcolor(barsell1 ? color.red : na) barcolor(barbuy2 ? color.green : na) barcolor(barsell2 ? color.red : na) // Calculate SL and TP levels candle_size = abs(open - close) tp_level = close + candle_size *65 // Close long positions if TP is hit strategy.exit("TP Long", "long", limit=tp_level) // Close short positions if TP is hit strategy.exit("TP Short", "short", limit=tp_level) // Enter long position strategy.entry("long", strategy.long, when=(buy1 or buy2) and time_cond) // Enter short position strategy.entry("short", strategy.short, when=(sell1 or sell2) and time_cond) //adding ema with width // Calculate EMA and SMA ema5 = ema(close, 5) ema200 = ema(close, 200) ema21 = ema(close, 21) ema50 = ema(close, 50) sma50 = sma(close, 50) // Plot EMA and SMA with width plot(ema5, color=color.rgb(130, 235, 139), title="EMA 5", linewidth=1) plot(ema200, color=color.rgb(243, 246, 249), title="EMA 200", linewidth=2) plot(ema21, color=color.blue, title="21", linewidth=1) plot(ema50, color=color.rgb(255, 64, 0), title="EMA 50", linewidth=2) //plot(sma50, color=color.purple, title="SMA 20", linewidth=2)