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