OpenClaw x Polimercado: Manos para enseñarte cómo construir una máquina comercial automatizada Personas

¿Qué es Polymarket?
Polimercado es el mayor mercado de pronósticos del mundo, donde los usuarios pueden cambiar la probabilidad de eventos, desde concursos deportivos hasta elecciones políticas, desde precios monetarios cifrados hasta noticias científicas y tecnológicas. La forma en que se lleva a cabo la transacción es similar a "poder real": compra un "sí" o "no" token para un resultado dado y es recompensado si el resultado ocurre.
Sus puntos fuertes son:
- Totalmente descentralizado.: Open and transparent based on the Polygon chain
- descubrimiento de precios en tiempo real: Los pronósticos del mercado tienden a ser más exactos que las encuestas tradicionales
- API Open: Proporcionar API de transacciones completas para apoyar transacciones automatizadas
Preparativos
Instalar Python Dependencia
Lo necesitamos. py-clob-client Este SDK oficial:
pip install py-clob-client requests python-dotenv
2. Acceso a carteras y clave API
Polymark admite dos tipos de autenticación:
- EOA Wallet(Paga a Gas)
- Proxy Wallet(Gasless transactions)
Aquí está la manera más simple de demostrar... la billetera EOA:
- Crear una billetera Polygon (recomendada con MetaMask)
- Depósito USDC.e(para el comercio) y pequeños POL(para Gas)
- Por la billetera. Clave privada
- Usando SDK
create_or_derive_api_creds()Método para generar automáticamente cupones API
3. OpenClaw Environment
OpenClaw exec La herramienta ejecuta el código Python y es muy adecuado para ejecutar este script automatizado.
Código básico
Básico: Supervisar el mercado + Lista automática
import os
import time
import requests
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import OrderArgs, OrderType
from py_clob_client.order_builder.constants import BUY, SELL
HOST = "https://clob.polymarket.com"
CHAIN_ID = 137
PRIVATE_KEY = os.getenv("POLYMARKET_PRIVATE_KEY")
FUNDER_ADDRESS = os.getenv("POLYMARKET_FUNDER")
def init_client():
temp_client = ClobClient(HOST, key=PRIVATE_KEY, chain_id=CHAIN_ID)
api_creds = temp_client.create_or_derive_api_creds()
client = ClobClient(HOST, key=PRIVATE_KEY, chain_id=CHAIN_ID, creds=api_creds, signature_type=0, funder=FUNDER_ADDRESS)
return client
def get_markets(tag=None, limit=10):
url = "https://gamma-api.polymarket.com/markets"
params = {"active": "true", "closed": "false", "limit": limit}
if tag:
params["tagName"] = tag
resp = requests.get(url, params=params)
return resp.json()
def get_price(token_id):
url = f"https://gamma-api.polymarket.com/markets/{token_id}/price"
resp = requests.get(url)
return resp.json()
def place_order(client, token_id, price, size, side=BUY):
order = client.create_and_post_order(
OrderArgs(token_id=token_id, price=price, size=size, side=side, order_type=OrderType.GTC),
options={"tick_size": "0.01", "neg_risk": False}
)
return order
Progreso: Máquina de estrategia de retorno promedio
La idea central de esta estrategia es comprarla automáticamente cuando los precios se desvían del promedio y esperan el regreso.
import logging
import time
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class MeanReversionBot:
def __init__(self, client, token_id, threshold=0.1, size=10):
self.client = client
self.token_id = token_id
self.threshold = threshold
self.size = size
def get_mid_price(self):
data = get_price(self.token_id)
return float(data.get("price", 0.5))
def check_and_trade(self):
mid_price = self.get_mid_price()
logger.info(f"当前中间价: {mid_price}")
if mid_price < 0.5 - self.threshold:
logger.info(f"价格偏低,买入!")
order = place_order(self.client, self.token_id, mid_price, self.size, BUY)
logger.info(f"订单已下单: {order}")
elif mid_price > 0.5 + self.threshold:
logger.info(f"价格偏高,卖出!")
order = place_order(self.client, self.token_id, mid_price, self.size, SELL)
logger.info(f"订单已下单: {order}")
else:
logger.info("价格在合理区间,不交易")
def run(self, interval=60):
logger.info(f"机器人启动,监控 token: {self.token_id}")
while True:
try:
self.check_and_trade()
except Exception as e:
logger.error(f"错误: {e}")
time.sleep(interval)
if __name__ == "__main__":
client = init_client()
markets = get_markets(tag="politics", limit=1)
if markets:
token_id = markets[0]["clobTokenIds"][0]
print(f"监控市场: {markets[0]['question']}")
bot = MeanReversionBot(client, token_id, threshold=0.15, size=5)
bot.run(interval=120)
OpenClaw Integration
Es muy sencillo dirigir este robot en OpenClaw. Puede guardar el código anterior como polymarket_bot.py, y luego ejecutar en OpenClaw:
运行 python polymarket_bot.py
Atención
Consejos de riesgo
- La volatilidad del mercado proyectada, por favor utilice sólo los fondos que son asequibles
- Se recomienda probar la red primero.
- Las transacciones robóticas requieren vigilancia constante para prevenir los extremos.
2. Restricciones de API
- Abrir API sin autenticación
- Deal API necesita cartera y API Key
- Cuidado con los límites de velocidad.
Optimización del gas
- El modo EOA requiere pago POL Gas
- Puede solicitar carteras proxy para realizar la transacción Gasless