
यह रणनीति बुलिंग चैनल पर आधारित है, जो एक अनुकूलनशील चलती औसत के साथ संयुक्त है, जिससे प्रवृत्तियों के बारे में सटीक निर्णय और ट्रैकिंग की अनुमति मिलती है। पैरामीटर को गतिशील रूप से समायोजित करके, रणनीति को विभिन्न किस्मों और बाजार की परिस्थितियों के अनुकूल बनाने के लिए, मजबूत स्थिरता और अनुकूलनशीलता के साथ।
इस रणनीति में मुख्य रूप से निम्नलिखित घटक शामिल हैंः
अनुकूलनशील चलती औसत की गणना करना. यहाँ एक रैखिक प्रतिगमन सूचक का उपयोग किया जाता है जो एक निश्चित अवधि के भीतर रैखिक प्रतिगमन वक्र को एक चलती औसत के रूप में गणना करता है।
बुलिंग चैनल के ऊपर और नीचे की रेल की गणना करें। यहां एटीआर सूचकांक के अनुकूलन का उपयोग करके चैनल बैंड की गणना की जाती है, और फिर उपयोगकर्ता द्वारा निर्दिष्ट पैरामीटर अनुपात 2 के साथ, बुलिंग चैनल के ऊपर और नीचे की रेल की गणना की जाती है।
खरीदें और बेचने का समय निर्धारित करें। प्रवृत्ति की दिशा और खरीदें और बेचने का समय यह निर्धारित करने के लिए कि क्या कीमत ने बुलिंग चैनल को पार कर लिया है या नहीं। जब कीमत नीचे से नीचे की ओर से नीचे की ओर टूटती है तो इसे खरीदने का संकेत माना जाता है; जब कीमत ऊपर से नीचे की ओर गिरती है तो इसे बेचने का संकेत माना जाता है।
स्टॉप-लॉस स्टॉप-लाभ सेट करें। जोखिम को नियंत्रित करने के लिए एक निश्चित बिंदु स्टॉप-लॉस का उपयोग करें, और एक निश्चित बिंदु के बाद स्टॉप-लॉस ट्रैक करने के लिए स्टॉप-लॉस सेट करें, लाभ की गारंटी देते हुए प्रवृत्ति को अधिकतम करें।
एक रिटर्निंग अवधि के साथ, रिटर्निंग स्टार्ट-एंड-टर्म सेट किया गया है ताकि रणनीति का परीक्षण किया जा सके।
अनुकूली पैरामीटर डिजाइन. ब्रिलिन चैनल के लिए चैनल बैंड और चलती औसत दोनों को अनुकूली तरीके से गणना की जाती है, जिससे रणनीति बाजार में बदलाव के लिए अनुकूल हो सकती है।
प्रवृत्ति के मोड़ को निर्धारित करने के लिए बुलिन चैनल के ऊपर और नीचे के ब्रेक का उपयोग करें, बायोसिग्नल स्पष्ट है।
स्टॉप लॉस स्टॉप सेट करना उचित है। स्टॉप लॉस कंट्रोल जोखिम को स्थिर करना, स्टॉप लॉस ट्रैक करना और ट्रेंड रिटर्न को अधिकतम करना।
प्रमाणीकरण की प्रमाणीकरण की प्रमाणीकरण करें। प्रमाणीकरण के लिए प्रमाणीकरण समय निर्धारित करें ताकि यह सुनिश्चित हो सके कि यह ऐतिहासिक परिदृश्य में भी प्रभावी है।
सरलता से समझने के लिए लागू करना। रणनीति स्पष्ट और समझने योग्य है, और कोड सरल है, जिसे समझना और चलाना आसान है।
ब्रिंग चैनल को पैरामीटर अनुकूलन की आवश्यकता होती है। ब्रिंग चैनल के चैनल बैंड और रिटर्न चक्र को विभिन्न किस्मों और बाजार की स्थिति के अनुसार अनुकूलित करने की आवश्यकता होती है। यदि अनुकूलन गलत है, तो कई बार गलत संकेत या अक्सर गलत ट्रिगर्स दिखाई देते हैं।
प्रतिक्रिया समय पर्याप्त नहीं हो सकता है। यह प्रतिक्रिया केवल हाल के समय के लिए निर्धारित की गई है, जो रणनीति की स्थिरता को पूरी तरह से सत्यापित करने के लिए अधिक ऐतिहासिक घटनाओं को कवर नहीं कर सकती है।
अति-अनुरूपता का जोखिम हो सकता है। वर्तमान मापने वाले पैरामीटर केवल हाल ही में विशिष्ट स्थितियों के लिए अनुकूलित हो सकते हैं, जिससे ऐतिहासिक अति-अनुरूपता का जोखिम हो सकता है।
स्टॉप पॉइंट की संख्या का आकलन करने की आवश्यकता है। वर्तमान स्टॉप पॉइंट की संख्या बहुत कम है, जो छोटे झटके के कारण बहुत संवेदनशील हो सकती है। उचित स्टॉप पॉइंट की संख्या का आकलन करने की आवश्यकता है।
मात्रात्मक सत्यापन संकेतकों का अभाव वर्तमान में केवल ग्राफिक्स के माध्यम से व्यापारिक संकेतों का आकलन किया जाता है, संकेतों की प्रभावशीलता को सत्यापित करने के लिए कोई मात्रात्मक संकेतकों की शुरुआत नहीं की गई
अधिक अनुकूलन सूचकांकों को शामिल करना। विभिन्न प्रकार के अनुकूलन औसत रेखा, अनुकूलन चैनल सूचकांकों के संयोजन का परीक्षण करने के लिए और अधिक लचीला प्रवृत्ति ट्रैकिंग रणनीति बनाने के लिए।
ऑप्टिमाइज़ेशन पैरामीटर सेटिंग्स. ब्रूइंग चैनल और समानांतर पैरामीटर के इष्टतम संयोजन को अधिक व्यवस्थित तरीकों जैसे कि आनुवंशिक एल्गोरिदम द्वारा पाया जा सकता है।
प्रतिक्रिया समय सीमा का विस्तार करना। प्रतिक्रिया समय सीमा का विस्तार करना, पैरामीटर अनुकूलन की स्थिरता की जांच करना। अधिक वास्तविक प्रतिक्रिया के लिए स्लाइड पॉइंट्स, शुल्क और अन्य लेनदेन लागतों को पेश करना।
एक मात्रात्मक फ़िल्टरिंग नियम लागू करें। ट्रेड वॉल्यूम ब्रेकआउट, MACD स्तंभ अंतर जैसे मात्रात्मक संकेतकों के लिए नियम सेट करें, ताकि बुलिंग चैनल ब्रेकआउट सिग्नल के गलत होने से बचा जा सके।
स्टॉप ऑप्टिमाइज़ेशन. स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन के लिए स्टॉप ऑप्टिमाइज़ेशन का मूल्यांकन करें।
रीयल-टाइम सत्यापन। रीयल-टाइम में अनुकूलित रणनीतियों को चलाने के बाद, राजस्व वापसी को रिकॉर्ड करने के लिए, और रणनीतियों की स्थिरता और विश्वसनीयता को और बेहतर बनाने के लिए।
रणनीति की समग्र सोच स्पष्ट है, बुरिंग चैनल का उपयोग प्रवृत्ति की दिशा का निर्धारण करने और तोड़ने के संकेतों को पकड़ने के लिए, और चलती औसत रेखा के साथ समग्र प्रवृत्ति की दिशा निर्धारित करने के लिए सहायक है। कुछ अनुकूलन के साथ, यह एक अधिक स्थिर और विश्वसनीय प्रवृत्ति ट्रैकिंग रणनीति बन सकती है। लेकिन फिर भी समय सीमा की प्रतिनिधित्व पर ध्यान देना होगा, मात्रात्मक फ़िल्टरिंग नियम और स्टॉप-लॉस स्तर की समझ को पेश करना होगा। यदि इन समस्याओं को ठीक से संभाला जा सकता है, तो यह रणनीति वास्तविक युद्ध में स्थिर और पर्याप्त लाभ प्राप्त कर सकती है।
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Linear Regression (Backtest / Trailing Stop)",overlay=true)
close_price = close[0]
len = input(40)
linear_reg = linreg(close_price, len, 0)
calculationToPlotAverageMeanLine=linear_reg
useUpperDeviation = input(true, "Upper Deviation", bool)
useLowerDeviation = input(true, "Lower Deviation", bool)
ratio2=input(defval=2,title=" Ratio 2")
avg=atr(len)
r2=avg*ratio2
top=linear_reg+r2
bott=linear_reg-r2
calculationToPlotUpperLine=top
calculationToPlotLowerLine=bott
plotUpperDeviationLine = plot(not useUpperDeviation ? na : calculationToPlotUpperLine, color=color(blue,0))
plotAverageMeanLine = plot(calculationToPlotAverageMeanLine, color=color(olive,0))
plotLowererDeviationLine = plot(not useLowerDeviation ? na : calculationToPlotLowerLine, color=color(red,0))
fill(plotUpperDeviationLine, plotAverageMeanLine, color=color(blue,85))
fill(plotLowererDeviationLine, plotAverageMeanLine, color=color(red,85))
//
length = input(title="linear Length", defval=40, minval=1)
multiplier = input(title="linear Deviation", type=float, defval=2, minval=1)
overbought = input(title="Overbought", defval=1, minval=1)
oversold = input(title="Oversold", defval=0, minval=1)
custom_timeframe = input(title="Use another Timeframe?", type=bool, defval=false)
highTimeFrame = input(title="Select The Timeframe", defval="60")
res1 = custom_timeframe ? highTimeFrame : timeframe.period
fixedSL = input(title="SL Activation", defval=70)
trailSL = input(title="SL Trigger", defval=10)
fixedTP = input(title="TP Activation", defval=50)
trailTP = input(title="TP Trigger", defval=10)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2015)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2015)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
smabasis = linreg(close_price, length, 0)
stdev = stdev(close, length)
cierre = request.security(syminfo.tickerid, res1, close, false)
alta = request.security(syminfo.tickerid, res1, high, false)
baja = request.security(syminfo.tickerid, res1, low, false)
basis1 = request.security(syminfo.tickerid, res1, smabasis, false)
stdevb = request.security(syminfo.tickerid, res1, stdev, false)
dev = multiplier * stdevb // stdev(cierre, length)
upper = basis1 + dev
lower = basis1 - dev
bbr = (cierre - lower)/(upper - lower)
// plot(bbr)
// // MARCA LAS RESISTENCIAS
pintarojo = 0.0
pintarojo := nz(pintarojo[1])
pintarojo := bbr[1] > overbought and bbr < overbought ? alta[1] : nz(pintarojo[1])
p = plot(pintarojo, color = red, style=circles, linewidth=2)
// // MARCA LOS SOPORTES
pintaverde = 0.0
pintaverde := nz(pintaverde[1])
pintaverde := bbr[1] < oversold and bbr > oversold ? baja[1] : nz(pintaverde[1])
g = plot(pintaverde, color = black, style=circles, linewidth=2)
zz= crossover(pintaverde,pintaverde[1]) or crossunder(pintaverde,pintaverde[1])
kp= crossover(pintarojo,pintarojo[1]) or crossunder(pintarojo,pintarojo[1])
plotshape(zz, title="buy", style=shape.triangleup,location=location.belowbar, color=green, transp=0, size=size.small)
plotshape(kp, title="sell", style=shape.triangledown,location=location.abovebar, color=red, transp=0, size=size.small)
strategy.entry("BUY", strategy.long, qty=10, oca_name="BUY", when=zz and window())
strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.entry("SELL", strategy.short, qty=10, oca_name="SELL", when=kp and window())
strategy.exit("S.Exit", "SELL", qty_percent = 100, loss=fixedSL, trail_offset=trailSL, trail_points=fixedTP)