電脳競馬
WSHによるWindows自動制御の研究
TARGETチェック馬リストの自動作成

TARGETのチェック馬機能
チェック馬機能とは自分が次走注目したい馬や狙いたい馬と登録する機能です。出走表を開いたときに自分のチェック馬が出走している場合、出走表の下部にチェック馬の情報が表示されます。
図1.出走表におけるチェック馬表示例 (2002年12月8日出走表)
中山6R出走のゲイリーブリットと阪神7R出走のマルイチバンバンがチェック馬
チェック馬機能の登録方法
私は新馬・未勝利・500万条件で補正9指数の高い馬を次走の狙い目としてチェック馬に登録しています。
補正9指数は1000万条件を勝ち上がれるレベルと100としています。下級条件レースで100に近い指数で、優勝した馬は昇級しても好走が期待できます。また優勝馬以外でも100に近い指数で走った馬は次走勝ち上がるチャンスがあります。
私は火曜日に先週分の競走成績から、新馬・未勝利・500万条件で補正9指数が高い馬をチェック馬に登録しています。
図2 成績一覧例(2002年11月30日 5回中山1日目)
3R新馬戦優勝馬シストレインの補正9指数は99で1000万条件級の能力あり
図3 チェック馬の登録例(図2のシストレインをチェック馬として登録)
馬データを表示してチェック馬ボタンを押下して登録する。
チェック馬登録も忙しいと面倒になる〜WSHによるチェック馬の自動登録〜
平日は仕事があるので競馬のデータ整理に費やせる時間は1時間程度です。インターネットで新聞記事などの情報入手など色々やっていると毎週のチェック馬登録も忙しいと面倒になります。チェック馬の選定条件や登録方法は定型化しているのでWSHによりチェック馬を自動登録する仕組みを作成しました。

チェック馬リストファイルのレコードレイアウト
チェック馬は環境設定画面で設定されているチェック馬ファイルに登録されます。
図4 環境設定画面でのチェック馬ファイルの設定
筆者環境ではD:\CHECK\CHECK_UMA.LSTと設定している。
チェック馬リストファイルのレコードは血統登録番号+登録年月日+チェック馬マークType番号+チェック馬コメントから構成されます。
チェック馬リストファイルのレコード例
00110213021207102年11月09日に好走実績あり
99100716021207102年12月01日に好走実績あり
チェック馬リストファイルのレコードレイアウト
血統登録番号 登録年月日 チェック馬マークType番号 チェック馬コメント
00110213 021207 1 02年11月09日に好走実績あり
99100716 021207 1 02年12月01日に好走実績あり
チェック馬を自動登録するには、WSHスクリプトからチェック馬リストファイルにレコードを出力することで実現できます。
開催競走成績CSVファイルからチェック馬リストファイルを作成する
TAREGTでは開催競走成績をCSVファイルとして出力する機能があります。出走馬1頭を1レコードとして競走成績が出力されます。チェック馬リストレコードを作成するために必要な情報(血統登録番号、クラスコード、入線着順、補正指数)が全て格納されています。
チェック馬リストレコード 入手先
血統登録番号 開催成績CSVファイルの血統登録番号
登録年月日 021207
チェック馬マークType番号 「1」固定
チェック馬コメント 開催成績CSVファイルの開催年月日+固定文字列「好走実績あり」
チェック馬リストファイル自動作成の処理概要は下記の通りです。
  1. 開催競走成績CSVファイルを作成する。
  2. 開催競走成績CSVファイルのレコードが終わるまで以下の処理を繰り返す。
    1. 開催競走成績CSVファイルからレコードを1件読み込む
    2. 開催競走成績レコードのクラスコードが1000万条件以下且つ補正指数が92以上の場合は、チェック馬レコードを作成する。
      1. チェック馬レコードの血統登録番号に、開催競走成績レコードの血統番号を転記する。
      2. チェック馬レコードの登録年月日に、システム日付を転記する。(形式は西暦年下2桁月2桁日2桁)
      3. チェック馬レコードのマークType番号に、「1」を転記する。
      4. チェック馬レコードのチェック馬コメントに、開催競走成績レコードの開催年月日と文字列「好走実績あり」を転記する。
      5. チェック馬レコードを、チェック馬リストファイルに出力する。
    3. 項1に戻る

チェック馬自動登録スクリプト
'=========================================================================
'【ファイル】check.vbs 補正9指数による下級条件有力馬チェック処理 
'【機能仕様】新馬・未勝利・500万条件で補正9指数が93以上で
'            1着以外の馬をチェック馬として登録する。
'【補    足】補正9指数は1000条件で勝てるレベルを100としている。
'            下級条件で100に近い馬は1000万条件級の能力を持って
'            おりに今回負けても次走に勝てる能力を持ている
'【開発来歴】Ver 1.00  2002.12.07  蛸坊主  
'==<入出力制御定数>=======================================================
Const ForReading  = 1, ForWriting = 2
'==<ファイル名>===========================================================
Const KAISAI_FILE   = "D:\check\kaisai.txt"     '抽出する開催成績
Const SEISEKI_CSV   = "D:\check\seiseki.csv"    '開催成績出力
Const CHECK_UMA_LST = "D:\check\check_uma.lst"  'チェック馬リスト
'==<チェック馬のマーク記号>===============================================
Const CHECK_MARK    = "1"
'==<開催成績CSV形式のデータ項目位置 実際の位置−1を定義>=============
Const CLASS_CODE  = 8    'クラスコード
Const HOSEI_TIME  = 27   '補正9値
Const ENTRY_NO    = 37   '血統登録番号
Const YY          = 0    '開催年
Const MM          = 1    '開催月
Const DD          = 2    '開催日
Const CYAKU       = 21   '入線着順
'==<コントロールオブジェクトの定義>========================================
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Aix = WScript.CreateObject("AutoItX.Control")
'====<TARGET起動>=========================================================
WshShell.Run "E:\target\FRONTIER\FRONTIER.EXE" : CRT_CHECK("TARGET")
'====<開催成績ファイル作成>===============================================
WshShell.SendKeys "%ZO" : WScript.Sleep 100
CRT_CHECK("開催成績CSV出力")
WshShell.SendKeys "{UP}{UP}{UP}{ENTER}"           : WScript.Sleep 100
CRT_CHECK("開催成績選択")
WshShell.SendKeys "{LEFT}{ENTER}"                 : WScript.Sleep 100
CRT_CHECK("開催リストファイル選択")
Aix.ClipPut (KAISAI_FILE)
WshShell.SendKeys "^v{ENTER}"                     : WScript.Sleep 100
CRT_CHECK("開催成績選択")
WshShell.SendKeys "{RIGHT}{ENTER}"                : WScript.Sleep 100
CRT_CHECK("開催成績CSV出力")
Aix.ClipPut (SEISEKI_CSV)
WshShell.SendKeys "F^v{ENTER}"                    : WScript.Sleep 100
WshShell.SendKeys "{TAB}{TAB}{TAB}{TAB}{ENTER}"   : WScript.Sleep 100
CRT_CHECK("同名ファイル処理選択")
WshShell.SendKeys "{TAB}{ENTER}"                  : WScript.Sleep 100
WAIT_CRT_CHECK("しばらくお待ちください")
CRT_CHECK("開催成績CSV出力")
WshShell.SendKeys "{DOWN}{ENTER}"                 : WScript.Sleep 100
'====<TARGETの終了>=================================================
CRT_CHECK("TARGET")
WshShell.SendKeys "^{F12}" : WScript.Sleep 100
'====<チェック馬作成処理>=================================================
Set FS        = CreateObject("Scripting.FileSystemObject")
Set CSV       = FS.OpenTextFile(SEISEKI_CSV, ForReading)
Set FSOUT     = CreateObject("Scripting.FileSystemObject")
Set LST       = FSOUT.OpenTextFile(CHECK_UMA_LST, ForWriting, True)
'<実行日の日付文字列を作成
TO_YY = DatePart("yyyy" , Date) : TO_YY = Right(TO_YY, 2)
TO_MM = DatePart("m"    , Date) : TO_MM = "0" & TO_MM : TO_MM = Right(TO_MM, 2)
TO_DD = DatePart("d"    , Date) : TO_DD = "0" & TO_DD : TO_DD = Right(TO_DD, 2)
TO_DAY = TO_YY & TO_MM & TO_DD 
'開催成績CSVをレコード単位に読み込み、チェック処理を行う
Do While CSV.AtEndOfStream <> True
   REC = CSV.ReadLine
   '読み込んだレコードをカンマで分割して配列に格納する
   CSV_ITEM = Split(REC, ",", -1, 1)
   'チェック馬の条件に該当した馬をチェック馬リストに登録する
   If CSV_ITEM(CLASS_CODE) < 39  And _
      CSV_ITEM(HOSEI_TIME) > 93  And _
      CSV_ITEM(CYAKU) > 1 Then
      'チェック馬レコードを組み立てる
      OUT_REC = ""
      OUT_REC = CSV_ITEM(ENTRY_NO) & TO_DAY & CHECK_MARK
      OUT_REC = OUT_REC & CSV_ITEM(YY) & "年" & CSV_ITEM(MM) & "月" & CSV_ITEM(DD) & "日"
      OUT_REC = OUT_REC & "に好走実績あり"
      LST.WriteLine OUT_REC
   End If
   Erase CSV_ITEM 
Loop
CSV.Close
LST.Close
'====<スクリプトの終わり>=================================================
Msgbox "補正9指数による下級条件有力馬チェック処理終了"
WScript.Quit (0)
'====<画面表示チェック関数>===============================================
Function CRT_CHECK(msg)
  TimeOut=100
  Do
    WScript.Sleep 100
    Flg = WshShell.AppActivate(msg)
    If Flg = True Then
      Exit Do
    Else 
      TimeOut = TimeOut - 1
      If TimeOut < 0 Then
        Msgbox msg & "が見つかりません" : WScript.Quit (1)
      End If
    End If
  Loop
End Function

'====<画面表示チェック2関数>===============================================
Function WAIT_CRT_CHECK(msg)
  TimeOut=100
  Do
    WScript.Sleep 1000
    Flg = WshShell.AppActivate(msg)
    If Flg = False Then
      Exit Do
    Else 
      TimeOut = TimeOut - 1
      If TimeOut < 0 Then
        Msgbox msg & "が終わりません" : WScript.Quit (1)
      End If
    End If
  Loop
End Function











自分のPC環境に合わせて変更が必要




チェック馬マークのType1番を使用

TARGETヘルプに記載されている
位置から1引いた値を設定する。
着差などの他の項目を設定条件に
する場合は、この箇所を改造する。





自分のPC環境に合わせる。

画面のタイトルを確認しながら
キーボードのコードを送信する。

取得する競走成績の開催は
あらかじめD:\check\kaisai.txtに
登録している。開催成績選択画面で
開催を選択後にリスト出力してD:\check\kaisai.txtを作成する。

ファイル名には漢字が含まれる場合が
あるのでクリップボード経由で画面に
送信する。

毎週ファイル名で処理を行うので
競走成績出力時に同名ファイルで
上書き処理を行う。

最初実行する場合はSEISEKI_CSVで
定義したファイルをダミーで作成する
必要がある。








テキストファイルを操作するための
オブジェクト定義



Right関数で西暦年の下2桁を取得
1月の場合はDataPart関数の値は「1」であるため、前ゼロを付加して「01」と加工している。日も同じ


読み込んだレコードをSplit関数で
カンマ単位に区切りCSV_ITEM配列に
格納する。
クラスコードは配列の9番目に格納されている。配列の開始位置は0からなので、9番目の値を得るにはCSV_ITEM(8)と記述する

チェック馬の条件を変更したい場合は
この箇所を改造する。



組み立てたレコードをファイル出力する


CSV用の配列をクリアする






指定された画面に移動する関数
一定時間待っても指定された画面が
表示されていなければエラー表示して
強制終了する。













指定された画面を監視する関数
一定時間待っても指定された画面が
閉じられなければエラー表示して
強制終了する。

電脳競馬インデックスに戻る
HOME | 重賞予想 | 予想講座 | データ室 | 電脳競馬 | 競馬日記 | 競馬写真 | 掲示板 | リンク

All Rights Reserved, Copyright(C) 2000-2002.Yoshikazu.Takashima.