2014年12月8日月曜日

遺伝的アルゴリズムで競馬予測

遺伝的アルゴリズムを勉強している時にふと思ったのですが、
このアルゴリズムは株よりも競馬のほうが適合している気がしましたので、忘れないうちに備忘録として。

遺伝的アルゴリズムで作るカブロボの設計

前回までで遺伝的アルゴリズム基本的な練習を行いました。
いよいよ今回からカブロボのプログラムを開始しようと思います。
まず初めに、基本的な設計を考えてみます。

2014年12月7日日曜日

巡回セールスマン問題にアニメーションを付けてみる

前回pythonで巡回セールスマン問題をとく遺伝的アルゴリズムを作成したのですが、
最終結果だけの巡回順路を与えられても、うまいこと進化しているのかがわかりにくいです。
そこで、進化の過程をアニメーションで表示させてみようと思います。

2014年12月6日土曜日

pythonで遺伝的アルゴリズムの練習2 --巡回セールスマン問題

前回に引き続き、遺伝的アルゴリズムの例題をもう一つ解いてみようと思います。
今回は巡回セールスマン問題を解きます。
巡回セールスマン問題とは、例えば5つの都市があったとして、すべて都市を1回づつ訪問しようと思っている場合、
どのような順番で都市を回れば最短ルートで行くことができるのかという問題です。
都市の数が5つぐらいなら総当りでなんとかなるのですが、30、50となってくると、
組み合わせが階乗になるのでとても総当りできません。
そこで、この問題を解くのに様々な方法があるのですが、その方法の1つとして遺伝的アルゴリズムが使われています。
遺伝的アルゴリズムでは、最適解を出すことは難しく、
最適解に限りなく近い解しか出すことができませんが、いい練習になると思います。

2014年12月4日木曜日

pythonで遺伝的アルゴリズムの練習--ナップザック問題

今回は、以前からやろうと思っていました遺伝的アルゴリズムの練習としてナップザック問題を解いてみようと思います。
ナップザック問題は例えば、遠足にお菓子を持って行く場合カバンに10kgまでしか入らないとした時、どのような組み合わせでお菓子を選択することがいいかを探求する問題です。
様々な解き方があるようですが、遺伝的アルゴリズムで解く練習問題として一般的なようです。

2014年11月30日日曜日

読み込んだ日付をdatetime形式にする -poython

前回までで、保存してた過去の株式ファイルを読み込み、行列で呼び出すことができるようになりました。
しかし、日付に関しては日本語文字列で表記されているので、このまま日付として人s着させることができません。
そこで、この日付をdatetimeモジュールを用いて扱いやすいようフォーマットを変更しようと思います。

2014年11月24日月曜日

pythonで保存したファイルをロードする

以前までで、株価の日時推移データをcsvファイルに保存することが出来ました。
今回はこの保存したファイルをpythonで読み込みを行おうと思います。

2014年9月20日土曜日

上場企業の株価取得

前回は上場企業をの株価データをすべてcsvファイルにするプログラムのhtmlを取得するところまで、作成しました。
今回はこれまで同様、html株価データの抜き出しと、csvファイルへの書き出しなのですが、
これらの2つは以前作成した1企業の株価の過去データを抜き出すものと同じやつを使います。
http://mosirobo.blogspot.jp/2014/09/html.html
http://mosirobo.blogspot.jp/2014/09/csv.html

なので、mainループを作成したので、そのプログラムを記載します。

上場しているすべての会社の株価をすべて取得するプログラムを作る

これまでのところでは1会社分の1日分のデータを取得するプログラム
http://mosirobo.blogspot.jp/2014/09/javahtml.html
http://mosirobo.blogspot.jp/2014/09/javacsv.html
http://mosirobo.blogspot.jp/2014/09/javahtml_4.html

と、1会社の過去の株価すべてを取得するプログラムの2つを作成しました。
http://mosirobo.blogspot.jp/2014/09/blog-post.html
http://mosirobo.blogspot.jp/2014/09/html.html
http://mosirobo.blogspot.jp/2014/09/csv.html
データを解析し、株ロボットを作るにはなるべく多くの会社の株価がほしいのですが、
全て手作業でやっていては非常に面倒です。
ですのでループを回して、すべての証券コードを入力していこうと思います。

2014年9月19日金曜日

javaでカンマの除去

これまでのところで一会社分の過去データをすべて読み込み、csvファイルにするところまで出来ました。
作成したプログラムではcsvファイルの区切りをタブで分けています。
(本来はカンマで区切るのが正解らしいのですが…)
ただ、数字が3桁を超えると千くらいにカンマが入力されてしまいます。
これはヤフーファイナンスの仕様上しょうがないことなのですが、邪魔なので除去しようと思います。

2014年9月13日土曜日

過去データの取得 -csvに格納

前回前々回でhtmlから株価の過去データを取得し、配列に格納することが出来ました。
今回はcsvファイルに入れていきます。
今回はその変数を配列に変更し、ループで回すだけです。

過去データの取得 -htmlの正規表現

前回に引き続き、株価の過去データを取得する続きです。
これまでは1日分のデータだったので、変数に入れて、それを引き出すだけでよかったのですが、
過去何年分のデータを入れるのに変数を使うと大量の変数が必要になります。
そこで、これまで変数を使用していたところを配列にして順次格納していこうと思います。

過去データすべてを取得する -urlからhtmlの取得

前回までのところで株価データを一日分取得することが出来ました。
http://mosirobo.blogspot.jp/2014/09/javahtml_4.html
http://mosirobo.blogspot.jp/2014/09/javahtml.html
http://mosirobo.blogspot.jp/2014/09/javahtml.html
しかし、一日のデータのみで今後の傾向をつかむことはできないと思いますので、
できればこれまでのデータが全て欲しいです。
ということでそうなるように改良していこうと思います。

2014年9月8日月曜日

JAVAでつまずいたこと-参照渡し

続きまして、つまずいたところは参照渡しです。
参照渡しに関しては、色々なページが有ったのですが、ちょっとわかりづらかったです。
最初はcのポインタの方がわかりやすいのではないかとも思ったのですが、
使いづらいこともないですね。

JAVAでつまずいたところ-文字列を加算

さて、データをwebから取得するプログラムをある程度のところまで書くことが出来ました。
今回は初心者の僕がネットで調べても基本的なこと過ぎて調べるのが大変だったものを紹介しようと思います。
まず最初によく分からなかったことは、
文字列の結合です。

JAVAで抜き出したデータをcsvファイルに格納する。

これまでのところでネットに繋ぎhtmlを取得し、必要な情報をhtmlから抜き出すことが出来ました。

ただ、データを文字列として持っていては非常に扱いにくいと思いますので、
csvファイルに格納していこうと思います。

2014年9月4日木曜日

JAVAでhtmlから必要な情報を抜き出す。

前回はurlからhtmlを入手しました。
今回は入手したhtmlから必要な情報を抜き出していきます。
htmlの情報はタグで囲まれており、
必要な情報は<td>2014年9月2日</td><td>148</td><td>151</td><td>148</td><td>151</td><td>18,000</td><td>151</td>の部分です。
この行を正規表現で抜き出し、それぞれを変数に格納していこうと思います。

ちなみに抜き出す部分はブラウザで言うと下の部分です。

2014年8月31日日曜日

JAVAで株価取得プログラムを作る

株ロボを作るにあたってまず株価の推移データのcsvファイルを入手しなければなりません。
csvファイルの入手方法はデータを買ったり、無料でダウンロードしたりすることで入手できます。
また、ネット上には色々なツールが落ちているのでそれを走らせるだけでもデータの入手は可能です。

参考


株価データが入手できるサイト

株価データの取得について質問です。 短時間で東証1部全銘柄の株価データを過去...

jsm 0.11

PythonでYahooファイナンスの時系列データを取得してみた


etc.

とまあ色々なツールやサイトが有るのですが、今回は練習も兼ねてJAVAで作ってみようと思います。

2014年8月29日金曜日

Pythonの初期設定

Pythonには2.x系と3.x系の2つがあるのですがどう違うのでしょうか。
もともとMacに入っているバージョンは2.7です。
2.xは安定版で3.xは現在開発されているものだそうです。
ここで問題になるのは2.x系と3.x系とで互換性がないことです。
ですのでネット上にあるソースコードは2.xなのか3.xなのかを判断して行く必要があります。

今回は僕がPythonに行ったことを備忘録としておいておきます。

Pythonの開発環境を整える

続きましてもう一つの言語として選択しましたPythonの環境を構築しようと思います。
PythonもJAVAと同じくMacならターミナルから実行できます。
実行方法は実行したいファイルの有るディレクトリに移動して、
Python ファイル名で実行できます。

また、Pythonの利点の1つに対話モードがあることだと思いますので、
対話モードの起動方法はこれもターミナルでPythonと入力するのみです。
これでコードを直打ちすることでプログラムを実行することができます。

とりあえずこれでPythonを使うことはできるようになりました。
しかし、ターミナルでやるのはディレクトリに移動したり面倒くさいので、
開発環境をつくろうと思います。


2014年8月28日木曜日

JAVAの開発環境を整える

プログラミングを始めるにあたって開発環境を整えるのが一般的なようです。
macの場合JAVAなどはエディターで書いて、ターミナルで動かしても動くようですが、
僕は初心者でよくわからないし、エディタによっては構文ミスを指摘してくれなかったりするので、統合開発環境(IDE)を使うことにしました。
JAVAのIDEはEclipseが最も有名なようです。

2014年8月27日水曜日

株ロボットをどうやって作るか

今回は株ロボをどうやって作るかを考えていこうと思います。
基本的な流れとしてはとしては、
①データの取得
②データの処理
③データを記録
という非常に簡便なものになるんではないでしょうか。

では詳しく見ていきます。

2014年8月26日火曜日

株予想ロボットに用いる言語

まず最初にプログラミングをするにあたって言語選択しなければなりません。
選ぶところとしては、
C, JAVA, PHP, PYTHON
こんなところでしょうか。

2014年8月25日月曜日

目指す株ロボット

これまでの人生25年においてプログラミングに興味はあったものの、
全く手を出してこなかった僕ですが、最近やってみようと思い立ってみました。

ブログの目的としては、ネット検索を通して集めた情報の蓄積と整理です。

目指す株ロボットは、
①株式情報の取得できること(リアルタイムデータと過去データ)
②判断基準は売りと買いのみ
③株に関してもてんで素人なので、できたら蓄積した情報から学習していくAIのような株ロボット(遺伝的アルゴリズムとか、ニューロコンピューティングに興味があります。)
④最低限ところとしては損失をださない

書き出してみたらものすごく漠然としていました。
プログラミングもわからない、株もわからないだと何も見えてこないですね。
もっと勉強して具体的に見えてきましたらまた目標を再整理しようと思います。