एटीआर ट्रैलिंग स्टॉप रणनीति

लेखक:चाओझांग, दिनांकः 2023-10-09 16:59:57
टैगः

अवलोकन

यह रणनीति स्टॉप लॉस को अधिकतम लाभ प्राप्त करते हुए स्टॉप लॉस की रक्षा करने के लिए स्टॉक मूल्य परिवर्तनों को ट्रेल करने के लिए औसत सच्ची रेंज (एटीआर) संकेतक के आधार पर एक गतिशील स्टॉप लॉस लाइन सेट करती है।

रणनीति तर्क

इस रणनीति का मुख्य रूप से निम्नलिखित चरणों के माध्यम से कार्यान्वयन किया जाता हैः

  1. एटीआर संकेतक की गणना करें, एटीआर अवधि nATRPeriod पैरामीटर द्वारा सेट की जाती है, डिफ़ॉल्ट रूप से 5;

  2. एटीआर मूल्य के आधार पर स्टॉप लॉस लाइन की गणना की जाती है, स्टॉप लॉस की परिमाण nATRMultip पैरामीटर द्वारा सेट की जाती है, डिफ़ॉल्ट रूप से एटीआर के 3.5 गुना;

  3. जब कीमत बढ़ जाती है, यदि पिछली स्टॉप लॉस लाइन से अधिक है, तो स्टॉप लॉस लाइन को मूल्य से घटाकर स्टॉप लॉस परिमाण तक समायोजित करें; जब कीमत गिरती है, यदि पिछली स्टॉप लॉस लाइन से कम है, तो स्टॉप लॉस लाइन को नीचे की ओर समायोजित करके मूल्य प्लस स्टॉप लॉस परिमाण तक समायोजित करें;

  4. यदि कीमत स्टॉप लॉस लाइन को तोड़ती है, तो इसे तोड़ने, खरीदने या बेचने के संकेत भेजने का निर्णय लें;

  5. स्टॉप लॉस लाइन के ब्रेकआउट संकेतों के आधार पर लंबी या छोटी पोजीशन दर्ज करें और जब कीमत स्टॉप लॉस लाइन को फिर से छूती है तो पोजीशन बंद करें।

जब कीमत बढ़ती है, तो स्टॉप लॉस लाइन लाभ में लॉक करने के लिए लगातार ऊपर की ओर बढ़ेगी। जब कीमत गिरती है, तो स्टॉप लॉस लाइन नुकसान को रोकने के लिए लगातार नीचे की ओर बढ़ेगी। एटीआर संकेतक मूल्य उतार-चढ़ाव को अधिक सटीक रूप से प्रतिबिंबित कर सकता है। एटीआर के आधार पर स्टॉप लॉस लाइन को गतिशील रूप से समायोजित करने से अत्यधिक आक्रामक या अत्यधिक रूढ़िवादी स्टॉप लॉस से बचा जा सकता है।

लाभ विश्लेषण

  • हानि के विस्तार से बचने के लिए समय पर स्टॉप लॉस के लिए स्टॉप लॉस लाइन को गतिशील रूप से समायोजित करें
  • समय से पहले स्टॉप लॉस से बचने के लिए स्टॉप लॉस लाइन समायोजन अपेक्षाकृत चिकनी है
  • नवीनतम अस्थिरता के आधार पर अधिक उचित स्टॉप लॉस परिमाण की गणना करने के लिए एटीआर संकेतक का उपयोग करें
  • लाभ में प्रभावी ढंग से लॉक करने के लिए ट्रेल स्टॉप हानि लाइन

जोखिम विश्लेषण

  • एटीआर पैरामीटर सेटिंग सावधानी बरतने की जरूरत है, बहुत कम एटीआर अवधि स्टॉप लॉस लाइन के अत्यधिक उतार-चढ़ाव का कारण बन सकती है, बहुत लंबे समय में मूल्य परिवर्तन को प्रतिबिंबित करने में विफल हो सकती है
  • स्टॉप लॉस का आकार विशिष्ट स्टॉक अस्थिरता के अनुसार निर्धारित किया जाना चाहिए, अत्यधिक बड़े या छोटे मूल्य रणनीति के प्रदर्शन को प्रभावित करेंगे
  • ट्रेलिंग स्टॉप लॉस लाभ मार्जिन को एक और मूल्य वृद्धि से पहले लाभ को रोककर कम कर सकता है
  • अक्सर स्थिति समायोजन से व्यापार लागत बढ़ सकती है

पैरामीटर को एटीआर अवधि और स्टॉप लॉस परिमाण को समायोजित करके स्टॉप लॉस और ट्रैलिंग के बीच इष्टतम संतुलन खोजने के लिए अनुकूलित किया जा सकता है। अनावश्यक स्टॉप लॉस को कम करने के लिए प्रवेश समय को फ़िल्टर करने के लिए अन्य तकनीकी संकेतकों का भी उपयोग किया जा सकता है।

अनुकूलन दिशाएँ

  • स्टॉप लॉस लाइन परिवर्तनों को मूल्य उतार-चढ़ाव का अधिक बारीकी से पालन करने के लिए एटीआर अवधि पैरामीटर का अनुकूलन करें
  • अधिक उचित स्टॉप हानि के लिए स्टॉप हानि परिमाण पैरामीटर का अनुकूलन करें
  • प्रवेश समय फ़िल्टर करने के लिए अन्य संकेतक जोड़ें
  • केवल जब स्पष्ट अपट्रेंड उभरता है तब ही लंबी जाएं
  • स्टॉप लॉस के साथ शेयरों में भाग लेने के लिए पुनः प्रवेश तंत्र जोड़ने पर विचार करें लेकिन वृद्धि की निरंतर उम्मीद

सारांश

यह रणनीति गतिशील एटीआर ट्रेलिंग स्टॉप लॉस लाइन के माध्यम से होल्डिंग के दौरान स्टॉप लॉस और लाभ लेने का एहसास करती है। फिक्स्ड स्टॉप लॉस बिंदुओं की तुलना में, यह अधिक आक्रामक या अत्यधिक रूढ़िवादी स्टॉप लॉस से बचते हुए मूल्य उतार-चढ़ाव के लिए बेहतर अनुकूल है। एटीआर संकेतक स्टॉप लॉस लाइन समायोजन को अधिक लक्षित बनाता है। लेकिन पैरामीटर और पुनः प्रवेश रणनीतियों को अनावश्यक स्टॉप को कम करने और लाभ मार्जिन का विस्तार करने के लिए आगे अनुकूलन की आवश्यकता होती है। कुल मिलाकर यह एक अच्छा गतिशील ट्रेलिंग स्टॉप लॉस विचार है जो आगे के शोध और अनुप्रयोग के लायक है।


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@okadoke
////////////////////////////////////////////////////////////
// Based on Average True Range Trailing Stops Strategy by HPotter
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
////////////////////////////////////////////////////////////
strategy(title="ATR Trailing Stops Strategy", shorttitle="ATRTSS", overlay = true, 
  initial_capital=100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type="percent", commission_value=0.0)
  
nATRPeriod      = input(5, "ATR Period")
nATRMultip      = input(3.5, "ATR Multiplier")
useShorts       = input(false, "Test w/Shorts?")
daysBackMax     = input(defval = 360, title = "Max Days Back to Test", minval = 0)
daysBackMin     = input(defval = 0, title = "Min Days Back to Test", minval = 0)
msBackMax       = 1000 * 60 * 60 * 24 * daysBackMax
msBackMin       = 1000 * 60 * 60 * 24 * daysBackMin

xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = na
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 = na 
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)))
        
color = pos == -1 ? red: pos == 1 ? green : blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

isWithinTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and (msBackMin == 0 or (time < (timenow - msBackMin)))

buy     = crossover(close, xATRTrailingStop)
sell    = crossunder(close, xATRTrailingStop)

strategy.entry("LONG", long=true, when=buy and isWithinTimeBounds)
strategy.close("LONG", when=sell and isWithinTimeBounds)
strategy.entry("SHORT", long=false, when=useShorts and sell and isWithinTimeBounds)
strategy.close("SHORT", when=useShorts and buy and isWithinTimeBounds)



अधिक