Kendi göstergeni yaz - II
RSI fena değil, ancak göstergeler açısından biraz eskimiş sayılır. Bu egzersizde, başka bir göstergenin basitleştirilmiş bir sürümünü sıfırdan kodlayacaksın. Gösterge, nicel araştırma direktörü David Varadi tarafından geliştirilen David Varadi Oscillator (DVO) olarak adlandırılır.
Bu osilatörün amacı, RSI gibi, geçici düşüşlerde alım ve geçici yükselişlerde satış fırsatlarını bulmaya çalışmaktır. Zorunlu piyasa verilerine ek olarak, bir osilatör fonksiyonu iki adet geriye dönük (lookback) periyot alır.
Önce, kapanış fiyatı ile en yüksek ve en düşük fiyatların ortalaması arasındaki oranın hesaplanması gerekir. Sonra, bu büyüklüğe küçük bir zaman diliminde (genelde iki gün gibi) gürültüyü azaltmak için bir SMA uygulanır. Son olarak, bu ortalama oranın hareketli yüzde sıralamasını almak için runPercentRank() fonksiyonu kullanılır ve 0-100 aralığına çevirmek için 100 ile çarpılır.
Standart bir sınava girdikten sonra öğrencilerin yüzdelik dilim puanı almasını düşün (örneğin, bir öğrenci matematik bölümünden 800 aldıysa, ulusal çapta yüzde 95'lik dilimde olabilir). runPercentRank() aynı şeyi zaman içinde yapar. Bu gösterge, kullanıcının belirttiği geçmiş bir dönem bağlamında, en son gözlem için sıralamayı verir. Örneğin, geriye dönük periyot 126 iken bir varlığın runPercentRank değeri 0.90 ise, bu, kendisi ve geçmiş 125 gözlemle karşılaştırıldığında yüzde 90'lık dilimde olduğu anlamına gelir.
Görevin, bu göstergeyi uygulamak ve DVO olarak kaydetmek. Gerekli kodun bir kısmı sağlandı ve quantstrat, TTR ve quantmod paketleri çalışma alanına yüklendi.
Bu egzersiz
R ile Finansal Alım Satım
kursunun bir parçasıdırEgzersiz talimatları
- Yukarıda açıklanan gösterge için
DVOadlı bir fonksiyon oluştur ve adlandır. Fonksiyonunun üç argümanıHLC,navg(varsayılan 2) vepercentlookback(varsayılan 126) olacak. HLC'nin kapanışı (Cl()) ile en yüksek (Hi()) ve en düşük (Lo()) fiyatların ortalamasına bölünmesiyle elde edilen oran senin için hesaplandı.- Bu oranın hareketli ortalamasını uygulamak için
SMA()kullan venavgargümanıyla parametrele. Bunuavgratioolarak kaydet. avgratioiçin bir yüzde sıralama sistemi uygulamak üzererunPercentRank()kullan.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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)
}