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