
इस रणनीति का मुख्य विचार बाजार के रुझान का न्याय करने के लिए कीमतों के उतार-चढ़ाव का उपयोग करना है, जब उतार-चढ़ाव की दर बढ़ जाती है, तो यह दर्शाता है कि बाजार एक नया रुझान बना रहा है; जब उतार-चढ़ाव की दर गिरती है, तो यह दर्शाता है कि वर्तमान प्रवृत्ति समाप्त हो रही है। रणनीति मूल्य में प्रतिशत परिवर्तन की गणना करके, और फिर उस पर द्वि-समानता फ़िल्टर करके, एक संकेतक प्राप्त करती है जो मूल्य उतार-चढ़ाव को दर्शाता है। जब संकेतक अपने सिग्नल लाइन को पार करता है, तो वह एक खरीद संकेत उत्पन्न करता है और जब वह अपने सिग्नल लाइन को पार करता है, तो वह एक बिक्री संकेत उत्पन्न करता है।
इस रणनीति में सबसे पहले कीमतों में प्रतिशत परिवर्तन की गणना की जाती हैः
i=(src/nz(src[1], src))*100
फिर एक औसत रेखा 35 की लंबाई के माध्यम से फ़िल्टर करें, जो प्राथमिक मूल्य उतार-चढ़ाव संकेत pmol2 प्राप्त करता है। फिर एक औसत रेखा 20 की लंबाई के माध्यम से pmol2 के लिए दूसरा फ़िल्टर करें, जो अंतिम मूल्य उतार-चढ़ाव संकेत pmol प्राप्त करता है। अंत में, एक औसत रेखा 10 की लंबाई के माध्यम से pmol की सिग्नल लाइन pmols प्राप्त करें। जब pmol ऊपर pmols से गुजरता है, तो एक खरीद संकेत उत्पन्न होता है; जब pmol नीचे pmols से गुजरता है, तो एक बिक्री संकेत उत्पन्न होता है।
अनुकूलन दिशाः
यह रणनीति प्रतिशत परिवर्तन और द्वि-समानता फ़िल्टर की गणना करके मूल्य में उतार-चढ़ाव की दर को निकालने के लिए बाजार की प्रवृत्ति में बदलाव का आकलन करने के लिए एक अधिक परिपक्व तकनीकी संकेतक श्रेणी की रणनीति है। यह रणनीति प्रवृत्ति को पकड़ने की क्षमता में मजबूत है, लेकिन सामान्य रूप से रूपांतरण बिंदु की पहचान करने की क्षमता है। पैरामीटर को समायोजित करके और सहायक शर्तों को जोड़कर अनुकूलित किया जा सकता है।
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Strategy for DPMO", overlay=true)
src=input(close, title="Source")
length1=input(35, title="First Smoothing")
length2=input(20, title="Second Smoothing")
siglength=input(10, title="Signal Smoothing")
ebc=input(false, title="Enable Bar Colors")
upSign = '↑' // indicates the indicator shows uptrend
downSign = '↓' // incicates the indicator showing downtrend
exitSign ='x' //indicates the indicator uptrend/downtrend ending
calc_csf(src, length) =>
sm = 2.0/length
csf=(src - nz(csf[1])) * sm + nz(csf[1])
csf
i=(src/nz(src[1], src))*100
pmol2=calc_csf(i-100, length1)
pmol=calc_csf( 10 * pmol2, length2)
pmols=ema(pmol, siglength)
d=pmol-pmols
hc=d>0?d>d[1]?lime:green:d<d[1]?red:orange
buyDPMO = hc==lime and hc[1]!=lime
closeBuyDPMO = hc==green and hc[1]!=green
sellDPMO = hc==red and hc[1]!=red
closeSellDPMO = hc==orange and hc[1]!=orange
plotshape(buyDPMO, color=lime, style=shape.labelup, textcolor=#000000, text="DPMO", location=location.belowbar, transp=0)
plotshape(closeBuyDPMO, color=green, style=shape.labelup, textcolor=#ffffff, text="X", location=location.belowbar, transp=0)
plotshape(sellDPMO, color=red, style=shape.labeldown, textcolor=#000000, text="DPMO", location=location.abovebar, transp=0)
plotshape(closeSellDPMO, color=orange, style=shape.labeldown, textcolor=#ffffff, text="X", location=location.abovebar, transp=0)
barcolor(ebc?hc:na)
strategy.entry("Long", strategy.long, when=buyDPMO)
strategy.close("Long", when=closeBuyDPMO or sellDPMO)
strategy.entry("Short", strategy.short, when=sellDPMO)
strategy.close("Short", when=closeSellDPMO or buyDPMO)