ピナクルのオッズを使うベッティングボットの設計
回答: ほとんどのベッティング/トレーディングボットは5つの部分でできています。(1) データフィード、(2) イベントと市場のローカル状態、(3) シグナルのルール、(4) リスクチェック、(5) 自分の口座での実行です。PinnFeedは1を提供し、2と3を助けます。WebSocket(Builder)は完全なsnapshotを送り、その後はピナクルの価格が変わるたびにfair、margin、maxStake付きのdeltaフレームを送ります。ベットは行いません。実行は、それを認める事業者で、ベットが合法な地域において、あなた自身が行うものです。
パイプライン#
| 部分 | 役割 | PinnFeedでは |
|---|---|---|
| 取り込み | 接続を維持し、pingにpongで応答し、バックオフ付きで再接続 | wss://pinnfeed.io/v1/stream(PythonとNodeのガイド) |
| 状態 | market.id → 最新の市場のマップ。op: "remove"で削除 | snapshotとdelta |
| シグナル | 価格の下落、fairを上回るオファー、ラインの変化 | スチーム検知ガイド |
| リスク | ステーク上限、maxStake >= 100、イベントごとの最大エクスポージャー、緊急停止 | あなたのコード |
| 実行 | ベットを置き、価格と結果を記録 | 利用する事業者または取引所 |
最小のシグナルループ(Python)#
book = {} # market id -> market
def on_frame(msg, alert):
if msg["type"] == "snapshot":
for m in msg["markets"]:
book[m["id"]] = m
elif msg["type"] == "delta":
for ch in msg["changes"]:
if ch["kind"] != "market":
continue
if ch["op"] == "remove":
book.pop(ch["id"], None)
continue
new, old = ch["market"], book.get(ch["market"]["id"])
book[new["id"]] = new
if not old or (new["maxStake"] or 0) < 100:
continue
for o_new, o_old in zip(new["outcomes"], old["outcomes"]):
if o_old["decimal"] and o_new["decimal"] / o_old["decimal"] - 1 <= -0.04:
alert(new["eventId"], o_new["name"], o_old["decimal"], o_new["decimal"])
on_frameは任意のクライアントにつなげます。たとえばGoクライアントです。すべてのシグナルと判断を記録し、後で終値と比べてください:CLV付きベット記録。
設計のヒント#
- 取り込みはサーバーレス関数ではなく、常時稼働のホストで動かします。
- 実際に賭ける前に、ボットが何をするかだけを記録する
paperモードを用意します。 - プロセスごとにWebSocketは1本にして内部で配信します。Builderは3接続、Proは10接続です。
4008 slow_consumerには、受信ループから処理を外に出して対応します。
プラン#
Builder(月額99ユーロ):WebSocket、全13競技、全市場。Pro(月額199ユーロ):10接続とrawフレーム。3日間のトライアルがあります。カード登録が必要で、解約しない場合は3日目の後に課金されます。 まずは無料のRESTで試作できます。無料キー:登録。
18歳以上の方を対象とした教育目的のコンテンツです。自動ベットは短時間で大きな損失につながることがあります。予想や利益の約束ではありません。日本では刑法により賭博は原則として禁止されています。
よくある質問#
PinnFeedはボットの代わりにベットを置けますか?#
いいえ。読み取り専用のデータです。実行は事業者または取引所の自分の口座で行います。
事業者はボットを認めていますか?#
多くの事業者は利用規約で自動ベットを制限しています。実行を自動化する前に確認してください。