続・競馬であそぶ 3

 なぜ、牛肉の検査をそんなにやるのだ!とアメリカが怒り狂っているが、、




3. 自動処理

自動処理といっても、ここではタイマー処理に限定しています。

Windows で使えるものとしては、Perl による CRONw とか、国産の wron とかの素敵なツール
があります。
ここで使うツールは、pycron です。コードを python で書いてから、実行ファイル (.exe)に変換
したものだと聞いて興味を持ちました。付属の crontab.txt Editor も分かりやすいし、コマンド
やバッチファイルの動作確認が楽なので、自動処理をいろいろやるならコレだと決めました。

最新バージョンは、pycron Version 0.5.7.1です。2006.01.18 現在
こちらの、
pycron のページ から ダウンロードできます。

これを競馬だけに使うのはアホやん!


日記の方で書いた、Windows のタスク・スケジューラに関しては、自分に誤解があったようで 設
定の仕方を詳細にたどればケッコウいろいろ出来るというのが分かります。
またココで無知を晒してしまった。用途によっては嵌りそうなので、知識としては必要かも。

興味あるかたは、@IT:Windows TIPS の
タスク・スケジューラとWSHで定例処理を実現する
を参考にしてください。

慣れれば別かもしれませんが、柔軟性に欠け、設定も面倒なので使う気にはなりませんでした。
でも、ワザワザ他のツールをインストールするまでもないと思う人は、これでも大丈夫ではない
かと思います。


中央競馬の開催は土日が殆どで、データが出るタイミングに大きな狂いがありません。

1.当日のオッズや速報系データを適当な間隔で自動取得
オッズは発走後には更新されないので、発走時刻以降は取得しないようにスクリプトを 書き換え
てあります。
発走時刻の変更などの対策はせずに、時刻に少し(5〜10分) 余裕を持たせるくらいでいきます。
その他の情報データは適当でいいと思います。

2.月・木・金・土曜の週データは、2〜3回間隔を空けて取得に向かう。
取得した後、データ加工〜出力処理までするかどうかですが、今のところ取得だけ。

3.その他の馬、騎手、馬場などの情報は入手先に応じて適当に取得
今シリーズのテーマの一つですが、これから少しづつ手をつける予定です。
ただ、本当に参考にしたい情報は個人のサイトに分散しているので、スクリプトを公開し難い
テーマでもあります。


まぁ一日だけですが馬券検討をしながら、動作確認やちょっと手直しをしていました。
不安はあるものの一応、動いているのでこれを公開版にします。
JVデータ用コマンドライン用のスクリプトです。

(2006.01.21) sget_03速報当日取得スクリプト (リンクは切りました)

JVOPT のサブルーチンを、ほとんどそのまま転用。設定ファイル(jvcfg.ini) も共用します。
一応念のため、同名にして上書きすると困る場合もあるので sample_jvcfg.ini として同梱
しました。中を書き換え、リネームして使ってください。
JVLink の設定部分などは、必要性が少ないのでこのスクリプトからは除いてあります。
SGET.pl と jvcfg.ini は同じフォルダに置いてください。

取得するファイルを変更する場合は、スクリプト内の該当部分をコメントアウトするなど
簡単な書き換えで済むはずです。

定時以外や取り忘れたデータなどは、いままで通り JVOPT で補完できます。
JVOPT の場合は、(提供期間内であれば数日後でも) 日を指定して取得可能です。
取得するパスなどが違うような場合は、JVOPT のスクリプトを変更した方がいいと 思います。
レースデータの参照は開催スケジュールから、RADWファイルに変更しました。
速報系か週データかどちらかを選ぶ場合は、パラメータで指定します。



4. pycron の設定

インストールに関しては、ダウンロードしてきた実行ファイルをクリックして順次、展開させていけば
問題ないと思います。
分かりやすいディレクトリに、サービスとしてインストールしておけばOKです。 このサービスの自動・
手動、開始・停止の設定は管理(ツール)のサービスのなかのPython Cron Service で行います。
実際に運用する時には、自動・開始にしておきます。

インストール先には、crontab.txt が用意されていないので、その名前で 空のファイルを作ります。
最初からある、crontab.txt.sample というファイルをリネームしてもいいのですが、 あとで参考に
なるかもしれないので念のため、そのまま取っておいた方がいいでしょう。

次に、pyCronEditor を起動してみます。
インストール先からでも、[スタート]→[プログラム]→[pycron] からでもドッチでもいいです。

左の[File]から[OPen]して、crontab.txt を選んだ後、[Item]から[New]を選ぶと、枠内に *
5個並びます。
これは、毎週、毎月、毎日、毎時、毎分、右側に指定された Taskを実行しますよ! ということです。
* の並んでいる行にカーソルをあわせて、Wクリックすると Task Properties の画面が 現われます。

下のほうの Wizard ボタンを押すと、いま選択されている日時分などがチェックされています。
自動運転のタイミングに関してはこの Schedule で決定するわけです。
ここだけで殆んどのタイミングをカバーできる筈ですが、もし出来なければ複数行を使います。

[Command] と [Parameter] の2ヶ所には、適当なナニカを入れます。
試しにそのまま、[Test execution]ボタンを押してみてください。
無反応であれば、「時間は指定されてても、何もしないよ」ということです。
壊れることはないと思うので、いろいろ試してみましょう。

以上で、大体の様子がわかったと思います。詳しくは pycron の入手先や検索で確認して ください。
crontab.txt.sample にも、うまく要点がまとめられています。
慣れたら( or 理解出来たら)、crontab.txt を直接編集してもいいのです。

# 月 の 14時8分,17時8分,20時8分 に
8 14,17,20 * * mon "d:\perl\bin\perl.exe" H:\JV\SGET.pl 2
# 木 の 15時8分,17時8分,20時8分 に
8 15,17,20 * * thu "d:\perl\bin\perl.exe" H:\JV\SGET.pl 2
# 金、土 の 12時8分,14時8分,16時8分,20時8分 に
8 12,14,16,20 * * 5,6 "d:\perl\bin\perl.exe" H:\JV\SGET.pl 2
# 土日の9〜12時台には、10分おき(0,10,20,30...)に取得に行く
*/10 9-12 * * 0,6 "d:\perl\bin\perl.exe" h:\jv\SGET.pl 1
# 土日の13〜15時台には、5分おき(0,5,10,15...)に取得に行く
*/5 13-15 * * 0,6 "d:\perl\bin\perl.exe" h:\jv\SGET.pl 1
# 土日の16時台には、適当に(5,15,25,45)に取得に行く
5,15,25,45 16 * * 0,6 "d:\perl\bin\perl.exe" h:\jv\SGET.pl 1

# の後は、コメントになります。
日曜は 0 です。


⇒⇒⇒ [Command] [Parameter] は、、

週データの取得の場合は、環境に応じて:例えば
[Command] を d:\perl\bin\perl.exe
[Parameter] を H:\JV\SGET.pl 2

当日の速報データやオッズを取得する場合は、環境に応じて:例えば
[Command] を d:\perl\bin\perl.exe
[Parameter] を H:\JV\SGET.pl 1

速報系取得の場合は、最後の SGET.pl の引数が 1 に変るだけです。
perl.exe の実行で、取得時のウィンドが煩わしければ、wperl.exe に。
wperl にしても、何も表示されない画面が出ているのでこれも邪魔。
その上、取得時の JV チェックに引っかかると10秒くらい止まってるし、、
で、どちらにしても目障りなので、自分は全部 Perl に戻しました。

[Schedule] の設定さえ正しければ、取得だけは問題ないと思います。

細部については、修正すべき個所もたくさんありますが、その辺は適当に、、

慣れるかイヤになるか、少し様子を見ることにして、ダメなら、他の方法 を模索します。
kbsTk.plなどでは、票数データや馬連・馬単・ワイドのデータは使っていません。これら を外して
おいて終了後ユックリ JVOPT で入手するとかで、しばらくこれを使います。

# (コメントアウト)をウマク使えばいいのだから、crontab.txt をショートカットで使い やすい場所
に置いて、いつでも書き換えられるようにするのも一つの方法。

レースが降雪などで中止になった時の対策も、考えたのですが面倒なので組み込んで いません。
いろいろ使いやすいように直せば使えるツールだと思います。

これで、JVDTXT.exe がまったく要らなくなれば、ということです。
そうなると、VB 2005 Ex. を考えずにすむのでトテモ楽になります。
ただ、三日使った印象ではオッズ取得の種類をかなり減らさないと邪魔。迷う。


INDEXへ トップページへ 次へ