開始使用免費開始

自己撰寫指標 - II

RSI 雖然不錯,但就指標而言已經有些過時。這個練習中,你會從零開始撰寫另一個指標的簡化版本。這個指標稱為 David Varadi Oscillator (DVO),由量化研究總監 David Varadi 所提出。

這個震盪指標的目的與 RSI 類似,都是嘗試在短暫回檔時尋找買點、在短暫上漲時尋找賣點。除了必要的市場資料之外,震盪指標函式還會接收兩個回看期(lookback)。

首先,函式會計算收盤價與高低價平均值之間的比率。接著,對這個數值套用 SMA 以平滑雜訊,通常使用非常短的時間範圍,例如 2 天。最後,使用 runPercentRank() 來對這個平均比率計算移動的百分位排名,並乘以 100,把結果轉換成 0–100 的區間。

可以把它想像成標準化測驗的百分位分數(例如,若某位學生數學拿到 800 分,她的全國百分位可能是第 95 百分位)。runPercentRank() 做的是相同概念,但應用在時間序列上。這個指標在使用者指定的過去期間脈絡下,提供最新觀測值的排名。例如,若在回看期為 126 的設定下,某資產的 runPercentRank 值為 0.90,代表它相對於自己與過去 125 筆觀測落在第 90 百分位。

你的工作是實作這個指標,並將其儲存為 DVO。部分必要程式碼已提供,且 quantstratTTRquantmod 套件已載入到你的工作環境。

本練習屬於課程

R 的金融交易

檢視課程

練習說明

  • 建立並命名一個函式 DVO,如上所述的指標。函式的三個引數為 HLCnavg(預設為 2),以及 percentlookback(預設為 126)。
  • 已替你計算好比率:HLC 的收盤價(Cl())除以高價(Hi())與低價(Lo())的平均值。
  • 使用 SMA() 對此比率計算移動平均,並以 navg 作為參數。將結果存為 avgratio
  • 使用 runPercentRank()avgratio 計算百分位排名系統。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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)
}
編輯並執行程式碼