इस रणनीति का मुख्य विचार औसत सच्ची सीमा (एटीआर) संकेतक का उपयोग करना है, जो लाभदायक पदों की सुरक्षा को अधिकतम करने के लिए अनुकूलनशील ट्रेलिंग स्टॉप लॉस लाइन सेट करता है, जबकि समय से पहले स्टॉप लॉस से बचता है। एटीआर संकेतक गतिशील रूप से बाजार की अस्थिरता को पकड़ सकता है और बाजार की अस्थिरता के आधार पर स्टॉप लॉस दूरी को समायोजित कर सकता है, प्रभावी स्टॉप लॉस सुनिश्चित करता है जबकि स्टॉप लॉस की संभावना को कम करता है। यह रणनीति स्टॉप लॉस लाइन की ऊपरी और निचली सीमाओं को देखने के लिए बोलिंगर बैंड को भी शामिल करती है, जिसमें रेंजिंग बाजारों में व्हिपसा प्रभाव का मुकाबला करने के लिए विक सुरक्षा जोड़ने का विकल्प है।
यह रणनीति एटीआर संकेतक के एन अवधि के औसत को आधार स्टॉप लॉस दूरी के रूप में गुणा करके एक कारक का उपयोग करती है। एटीआर मूल्य जितना बड़ा होगा, बाजार की अस्थिरता उतनी ही बड़ी होगी, इसलिए स्टॉप लॉस दूरी उतनी ही चौड़ी होगी। एटीआर मूल्य जितना छोटा होगा, स्टॉप लॉस दूरी उतनी ही संकीर्ण होगी। यह बाजार की अस्थिरता के आधार पर स्टॉप लॉस दूरी के गतिशील समायोजन की अनुमति देता है।
विशेष रूप से, रणनीति निम्नलिखित मूल तर्क का उपयोग करती हैः
एटीआर अवधि के एटीआर मूल्य की गणना करें (nATRPeriod) ।
एटीआर मान को एक कारक से गुणा करके आधार स्टॉप लॉस दूरी nLoss प्राप्त करें (nATRMultip).
वर्तमान उच्च, निम्न और पिछली अवधि की स्टॉप लॉस लाइन के आधार पर स्टॉप लॉस लाइन xATRTrailingStop को अपडेट करें।
यदि वर्तमान निम्न पिछली अवधि
यदि वर्तमान उच्च पिछली अवधि
यदि स्टॉप लॉस ट्रिगर नहीं किया जाता है, तो स्टॉप लॉस लाइन को इसके करीब मूल्य की दूरी के आधार पर समायोजित करें।
स्टॉप लॉस लाइन के आगे अनुकूलन के लिए वैकल्पिक wick सुरक्षा दूरी जोड़ें।
स्टॉप लॉस लाइन की ऊपरी और निचली सीमा को दर्शाने के लिए बोलिंगर बैंड्स को ग्राफ करें।
स्टॉप लॉस लाइन के रंग के आधार पर स्थिति दिशा निर्धारित करें।
यह रणनीति एटीआर संकेतक का लचीले ढंग से उपयोग करती है ताकि स्टॉप लॉस लाइन को बाजार की अस्थिरता के आधार पर अनुकूलन करने में सक्षम बनाया जा सके, जिससे उचित स्टॉप लॉस दूरी सुनिश्चित हो सके और अत्यधिक स्टॉप लॉस से बचा जा सके जिससे पदों का अनावश्यक नुकसान हो।
इस रणनीति के फायदे:
एटीआर संकेतक का उपयोग विभिन्न बाजार स्थितियों के लिए गतिशील रूप से अनुकूलित स्टॉप लॉस दूरी को समायोजित करने के लिए करें।
अनुकूलन योग्य गुणक स्टॉप लॉस दूरी के लचीले समायोजन की अनुमति देता है।
बोलिंगर बैंड्स का जोड़ना स्टॉप लॉस लाइन की ऊपरी और निचली सीमाओं का विज़ुअलाइज़ेशन प्रदान करता है।
वैकल्पिक चुटकी सुरक्षा विभिन्न बाजारों में पिस्तौल से बचती है।
लाभदायक पदों के ड्रॉडाउन को अधिकतम करने के लिए ट्रेलिंग स्टॉप लॉस के रूप में इस्तेमाल किया जा सकता है।
रणनीति तर्क कुछ अनुकूलन योग्य मापदंडों के साथ स्पष्ट और समझने में आसान है।
कई उत्पादों और समय सीमाओं पर लागू।
इस रणनीति के कुछ जोखिमों पर ध्यान दें:
एटीआर संकेतक बाजार के झटकों पर धीमी गति से प्रतिक्रिया करता है, जिससे बड़ी स्टॉप लॉस दूरी होती है।
अत्यधिक गुणक सेटिंग भी स्टॉप लॉस दूरी को बढ़ाता है, जिससे हानि का जोखिम बढ़ जाता है।
विच सुरक्षा स्टॉप लॉस लाइन को बहुत ढीला कर सकती है जब व्हिपसा बढ़ जाती है।
प्रवेश नियमों पर विचार नहीं किया जाता है, इनपुट/एग्जिट रणनीति के रूप में इस्तेमाल नहीं किया जा सकता है।
विभिन्न उत्पादों और समय सीमाओं के लिए आवश्यक मापदंडों का व्यापक परीक्षण और अनुकूलन।
स्टॉप लॉस ब्रेकआउट नुकसान को बढ़ा सकता है, जिसके लिए प्रभावी पूंजी प्रबंधन की आवश्यकता होती है।
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
स्टॉप लॉस दूरी को अनुकूलित करने के लिए विभिन्न एटीआर अवधि का परीक्षण करें।
स्टॉप लॉस दूरी और संभावना के बीच संतुलन के लिए गुणक को समायोजित करें।
Whipsaw को रोकने के लिए मशाल संरक्षण अवधि का अनुकूलन करें।
स्टॉप लॉस के ऊपर एंट्री कंडीशंस जोड़कर इसे एंट्री/एक्जिट रणनीति बनाने का प्रयास करें।
रुझान के आधार पर स्टॉप लॉस दूरी को समायोजित करने के लिए रुझान सूचक जोड़ें।
एलियट तरंगों के सिद्धांत के आधार पर स्टॉप लॉस को समायोजित करें।
एकल हानि राशि को सीमित करने के लिए स्थिति आकार जोड़ें।
यह रणनीति एटीआर संकेतक की अनुकूली विशेषता का उपयोग गतिशील स्टॉप लॉस तंत्र को डिजाइन करने के लिए करती है। स्टॉप लॉस सुनिश्चित करते हुए, यह अनावश्यक स्टॉप लॉस ट्रिगर को भी कम करता है। रणनीति तर्क सरल और स्पष्ट है, जो जरूरतों के आधार पर लचीले अनुकूलन की अनुमति देता है। यह लाभ की सुरक्षा को अधिकतम करने के लिए ट्रैलिंग स्टॉप लॉस के रूप में सबसे अच्छा काम करता है। उचित पैरामीटर अनुकूलन और जोखिम नियंत्रण के साथ, यह रणनीति मात्रात्मक व्यापार में एक प्रभावी स्टॉप लॉस उपकरण हो सकती है।
/*backtest start: 2022-10-12 00:00:00 end: 2023-10-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v2.0 13/10/2014 // Average True Range Trailing Stops Strategy, by Sylvain Vervoort // The related article is copyrighted material from Stocks & Commodities Jun 2009 // Modified by River to add Bands, and change color of Trailing Stop and add Wick Protection. Now turned into a Strategy for Backtesting Purposes. // After backtesting, it seems clear that it functions well as a Trailing Stop, but not as an Entry/Exit strategy. //////////////////////////////////////////////////////////// strategy(title="ATR Trailing Stop Bands Strategy[R] ", overlay = true) nATRPeriod = input(5) nATRMultip = input(4) length = input(30, "#Periods of Wick Protection", minval=2) bType = input(0, "Max [1] or Avg Wick Protection [0]", minval=0, maxval=1) avgupperwick = sma(close[1] <= open[1] ? high[1] - open[1] : high[1] - close[1], length) maxupperwick = highest(close[1] <= open[1] ? high[1] - open[1] : high[1] - close[1], length) avglowerwick = sma(close[1] > open[1] ? open[1] - low[1] : close[1] - low[1], length) maxlowerwick = highest(close[1] > open[1] ? open[1] - low[1] : close[1] - low[1], length) upperwick = bType == 0 ? avgupperwick : maxupperwick lowerwick = bType == 0 ? avglowerwick : maxlowerwick xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR upperband = iff(high < nz(upperband[1], 0) and high[1] < nz(upperband[1], 0), min(nz(upperband[1]), high + nLoss + upperwick), high + nLoss + upperwick) lowerband = iff(low > nz(lowerband[1], 0) and low[1] > nz(lowerband[1], 0), max(nz(lowerband[1]), low - nLoss - lowerwick), low - nLoss - lowerwick) xATRTrailingStop = iff(low > nz(xATRTrailingStop[1], 0) and low[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), low - nLoss - lowerwick), iff(high < nz(xATRTrailingStop[1], 0) and high[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), high + nLoss + upperwick), // iff(low <= nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), high + nLoss + upperwick, iff(high >= nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), low - nLoss - lowerwick,0)))) iff(low <= nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), upperband[1], iff(high >= nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), lowerband[1],0)))) pos = iff(close[1] > nz(xATRTrailingStop[1], 0) and low <= nz(xATRTrailingStop[1], 0), 1, iff(close[1] < nz(xATRTrailingStop[1], 0) and high >= nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) color = pos == 1 ? red: pos == -1 ? green : blue plot(upperband, color=red, title="ATR Upper") plot(xATRTrailingStop, color=color, title="ATR Trailing Stop", linewidth=2) plot(lowerband, color=green, title="ATR Lower") longCondition = (color == green and color[1] == red) if (longCondition) strategy.entry("Long", strategy.long) longExitCondition = (color == red and color[1] == green) if (longExitCondition) strategy.close("Long") shortCondition = (color == red and color[1] == green) if (shortCondition) strategy.entry("Short", strategy.short) shortexitCondition = (color == green and color[1] == red) if (shortexitCondition) strategy.close("Short")