اس حکمت عملی کا بنیادی خیال مارکیٹ کے رجحانات کا اندازہ کرنے کے لئے قیمت کی اتار چڑھاؤ کا استعمال کرنا ہے۔ جب اتار چڑھاؤ بڑھتا ہے تو اس کا مطلب یہ ہے کہ مارکیٹ ایک نیا رجحان تشکیل دے رہی ہے۔ اور جب اتار چڑھاؤ کم ہوتا ہے تو اس کا مطلب یہ ہے کہ موجودہ رجحان ختم ہو رہا ہے۔ حکمت عملی قیمت کی فیصد تبدیلی کا حساب لگاتی ہے اور پھر اسے دوہری حرکت پذیر اوسط کے ساتھ فلٹر کرتی ہے تاکہ قیمت کی اتار چڑھاؤ کو ظاہر کرنے والا اشارے مل سکے۔ جب اشارے اس کی سگنل لائن سے اوپر عبور کرتا ہے تو یہ خرید سگنل تیار کرتا ہے ، اور جب اس سے نیچے عبور کرتا ہے تو سگنل فروخت کرتا ہے۔
حکمت عملی سب سے پہلے قیمت کے فیصد تبدیلی کا حساب لگاتا ہے:
i=(src/nz(src[1], src))*100
اس کے بعد یہ ابتدائی اتار چڑھاؤ اشارے pmol2 حاصل کرنے کے لئے 35 مدت کے چلتے ہوئے اوسط کے ساتھ i کو فلٹر کرتا ہے۔ Pmol2 کو حتمی اشارے pmol حاصل کرنے کے لئے 20 مدت کے چلتے ہوئے اوسط کے ساتھ دوبارہ فلٹر کیا جاتا ہے۔ آخر میں ، pmol کی 10 مدت کی چلتی اوسط کو سگنل لائن pmols کے طور پر استعمال کیا جاتا ہے۔ جب pmol pmols سے تجاوز کرتا ہے تو خریدیں اور جب اس سے نیچے گزرتا ہے تو فروخت کریں۔
یہ حکمت عملی قیمت کی اتار چڑھاؤ کو نکالنے اور رجحان کی تبدیلیوں کا فیصلہ کرنے کے لئے فیصد تبدیلی اور ڈبل ایم اے فلٹرنگ کا استعمال کرتی ہے۔ یہ نسبتا mature پختہ تکنیکی اشارے کی حکمت عملیوں سے تعلق رکھتی ہے۔ اس حکمت عملی میں اچھی رجحان کی گرفتاری کی صلاحیت ہے لیکن درمیانی موڑ نقطہ کی شناخت کی صلاحیت ہے۔ پیرامیٹر ٹیوننگ اور معاون حالات کو شامل کرنے کے ذریعے اصلاح کر سکتی ہے۔
/*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)