क्वांट लाइट्स स्टोकैस्टिक इंडिकेटर और ओटीटी इंडिकेटर का उपयोग करने वाली एक संयुक्त रणनीति है। रणनीति खरीद और बिक्री संकेत उत्पन्न करने के लिए स्टोकैस्टिक इंडिकेटर का उपयोग करती है, और संकेतों को फ़िल्टर करने के लिए उन्हें ओटीटी इंडिकेटर के साथ जोड़ती है, बड़ी प्रवृत्ति को पकड़ने और झूठे संकेतों का कारण बनने वाले बाजार में उतार-चढ़ाव के प्रभाव को कम करने का प्रयास करती है। यह लेख रणनीति का विस्तार से मूल्यांकन करेगा।
रणनीति का मुख्य विचार संकेत फ़िल्टरिंग के लिए स्टोकास्टिक संकेतक पर ओटीटी संकेतक को ओवरलैप करना है। स्टोकास्टिक संकेतक कीमत की तुलना निर्दिष्ट समय अवधि में उच्चतम और निम्नतम कीमतों के साथ करता है ताकि यह तय किया जा सके कि कीमत चरम क्षेत्र में है या नहीं। ओटीटी संकेतक रुझानों को ट्रैक करने के लिए चलती औसत और गतिशील स्टॉप का उपयोग करता है।
कोड स्टोकास्टिक के उच्च स्तर को 1080 और निम्न स्तर को 1020 पर सेट करता है। जब स्टोकास्टिक मूल्य उनके बीच होता है, तो यह एक सीमा-बंद क्षेत्र होता है। जब स्टोकास्टिक खरीद / बिक्री संकेत उत्पन्न करता है, तो कोड ओटीटी संकेतक के आधार पर संकेत की वैधता निर्धारित करेगा। यदि कीमत ओटीटी औसत रेखा से ऊपर जाती है, तो एक खरीद संकेत जारी किया जाता है। यदि कीमत ओटीटी औसत रेखा से नीचे जाती है, तो एक बिक्री संकेत जारी किया जाता है।
यह संयोजन ओवरबॉट और ओवरसोल्ड स्थितियों को निर्धारित करने और प्रवेश संकेत उत्पन्न करने के लिए स्टोकास्टिक का लाभ उठाता है, जबकि ओटीटी रुझानों को ट्रैक करने और अत्यधिक बाजार उतार-चढ़ाव के कारण होने वाले झूठे संकेतों को फ़िल्टर करने के लिए स्टॉप का उपयोग करने के लिए जिम्मेदार है, जिससे संकेत सटीकता और अस्थिरता में सुधार होता है।
इस रणनीति में निम्नलिखित पहलुओं को अनुकूलित करने के लिए स्टोकैस्टिक और ओटीटी संकेतकों का संयोजन किया गया हैः
संक्षेप में, स्टोकेस्टिक संकेतों को फ़िल्टर करने के लिए ओटीटी का उपयोग करके, रणनीति प्रभावी रूप से संकेत की गुणवत्ता और निवेश रिटर्न में सुधार करती है, जबकि लेनदेन की संख्या और रणनीति अस्थिरता को कम करती है, कम जोखिम, उच्च रिटर्न और रुझानों की बारीकी से निगरानी का प्रभाव प्राप्त करती है।
उपरोक्त जोखिमों के संबंध में, निम्नलिखित उपायों को सुधारने के लिए किया जा सकता हैः
इस रणनीति को निम्नलिखित पहलुओं में और अधिक अनुकूलित किया जा सकता हैः
विभिन्न बाजारों और स्टॉक के प्रकारों के अनुसार पैरामीटर सेटिंग्स को समायोजित करें। वर्तमान डिफ़ॉल्ट मान सार्वभौमिक हैं और इष्टतम पैरामीटर संयोजन खोजने के लिए विभिन्न स्टॉक के लिए अलग से परीक्षण किया जा सकता है।
लाभ लेने और मुनाफा लेने के तंत्र को पेश करें। वर्तमान में गतिशील स्थिर स्टॉप का उपयोग करके गतिशील रूप से नुकसान और लाभ को ट्रैक करने में असमर्थ है। आगे के जोखिम और लाभ नियंत्रण के लिए गतिशील स्टॉप और लाभ लेने की शुरूआत का परीक्षण किया जा सकता है।
सिग्नल निर्णय तर्क का अनुकूलन करें। वर्तमान निर्णय तर्क अपेक्षाकृत सरल है, सीधे खरीद और बिक्री संकेतों को चिह्नित करता है जब कीमतें टूट जाती हैं या नीचे जाती हैं। सिग्नल विश्वसनीयता सुनिश्चित करने के लिए अधिक संकेतक और मूल्य पैटर्न शामिल किए जा सकते हैं।
खुली स्थिति की स्थितियों और फ़िल्टरिंग तंत्र को बढ़ाएं। वर्तमान रणनीति प्रत्येक संकेत को बिना भेदभाव के संसाधित करती है। वॉल्यूम संकेतक, ट्रेडिंग वॉल्यूम संकेतक और अन्य खुली स्थिति की स्थितियों को पेश किया जा सकता है, साथ ही झूठे संकेतों को फ़िल्टर करने के लिए एक निश्चित संकेत समय खिड़की भी है।
ओटीटी के साथ विभिन्न संकेतक संयोजनों का परीक्षण करें। वर्तमान में स्टोकैस्टिक और ओटीटी संयोजन का उपयोग करते हुए। ओटीटी के साथ एमएसीडी और आरएसआई जैसे अन्य संकेतकों के संयोजन की प्रभावशीलता का परीक्षण किया जा सकता है।
पूंजी प्रबंधन और स्थिति आकार मॉड्यूल को एकीकृत करें। वर्तमान में पूंजी प्रबंधन और स्थिति नियंत्रण तंत्र नहीं हैं, जो पूरी तरह से स्टॉप पर निर्भर करते हैं। एकल और समग्र जोखिमों को और अधिक नियंत्रित करने के लिए विभिन्न प्रकार के पूंजी प्रबंधन और स्थिति आकार विधियों का परीक्षण किया जा सकता है।
क्वांट लाइट्स एक मात्रात्मक रणनीति है जो स्टोकैस्टिक संकेतक को ओटीटी संकेतक के साथ व्यवस्थित रूप से जोड़ती है। यह संकेत की सटीकता में सुधार और जोखिम को कम करते हुए प्रमुख रुझानों को प्रभावी ढंग से पकड़ने के लिए दोनों संकेतकों की पूरक ताकतों का उपयोग करती है।
इस रणनीति के लाभों में कम त्रुटि दर, स्पष्ट संकेत और छोटी अस्थिरता शामिल हैं। यह संकेत विश्वसनीयता को बढ़ाता है, स्टॉप स्तरों को अनुकूलित करता है, व्यापार आवृत्ति को कम करता है, और एक अनुशंसित मात्रात्मक रणनीति है।
साथ ही इस रणनीति में अभी भी सुधार की गुंजाइश है। पैरामीटर अनुकूलन, स्टॉप तंत्र में सुधार, संकेतों और फ़िल्टरिंग तंत्रों को बढ़ाने आदि के माध्यम से, रणनीति एक अधिक स्थिर, स्वचालित और बुद्धिमान दिशा की ओर विकसित हो सकती है। यह हमारे अनुवर्ती कार्य का लक्ष्य भी है।
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //created by: @Anil_Ozeksi //developer: ANIL ÖZEKŞİ //author: @kivancozbilgic strategy(title="Stochastic Optimized Trend Tracker", shorttitle="SOTT", format=format.price, precision=2) periodK = input(250, title="%K Length", minval=1) smoothK = input(50, title="%K Smoothing", minval=1) src1 = input(close, title="Source") length=input(3, "OTT Period", minval=1) percent=input(0.618, "OTT Percent", type=input.float, step=0.1, minval=0) showsupport = input(title="Show Support Line?", type=input.bool, defval=false) showsignalsc = input(title="Show Stochastic/OTT Crossing Signals?", type=input.bool, defval=false) Var_Func1(src1,length)=> valpha1=2/(length+1) vud11=src1>src1[1] ? src1-src1[1] : 0 vdd11=src1<src1[1] ? src1[1]-src1 : 0 vUD1=sum(vud11,9) vDD1=sum(vdd11,9) vCMO1=nz((vUD1-vDD1)/(vUD1+vDD1)) VAR1=0.0 VAR1:=nz(valpha1*abs(vCMO1)*src1)+(1-valpha1*abs(vCMO1))*nz(VAR1[1]) VAR1=Var_Func1(src1,length) k = Var_Func1(stoch(close, high, low, periodK), smoothK) src=k+1000 Var_Func(src,length)=> valpha=2/(length+1) vud1=src>src[1] ? src-src[1] : 0 vdd1=src<src[1] ? src[1]-src : 0 vUD=sum(vud1,9) vDD=sum(vdd1,9) vCMO=nz((vUD-vDD)/(vUD+vDD)) VAR=0.0 VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1]) VAR=Var_Func(src,length) h0 = hline(1080, "Upper Band", color=#606060) h1 = hline(1020, "Lower Band", color=#606060) fill(h0, h1, color=#9915FF, transp=80, title="Background") plot(k+1000, title="%K", color=#0094FF) MAvg=Var_Func(src, length) fark=MAvg*percent*0.01 longStop = MAvg - fark longStopPrev = nz(longStop[1], longStop) longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop = MAvg + fark shortStopPrev = nz(shortStop[1], shortStop) shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop dir = 1 dir := nz(dir[1], dir) dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir MT = dir==1 ? longStop: shortStop OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line") OTTC = #B800D9 pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0) alertcondition(cross(src, OTT[2]), title="Price Cross Alert", message="OTT - Price Crossing!") alertcondition(crossover(src, OTT[2]), title="Price Crossover Alarm", message="PRICE OVER OTT - BUY SIGNAL!") alertcondition(crossunder(src, OTT[2]), title="Price Crossunder Alarm", message="PRICE UNDER OTT - SELL SIGNAL!") buySignalc = crossover(src, OTT[2]) plotshape(buySignalc and showsignalsc ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) sellSignallc = crossunder(src, OTT[2]) plotshape(sellSignallc and showsignalsc ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) dummy0 = input(true, title = "=Backtest 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 = 2005, title = "From Year", minval = 2005) 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 = 9999, title = "To Year", minval = 2006) Start = timestamp(FromYear, FromMonth, FromDay, 00, 00) Finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) Timerange() => time >= Start and time <= Finish ? true : false if buySignalc strategy.entry("Long", strategy.long,when=Timerange()) if sellSignallc strategy.entry("Short", strategy.short,when=Timerange())