اس حکمت عملی کا بنیادی خیال یہ ہے کہ مارکیٹ میں رجحانات کا فیصلہ کرنے کے لئے قیمتوں کی اتار چڑھاؤ کی شرح کا استعمال کیا جائے۔ جب اتار چڑھاؤ کی شرح بڑھتی ہے تو ، اس کا مطلب یہ ہے کہ مارکیٹ میں ایک نیا رجحان پیدا ہو رہا ہے۔ جب اتار چڑھاؤ کی شرح کم ہوتی ہے تو ، موجودہ رجحان ختم ہو رہا ہے۔ حکمت عملی قیمت میں فی صد تبدیلی کا حساب لگاتی ہے ، اور پھر اس پر دو طرفہ لکیری فلٹرنگ کرتی ہے ، جس سے اشارے ملتے ہیں جو قیمت میں اتار چڑھاؤ کی شرح کو ظاہر کرتے ہیں۔ جب اشارے اس کی سگنل لائن کو عبور کرتے ہیں تو خریدنے کا اشارہ پیدا ہوتا ہے ، اور جب اس کی سگنل لائن کو عبور کرتے ہیں تو فروخت کا اشارہ پیدا ہوتا ہے۔
اس حکمت عملی میں سب سے پہلے قیمتوں میں فی صد تبدیلی کا حساب لگایا جاتا ہے:
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)