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

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

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

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

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


Google Finance APIがうまく動かなくなったのでスクリプト停止中。。。

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

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

どうやってデータを自動取得するかは置いておくとして、今回の変更点は自動取得されたデータファイルの読み込みです。

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

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

2016年07月05日
4284,4384,924.5,5064,2852,1212,2819,143.1,3325,2883.5

読み込みコードはたったの一行。

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

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

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

@マークを付与して変数に代入すると、行ごとに配列に代入されます。

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

1行目($line[0])はデータの日付なのでそのまま利用するとして、2行目($line[1])はCSVデータです。文字列をセパレータで分割して配列に代入するのはexplode()関数

$price = explode(",",$line[1]);

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

どうせ株価ファイルを読み込むなら、証券コードや銘柄もファイルにしておいて読み込めばいいよね。こんな感じで。

2914,4502,7201,7203,7751,8031,8316,8411,8766,9437
日本たばこ産業,武田薬品工業,日産自動車,トヨタ自動車,キヤノン,三井物産,三井住友フィナンシャルグループ,みずほフィナンシャルグループ,東京海上ホールディングス,NTTドコモ
3.3%,3.7%,4.1%,2.9%,4.6%,3.1%,3.4%,3.6%,2.8%,3.0%

phpでMySQLデータを読む

株価のデータをMySQLデータベースに登録できるようになったので、最新の株価データをここから引っ張ってくるようにしましょう。

MySQLデータを読むにはPDOオブジェクトを使います。

$dbh = new PDO('mysql:dbname=$NAME;host=$HOST', $USER, $PASSWORD);
$dbh->query($SQL_QUERY) as $row

$NAMEにはデータベース名、$HOSTにはホスト名、$USERにはユーザー名、$PASSWORDにはパスワードを指定してPDOインスタンスを生成します。

$SQL_QUERYに指定した実際のクエリをqueryメソッドを通じてPDOインスタンスに渡すと、MySQLの出力が$rowに渡されます。

このとき$rowは、MySQLデータベースのカラム名が配列のキー、カラムの値が配列の値となる連想配列になります。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

スポンサーリンク




コメントを残す

*