始める無料で始める

自作インジケーターをコードする - I

これまで、add.indicator() 関数を使って、あらかじめ用意されたインジケーターのみを利用してきました。ここからは、自分でインジケーターを作成して適用していきます。

今回作るインジケーター関数は、2つの異なるインジケーターの平均を取り、RSI の「3.5」を作ります。手順は次のとおりです。

  • 価格系列を受け取る。
  • RSI 3 を計算する。
  • RSI 4 を計算する。
  • RSI 3 と RSI 4 の平均を返す。

この RSI は、RSI 3 より長く RSI 4 より短いという意味で、RSI 3.5 と考えられます。平均を取ることで、単純な RSI 4 よりも速く反応しつつ、4日前の影響も織り込み、RSI 3 と RSI 4 のノイズを緩和します。

この演習では、このインジケーター用の関数 calc_RSI_avg() を作成し、ストラテジー strategy.st に追加します。必要なパッケージはすべて読み込まれています。

この演習はコースの一部です

Rで学ぶ金融トレーディング

コースを見る

演習の手順

  • 引数を pricen1n2 の順で3つ取る関数 calc_RSI_avg を作成します。
  • 過去期間 n1 の RSI を計算し、RSI_1 という名前を付けます。
  • 過去期間 n2 の RSI を計算し、RSI_2 という名前を付けます。
  • RSI_1RSI_2 の平均を計算し、RSI_avg と呼びます。
  • colnames() を使って、RSI_avg の列名を RSI_avg に設定し、RSI_avg を返します。
  • このインジケーターを、入力 n1 = 3n2 = 4 でストラテジーに追加します。インジケーターのラベルは RSI_3_4 とします。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Write the calc_RSI_avg function
calc_RSI_avg <- function(price, n1, n2) {
  
  # RSI 1 takes an input of the price and n1
  RSI_1 <- RSI(price = price, n = ___)
  
  # RSI 2 takes an input of the price and n2
  RSI_2 <- RSI(price = price, n = ___)
  
  # RSI_avg is the average of RSI_1 and RSI_2
  RSI_avg <- (___ + ___)/2
  
  # Your output of RSI_avg needs a column name of RSI_avg
  colnames(RSI_avg) <- "___"
  return(___)
}

# Add this function as RSI_3_4 to your strategy with n1 = 3 and n2 = 4
add.indicator(strategy.st, name = ___, arguments = list(price = quote(Cl(mktdata)), n1 = ___, n2 = ___), label = ___)
コードを編集して実行