Tulis indikator Anda sendiri - II
Meskipun RSI cukup baik, indikator ini agak ketinggalan zaman. Pada latihan ini, Anda akan menulis versi sederhana dari indikator lain dari nol. Indikator ini bernama David Varadi Oscillator (DVO), dikembangkan oleh David Varadi, seorang direktur riset kuantitatif.
Tujuan osilator ini mirip dengan RSI, yaitu berupaya menemukan peluang membeli saat terjadi penurunan sementara dan menjual saat terjadi tren naik sementara. Selain data pasar yang wajib, sebuah fungsi osilator menerima dua periode lookback.
Pertama, fungsi menghitung rasio antara harga penutupan dan rata-rata harga tertinggi serta terendah. Selanjutnya, fungsi menerapkan SMA pada besaran tersebut untuk menghaluskan noise, biasanya pada rentang waktu yang sangat pendek, seperti dua hari. Terakhir, fungsi menggunakan runPercentRank() untuk mengambil peringkat persentase berjalan dari rasio rata-rata ini, lalu mengalikannya dengan 100 agar menjadi kuantitas 0–100.
Bayangkan cara siswa mendapatkan skor persentil setelah mengikuti tes standar (misalnya, jika seorang siswa mendapat 800 pada bagian matematika, ia mungkin berada di persentil ke-95 secara nasional). runPercentRank() melakukan hal yang sama, tetapi sepanjang waktu. Indikator ini memberikan peringkat untuk observasi terbaru dalam konteks beberapa periode lampau yang ditentukan pengguna. Sebagai contoh, jika suatu aset memiliki nilai runPercentRank sebesar 0,90 ketika menggunakan periode lookback 126, artinya aset tersebut berada di persentil ke-90 jika dibandingkan dengan dirinya sendiri dan 125 observasi sebelumnya.
Tugas Anda adalah mengimplementasikan indikator ini dan menyimpannya sebagai DVO. Sebagian kode yang diperlukan telah disediakan, dan paket quantstrat, TTR, serta quantmod sudah dimuat ke dalam workspace Anda.
Latihan ini adalah bagian dari kursus
Perdagangan Finansial dengan R
Petunjuk latihan
- Buat dan beri nama fungsi
DVOuntuk indikator yang dijelaskan di atas. Tiga argumen fungsi Anda adalahHLC,navg(bawaan 2), danpercentlookback(bawaan 126). - Rasio antara harga penutupan (
Cl()) dariHLCdibagi dengan rata-rata harga tertinggi (Hi()) dan terendah (Lo()) telah dihitung untuk Anda. - Gunakan
SMA()untuk menerapkan rata-rata bergerak dari rasio ini, dengan parameternavg. Simpan sebagaiavgratio. - Gunakan
runPercentRank()untuk menerapkan sistem peringkat persentase untukavgratio.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)
}