【解説】出来高0の足があると株価チャートが崩れてしまう時の対処法【楽天RSS】

トレードツール

以下の記事で株価チャートの作り方を解説しました。

詳細解説!楽天RSSで株価データを取得し株価チャートを表示する方法 | 社畜の兼業投資録

分足などを利用しない場合上記で基本的には十分だと思いますが、デイトレなどで分足を用いる場合、出来高が0の足も時にはあるかもしれません。

そのような時、上記の株価チャート作成方法だと以下の様にグラフが期待とは異なる表示となってしまいます。

出来高0のデータが配信された場合の例
出来高0のデータが配信された場合の例

今回は、Excelの機能を使ってこのような場合の対処方を解説していきます。
お困りの方は是非参考にしてください。

詳細解説

以下のステップで解説していきます。

不具合解消の手順
  • step1
    目指す状態の確認
  • step2
    実現の為のロジックの具体化
  • step3
    使用するExcel関数の仕様の確認
  • step4
    実装

step1. 目指す状態の確認

まずは空白箇所がどの様になっていて欲しいのか確認します。

空白箇所は、出来高が0売買が行われたなかった箇所となっています。
売買が行われなかったという事は、現在値に変化が無い、という事なので、一つ前の終値が維持されている、という事になると思います。

よって、売買が行われない状況(RSSからデータが配信されていない)が続く限り、一つ前の終値をキープするようなデータを補完するような事が出来れば良いと思います。

step2. 実現の為のロジックの具体化

続いて、どのように実現するか考えていきます。そんなに難しい話ではないです。

これまでの話を踏まえると、楽天RSSの挙動として以下の通りの動作が実現できれば良いと考えます。

パターン楽天RSSの動作すべき対応実装(Excel)上の対応
楽天RSSが値を配信そのままの値を採用RssChart()関数の配信値をそのまま参照
楽天RSSが値を配信しない
(出来高0でその他のセルの値は空)
一つ前の足の終値を採用該当するセルを参照
実現したい動作仕様

step3. 使用するExcel関数の仕様の確認

Step2で整理した動作仕様を実現する為に、二つほどExcelの関数を紹介します。
Excelを使い慣れている方はスキップして頂いて大丈夫です。

IF()関数

Excel上のIF関数の説明
Excel上のIF関数の説明

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

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

ISNUMBER()関数

Excel上のISNUMBER()関数の説明
Excel上のISNUMBER()関数の説明

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

Excel上のISUNUMBER()関数の引数の説明
Excel上のISUNUMBER()関数の引数の説明
=ISNUMBER(テストの対象)
第1引数テストの対象数値があるかを判定したいセルの範囲等

step4. 実装

それでは最後に、step3で紹介した関数を用いて、step2で整理した動作を実現していきます。

改めてstep2の仕様を眺めると、以下の様にstep3で紹介した関数を活用できる箇所があります

  1. 楽天RSS動作に応じてExcel上での対応を変えたい
    → IF関数を活用して対応
  2. 楽天RSSの動作のパターンの違いは値が有るか、無いか
    → ISNUMBER()関数を活用して判別可能

これを実際にExcelに実装するには、以下のような入力をする事になります。

=IF(ISNUMBER(①RSSがデータを配信してきているセル), ①のセル、一つ前の足の終値のセル)

実際の入力例としては以下の様になります。

入力例

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

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

数式の適用範囲
数式の適用範囲

先頭行には”ひとつ前の足”が存在しない為、従来の通り、RSSからの値を参照するのみとしていますが、必要におうじてIF関数を用いて先頭行のみ特別な処理をしても良いかもしれません。

最後にグラフを改めて作成すれば以下の様に株価チャート上にも値が反映され、RSSで不意に出来高0のデータが配信されても、グラフの表示が壊れる事がなくなります。

修正後の表示
修正後の表示

まとめ

お疲れ様でした。

これで取引のすくない銘柄や、より短い時間軸に対応したRSSの活用ができるようになったと思います。

Excelの機能と組み合わせていく事で様々な工夫ができるので、是非色々と調べて試してみてください。

兼業投資家約10年。
社畜でもあるためなかなか投資に時間を割けない。
本業エンジニアなので、ツール等活用/開発して効率よく両立する事を目指しています。
得られたノウハウをこちらで共有していきます。

和太郎をフォローする
トレードツール
和太郎をフォローする

コメント

タイトルとURLをコピーしました