रणनीति स्टॉप लॉस की कीमत निर्धारित करने के लिए एटीआर संकेतक का उपयोग करती है। एटीआर बाजार की अस्थिरता को दर्शाता है और गतिशील रूप से स्टॉप लॉस दूरी निर्धारित करने के लिए इस्तेमाल किया जा सकता है। रणनीति उपयोगकर्ता इनपुट एटीआर अवधि और गुणक के आधार पर एटीआर मूल्य की गणना करती है, और स्टॉप लॉस दूरी के रूप में गुणक से गुणा एटीआर मूल्य का उपयोग करती है। विशेष रूप से एटीआर ट्रैलिंग स्टॉप गणना सूत्र हैः
ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)
If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss
इस प्रकार, एटीआर लाइन स्टॉप लॉस के बाद प्रवृत्ति प्राप्त करने के लिए मूल्य उतार-चढ़ाव के आधार पर गतिशील रूप से समायोजित कर सकती है।
एटीआर ट्रेलिंग स्टॉप के अलावा, रणनीति प्रवेश संकेतों को निर्धारित करने के लिए मानक विचलन चैनल का भी उपयोग करती है। मानक विचलन चैनल गणना सूत्र हैः
Middle Line = ATR Trailing Stop Line
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation
जब कीमत मध्य रेखा को तोड़ती है तो ऊपर की ओर लंबी हो जाती है। जब कीमत मध्य रेखा को तोड़ती है तो नीचे की ओर छोटी हो जाती है।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह बाजार की अस्थिरता के आधार पर गतिशील रूप से स्टॉप लॉस सेट करने के लिए एटीआर संकेतक का उपयोग करती है, जिससे स्टॉप लॉस के बाद ट्रेंड और प्रभावी जोखिम नियंत्रण संभव हो जाता है।
इसके अतिरिक्त, प्रवेश संकेतों के लिए मानक विचलन चैनल का उपयोग करने से छोटी कीमतों के उतार-चढ़ाव के कारण अक्सर पदों को खोलने से बचा जाता है।
मुख्य जोखिम यह है कि यदि स्टॉप लॉस दूरी बहुत बड़ी है तो यह जोखिम को प्रभावी ढंग से नियंत्रित नहीं कर सकती है, लेकिन यदि यह बहुत छोटी है तो इसे बाजार शोर से आसानी से रोक दिया जा सकता है। इस जोखिम को दूर करने के लिए, एटीआर अवधि और गुणक को सर्वोत्तम पैरामीटर संयोजन खोजने के लिए अनुकूलित किया जा सकता है।
एक अन्य जोखिम अनुचित मानक विचलन चैनल मापदंड है जो अत्यधिक उच्च/कम प्रवेश आवृत्ति का कारण बनता है। मापदंडों को इष्टतम खोजने के लिए अनुकूलित किया जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं से बढ़ाया जा सकता हैः
बेहतर स्टॉप लॉस प्रभाव प्राप्त करने के लिए एटीआर अवधि और गुणक को अनुकूलित करें।
बेहतर प्रवेश संकेतों के लिए मानक विचलन चैनल मापदंडों का अनुकूलन करें।
फ़िल्टरिंग के लिए अन्य संकेतक जोड़ें, जैसे चलती औसत, कैंडलस्टिक पैटर्न आदि, प्रवृत्ति की दिशा का आकलन करने और लाभप्रदता में सुधार करने में सहायता करने के लिए।
प्रवेश और निकास तर्क को अनुकूलित करें, उदाहरण के लिए केवल कैंडलस्टिक पैटर्न की पुष्टि के बाद ही पदों को खोलें जब मूल्य चैनल बैंड तक पहुंचता है।
रणनीति एटीआर संकेतक के आधार पर स्टॉप लॉस के बाद प्रवृत्ति प्राप्त करती है और प्रवेश संकेतों के लिए मानक विचलन चैनल का उपयोग करती है। इसके फायदे प्रवृत्ति व्यापार के लिए अच्छी जोखिम नियंत्रण क्षमता में निहित हैं। जोखिमों और सुधारों का भी स्पष्ट रूप से विश्लेषण किया जाता है। रणनीति आगे परीक्षण और अनुकूलन के लायक है और व्यावहारिक व्यापारिक मूल्य है।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 strategy(title="Average True Range Strategy", overlay = true) nATRPeriod = input(11) //Hur många perioder ATR är på nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med xATR = atr(nATRPeriod) nLoss = nATRMultip * 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))) stdev3 = 14*stdev(xATR, nATRPeriod) band1 = xATRTrailingStop+stdev3 //Översta stdev bandet band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet // Datum och tid FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2013, title = "From Year", minval = 2013) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest slut startTimeOk() => true initial_capital = 100000 take = close > xATRTrailingStop if( startTimeOk() ) and (pos == 1) //if (pos == 1) strategy.entry("Long", strategy.long, comment = "KOP") strategy.exit("Long", when = take) if( startTimeOk() ) and (pos == -1) //if (pos == -1) strategy.entry("Short", strategy.short, comment = "SALJ") barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj plot(band1, color=red) plot(band2, color=blue)