以下の記事で株価チャートの作り方を解説しました。
詳細解説!楽天RSSで株価データを取得し株価チャートを表示する方法 | 社畜の兼業投資録
分足などを利用しない場合上記で基本的には十分だと思いますが、デイトレなどで分足を用いる場合、出来高が0の足も時にはあるかもしれません。
そのような時、上記の株価チャート作成方法だと以下の様にグラフが期待とは異なる表示となってしまいます。

今回は、Excelの機能を使ってこのような場合の対処方を解説していきます。
お困りの方は是非参考にしてください。
詳細解説
以下のステップで解説していきます。
- step1目指す状態の確認
- step2実現の為のロジックの具体化
- step3使用するExcel関数の仕様の確認
- step4実装
step1. 目指す状態の確認
まずは空白箇所がどの様になっていて欲しいのか確認します。
空白箇所は、出来高が0売買が行われたなかった箇所となっています。
売買が行われなかったという事は、現在値に変化が無い、という事なので、一つ前の終値が維持されている、という事になると思います。
よって、売買が行われない状況(RSSからデータが配信されていない)が続く限り、一つ前の終値をキープするようなデータを補完するような事が出来れば良いと思います。

step2. 実現の為のロジックの具体化
続いて、どのように実現するか考えていきます。そんなに難しい話ではないです。
これまでの話を踏まえると、楽天RSSの挙動として以下の通りの動作が実現できれば良いと考えます。
パターン | 楽天RSSの動作 | すべき対応 | 実装(Excel)上の対応 |
---|---|---|---|
① | 楽天RSSが値を配信 | そのままの値を採用 | RssChart()関数の配信値をそのまま参照 |
② | 楽天RSSが値を配信しない (出来高0でその他のセルの値は空) | 一つ前の足の終値を採用 | 該当するセルを参照 |
step3. 使用するExcel関数の仕様の確認
Step2で整理した動作仕様を実現する為に、二つほどExcelの関数を紹介します。
Excelを使い慣れている方はスキップして頂いて大丈夫です。
IF()関数

IF()関数は、指定した論理式に従って、どのような値を返すか判断を行える関数です。
この関数は非常に便利で、このさきRSSでトレードシステムを構築する際に必須の関数となりますので、是非この機会に覚えてください。

=IF(論理式, [値が真の場合], [値が偽の場合])
第1引数 | 論理式 | TRUE(真)しくは、FALSE(偽)を返すような論理式や関数を入力 例1:不等式)1>0 例2:関数) ISNUMBER(範囲) |
第2引数 | 値が真の場合 | 第1引数がTRUEとなった場合に採用する値 |
第3引数 | 値が偽の場合 | 第2引数がFALSEとなった場合に採用する値 |
ISNUMBER()関数

ISNUMBER()関数は、テストの対象(複数のセルの範囲等)を与え、その中に数値が入ってる場合にTRUEを返す、という関数です。

=ISNUMBER(テストの対象)
第1引数 | テストの対象 | 数値があるかを判定したいセルの範囲等 |
step4. 実装
それでは最後に、step3で紹介した関数を用いて、step2で整理した動作を実現していきます。
改めてstep2の仕様を眺めると、以下の様にstep3で紹介した関数を活用できる箇所があります

- 楽天RSS動作に応じてExcel上での対応を変えたい
→ IF関数を活用して対応 - 楽天RSSの動作のパターンの違いは値が有るか、無いか
→ ISNUMBER()関数を活用して判別可能
これを実際にExcelに実装するには、以下のような入力をする事になります。
=IF(ISNUMBER(①RSSがデータを配信してきているセル), ①のセル、一つ前の足の終値のセル)
実際の入力例としては以下の様になります。

動作のイメージは下図の通りで、条件(参照先の値の有無)に応じて動作をかえるスイッチのようなものです。

あとは、同じ設定を高値、安値、終値にも実施し、先頭行を除く全ての行に反映する事で、下図の様にデータがきちんと補完される動作を確認できると思います。

先頭行には”ひとつ前の足”が存在しない為、従来の通り、RSSからの値を参照するのみとしていますが、必要におうじてIF関数を用いて先頭行のみ特別な処理をしても良いかもしれません。
最後にグラフを改めて作成すれば以下の様に株価チャート上にも値が反映され、RSSで不意に出来高0のデータが配信されても、グラフの表示が壊れる事がなくなります。

まとめ
お疲れ様でした。
これで取引のすくない銘柄や、より短い時間軸に対応したRSSの活用ができるようになったと思います。
Excelの機能と組み合わせていく事で様々な工夫ができるので、是非色々と調べて試してみてください。
コメント