PHPでダウの犬を自動計算してみる(その2)

2017年7月7日

前回、TOPIX版ダウの犬を自動計算するシートを作成しましたが、計算のための株価を自動更新できると更にいい感じです。

TOPIX版ダウの犬自動計算シート(株価更新版)

HTML5のみですが、入力値制限をしてみました。相変わらず計算結果については無保証です。

予算:万円
証券コード銘柄配当利回り株価株数約定金額手数料
7201 日産自 4.83% 1,040 0 0 0
8411 みずほ 3.95% 191 0 0 0
8031 三井物産 3.92% 1,891 0 0 0
9437 NTTドコモ 3.65% 2,864 0 0 0
8316 三井住友 3.63% 4,385 0 0 0
8058 三菱商事 3.58% 3,122 0 0 0
9433 KDDI 3.36% 3,109 0 0 0
8766 東京海上 3.35% 5,204 0 0 0
9432 NTT 3.01% 5,151 0 0 0
7267 ホンダ 2.71% 3,323 0 0 0

※株価は2018年07月19日の終値です。

予算0円に対し総取得費用は0円、 うち手数料は0円。 リターンを8.78%と想定すると、額面で0円となります。

※手数料は2017年7月時点でのマネックス証券の取引毎手数料コース、パソコンの成行注文およびワン株取引によるものです。

PHPで外部ファイルを読み込む

今回の変更点は自動取得されたデータファイルの読み込みです。データの自動取得は証券会社のメールサービスを使ってみました。

PHPでファイルを読み込む際にSplFileObjectクラスを使えばCSVファイルを扱いやすいらしいんですが、うまくいかなかったので今回はfile()関数を使いました。

file()関数を使うと読み込んだテキストファイルを一行ごとに配列として扱うことができます。データファイルのフォーマットを次のようにしてみました。

2914,JT,**58
4502,武田薬,**57
7201,日産自,**98
7203,トヨタ自,**30
7751,キヤノン,**05
8031,三井物産,**86
8316,三井住友,**10
8411,みずほ,**9.9
8766,東京海上,**73
9437,NTTドコモ,**39.5

読み込みコードはたったの一行。これで$lineに各行が配列として取り込まれます。

$line = file(__DIR__ . '/price.list', FILE_IGNORE_NEW_LINES);

price.listというのがデータのファイル名です。__DIR__というのは現在のPHPコードが書き込まれたファイルのあるディレクトリになるので、データファイルとPHPファイルは同一ディレクトリにある前提になります。

FILE_IGNORE_NEW_LINEというのは、読み込みファイルの行末の改行コードを無視するというオプションです。

CSVデータを配列に分解する

各行($line[i])はCSVデータです。文字列をセパレータで分割して配列に代入するのはexplode()関数

foreach ($line as $value) {
  $code[] = explode(',',$value)[0];
  $issue[] = explode(',',$value)[1];
  $price[] = explode(',',$value)[2];
}

最初のパラメータがセパレータ文字、次のパラメータが分割対象文字列になります。これを変数に代入することで、分割された文字列がそれぞれ配列に代入されます。

こうして取り込んだデータを計算した結果をhtmlとして出力しています。