इस रणनीति का मुख्य विचार बाजार के रुझानों का न्याय करने के लिए मूल्य अस्थिरता का उपयोग करना है। जब अस्थिरता बढ़ जाती है, तो इसका मतलब है कि बाजार एक नई प्रवृत्ति बना रहा है। और जब अस्थिरता कम हो जाती है, तो इसका मतलब है कि वर्तमान प्रवृत्ति समाप्त हो रही है। यह रणनीति कीमत के प्रतिशत परिवर्तन की गणना करती है और फिर इसे दोहरी चलती औसत के साथ फ़िल्टर करती है ताकि मूल्य अस्थिरता को दर्शाने वाला संकेतक प्राप्त हो सके। यह संकेतकों को खरीदने के संकेत उत्पन्न करता है जब संकेतक अपनी संकेत रेखा के ऊपर से गुजरता है, और नीचे से गुजरते समय संकेत बेचता है।
रणनीति पहले मूल्य में प्रतिशत परिवर्तन की गणना करती हैः
i=(src/nz(src[1], src))*100
फिर यह प्रारंभिक अस्थिरता संकेतक pmol2 प्राप्त करने के लिए एक 35-अवधि चलती औसत के साथ i को फ़िल्टर करता है। अंतिम संकेतक pmol प्राप्त करने के लिए Pmol2 को फिर से 20-अवधि चलती औसत के साथ फ़िल्टर किया जाता है। अंत में, pmol के 10-अवधि चलती औसत का उपयोग सिग्नल लाइन 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)