अपना खुद का इंडिकेटर कोड करें - II
RSI ठीक-ठाक है, लेकिन इंडिकेटर्स की दुनिया में यह कुछ पुराना माना जाता है. इस अभ्यास में, आप एक अन्य इंडिकेटर का सरल संस्करण शुरू से कोड करेंगे. इस इंडिकेटर को David Varadi Oscillator (DVO) कहा जाता है, जिसे क्वांटिटेटिव रिसर्च डायरेक्टर David Varadi ने विकसित किया है.
इस ऑस्सिलेटर का उद्देश्य RSI जैसा ही है: यह अस्थायी गिरावट पर खरीदने और अस्थायी अपट्रेंड में बेचने के अवसर ढूँढने की कोशिश करता है. अनिवार्य मार्केट डेटा के अलावा, एक ऑस्सिलेटर फंक्शन दो lookback पीरियड्स इनपुट के रूप में लेता है.
पहले, फंक्शन क्लोज़िंग प्राइस और हाई व लो प्राइस के औसत के बीच का अनुपात निकालता है. इसके बाद, उस मात्रा पर SMA लगाया जाता है ताकि शोर (noise) कम हो जाए, आमतौर पर बहुत छोटे टाइम फ्रेम पर, जैसे 2 दिन. अंत में, यह runPercentRank() फंक्शन का उपयोग करके इस औसत अनुपात का रनिंग परसेंटाइल रैंक लेता है, और उसे 100 से गुणा करता है ताकि वह 0-100 की मात्रा में बदल जाए.
मान लीजिए, किसी मानकीकृत परीक्षा के बाद छात्रों को परसेंटाइल स्कोर मिलते हैं (जैसे, यदि किसी छात्रा को मैथ सेक्शन में 800 मिले, तो वह राष्ट्रीय स्तर पर 95वें परसेंटाइल में हो सकती है). runPercentRank() समय के साथ यही काम करता है. यह इंडिकेटर, यूज़र द्वारा दिए गए किसी पिछले पीरियड के संदर्भ में, नवीनतम ऑब्जर्वेशन की रैंक देता है. उदाहरण के लिए, यदि किसी चीज़ का runPercentRank मान .90 है और lookback पीरियड 126 है, तो इसका अर्थ है कि वह अपने आप से और पिछले 125 ऑब्जर्वेशन्स की तुलना में 90वें परसेंटाइल में है.
आपका काम है इस इंडिकेटर को इम्प्लीमेंट करना और इसे DVO नाम से सेव करना. कुछ आवश्यक कोड पहले से दिया गया है, और quantstrat, TTR, तथा quantmod पैकेज आपके वर्कस्पेस में लोड हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में फाइनेंशियल ट्रेडिंग
अभ्यास निर्देश
- ऊपर वर्णित इंडिकेटर के लिए
DVOनाम का एक फंक्शन बनाइए. आपके फंक्शन के तीन आर्ग्युमेंट होंगे:HLC,navg(डिफ़ॉल्ट 2), औरpercentlookback(डिफ़ॉल्ट 126). HLCके क्लोज़ (Cl()) को हाई (Hi()) और लो (Lo()) प्राइस के औसत से भाग देकर जो अनुपात बनता है, वह आपके लिए निकाल दिया गया है.- इस अनुपात का मूविंग एवरेज लगाने के लिए
SMA()का उपयोग करें, जिसका पैरामीटरnavgआर्ग्युमेंट से आए. इसेavgratioके रूप में सेव करें. avgratioके लिए परसेंटाइल रैंकिंग सिस्टम इम्प्लीमेंट करने के लिएrunPercentRank()का उपयोग करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Declare the DVO function
DVO <- function(___, navg = ___, percentlookback = ___) {
# Compute the ratio between closing prices to the average of high and low
ratio <- Cl(HLC)/((Hi(HLC) + Lo(HLC))/2)
# Smooth out the ratio outputs using a moving average
avgratio <- SMA(ratio, n = ___)
# Convert ratio into a 0-100 value using runPercentRank()
out <- runPercentRank(___, n = percentlookback, exact.multiplier = 1) * 100
colnames(out) <- "DVO"
return(out)
}