अनुकूली ट्रैलिंग स्टॉप रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-08 15:06:28
टैगः

अवलोकन

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

रणनीति तर्क

  1. एटीआर संकेतक की गणना करें और एटीआर मान को पैरामीटर a से गुणा करके स्टॉप लॉस रेंज nLoss के रूप में सेट करें।
  2. ईएमए रेखा की गणना करें।
  3. ईएमए रेखा के ऊपर कीमत टूटने पर लांग जाएं, और ईएमए रेखा के नीचे कीमत टूटने पर शॉर्ट करें।
  4. निम्नलिखित नियमों के साथ स्वचालित रूप से स्टॉप लॉस स्थिति xATRTrailingStop को समायोजित करने के लिए अनुकूलन स्टॉप लॉस एल्गोरिथ्म का उपयोग करें:
    • जब मूल्य स्टॉप लॉस स्थिति से ऊपर टूट जाता है, तो स्टॉप लॉस को मूल्य से घटाकर स्टॉप लॉस रेंज nLoss में समायोजित करें।
    • जब मूल्य स्टॉप लॉस स्थिति से नीचे टूट जाता है, तो स्टॉप लॉस को मूल्य प्लस स्टॉप लॉस रेंज nLoss में समायोजित करें।
    • अन्यथा, स्टॉप लॉस अपरिवर्तित रखें.
  5. स्टॉप लॉस के लिए बंद स्थिति जब कीमत स्टॉप लॉस स्तर पर पहुंचती है।

लाभ विश्लेषण

  1. अनुकूल स्टॉप लॉस तंत्र लागू करता है जो बाजार की अस्थिरता के आधार पर स्टॉप लॉस रेंज को स्वचालित रूप से समायोजित करता है, जिससे जोखिमों को प्रभावी ढंग से नियंत्रित किया जाता है।
  2. एटीआर संकेतक के साथ उचित स्टॉप लॉस रेंज की गणना करता है, अत्यधिक बड़े या बहुत छोटे स्टॉप लॉस से बचता है।
  3. ईएमए का उपयोग ट्रेडिंग सिग्नल उत्पन्न करने, अनावश्यक ट्रेडों को कम करने और बाजार शोर को फ़िल्टर करने के लिए करता है।
  4. सरल और स्पष्ट रणनीति तर्क, समझने और अनुकूलित करने में आसान।
  5. इनपुट मापदंडों को विभिन्न बाजार वातावरणों के अनुकूल करने की अनुमति देता है।

जोखिम और सुधार

  1. ईएमए संकेतों में देरी हो सकती है, जिससे देर से प्रवेश हो सकता है।
  2. अनिश्चित होल्डिंग अवधि, एकल स्टॉप लॉस आकार को नियंत्रित करने में असमर्थ। हानि को सीमित करने के लिए लाभ लक्ष्य या अधिकतम होल्डिंग अवधि निर्धारित कर सकते हैं।
  3. स्टॉप लॉस को मजबूत ट्रेंडिंग बाजारों में बहुत बार ट्रिगर किया जा सकता है। ट्रेंड स्थितियों के आधार पर पैरामीटर को समायोजित करने या फ़िल्टर जोड़ने पर विचार करें।
  4. एटीआर अवधि, स्टॉप लॉस गुणक जैसे मापदंडों को प्रतीक विशेषताओं के आधार पर समायोजित किया जाना चाहिए, डिफ़ॉल्ट मानों का अंधाधुंध उपयोग नहीं किया जाना चाहिए।

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

  1. ट्रेंड इंडिकेटर जोड़ने पर विचार करें, ट्रेंड दिशा में ट्रेड करें ताकि काउंटर ट्रेंड ट्रेड से बचा जा सके।
  2. अस्थिरता के आधार पर स्टॉप लॉस गुणक को समायोजित करें, उच्च अस्थिरता की स्थिति में व्यापक स्टॉप की अनुमति दें।
  3. अधिकतम होल्डिंग अवधि सेट करें, एक निश्चित समय से अधिक होने के बाद सक्रिय स्टॉप लॉस।
  4. स्टॉप लॉस रणनीति जोड़ें, मूल्य के चलते धीरे-धीरे स्टॉप बढ़ाएं।
  5. प्रतीक विशेषताओं के आधार पर एटीआर अवधि पैरामीटर को अनुकूलित करें।

निष्कर्ष

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


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

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 

// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
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 = true
 
////////////////////////////////////////////////////////////////////////////////


xATR  = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

strategy.entry("long",   true, when = buy  and time_cond)
strategy.entry("short", false, when = sell and time_cond)

अधिक