日中足データの活用

先日までで、とりあえず日足データの取得はできるようになった。
現状のデータで、日足データを解析して、売り買いのシグナルを出し、
翌日の寄りつきで成行or指し値で買いを入れつつ、約定すれば、売りの注文をだせば、
普通にスイングトレードはできそうである。
それであれば注文を自動化せずとも、夜に帰宅後、kabu.comで、買い注文をいれて、
リレー注文で、売り注文をW指し値などでいれれば、対応できる。
ただ、それだと、タイトルの「Macが株取引」でなくなってしまうので、
なんとか、日中にリアルタイムな株価や気配値を見ながら、処理したい。
そんなわけでリアルな日中足データを取得することにする。
問題は、このデータをどこから取得するのか。
HPで調べると本当のリアルタイム株価は価格的にきつい・・・、と、いうか普通に趣味でやるには、
全く無理な金額である。
そんなわけで、
・ 日足データから翌日に動きのあるであろう株を推定する。
・ 証券会社(今回デイトレ用に開設した某e証券)からほぼリアルタイム株価を取得
・ 取得できた株価をデータベースに格納
・ 取得できた銘柄の分析をして、売り買いのシグナルをだす。
・ シグナルによって、実際の売買をする。
と、いった感じで処理しようと思う。
取得する情報は、
・ 取得日時(or取引日時)
・ 取引価格
・ 4値
・ 出来高
・ 気配値(売り買い5本に統一)
などを取得する。
間隔は1分おきくらいでよいかと思っています。
この辺は実際に取得、解析、注文、などのCPUの食い具合などを見ながら
決めたいと思います。
あまり、たくさん、証券会社にリクエストすると、クレームがくるような話も聞きますんで、
常時監視する管理銘柄も、30~50程度になると思います。

日足データ取れていない・・

全部とれたつもりが・・
全然取れてなかった・・・・(;;)
サブルーチンの戻り値を、本番寸前に直返しからアドレス返しに変えてしまって、
それが原因で全部、データベースに格納する時にエラーになってました。
そこの部分を修正して実行。
無事、取得できた・・。
やっぱり、プログラム自身の動きとともに、成果物のデータベースのcountも見ておかないといけないです。
まーー、とりあえず、全部取得できたのでよしとしよう・・。

とりあえず日足データの取得できそう

EclipseでのPerl作業は非常に快適である。
今までは、エラーが出た行を一つずつつぶして行ったが、
Eclipseであれば、常時シンタックスチェックをしてくれるし、(うっとうしいほど・・(^^;)
エラーメッセージを見ながら、ソースを訂正できるので、非常に効率が良いです。
さて、過去の日足データを取得するシステムは、テストベースでは順調に取得できている。
最初、TreeBuilderで解析した後に、$tree->deleteするのを忘れていて、
メモリを食いまくっていたが、無事原因がわかり、
Jcodeも快適に処理をしてくれている。
実際に全データの取得を試してみると・・、想像通り、ヤフーから拒否されます。
当然といえば当然です。
人間ではあり得ない速度でとり続けるのはおかしいですからね。
とりあえず、負荷の少ない時間帯で、適度にインターバルを取りながら、
全データの取得が完了しました。
次からは、毎日の日足データの追加をすればいいので、
今回のような全部の取得をすることはないと思います。
ただ、実際の運用まではしばらく試行錯誤することになるので、
データベースで最後の取引データ日付から、当日まで取得するように、
改良して待機させることにします。

過去日足データの取得

日々のデータ取得も大事であるが、過去の履歴も大事である。
なぜならば、システムトレードには、過去の履歴でのシミュレーションが必要だからである。
そんな訳で、タイトルのとおり、過去日足データの取得である。
とりあえず、5年くらいの取得をすることとする。
過去の履歴には、株価データと信用残データがあるが、
今回の自動取引でつかう指数のほとんどは株価データであることから、
今回は株価データのみの取得とすることとした。
取得する情報は、
・ 会社コード
・ 日付
・ 4値
・ 出来高
などである。
なんせ、会社数も多い上に、期間も長いことから、だいぶしんどそう・・・。

基本情報の収集

データベースの用意ができ、開発環境もできたので、早速、情報取得のプログラムをつくる。
(2月末から仕事が忙しくあまり開発時間が作れず、全然「早速」ではない・・)
先にも書いたとおり、Eclipse上のPerlで開発することにしている。
ところで、なんで情報の収集をPerlでするのか。
それは、HP上の情報を収集するのを、
・Windows上のC++(VisualC++)
・Windows上のExcelVBA
・NetBSD上のC++
・NetBSD上のPerl(i386、68040)
・MacOSX上のPerl(G4、このManmini)
で、やってみたことがあるが、
結局、Perlでの取得が一番楽に開発できて(^^;
と、いう理由だけである。
タイトルにも書いた、基本情報の収集であるが、
これもヤフーファイナンスさんから取得することにする。
会社の一覧もないので、会社の一覧を取得しつつ、会社の詳細情報も収集する。
収集する項目は、
・会社コード
・会社名
・上場市場
・時価総額
・発行株式数
・一株配当
・決算月
・単元株数
など、である。
あまり技術的な話を書くと、HPの方で書くネタがなくなるので、
詳細は書かないが、
・ 全上場企業の会社コードの取得
・ 各上場企業の詳細情報の取得
・ データベースに情報を格納
の作業をminiですると、CPUが振り切れます(^^;
当然、データベースのサーバもかねており、私のメールチェック、HP閲覧などを
こなしているので、当然といえば当然ですが・・・。
ちょっと、miniがかわいそうでした。
試行錯誤しましたが、結局、一晩で全部取ってきてくれました。
ちなみに取得した企業数は、「3877」でした。
今後は、一月に一回くらいのペースで取得しようと思います。
(できれば、夜中に自動起動するようにしたい)

Perlの開発環境

Perlの開発環境を考える。

AppleのXcodeでは、Perlを扱えない(と思う)ので、別の環境でつくらなくてはならない。
前から一度使ってみたかった、Eclipseをつかってみよう。

Eclipseには、EPICというアドインがあって、Perlを快適に使えるようだ。
早速HPで調べてインストールしてみる。(私はあまり本を買わない(^^;)
(実際は結構右往左往してます(^^;)

無料でこの開発環境!!すごいです。
今までシェル上のviでPerlを書いていたのとは、だいぶ違いますね。
まー私が素人なんで、環境が変わったからと言って、開発速度が大幅に上がることはないですけど。

Macの環境を整える

現在のMacの環境を整えることにする。
今の環境はスペック的にはチープな感じであるが、
OSはMacOSX Tigerで、安定性は十分。
環境がチープであれば、それに合わせた環境を構築すれば良いだけである。
ちなみに、このマシンは私のメイン機でもあるので、昼間はフルで作業してもらってもいいが、
夜は私の作業の邪魔になってもらっては困る。(^^;
とりあえず、最低限必要な
MySQLをインストールする。
新しいことはいいことだと思うので、5.0.18をインストしてみる。
起動などの管理に、純正(?)の、
MySQL Administrator と MySQL Query Browser
を、使ってみるが、なんでか、落ちる・・(–;
Windowsで使ったときは快適だったんですけどね。
UNIX的な使い方をするので、MySQL管理用に、
Webminをインストールする。
やはり定番ツールだけあって、使いやすい。
今後、自動起動などのプログラムも増えるので、これで登録すればよいので助かる。
UNIXのシェルでは、viを使っているが、やはり、最近はなまぐさGUIになれてしまい、
コマンドを忘れてしまうので助かる。

開発方針変更(cocoa 2 unix)

ここ数日、HPをみたり、自分で考えをまとめてみる。
結果、
「 MacはMacでもUNIXよりのシステムを構築する。」
と、いうことに落ち着いた。
(cocoaなシステムのみでの構築は時間がかかりすぎて飽きそうが本音(^^;)
大まかなシステムは、
1 ユーザインターフェイス(Cocoa or Java)
2 情報の取得(Perl)
3 情報の保管、管理(MySQL)
4 注文処理(Perl)
を、分離してそれぞれを独立したシステムとして運用することにする。
母国語(?)である、CやC++でコーディングしたいのは、やまやまなんですが、
Macな場合、Cで組んでしまうと、他のプラットフォームに移植するのが、
結構、大変そうな感じがするので、どこにでもある言語を使うことにする。

webkitでのやり方不明

いろいろと調べるけど、Macのcocoaなプログラムで、webへsubmitする方法が、
わからないです。
どう考えても、できないはずはないんですが、2日探して、見つからないので、
このまま、時間が過ぎていくのはもったいないので、別の方法を考えないといけないのか・・・
Automatorや、AppleScriptなんかを、使えば、
自動運転ができることは、間違いないんですけど、
これをつかってしまうと、他の環境への移行がめんどそうですからね。
もうすこし、UNIXよりにしようか・・・。

自動運転にはsubmit

日足データの取得ができれば、
その応用で、銘柄の個別情報、会社名、上場市場、売買単位、純資産、配当なんかの情報を
取得することは、難しくない見込み。
見栄えの問題や、チャートの表示(ローソク足、出来高、移動平均線とか)も、力業と微調整で
時間さえかければ、なんとかなる。
あと、買いタイミングや売りタイミングで、注文を発注するシステムで必要な、submitを考える。
証券会社のHPにアクセス、IDとパスワードを入力し、submit(ボタンを押す)。
注文条件などを設定して、submitする。
よく考えると、webkitって、表示関係や解析関係は充実しているけど、
プログラムからのアクションってできるんだろうか・・・。
サーーーーー(血の気が引く)