
इस रणनीति में एक लाइनर रिवर्स चैनल के ऊपर और नीचे के ट्रैक का उपयोग किया जाता है, जो कि द्वि-मानक विचलन सेटिंग के साथ एक ब्रेकआउट खरीदने और बेचने के संकेतों के साथ संयुक्त होता है, जिससे कीमत के ब्रेकआउट के बाद स्थिति का निर्माण होता है। साथ ही चैनल की मध्य रेखा के क्रॉसिंग का उपयोग एक फ्लैट स्टॉक सिग्नल के रूप में किया जाता है, जिससे मुनाफा के बाद स्टॉप किया जा सकता है।
इस रणनीति का मूल तर्क एक रेखीय रिवर्सन चैनल के ऊपर और नीचे के ट्रैक और मध्य रेखा पर आधारित है। विशिष्ट गणना प्रक्रिया इस प्रकार हैः
मूल्य के लिए रैखिक रिटर्न linreg, और अगले चक्र के लिए रैखिक रिटर्न linreg_p
लीनियर रिग्रेशन मानों के आधार पर गणना की गई लीनियर रिग्रेशन लाइन की ढलान और इंटरसेप्ट
गणना कीमतों के लिए रिवर्स लाइन से विचलन
विचलन के गुणक dev को सेट करें, ऊपर और नीचे के विचलन की मात्रा प्राप्त करें
जब कीमत नीचे की ओर से ऊपर की ओर टूटती है, तो buy सिग्नल सेट करें
जब कीमत ऊपर से नीचे की ओर टूट जाती है, तो sell संकेत सेट करें
स्टॉप सिग्नल Exit सेट करें जब कीमत चैनल के मध्य रेखा से उलट जाती है
क्रय संकेतों, विक्रय संकेतों और स्टॉप सिग्नल के आधार पर ट्रेडिंग तर्क सेट करें
इस रणनीति का सबसे बड़ा लाभ यह है कि यह कीमतों के मध्यम और दीर्घकालिक रुझानों का उपयोग करता है जो एक रैखिक रिवर्सन चैनल द्वारा प्रतिबिंबित किए जाते हैं। यह निम्नलिखित पहलुओं में विशेष रूप से प्रकट होता हैः
एक रैखिक रिवर्सन चैनल के ऊपर और नीचे के ट्रैक मूल्य में उतार-चढ़ाव की सामान्य सीमा को प्रभावी ढंग से प्रतिबिंबित कर सकते हैं, और चैनल की सीमा का उपयोग करके ट्रेडिंग सिग्नल सेट कर सकते हैं, जिससे गलत संकेतों को कम किया जा सकता है।
मध्य रेखा क्रॉस एक स्टॉप सिग्नल के रूप में कार्य करता है, जो लाभ को अधिकतम करने के लिए लॉक कर सकता है, लाभ के बाद जारी रिवर्स के कारण होने वाले नुकसान से बचने के लिए।
रैखिक रिवर्सिंग ट्रिमर में एक निश्चित विलंबता होती है, जो अल्पकालिक बाजार के शोर को प्रभावी ढंग से खत्म कर सकती है और ट्रेडिंग सिग्नल को अधिक विश्वसनीय बना सकती है।
इस रणनीति में कम पैरामीटर हैं, इसे लागू करना आसान है और यह क्वांटिफाइड ट्रेडिंग के लिए उपयुक्त है।
इस रणनीति के कुछ जोखिम भी हैं, जो मुख्य रूप से इस प्रकार हैंः
रैखिक रिवर्सन चैनल के पीछे की ओर है, जो अल्पकालिक तीव्र परिवर्तन के बाद के रुझान को याद कर सकता है। चैनल चक्र को उचित रूप से छोटा किया जा सकता है, पैरामीटर को अनुकूलित किया जा सकता है।
विचलन गुणांक को गलत तरीके से सेट करने से भी गलत सिग्नल का कारण बनता है। इसे फीडबैक अनुकूलन पैरामीटर के साथ जोड़ा जा सकता है।
केवल ब्रेकआउट सिग्नल के आधार पर, अधिक आघात हानि हो सकती है। अन्य संकेतकों के साथ मिलकर फ़िल्टर करने पर विचार किया जा सकता है।
एक निश्चित वक्र-अनुरूपता जोखिम है। अन्य चैनल संकेतकों के साथ संयोजन पर विचार किया जा सकता है, या विभिन्न डेटा स्रोतों का परीक्षण किया जा सकता है।
इस रणनीति को निम्नलिखित क्षेत्रों में अनुकूलित किया जा सकता हैः
रैखिक वापसी चैनल की लंबाई का अनुकूलन करें, विलंबता और प्रतिक्रिया संवेदनशीलता को संतुलित करें।
ऑप्टिमाइज़्ड विचलन गुणांक, अधिकतम जोखिम नियंत्रण के साथ सिग्नल की गुणवत्ता में सुधार।
संकेत फ़िल्टरिंग के लिए अन्य संकेतकों को जोड़ना, रणनीति जीत की दर को बढ़ाता है। जैसे कि ईएमए, केडीजे आदि।
एटीआर रोकथाम, ट्रैकिंग रोकथाम आदि जैसे अतिरिक्त रोकथाम तंत्र
विभिन्न डेटा स्रोतों की रणनीति पर प्रभाव का परीक्षण करना। उदाहरण के लिए, अधिकार वापसी डेटा, सूचकांक डेटा आदि का उपयोग करना।
बाजार की स्थिति के साथ गतिशील समायोजन पैरामीटर या सिग्नल वजन।
समग्र रूप से, यह रणनीति एक ब्रेकआउट प्रणाली है जो सिग्नल संकेतक के रूप में रैखिक रिवर्सन चैनल का उपयोग करती है। रणनीति की अवधारणा स्पष्ट और समझने में आसान है, इसमें कम पैरामीटर हैं, और इसे लागू करना मुश्किल नहीं है। लेकिन बाजार की गतिशीलता के अनुसार पैरामीटर को अनुकूलित करने और सिग्नल फ़िल्टरिंग के लिए अन्य संकेतकों के साथ संयोजन करने के लिए कैसे अनुकूलित किया जाए, यह रणनीति की सफलता की कुंजी है। निरंतर परीक्षण और अनुकूलन के माध्यम से, यह रणनीति एक स्थिर और लाभदायक मात्रात्मक प्रणाली बन सकती है।
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Robotrading
//@version=4
strategy("robotrading linreg", "linreg", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_value = 0.1)
//Settings
source = input(close)
length = input(100, minval=1)
offset = input(0, minval=0)
dev = input(2.0, "Deviation")
smoothing = input(1, minval=1)
mtf_val = input("", "Resolution", input.resolution)
signals = input("Recent", "Signals Display", options=["Recent", "All"])
goto = input(0, "End At Bar Index")
//Lin.reg.
cc(x) => x=="Red"?color.red:x=="Lime"?color.lime:x=="Orange"?color.orange:x=="Teal"?color.teal:x=="Yellow"?color.yellow:x=="Black"?color.black:color.white
data(x) => sma(security(syminfo.tickerid, mtf_val!="" ? mtf_val : timeframe.period, x), smoothing)
linreg = data(linreg(source, length, offset))
linreg_p = data(linreg(source, length, offset+1))
//Deviation
x = bar_index
slope = linreg - linreg_p
intercept = linreg - x*slope
deviationSum = 0.0
for i = 0 to length-1
deviationSum:= deviationSum + pow(source[i]-(slope*(x-i)+intercept), 2)
deviation = sqrt(deviationSum/(length))
x1 = x-length
x2 = x
y1 = slope*(x-length)+intercept
y2 = linreg
//Cross
dm_current = -deviation*dev + y2
dp_current = deviation*dev + y2
ex_current = (dm_current + dp_current) / 2
buy = crossunder(close, dm_current)
sell = crossover(close, dp_current)
exit = crossover(close, ex_current) or crossunder(close, ex_current)
//Channel
updating = goto <= 0 or x < goto
// if updating
// line b = line.new(x1, y1, x2, y2, xloc.bar_index, extend.right, color.aqua, width = 3)
// line.delete(b[1])
// line dp = line.new(x1, deviation*dev + y1, x2, deviation*dev + y2, xloc.bar_index, extend.right, color.red, width = 3)
// line.delete(dp[1])
// line dm = line.new(x1, -deviation*dev + y1, x2, -deviation*dev + y2, xloc.bar_index, extend.right, color.lime, width = 3)
// line.delete(dm[1])
//Lines
plot(dm_current, color = color.lime)
plot(dp_current, color = color.red)
plot(ex_current)
//Trading
if ex_current > 0
strategy.entry("Long", strategy.long, na, limit = dm_current)
strategy.entry("Short", strategy.short, na, limit = dp_current)
strategy.exit("ExitLong", "Long", limit = ex_current)
strategy.exit("ExitShort", "Short", limit = ex_current)