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


निर्माण तिथि: 2023-10-08 15:06:28 अंत में संशोधित करें: 2023-10-08 15:06:28
कॉपी: 0 क्लिक्स: 450
1
ध्यान केंद्रित करना
1166
समर्थक

अवलोकन

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

रणनीति सिद्धांत

  1. एटीआर सूचकांक की गणना करें, एटीआर मान को nLoss की सीमा के रूप में पैरामीटर a से गुणा करें।
  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)