रैखिक प्रतिगमन चैनल ब्रेकआउट ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-18 15:00:53
टैगः

img

अवलोकन

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

रणनीति तर्क

इस रणनीति का मूल तर्क रैखिक प्रतिगमन चैनल के ऊपरी बैंड, निचले बैंड और मध्य रेखा पर आधारित है। विशिष्ट गणना प्रक्रिया इस प्रकार हैः

  1. कीमतों के रैखिक प्रतिगमन मूल्य linreg की गणना करें, और अगली अवधिs रैखिक प्रतिगमन मूल्य linreg_p

  2. लीनरेग के आधार पर रैखिक प्रतिगमन रेखा के ढलान ढलान और प्रतिच्छेदन प्रतिच्छेदन की गणना करें

  3. प्रतिगमन रेखा के सापेक्ष मूल्य विचलन विचलन की गणना करें

  4. ऊपरी और निचले बैंड के ऑफसेट प्राप्त करने के लिए विचलन के गुणक dev सेट करें

  5. जब कीमत निचले बैंड से ऊपर की ओर टूट जाता है, सेट खरीदें संकेत खरीदें

  6. जब कीमत ऊपरी बैंड से नीचे की ओर टूट जाती है, तो सेट बेचें सिग्नल बेचें

  7. जब कीमत चैनल के मध्य रेखा से उलट जाता है, सेट ले लाभ संकेत बाहर निकलने

  8. खरीदने, बेचने और बाहर निकलने के संकेतों के आधार पर ट्रेडिंग लॉजिक सेट करें

लाभ विश्लेषण

इस रणनीति का सबसे बड़ा लाभ यह है कि यह रैखिक प्रतिगमन चैनल द्वारा प्रतिबिंबित मध्यम और दीर्घकालिक प्रवृत्ति का उपयोग करता है। विशेष रूप सेः

  1. ऊपरी और निचले बैंड मूल्य उतार-चढ़ाव की सामान्य सीमा को प्रभावी ढंग से प्रतिबिंबित कर सकते हैं। व्यापार संकेतों को सेट करने के लिए उनका उपयोग करने से झूठे संकेतों को कम किया जा सकता है।

  2. लाभ लेने के संकेत के रूप में मध्य रेखा क्रॉसओवर लाभ को अधिकतम कर सकता है और लाभ बनाने के बाद उलटफेर के कारण होने वाले नुकसान से बच सकता है।

  3. रैखिक प्रतिगमन चैनल में कुछ विलंब होता है, जो प्रभावी रूप से अल्पकालिक बाजार शोर को फ़िल्टर कर सकता है और ट्रेडिंग संकेतों को अधिक विश्वसनीय बना सकता है।

  4. इस रणनीति में कुछ पैरामीटर हैं और इसे लागू करना आसान है, जो एल्गोरिथम ट्रेडिंग के लिए उपयुक्त है।

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

इस रणनीति के कुछ जोखिम हैंः

  1. रैखिक प्रतिगमन चैनल का विलंब कठोर अल्पकालिक परिवर्तनों के बाद रुझानों को याद कर सकता है। अनुकूलित करने के लिए अवधि को छोटा किया जा सकता है।

  2. विचलन गुणक की अनुचित सेटिंग भी झूठे संकेतों का कारण बन सकती है। पैरामीटर को बैकटेस्टिंग के माध्यम से अनुकूलित किया जा सकता है।

  3. केवल ब्रेकआउट सिग्नल पर भरोसा करने से व्हिपसा नुकसान हो सकता है। सिग्नल फ़िल्टरिंग के लिए अन्य संकेतकों का उपयोग किया जा सकता है।

  4. वक्र फिट करने के कुछ जोखिम हैं। अन्य चैनल संकेतकों के साथ संयोजन या विभिन्न डेटा स्रोतों का परीक्षण करने से मदद मिल सकती है।

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

इस रणनीति के लिए मुख्य अनुकूलन दिशाएंः

  1. विलंब और संवेदनशीलता को संतुलित करने के लिए रैखिक प्रतिगमन चैनल की लंबाई को अनुकूलित करें।

  2. जोखिम नियंत्रण को अधिकतम करते हुए संकेत की गुणवत्ता में सुधार के लिए विचलन गुणक को अनुकूलित करें।

  3. जीत दर को बेहतर बनाने के लिए सिग्नल फ़िल्टरिंग के लिए अन्य संकेतक जोड़ें, जैसे ईएमए, केडीजे आदि।

  4. स्टॉप लॉस तंत्र जैसे एटीआर ट्रेलिंग स्टॉप लॉस जोड़ें।

  5. रणनीति पर विभिन्न डेटा स्रोतों के प्रभाव का परीक्षण करें, उदाहरण के लिए समायोजित समापन, सूचकांक डेटा आदि।

  6. बाजार की स्थितियों के आधार पर पैरामीटर या संकेत भार को गतिशील रूप से समायोजित करें।

निष्कर्ष

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


/*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)

अधिक