2016年3月20日日曜日

エクセルマクロを使わずに ヤフー! ファイナンス から過去の株価データをCSVに落とす方法

ヤフー!ファイナンス VIP倶楽部に入ると時系列CSVデータは取得できますが、

VIP倶楽部は月1980円。

決して高くない。特に、株で成功した人にとっては全くもって必要経費である。

Yahoo!ファイナンスVIP倶楽部

しかし、2000円もあれば艦これのドックを増やさなければならない。2カ月もあればさらに母港の増設もできる。お金が無いのである。なければ無いでどうにかなっちゃうと言えばどうにかなるのだが、自分でどうにかするのがどれほど面倒だかをご覧ください。

プロになりたければツールを選ばないとタイヘンという悪い見本をお見せしたい。
ちなみにエクセルの転がってるマクロを使えば一発という事はすでに知っているのである。

俺はバッドアイデアの泉と呼ばれたオトコ。

車輪を2度開発はしないが、パンツ位なら自作してもいい覚悟なんやで。

まあ、黙ってみてなさい。やればできる子なのである。

ただ、EXCELのマクロがどういう動作をしているのかというと実際にたような動作をしています。

1.CYGWINをインストール

説明はCygwinのページにお任せする。

2.wget をインストール

Cygwin からSetup.exeを実行して


上のSearch するテキストに wget を入れ web のジャンル の wget を Install にして次へを押しまくる。

次=>6まで読み飛ばしてください。

3.yahoo のページで調べたい銘柄を表示する。

例えば、1570を調べてみる。

とりあえず↓みたいな画面に行く。


4.1983 1 1 NEXT!






5.ページ番号を500くらいにしてみて、ページ数を計算する。


URL いじってエンター


6.cygwin shell で実行するコマンドを考える。。。って3~5のステップ要らんかった。


yget なる俺様スクリプトを考える。

#!/bin/bash
url="http://info.finance.yahoo.co.jp/history/?code=$1&sy=$2&sm=$3&sd=$4&ey=$5&em=$6&ed=$7&tm=d&p="
i=1
while wget -O- $url$i |sed -n -e '/^<\/tr><tr[^>]*><td[^>]*>....年/p' |sed -e "s/[,日]//g" -e "s/[ 年月]/\//g" -e "s/<tr[^>]*><td[^>]*>/\n/g" -e "s/<\/\?[^>]\+>/,/g" -e "s/,\+/,/g" -e "s/,\+\s/\n/g" -e "s/,\+$/\n/g" | sed -e "/^$/d" |grep ","
do
 i=`expr $i + 1`
done

さすが、バッドアイデアの泉
yget <-バグあります。スイマセン <tr><td>のところ <tr[^>]*><td[^>]*>デス。
どうだ6行である。
何やら恐ろし気な While 以降のパイプライン。
意地でもテンポラリファイルを使いたくなかったのである。

さすが、艦これをBANされた経験もある男。

使い方は

C60M1@C60M1-PC ~/tmpdir
$ ./yget 1570.t 1983 1 1 2016 3 18  >1570t.csv

あら、案外、使えるわ。
エクセルマクロをOpenOffice用に改変しなくて済んだ。

え?エクセル?メインマシンはUWSCスクリプトが動いてて今使えないっす。

もう一台エクセルを買うお金なんてあるわけないよね。

0 件のコメント:

コメントを投稿