HimaJyun私は投資家と言う訳ではないのですが、プログラムを組む者として「株価」と言う常に変動し続ける値を使って何かしたい!!と言うのは当然の思考回路です。(ですか?)ただ、日本の証券会社では「APIを公開する」と言うのは一般的ではないみたいで、たかだか「日経平均」と言うただの指標1個取得する如きにも大変な苦労を強いられます。言う訳で、今回は手軽に、アカウント登録などを必要とせず、日経平均をプログラムで処理できる形として取得する方法をいくつかご紹介しましょう。まとめシステムトレード今の投資の世界は一部の機関投資家などがシステムトレードをしてやがります。人間」が勃発している訳ですね。(まぁ、機械は人間が作ったものなので究極の所は「人間vs人間」なのですが......機械は命令を忠実に、間違える事なく実行し続ける事が可能です、過去データの検索速度はディスクI/Oの速度に比例(人間よりかは遥かに速いもちろん感情なんて余分な物は持ち合わせていませんし、24時間働かせても労基法には触れません。これではトラックに生身で勝負を挑んでいるのと同じです。するか、こっちもその「機械」とやらを用意してしまえば良いのです。言え、私はそっちの世界には詳しくないので、とりあえずは「株価」を取得する方法を考えてみます。ある手法ですね、右も左も猫も杓子も最初に上がるのはこれでしょう。スクレイピングとは、皆さんが日頃見ているWebサイトをプログラムで取得してきて、その中に書かれてある「株価」を抽出するやり方です。この手法にはプログラミングに加えてHTMLの知識が必要です、場合によっては正規表現も出来た方が良いでしょう。加えて、Webサイトならどこでも良いかと言うとそう言う訳でもなく、中にはJavaScriptを利用して株価を表示する(すなわち、Webサイトのデータそのものに株価が書かれていない)サイトがあります、多分スクレイピング対策でしょう。いうサイトでもRhinoとかV8とか使えば出来ない訳でもないですが、そう言う事をするならさっさと他を当たった方が良いでしょう。これらのWebサイトは普通、「人間」が見るために用意されたものです。本来の使い方とは違う使い方をしているのです、良心を以て、節度のある速度で取得しに行きましょう。過度の高速アクセスは相手方に迷惑を掛けますし、それは巡り巡って自分の不利益になります。Financeでしょう。Financeの利用は「禁止」です。(ヘルプページに書かれています、有料会員みたいなのだと出来るみたいですが......)ルールは守りましょうね、ルールの守れない人間は損切ルールも破るでしょうし、どの道勝てないと思いますよ。暴走して無限ループに陥ったプログラム、異常な速度でアクセスしてくるプログラム、それらが積もりに積もって無視できない存在になったのでしょう。(また、機械でアクセスすると言う事は広告を見ないと言う事でもあります、広告はWebサイトの主に対して支払う対価の様な物です、対価も支払わずにサービスだけ受けようってのは本来あってはならない考え方です。)Javaでスクレイピングをするならjsoupを使うのが使いやすくてオススメですよ。k-db.com」と言う恐らく個人の方がご厚意で運営されているだろうと思われるサイトがあります。ここでは、個別銘柄や各種指標、ストップ高、ストップ安などを非常に細かく、長期間のデータが取得できます。CSV形式でのデータ取得も可能になっており、プログラム処理する事も考えられているみたいです。さっき持ってきたCSVの中から重要なポイントを抜き出したのが以下のCSVです。(実物をDLしてみてもらった方が分かりやすいでしょう。~~~2016-09-05,12:25,,,,まず、1行目にはどの項目が何の値を示しているかが書かれています。プログラムで処理するにはこの項目は不要なので、1行目を読み捨てる必要があります。取引のない時間帯は空のデータが入ります。(上の表で言う6行目の部分)なので、値が空かどうかを判定しないとNullPointerException、いわゆるぬるぽの元になります。それさえ気を付ければ、後は普通にsplite(",")みたいに切り分けて、数値型に変換して利用できます。BigDecimal("取得してきた価格");と言う処理が出来てとても楽です。無料で、アカウント登録などもなしにこれだけの事が出来るサイトはここのみと言っても良いでしょう。先のスクレイピングの項目でも書きましたが、良心を以て、節度を守って利用しましょう。運営している方のブログを見れば分かると思いますが、現在も転送量の肥大化とサーバへの過負荷、マナーの悪いプログラムに頭を悩ませているみたいです。コメント欄を見れば自分勝手な連中による好き勝手な要求が多数見受けられます、無料のサービスに対してああだこうだと要求するのは失礼だと言う事、説明しなくても分かっていますよね。それらの行き着く先はサービスの終了以外の何物でもないのです、それはすなわち自分の不利益になる訳です、気を付けましょう。(本当はこんな事を書かなくても良いのが理想なのですが、どうやら人間の世界でそれは叶わぬ願いみたいで......リアルタイム性は恐らく1日遅れです、その日の取引時間が終了してから掲載されているみたいです。プロフィル」から取得する方法です。「指数情報」や「指数一覧」を見れば分かると思いますが、各種指標の大まかなデータはCSVとして提供されています。データは日足の物しかないので「だいたいの目安」程度にしか使えないかと思われます。CSVにクセがあるのでプログラムで処理する際には要注意です。転載禁止みたいなので、ダミーのデータに置き換えていますが、主に以下の様になっています。~~~"2016/09/05","10000.00","10000.00","10000.00","10000.00""ここに著作権が書かれてある"1行目と5行目は不要なデータです。価格データですが、「"」で区切られているので、splite(",")で区切る前にreplace()みたいな文字列置換関数を使って「"」を全部消してしまう必要があります。それさえ出来てしまえば、後は普通に数値データに変換できます。日足だと3年分のデータが含まれており、データが少しだけ大きいです。不明だったのが我らが総本山、天下のGoogleによるGoogleFinanceが提供しているデータです。URLで色々指定出来るみたいですが、複雑でちょっと良く分からないので説明は他所のサイトに投げましょう。使い勝手良くないです、先に紹介したk-db.comを利用した方が楽。まとめ私の知り得る情報をいくつか紹介してみましたが、どれも一長一短です。願いが叶うのであれば各証券会社がAPIを公開してくれる事が一番なのですが、残念ながら無理っぽいでしょう(と言うか、願いが叶うなら金そのもの貰った方が良いか......)基本的に、リアルタイム性重視ならスクレイピング、データの豊富さを重視ならk-db.comから取得するのが一番かなぁ、と思われます。株価を取得しただけでは売買を含めた完全なる自動化は不可能ですので、あくまで参考程度にどうぞ。プログラミングスポンサーリンクB!LINEへ送る関連記事[VisualStudio]C++でもXMLドキュメントコメントを自動挿入したい!!黒魔術C++、難読奇怪な言葉遣いで驚異的な速度を叩き出す闇の魔術で、一度その魅力......続きを読む→[Bukkitプラグイン制作講座-其之六]特定の出来事(イベント)に反応するこのシリーズ、久しぶりですね。飽きた訳ではありませんよ、他のネタが沢山あったか......続きを読む→VisualStudio用のMinecraftモッディング拡張機能をインストールした、そして消した。MicrosoftがMinecraftの乗っ取りに本腰を入れてきました(?)......続きを読む→[VisualStudio]さまざまな「ブレークポイント」の使い方ブレークポイント、あるのが当たり前なので当たり前に使っていますけど、ブレークポイ......続きを読む→[C++]構造体や変数をバイナリで入出力する普段はこんな事やろうとは思いませんし、やる必要も大してないのですが、出来ると「な......続きを読む→PREV[PHP]readfileは巨大ファイルを扱えるNEXT[Java]HikariCPでMySQL/SQLiteに接続してみるナカのヒト:HimaJyun​散って美しいのは桜だけです、情報はまとまっていた方が美しいのです。