2014年09月15日

TARGET Frontier JVのレース印を自動処理する際に注意すべき点を紹介

私は毎週レースごとの指数(馬場差)を計算しているのですが、その際レースごとの馬場差の信頼度をA,a,B,b,C,Xの6段階(Xは馬場差計算不可の意味)で残しています。

元々馬場差の信頼度はExcel内で記録しているだけだったため、競馬予想の際に過去のレースの馬場差の信頼度を確認するのがめんどくさかったのですが、現在はTARGETにレース印機能が使って以下のとおり各レースの信頼度をTARGETの各画面で表示されるようにしています。
01.png


手動でレースごとにレース印を設定するのは面倒ですので、Excelで管理していた馬場差をTARGETのファイル形式に変換するツールを作って対応しているのですが、このようにレース印を自動処理する際に注意すべき点を紹介したいと思います。

下手をするとせっかく設定した独自のデータを消してしまう可能性がありますので、TARGETのレース印を何らかの形で自動処理することを考えている人は確認してみてください。


■レース印のファイル構造について

レース印のファイルフォーマットは

に記載されています。

例として先の札幌記念であれば、2014年の2回札幌ですのでファイル名は「UM142札.DAT」となり、2日目の11Rということで同ファイルの12+11=23行目の先頭に「01B___」(_は実際は半角スペース)と記録されることになります。

ここで注意すべき点は馬印とレース印が同一ファイルに記録される仕様になっていることです。そのため単純に馬場差をファイル変換するだけだと既存の馬印情報が上書きされて消えてしまいます

これを避けるには以下の方法が考えられます。

  • 馬印2、レース印2以降を使う
  • 既存の馬印を残した状態でレース印をファイルに書き込む


馬印2、レース印2以降を使う

以前は馬印、レース印とも1種類しか使えなかったのですが、今は拡張され馬印、レース印とも複数使うことができます。
また2以降は馬印とレース印のファイルも分かれているので、今だとこちらの方法を使うのがスマートかもしれません。


既存の馬印を残した状態でレース印をファイルに書き込む

ただTARGETのヘルプにも馬印1やレース印1は各画面で優遇表示されるとの記載もあるため、やはりレース印1を使いたいというケースもあると思います。

私も過去の経緯からレース印1を使っており、馬場差をレース印として設定する際に既存の馬印を残した状態でレース印として馬場差信頼度を設定する処理をawkで実装して対処しています。
awkでの具体的な実装イメージも別記事でいずれ紹介したいと思います。


■まとめ

以上、TARGET Frontier JVのレース印を自動処理する際に注意すべき点を紹介しました。
要は単純にレース印ファイルを上書きして、既存の馬印を消さないように!ということです。自分で設定した馬印は一旦消してしまうと元に戻せませんので…。



posted by knaka at 13:52 | 競馬プログラミング | このブログの読者になる | 更新情報をチェックする

2014年08月03日

TARGETの付加タイムのファイルフォーマットを説明

私は毎週レースごとの指数(馬場差)の算出を行っていて、TARGET上で独自指数を表示するために付加タイムもawk等を使って自動生成しています。

ただTARGETの付加タイムの説明を見てもファイルフォーマットの説明がありません。そこで本記事では独自に解析(というほどの複雑なフォーマットではないですが…)した付加タイムのファイルフォーマットを説明したいと思います。


■ファイル名の命名規則

まずは付加タイムのファイルが格納されるフォルダについてです。

ファイル自体はTARGETがC:\TFJVフォルダにインストールされているとすると

C:\TFJV\FUKA_TIME\2014

のようにFUKA_TIMEフォルダ内の年度を示す数値4桁のサブフォルダに付加タイムのファイルが格納されます。

ファイル名は、レース開催ごとに1ファイルが作成され、

"FT"+年度(数値4桁)+開催回(1桁)+場所コード(1桁)+".DAT"

となります。

例えば2014年の3回阪神開催であれば

FT201439.DAT

となります。

なお上記で使われる場所コードは

1  札幌
2  函館
3  福島
4  新潟
5  東京
6  中山
7  中京
8  京都
9  阪神
A  小倉

です。


■ファイルフォーマット

基本的に1レース1行です。1日12レース前提で、

1日目第1レース:1行目
1日目第2レース:2行目
1日目第12レース:12行目
2日目第1レース:13行目

に付加タイムが記録されます。ダービー等1日に12Rない場合は空行になります。

次に1行にどのように付加タイムが記録されるかですが、

各レースの馬番1〜18の馬ごとに5バイトの固定長(=90バイト)で付加タイム×10倍の値が格納されます。

付加タイム:-0.7の場合、-7と格納される。

例として2014年3回阪神1日目の7Rに以下のように付加タイムを設定するためには、

01.png


FT201439.DATファイルの7行目に

***-9***-7***-7***-8***-8***-8**-13**-11***-8
***-8**-10***-7***-8***-7***-8***-7**********

と格納すればよいことになります。
(*の部分は実際は半角スペースです。また表示上の都合で途中に改行を入れていますが実際は1行です)


以上、付加タイムをプログラムで生成する場合の参考にしてもらえれば幸いです。




posted by knaka at 21:51 | 競馬プログラミング | このブログの読者になる | 更新情報をチェックする

2014年07月27日

TARGET出力CSVファイル処理にAWKをオススメします

データ派あるいは指数派だとTARGETから出力されるCSVファイルを色々加工して、競馬予想に活かしたいというニーズがあると思います。

色々な方法はありますが、私の場合AWKというプログラミング言語を長年CSVファイルの処理に使っています。プログラミング言語というと敷居が高く感じるかもしれませんが、AWKはテキスト処理に特化した言語でCSVファイル処理が簡単にできます。また実行環境のインストールもファイルコピーのみでOKで、インストールなどは不要です。

AWKとTARGETから出力されるCSVファイル処理は相性がいいので紹介します。


■AWKの具体例

具体的には以下の様なコードを書くだけで

==========================
BEGIN{
FS=",";
OFS=",";
print "年月日","競馬場","R","馬番","馬名"
}
{
print $1,$2,$3,$4,$8
}
==========================

「CSVファイルの1行目にヘッダを追加し、特定列のみ出力する」
というような、CSVファイルを扱うのにありがちな処理が簡単に記述できます。

ちなみに上記のプログラムはTARGETの「出馬表分析CSV形式出力ファイル」

出馬表分析.png


を以下の様なCSVファイルに加工する処理になります。

年月日,競馬場,R,馬番,馬名
140719,函館,1, 1,ルミノーソ
140719,函館,1, 2,アルボルデヴィダ
140719,函館,1, 3,イシドールス
140719,函館,1, 4,シシャモショウグン
140719,函館,1, 5,フィールドリアン



■上記プログラムの概略説明

AWKは基本的に
  1. インプットされたCSVファイルを1行ずつ読込
  2. 読み込んだ行に何らかの処理を実施
  3. 処理結果を出力
  4. 上記をCSVファイル最終行まで繰り返し
のように動作します。

プログラム内部についても簡単に記述すると
  • BEGIN{}で囲まれた部分はCSVファイル読込までの事前処理を記述。
  • FS、OFSはそれぞれ、入力、出力CSVファイルの列区切りを示す文字の指定
  • printは文字列の出力
  • {}で囲まれた部分は読み込んだCSVファイル1行にたいして行う処理
  • print $1,$2,$3,$4,$8 はCSVファイルの1,2,3,4,8列目を出力
というような感じです。


■AWKのインストール方法

私はもう少し古いバージョンを使っているのですが、今からAWKを入手する場合

等からファイルをダウンロードすればいいでしょう。
ダウンロード後解凍し、任意のフォルダにコピーするだけでOKです。
以下

C:\AWK

というフォルダにファイル一式をコピーした前提で記述します。


■AWKプログラムの実行方法

上記のようなAWKプログラムを例えばC:\TG\DEN.AWK のようにテキストファイルで保存しておきます。
入力元のCSVファイルをC:\TGフォルダのDE.CSV、処理結果をDEN.TXTファイルに出力する場合、以下のようにコマンドプロンプトから実行すればOKです。

CD C:\TG
C:\AWK\GAWK -f DEN.AWK DE.CSV >DEN.TXT


■まとめ

上記の通りAWKはテキスト処理に特化しており、CSVファイル処理に向く言語です。無料で実行環境も簡単に作れますので、TARGETで出力されるCSVファイル処理を考えている人は試してみてください。

なお私はAWKは以下の書籍で勉強しましたが、現在は入手困難のようです。




posted by knaka at 09:06 | 競馬プログラミング | このブログの読者になる | 更新情報をチェックする