pnclDATA Chave gratuita

odds em queda da pinnacle / bot do telegram / python

Odds da Pinnacle em queda no Telegram

Um script Python curto mantém o stream de quedas da API de odds da Pinnacle aberto e publica cada alerta no seu chat do Telegram: a linha que se moveu, o preço antes e depois e o preço justo. Seu celular vibra enquanto a brecha nas outras casas ainda está aberta.

O stream de quedas vem com Alertas de queda por US$ 99 por mês, Alertas + varredura e Volume total.

Do stream ao seu chat, usando o alerta de exemplo documentado

o que o stream envia

data: [{
  "home": "Sunshine Coast Phoenix",
  "away": "Cairns Dolphins",
  "league": "Australia - NBL1 Women",
  "sport": "Basketball",
  "sect": "Moneyline",
  "outcome": "Home",
  "from_price": 2.86,
  "to_price": 2.7,
  "nvp": 3.04,
  ...
}]

o que seu chat mostra

Sunshine Coast Phoenix v Cairns Dolphins

Moneyline Casa

2.86 -> 2.7 (-5.59%)

justo 3.04

Futebol, tênis e basquete, quedas de 5% ou mais: ambos são configurações no topo do script.

bot.py
import json
import os
import requests

BASE = os.environ["ODDS_BASE_URL"]
KEY = os.environ["ODDS_API_KEY"]
BOT = os.environ["TG_BOT_TOKEN"]
CHAT = os.environ["TG_CHAT_ID"]
SPORTS = {"Soccer", "Tennis",
          "Basketball"}
SEND = ("https://api.telegram.org/bot"
        + BOT + "/sendMessage")


def send(text):
    requests.post(SEND,
                  data={"chat_id": CHAT,
                        "text": text},
                  timeout=10)


def line(a):
    was = a["from_price"]
    now = a["to_price"]
    pct = 100 * (was - now) / was
    return "\n".join([
        f"{a['home']} v {a['away']}",
        f"{a['sect']} {a['outcome']}",
        f"{was} -> {now} (-{pct:.2f}%)",
        f"fair {a['nvp']}",
    ])


r = requests.get(
    BASE + "/odds-drop",
    params={"min_drop": 5, "key": KEY},
    stream=True,
    timeout=(10, None),
)
r.raise_for_status()

for raw in r.iter_lines():
    if not raw.startswith(b"data:"):
        continue
    msg = json.loads(raw[5:])
    if isinstance(msg, dict):
        continue  # connected or error
    for a in msg:
        if a["sport"] in SPORTS:
            send(line(a))

O bot inteiro

Ele abre uma requisição ao stream de quedas ao vivo com o seu limite, lê cada linha data: e ignora mensagens de controle como a saudação de conexão. Todo alerta nos esportes que você listou vira uma mensagem de quatro linhas; o tamanho da queda é calculado a partir dos dois preços, porque o stream envia os preços em vez da porcentagem.

O stream não tem filtro de esporte próprio, e é por isso que o script verifica sport. Para quedas pré-jogo, aponte uma segunda cópia para /odds-drop-prematch: ao vivo e pré-jogo têm cada um sua própria conexão.

  1. Envie uma mensagem ao @BotFather no Telegram, crie um bot e copie o token.
  2. Envie qualquer mensagem ao seu bot, depois leia seu ID de chat na página getUpdates do bot.
  3. Exporte as quatro variáveis abaixo e execute o script em uma máquina que fique ligada.
terminal
pip install requests
export ODDS_API_KEY="your key"
export ODDS_BASE_URL="https://..."
export TG_BOT_TOKEN="from BotFather"
export TG_CHAT_ID="your chat id"
python bot.py
  • Menos quedas, maioresAumente min_drop para 8 ou 10 para um chat mais silencioso. O mínimo é 1.
  • Só valorCompare o nvp de cada alerta com o preço da sua casa de apostas antes de enviar, e publique só os que estão acima do justo.
  • Mantenha-se conectadoEnvolva a requisição em um loop que reconecta após um erro de rede, esperando mais a cada falha; quedas durante a lacuna não são reenviadas.

Três mudanças que valem a pena

O script é deliberadamente pequeno. Estas são as edições que a maioria das pessoas faz na primeira semana.

Confira um preço contra o justo à mão

Como limiares e janelas definem uma queda, no pnclPULSE

Roda o próprio modelo? Pegue os frames brutos

O stream de alertas é processado para você: uma mensagem por queda, com o preço justo anexado. Se o seu código mantém o próprio estado de mercado, o feed WebSocket bruto envia cada frame bruto e deixa o processamento para você. É um complemento de US$ 99 a cada 30 dias em Alertas + varredura e Volume total, não um plano separado.

stream para bot.py para chat · justo 2.34 · queda 5,06%

O script é gratuito; o stream que ele escuta vem com Alertas de queda, Alertas + varredura e Volume total