「投資苑2に書いてあるシステムをTradingViewで再現し、投資戦略を作り、バックテストを行う」
これを目標に少しずつトレードシステムを作っています。
前回はMACDを実装したことで、個人的には一気に使える画面になりました
今回は、勢力指数を作っていきます。
勢力指数について
勢力指数(EFI, Elder’s Force Index)は買いや売りの勢いを判断する指標です。
投資苑の著者のエルダー博士が開発した指標です。
勢力指数は価格と出来高に注目した指数です。
価格が大きく動き、出来高も大きかった時、勢力指数も大きく動きます。
勢力指数の計算式
勢力指数 = (今日の終値 - 昨日の終値) × 出来高
計算式自体は簡単です。
この状態でプロットしても使えますが、ギザギザになります。
投資苑2では、なめらかにしたほうがより機能的になるため、EMAの使用が推奨されています。
今回は、本で紹介されている
- 13日EMAの勢力指数
- 2日EMAの勢力指数
を実装します。
勢力指数の使い方
コードを書く前に、勢力指数の使い方を紹介します。
投資苑2には短期の勢力指数と長期の勢力指数の使い方がそれぞれ書かれています。
投資苑2は、ほとんど短期の勢力指数の説明ですが、投資苑には同じくらいの分量ずつ解説があります。
買い勢力と売り勢力の強さを計る指標です。
基本的には、0より上にあれば買い勢力が強く、0より下ならば売り勢力が強いと判断します。
短期の勢力指数
短期の勢力指数は、トレンドフォロー型のインジケーターと組み合わせて使います。
トレンドが上向きのとき、勢力指数の2日EMAが0を下回ると買い。
逆は売りです。
逆に思われるかもしれませんが、大きな流れに一時的に反対する勢力とみなしているからです。
長期の勢力指数
長期の勢力指数は、短期の勢力指数と比べてより大きなトレンドの転換をはかる指標です。
例えば、勢力指数の天井の高さが前回の天井と比べて低くなってきている場合は、だんだん売り方の勢力が強くなっているため、
トレンドが転換する可能性が高くなっていることを表します。
もし中心線付近で横ばいの場合、明確なトレンドがないことがわかります。
そのため、そういった場合は、トレンドフォロー系の手法を使わないほうが良いと投資苑には書かれています。
勢力指数をPineで書く
勢力指数もMACD同様に今まで作ってきたインジケーターとは別画面に表示するため、
新しいインジケーターとして作ります。
//@version=3
study('EFI')
efi_long = ema(change(close) * volume, 13)
efi_short = ema(change(close) * volume, 2)
hline(price=0, linestyle=dotted)
plot(efi_long, color=red)
plot(efi_short, color=blue)
計算式のところにも書きましたが、勢力指数は(今日の終値 – 昨日の終値) × 出来高で計算できます。
(今日の終値 – 昨日の終値) × 出来高ででてきた値をEMA(13)とEMA(2)にしています。
そして0のところに水平線を引き、
勢力指数を色分けして描画しています。
新しく登場したもの
インジケーターの基本的な部分はここまでで使ってきましたが、
出来高を使う指標は初めてですね。
出来高
今まで価格は使ってきましたが、出来高は初めてでした。
出来高はvolumeで取得できます。
終値のcloseなどと同じように、あらかじめ定義された変数です。
change()
change()は現在の足と前の足の差を計算する関数です。
引数は、change(データ, 期間)です。
引数の期間は省略可能です。
何も指定しないと1が入った状態(前の足)で計算されます。
勢力指数のコードでは引数の期間を省略しています。
hline()
hline()は一定の値に水平線を引く関数です。
前回のMACDヒストグラムにも0を示す水平線は必要ですが、
グラフのスタイルに含まれていたので、使用しませんでした。
線の種類は3種類から指定できます。
デフォルトについてリファレンスには書かれていませんが、自分で調べたところ、dashedでした。
個人的に見やすかったdottedにします。
勢力指数の実装結果
日経平均には出来高のデータがないので、時価総額1位のトヨタのチャートにしました。
一番下のインジケーターが勢力指数です!
実は今回のコードには少し問題があります。
短期と長期の勢力指数を1つのインジケーターの枠に入れたのですが、
短期の勢力指数のほうが最大値が大きく、長期の勢力指数の変化が読み取りづらくなっています。
解決策としてはいくつかあります。
- 短期の勢力指数を5くらいで割って値を長期の勢力指数と同じくらいにする
- 長期と短期でそれぞれインジケーターを作成し、別のインジケーターとして画面に登録する
- 長期と短期でそれぞれインジケーターを作成し、別々のチャートレイアウトで使用する
無料会員だと1つのチャートレイアウトに追加できるインジケーター数は3つまでです。
また、保存できるチャートレイアウトは1つまでなので、最初の案が良さそうです。
有料会員ならランクによりますが、チャートには最低5つのインジケーターが追加でき、
チャートレイアウトは最低でも5つ保存できます(ランクによります。自分はPRO会員なので5つ)。
ここまでで現在自分が使っている指標はほぼすべて作成してしまいました(!)。
投資苑2の第5章には、残り2つ。
エルダー線とストキャスティクスが解説されているので、そこまで作成していきます。
そのあと、パラメーターを調整しやすいようにコードに手を加えるなどしていく予定です。
というわけで先は長いです(笑)
コメント