競艇予想プログラミングに関する記事を「投稿まとめ」で一覧にしてます。この記事は「自動投票」の一覧に含まれてます。一覧の順に読むとステップごとで分かりやすいです。
【参ノ型】自作プロシージャで買い目を登録する
フローチャートにある「カスタム処理B」がこれに該当します。「app_custom_procedure」というプロシージャで、買い目を登録する自作プロシージャを呼び出す方法です。
呼び出しは任意なので必要な場合のみ使います。例えば「カスタム処理A」だけ使う場合は、「カスタム処理B」は初期状態のまま何もしなくてOKということです。
- オリジナルの指数を作るロジックが複雑で、
- 条件が「自動投票設定登録」画面だけで設定できない、
- 私にはプログラミングの才能がある、または学習する意志がある。
という場合はこの方法しかありません。これを使えばどんな予想も自動投票できます。なぜなら本来は「自動投票設定登録」画面の条件でソフトが作る買い目データを、自作プロシージャで作るからです。
【参ノ型】はプログラミングのスキルと少々の労力を必要とします。それだけに何でも自由で、どんなロジックも実現できます。はじめに自分の考える自動投票が【壱ノ型】【弐ノ型】で実現できないか?検討してください。
【参ノ型】に必要なことは、ざっくり次の3つの流れになります。
- 「自動投票設定登録」画面で「カスタム処理B」用の投票Noを登録する
- 「カスタム処理A」で「カスタム処理B」用のダミー指数を登録する
- 「カスタム処理B」で買い目を登録する自作プロシージャを呼び出す
それぞれ説明します。
「自動投票設定登録」画面で「カスタム処理B」用の投票Noを登録する
「投票No」の登録は、自動投票を開始するトリガー(自動的に処理を起動する仕組み)として必要です。言い換えればソフトの自動投票に必須ということです。
同じレースで複数の式別を投票する場合は、式別ごとに投票Noを登録する必要があります。
まず「自動投票設定登録」画面で、次の4つの項目を設定します。操作方法は「自動投票設定を登録する」のマニュアルを参考にしてください。
- 投票No
- 投票名
- 式別
- 指数Noと順位フィルター
買い目は自作プロシージャで作るので、上記以外の項目は初期値のままでOK。この画面の設定からソフトが買い目を登録するときリソースを無駄遣いしないように「順位フィルター」は、
- 単勝、複勝の場合、1~1
- 2連複、拡連複、2連単の場合、1~2
- 3連複、3連単の場合、1~3
で設定してください。初期値のままだと3連単の場合、120通りものレコードを無駄に登録してしまいます。例えば、式別が「3連単」なら次のような感じで設定してください。「指数No」は、今回の例では【参ノ型】にちなんで「103」にしました。
「カスタム処理A」で「カスタム処理B」用のダミー指数を登録する
さっきの「自動投票設定登録」画面で設定した指数No「103」に一致するレコードが「指数2」テーブルに存在しない場合は、そのレースの自動投票処理をスキップしてしまいます。なので、テキトーな値で「ダミー指数」を登録する必要があります。ダミー指数は次のように、出走表(艇番)の艇番を指数と順位にすれば簡単です。そのプロシージャを「myp_shisu_dummy」の名前で作りました。
このページの最後に、サンプルのプロシージャを有料会員に公開しています。ユーザーがカスタマイズして利用することも可能ですし、SQLを学習したい方の参考にもなります。
サンプルのプロシージャで作ったダミー指数はこんな感じです。艇番を指数と順位にしただけ。
逆に、天候など何らかの条件で、そのレースの投票をスキップしたい場合は指数Noのレコードを登録しないでください。【弐ノ型】のサンプル「全国3連率ランキング指数」でも同じことをやってるんで、それを参考にしてください。
そして次のように、ダミー指数を登録するプロシージャを「カスタム処理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」で確認してください。画面左側の「データベース」のツリーを次の手順で展開します。
- 「>」をクリックして「pckyotei」のツリーを展開します。
- 「>」をクリックして「public <カレントスキーマ>」のツリーを展開します。
- 「>」をクリックして「テーブル」のツリーを展開します。
- 「apd_kaime_tmp_1」をダブルクリックします。
- 「カラム」のタブをクリックします。
買い目一時表2(apd_kaime_tmp_2)
「買い目一時表2」に自作プロシージャで買い目を登録します。「A5:SQL Mk-2」で出力したExcelの定義書にデータ仕様を書いてみました。
備考に黒字で書いてる項目が固定値で「データ区分」や「投票No」はソフトが作った「買い目一時表1」と同じ、その値を使います。
赤字で書いてる項目がユーザーが自作プロシージャで編集すべき値です。編集すべき項目は、次の4つ。
- 組番1(kumiban_1)※艇番1桁。例えば1番の場合 ‘1’ を設定する
- 組番2(kumiban_2)※2連複、拡連複、2連単、3連複、3連単 以外は null を設定する
- 組番3(kumiban_3)※3連複、3連単 以外は null を設定する
- 投票枚数(tohyo_maisu)※1枚 100円
上記以外の項目は編集しません。さらに、自作プロシージャで買い目を登録するために必要なことは、ざっくり次の2つの流れです。
- ソフトが作った「買い目一時表2」のレコードを全削除する。
- 自分が作った買い目を「買い目一時表2」に登録する。
ここまでの話を実際のプロシージャで書くと次のようになります。これは【参ノ型】のテンプレートとなるサンプルのプロシージャです。名前は「myp_kaime」にしました。
↓この画像は上下左右にスクロールできます。
ではこの【参ノ型】のテンプレートについて解説します。
まず、23~25行目で「買い目一時表2」のソフトが作ったダミーの買い目を全削除してます。一時表のレコードは投票No単位でソフトが作るのでWHERE句は必要ありません。プロシージャの引数の、レースのキーも必要ないのですがテンプレート的に用意してます。あなたの予想プログラミングにとって不要なら削除してもOKです。61~65行目の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行目の組番と、49行目の投票枚数は、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」に読み替えて。
以上で【参ノ型】の伝授は終わりです。
「自動投票の作り方【参ノ型】」の実戦的なサンプルとして「最新オッズと期待値で自動投票するプロシージャ」を作りました。こちらも参考にしてください。