← Powrót do listy

OpenClaw x Polymarket: Ręce, aby nauczyć się jak budować zautomatyzowaną maszynę handlową Ludzie

itadol5j

Polymarket Trading Machine People

Co to jest Polymarket?

Polymarket jest największym rynkiem prognozowanym na świecie, gdzie użytkownicy mogą handlować prawdopodobieństwem wydarzeń - od zawodów sportowych po wybory polityczne, od zaszyfrowanych cen pieniędzy po wiadomości naukowe i technologiczne. Sposób, w jaki transakcja ma miejsce, jest podobny do "podwójnej mocy": kupuje "tak" lub "nie" symbolu dla danego wyniku i jest nagradzany, jeśli wynik nastąpi.

Jej podstawowe mocne strony to:

  • Całkowicie zdecentralizowany.: Otwarte i przejrzyste w oparciu o łańcuch Polygon
  • Odkrycie ceny w czasie rzeczywistym: Prognozy rynkowe są zazwyczaj bardziej dokładne niż tradycyjne sondaże
  • Otwórz API: Dostarczanie pełnych transakcji API w celu wsparcia transakcji automatycznych

Preparaty

Zainstaluj Python Dependence

Potrzebujemy go. py-clob-client Ten oficjalny SDK:

pip install py-clob-client requests python-dotenv

2. Dostęp do portfeli i klucza API

Polymark obsługuje dwa rodzaje uwierzytelniania:

  • Portfel EOA(Zapłać za gaz)
  • Proxy Portfel(Transakcja bez gazu)

Oto najprostszy sposób zademonstrowania -- portfel EOA:

  1. Tworzenie portfela Polygon (zalecane z MetaMask)
  2. Depozyt USDC.e(dla handlu) i małych POL(dla gazu)
  3. Do portfela. Klucz prywatny
  4. Korzystanie z SDK create_or_derive_api_creds() Metoda automatycznego generowania bonów API

3. Środowisko OpenClaw

OpenClaw exec Narzędzie wykonuje kod Pythona i doskonale nadaje się do uruchomienia tego zautomatyzowanego skryptu.

Kod podstawowy uzyskany

Podstawowy: Monitoruj rynek + Automatyczne umieszczanie listy

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

Progress: Średnia maszyna strategiczna zwrotu Ludzie

Główną ideą tej strategii jest zakup go automatycznie, gdy ceny odbiegają od średniej i czekać na zwrot.

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)

Integracja OpenClaw

To bardzo proste prowadzić tego robota w OpenClaw. Możesz zapisać powyższy kod jako polymarket_bot.py, a następnie wykonać w OpenClaw:

运行 python polymarket_bot.py

Uwaga

Wskazówki dotyczące ryzyka

  • Przewidywana zmienność rynku, proszę korzystać tylko ze środków, które są przystępne cenowo
  • Zalecane jest, abyśmy najpierw przetestowali sieć.
  • Transakcje robotyczne wymagają stałego nadzoru, aby zapobiec ekstremom.

2. Ograniczenia API

  • Otwórz API bez uwierzytelniania
  • Deal API potrzebuje portfela i klucza API
  • Uważaj na ograniczenia prędkości.

Optymalizacja gazu

  • Tryb EOA wymaga gazu do płatności POL
  • Możesz ubiegać się o portfele proxy do wykonania transakcji Gasless