
स्टोकेस्टिक सूचक और ओटीटी सूचक का एक संयोजन रणनीति है। रणनीति स्टोकेस्टिक सूचक का उपयोग खरीद और बेचने के संकेत उत्पन्न करने के लिए करती है, और ओटीटी सूचक के साथ मिलकर संकेतों को फ़िल्टर करती है, जो बड़े रुझानों को पकड़ने और बाजार में उतार-चढ़ाव के कारण होने वाले झूठे संकेतों के प्रभाव को कम करने का प्रयास करती है। इस रणनीति का विस्तृत मूल्यांकन किया जाएगा।
इस रणनीति का मुख्य विचार स्टोचैस्टिक सूचक पर ओटीटी सूचक को ओवरले करना है ताकि संकेतों को फ़िल्टर किया जा सके। स्टोचैस्टिक सूचक कीमतों की तुलना उच्चतम और निम्नतम कीमतों के साथ निर्दिष्ट समय अवधि के लिए करता है ताकि यह निर्धारित किया जा सके कि क्या कीमतें चरम क्षेत्रों में हैं। ओटीटी सूचक ट्रेंड को ट्रैक करने के लिए चलती औसत और गतिशील स्टॉप लॉस का उपयोग करता है।
कोड सेट स्टोचैस्टिक के लिए उच्च 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())