標記システムはこの3月に手直しして、快調に動いている。
しかし、この株価好調の折柄、どうも売買成績がそれほど良くない。
毎日の売買シミュレーションの結果は、成績の良いものがテーブルに格納されて提示される仕組みだ。成績の悪いものは日々の値動きにより次第に排除されていく。ふと気づいてこのテーブルを見てみたら、銘柄数が減っている。はじめのうちは100社以上が残っていたが、今見ると70社ほどに減ってしまっていた。
ははあ、 “株式売買ユーティリティのメンテナンス” の続きを読む
オッサンは生きている。
標記システムはこの3月に手直しして、快調に動いている。
しかし、この株価好調の折柄、どうも売買成績がそれほど良くない。
毎日の売買シミュレーションの結果は、成績の良いものがテーブルに格納されて提示される仕組みだ。成績の悪いものは日々の値動きにより次第に排除されていく。ふと気づいてこのテーブルを見てみたら、銘柄数が減っている。はじめのうちは100社以上が残っていたが、今見ると70社ほどに減ってしまっていた。
ははあ、 “株式売買ユーティリティのメンテナンス” の続きを読む
先週16日に突然正常に動かなくなってしまった株式売買ユーティリティ。やっと手を付けることができた。
案の定、十何年変わっていなかったYahoo!ファイナンスの仕様が変わったためであることが判った。返してくるHTMLに変な <span> タグや class が増え、まるで別物に変わっている。それに、GETの引数の仕様も変わり、以前のURLではデータを持ってこれなくなっていることも判った。
株価データを切り出すためのマッチング・パターンを書き直し、変な <span> タグや classのサニタイズを強化した。それからURLも書き直した。
動くようになったが、220社の株価データを全部取り直すのに数時間はかかる。
十何年動かしてきた標記システム。
先日、古いサーバを見限って、セキュリティの堅いデスクトップマシン上の仮想マシンに「Fedora 31」を導入し、その上に移設したところだ。
さすがはCerelonの32ビットから「Devil’s Canyon」ことCore i7-4790Kへの移設だけあって、性能には目を見張るものがある。
前記した通り、前はマシンの性能上の限界から、自分が着目した49個の銘柄を分析の対象としていた。
ところがどうだ。目を見張るようなスピードでカッ飛ぶようになったこのシステム、東証1部上場の時価総額上位銘柄から300社を持ってきて、自分が気になる銘柄71社を合わせた371社合わせてシミュレーションしても、1時間余りで終わってしまう。前のマシンでは20時頃からスタートさせて、23時~24時頃までかかってしまっていたのだ。
これはもう、大幅に手を広げて、株式の売買に励むよりほかない。
自宅で10年以上の間、株式の売買シミュレーションシステムを運用してきた。Linux上で作動する。
以前、このブログでも少し書いたことがあるが、これで多少儲けても来ている。
このシステムは、株価をネットからダウンロードするプログラムをPerlで、これを格納するRDBはPostgreSQL、シミュレーションはCで、ユーザインタフェースはPHPで、というハイブリッド(笑)なつくりである。プラットホームは古いIntel Cerelon D “Prescott-V” 2.66GHzのマシン上に最初Fedora Core 5をインストール、順次アップグレードし、最後はFedora 9となっていた。
2年ほど前からだったろうか、株価をネットからダウンロードするプログラムがうまく動かなくなってしまっていた。株価は「Yahoo!ファイナンス」の時系列データから無料で頂戴してくるのだが、これはデータではサービスされておらず、htmlの中から特徴的なタグに正規表現でマッチングさせて株価を取り出してくる仕組みになっていた。なので、うまく動かなくなっていたのは、さしずめYahoo!ファイナンスの仕様が変わり、htmlのフォーマットなどが変わったのだろう、と思っていた。実際、正規表現でマッチングさせて目的のデータを切り出すコードになっているから、わずかでもhtmlが変わると、途端に消化不良を起こすのである。
原因究明や修理が面倒で、また、しばらく株式も値動きがあまりなくて面白くなかったから売買もしておらず、シミュレーションシステムも放りっぱなしになってしまっていた。
そんな折も折、ここへきて、新型コロナウイルス蔓延により外出の自粛が推奨される事態となった。ために、やむなく家に垂れこめている。平日は仕事に
そこで、意を決して上述のシステムを修理することにした。多分、Yahoo!ファイナンスの仕様、
ところが、その推量は全然違っていた。
株価ダウンロードプログラムは、htmlをダウンロードするのに、CPANの「LWP」ライブラリ等は使わず、Perl内から「wget」を呼び出して使っていた。そうしないとSSLの部分が面倒だからだ。
問題は、このSSL部分にあった。Yahoo!全体の仕様が、TLS1.2未満のSSLを拒絶するよう変更されていたのだ。Fedora 9は、OpenSSL0.9.8までしか対応しておらず、そしてOpenSSL0.9.8はTLS1.0までしか対応していない。
そこまで確かめて、やっと思い出した。私のシステムが動かなくなった2年ほど前というと、ちょうどSSLのセキュリティホールやSHA-1アルゴリズムの
私はその頃、仕事が非常に忙しく、自宅のPC環境など
原因は、wgetとOpenSSLが古い、ひいてはプラットフォームOSが古いことにあった。
最新のFedoraシリーズのバージョンは「31」になっており、そもそも平成17年(2005)発売のCerelon Dのような32ビットCPUには対応していないから、もう、古いLinuxマシンはそろそろお払い箱だろう。
私のデスクトップマシンはCore i7 4790K 4GHzにメモリは32GBをブチ込み、ストレージは1TBのHDDから、先日2TBのSSDに換装したところだ。されば、ここはもう、仮想化しかあるまい。
VMWare Playerをダウンロードしてインストール。非営利であれば無料である。これにFedora 31のisoイメージを本家サイトから貰ってきてインストールする。
動かしてみてびっくりした。私のような商用のSystem V育ちの者にとって、Linuxの「init」システムは長年慣れ親しんだシステムなのだが、Apache2を動かそうと/etc/rc.d/init.d/の下を覗いてビックリ仰天!何も入っていなくて、空っぽではないか!(笑)
こ、これは……!とGoogle先生にお尋ね申し上げ、今は「init」は否定の憂き目にあい、「systemd」というものに置き換わっているということを知る。
「systemctl」というサービス・コマンドの操作を調べ、これでhttpdを動かす。PostgreSQL、PHP、wgetなど必要なものをyum改め、「dnf」で次々とブチ込む。
それから
phpで作られたユーザインタフェースについては、POSTやGETの引数を直接グローバル変数として扱うことのできるかつてのPHPの仕様が廃止されてしまっており、そのままでは動かなくなってしまっていたが、そこは
SELinuxを調整しないとPostgreSQLとPHPが協調動作しないなど、多少ひっかかったところもあったが、元の通り株価売買シミュレーションシステムは作動するようになった。
さすがは Core i7 だ。生マシンから仮想マシンへの移設とはいえ、もはや
もともとこのシステムでは、過去5年分の株価データに対し、8900通り×49銘柄の売買シミュレーションを行っていた。Yahoo!ファイナンスに株価の整理値が出揃う20時50分頃から「cron」でこのシステムを起動していたのだが、これだけの組み合わせのシミュレーションを行うと、全部終わるのは23時くらいにはなってしまっていた。
ところが今回の移設で、それらシミュレーションがなんと10分ほどで完了するようになった。かつて誰かが言っていたが、「稚拙で鈍足なアルゴリズムでも、意外にマシンパワーの進歩で解決されてしまう」ということの実例を目の当たりにした次第である。
さて、そのようにしてシミュレーション結果を見てみると、やはり、新型コロナウイルスの影響で、相場は鉄火場と化している。大変な勢いで売買指標が出ている。これは大変だ。
今この鉄火場に飛び込むのは危険である。ウイルス禍が一段落し、上昇相場になったところからが勝負だろう。