এই কৌশলটির মূল ধারণাটি হ'ল বাজারের প্রবণতা বিচার করার জন্য মূল্যের অস্থিরতা ব্যবহার করা। যখন অস্থিরতা বৃদ্ধি পায়, এর অর্থ হ'ল বাজারটি একটি নতুন প্রবণতা তৈরি করছে। এবং যখন অস্থিরতা হ্রাস পায়, এর অর্থ হ'ল বর্তমান প্রবণতা শেষ হচ্ছে। কৌশলটি দামের শতাংশ পরিবর্তন গণনা করে এবং তারপরে দামের অস্থিরতা প্রতিফলিত করে এমন একটি সূচক পেতে দ্বিগুণ চলমান গড় দিয়ে ফিল্টার করে। সূচকটি যখন তার সংকেত লাইনের উপরে অতিক্রম করে তখন এটি ক্রয় সংকেত উত্পন্ন করে এবং নীচে অতিক্রম করার সময় সংকেত বিক্রি করে।
কৌশলটি প্রথমে মূল্যের শতাংশ পরিবর্তন গণনা করেঃ
i=(src/nz(src[1], src))*100
তারপর এটি প্রাথমিক অস্থিরতা সূচক pmol2 পেতে একটি 35 সময়ের চলমান গড় দিয়ে i ফিল্টার করে। Pmol2 চূড়ান্ত সূচক pmol পেতে 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)