自動投票の作り方【参ノ型】

プログラミング

競馬予想プログラミングに関する記事を「投稿まとめ」で一覧にしてます。この記事は「自動投票」の一覧に含まれてます。一覧の順に読むとステップごとで分かりやすいです。

【参ノ型】自作プロシージャで買い目を登録する

フローチャートにある「カスタム処理B」がこれに該当します。「app_custom_procedure」というプロシージャで、買い目を登録する自作プロシージャを呼び出す方法です。

呼び出しは任意なので必要な場合のみ使います。例えば「カスタム処理A」だけ使う場合は、「カスタム処理B」は初期状態のまま何もしなくてOKということです。

  • オリジナルの指数を作るロジックが複雑で、
  • 条件が「自動投票設定登録」画面だけで設定できない、
  • 私にはプログラミングの才能がある、または学習する意志がある。

という場合はこの【参ノ型】しかありません。【参ノ型】を使えばどんな予想も自動投票できます。なぜなら本来は「自動投票設定登録」画面の条件でソフトが作る買い目データを、自作プロシージャで作るからです。

【参ノ型】はプログラミングのスキルと少々の労力を必要とします。それだけに何でも自由で、どんなロジックも実現できます。はじめに自分の考える自動投票が【壱ノ型】【弐ノ型】で実現できないか?検討してください。

【参ノ型】に必要なことは、ざっくり次の3つの流れになります。

  1. 自動投票設定登録」画面で「カスタム処理B」用の投票Noを登録する
  2. 「カスタム処理A」で「カスタム処理B」用のダミー指数を登録する
  3. 「カスタム処理B」で買い目を登録する自作プロシージャを呼び出す

それぞれ説明します。

「自動投票設定登録」画面で「カスタム処理B」用の投票Noを登録する

「投票No」の登録は、自動投票を開始するトリガー(自動的に処理を起動する仕組み)として必要です。言い換えればソフトの自動投票に必須ということです。

同じレースで複数の式別を投票する場合は、式別ごとに投票Noを登録する必要があります。

まず「自動投票設定登録」画面で、次の4つの項目を設定します。操作方法は「自動投票設定を登録する」のマニュアルを参考にしてください。

  1. 投票No
  2. 投票名
  3. 式別
  4. 指数Noと順位フィルター

買い目は自作プロシージャで作るので、上記以外の項目は初期値のままでOK。この画面の設定からソフトが買い目を登録するときリソースを無駄遣いしないように「順位フィルター」は、

  • 単勝、複勝の場合、1~1
  • 馬連、ワイド、馬単の場合、1~2
  • 3連複、3連単の場合、1~3

で設定してください。初期値のままだと3連単の場合、4896通りものレコードを無駄に登録してしまいます。例えば、式別が「3連単」なら次のような感じで設定してください。「指数No」は、今回の例では【参ノ型】にちなんで「103」にしました。

「カスタム処理A」で「カスタム処理B」用のダミー指数を登録する

さっきの「自動投票設定登録」画面で設定した指数No「103」に一致するレコードが「指数2」テーブルに存在しない場合は、そのレースの自動投票処理をスキップしてしまいます。なので、テキトーな値で「ダミー指数」を登録する必要があります。ダミー指数は次のように、馬毎レース情報の馬番を指数と順位にすれば簡単です。そのプロシージャを「myp_shisu_dummy」の名前で作りました。

このページの最後に、サンプルのプロシージャを有料会員に公開しています。ユーザーがカスタマイズして利用することも可能ですし、SQLを学習したい方の参考にもなります。

サンプルのプロシージャで作ったダミー指数はこんな感じです。馬番を指数と順位にしただけ。

逆に、天候や馬場状態など何らかの条件で、そのレースの投票をスキップしたい場合は指数Noのレコードを登録しないでください。【弐ノ型】のサンプル「馬体重ランキング指数」でも同じことをやってるんで、それを参考にしてください。

そして次のように、ダミー指数を登録するプロシージャを「カスタム処理A」で呼び出す設定をします。

設定のやり方は【弐ノ型】の手順と同じです。詳しくは【弐ノ型】のマニュアルを見てください。

「カスタム処理A」で呼び出す代わりに、自動投票の実行前にまとめてダミー指数を登録しておいてもOKです。

買い目一時表1(apd_kaime_tmp_1)

ここからいよいよ【参ノ型】の要である、自作プロシージャによる買い目の登録です。投票ファイルは次の2つのテーブルのレコードを使ってソフトが作ります。

  • 買い目一時表1(apd_kaime_tmp_1)
  • 買い目一時表2(apd_kaime_tmp_2)

ここへ自作プロシージャで買い目を登録するのですが「買い目一時表1」のレコードは初期状態のまま何もしないでください。自動投票設定登録」画面の設定でソフトが作ったレコードをそのまま使います。

なお、自作プロシージャで残高を取得したい場合は「買い目一時表1」の「残高」を見ます。フローチャートの流れでは、投票Noごとに最新の残高が更新されます。

テーブル定義は「A5:SQL Mk-2」で確認してください。画面左側の「データベース」のツリーを次の手順で展開します。

  1. 「>」をクリックして「pckeiba 」のツリーを展開します。
  2. 「>」をクリックして「public <カレントスキーマ>」のツリーを展開します。
  3. 「>」をクリックして「テーブル」のツリーを展開します。
  4. apd_kaime_tmp_1」をダブルクリックします。
  5. 「カラム」のタブをクリックします。

買い目一時表2(apd_kaime_tmp_2)

「買い目一時表2」に自作プロシージャで買い目を登録します。「A5:SQL Mk-2」で出力したExcelの定義書にデータ仕様を書いてみました。

備考に黒字で書いてる項目が固定値で「データ区分」や「投票No」はソフトが作った「買い目一時表1」と同じ、その値を使います。

赤字で書いてる項目がユーザーが自作プロシージャで編集すべき値です。編集すべき項目は、次の4つ。

  1. 組番1(kumiban_1)※0埋めの馬番2桁。例えば1番の場合 ’01’ を設定する
  2. 組番2(kumiban_2)※馬連、ワイド、馬単、3連複、3連単 以外は null を設定する
  3. 組番3(kumiban_3)※3連複、3連単 以外は null を設定する
  4. 投票枚数(tohyo_maisu)※1枚 100円

上記以外の項目は編集しません。さらに、自作プロシージャで買い目を登録するために必要なことは、ざっくり次の2つの流れです。

  1. ソフトが作った「買い目一時表2」のレコードを全削除する。
  2. 自分が作った買い目を「買い目一時表2」に登録する。

ここまでの話を実際のプロシージャで書くと次のようになります。これは【参ノ型】のテンプレートとなるサンプルのプロシージャです。名前は「myp_kaime」にしました。
↓この画像は上下左右にスクロールできます。

ではこの【参ノ型】のテンプレートについて解説します。

まず、23~25行目で「買い目一時表2」のソフトが作ったダミーの買い目を全削除してます。一時表のレコードは投票No単位でソフトが作るのでWHERE句は必要ありません。プロシージャの引数の、レースのキーも必要ないのですがテンプレート的に用意してます。引数は、あなたの予想プログラミングにとって不要なら削除してもOKです。70~74行目のWHERE句も本来なら必要ないですが、このテンプレートをさらにカスタマイズして使う場合を考えて書いてます。速報系データを結合するとき等です。

次に、28行目以降で「INSERT~SELECT文」というSQLを使って「買い目一時表2」にレコードを登録してます。「INSERT~SELECT文」とは、SELECT文の結果をINSERTするというSQLです。SELECT文はINSERT先の「買い目一時表2」のテーブル定義と同じ結果を返すSELECT文にしてます。「INSERT~SELECT文」のお決まりパターンです。

47~52行目のデータ区分、投票No、レースのキーは「買い目一時表1」の値をそのまま使ってます。こうすれば、同じであるべきところに間違いなく同じ値が入るので。

63~69行目でレースのキーを持つという仮定の「myd_kaime」を結合してます。「myd_kaime」という名前のテーブルが存在しないとエラーになるので、このテンプレートではコメントアウトしてます。ここの部分は複数のテーブルを結合しても良いし、クエリでもOKです。テーブルの名前も好きにして良いですよ。SQLとして成立するなら何でもOK。

このテンプレートは、このプロシージャの呼び出し以前に買い目データを登録済みの「myd_kaime」という名前の自作テーブルから値を取ってくる、というイメージで書きました。

そして、53~55行目の組番と、58行目の投票枚数は、SQLの構文として成立するように、テンプレートとして仮の値(’00’0)を埋めてます。この、仮の値の部分に「myd_kaime」の値を「my.kumiban_1, my.kumiban_2…」みたいな感じで書くのです。

あくまでテンプレートなので他のやり方でもOKです。あなたの予想プログラミングにとって最善のSQLが「INSERT~SELECT」になるとはかぎりません。ステップを分けてUPDATE文も必要になるかもしれません。【弐ノ型】と【参ノ型】を組み合わせてもOK。とにかく最終的に「買い目一時表2」に期待通りの買い目が登録できたらOKです。

カスタム処理B(app_custom_procedure)

そして「myp_kaime」を「カスタム処理B」で呼び出す設定をしたら完了です。ここも、もちろん複数行の「CALL~」を書いて、複数のプロシージャを呼んでもOKです。

設定のやり方は【弐ノ型】の手順と同じです。詳しくは【弐ノ型】のマニュアルを見てください。※「app_custom_shisu」を「app_custom_procedure」に読み替えて。

以上で【参ノ型】の伝授は終わりです。

「自動投票の作り方【参ノ型】」の実戦的なサンプルとして「最新オッズと期待値で自動投票するプロシージャ」を作りました。こちらも参考にしてください。

「投稿まとめ」にもどる

SQLファイルのダウンロードと使い方

コンテンツの残りを閲覧するにはログインが必要です。 お願い . あなたは会員ですか ? 会員について