OpenClaw x Polymarket: Руки, чтобы научить вас, как построить автоматическую торговую машину

Что такое полимаркет?
Polymarket является крупнейшим прогнозным рынком в мире, где пользователи могут торговать вероятностью событий — от спортивных соревнований до политических выборов, от зашифрованных денежных цен до новостей науки и техники. Способ, которым происходит транзакция, похож на «двойную силу»: покупает токен «да» или «нет» для данного результата и вознаграждается, если результат происходит.
Его основные сильные стороны:
- Полностью децентрализован.Открытый и прозрачный на основе цепочки Polygon
- Открытие цен в реальном времениПрогнозы рынка, как правило, более точны, чем традиционные опросы
- Открыть APIПредоставить полный API транзакций для поддержки автоматизированных транзакций
Подготовка
Настройка Python Dependence
Нам это нужно. py-clob-client Официальный SDK:
pip install py-clob-client requests python-dotenv
2. Доступ к кошелькам и API-ключу
Polymark поддерживает два типа аутентификации:
- Кошелек EOA(Заплатите за газ)
- Прокси-кошелек(Бесгазовая транзакция)
Вот самый простой способ продемонстрировать кошелек EOA:
- Создание кошелька Polygon (рекомендуется MetaMask)
- депозит USDCeДля торговли и малых ПОЛ(для газа)
- Для кошелька. Частный ключ
- Использование SDK
create_or_derive_api_creds()Способ автоматического создания ваучеров API
3. OpenClaw Environment
OpenClaw exec Инструмент выполняет код Python и хорошо подходит для запуска этого автоматизированного скрипта.
Достигнут основной код
Основная статья: Мониторинг рынка + Автоматический листинг
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
Прогресс: Средняя стратегия возврата Люди
Центральная идея этой стратегии заключается в том, чтобы покупать ее автоматически, когда цены отклоняются от среднего и ждут возврата.
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
Очень просто запустить этого робота в OpenClaw. Вы можете сохранить код выше polymarket_bot.pyЗатем выполните в OpenClaw:
运行 python polymarket_bot.py
Внимание
Советы по риску
- Прогнозируемая волатильность рынка, пожалуйста, используйте только доступные средства
- Рекомендуется сначала проверить сеть.
- Роботизированные транзакции требуют постоянного наблюдения для предотвращения крайностей.
2.Ограничения API
- Открытый API без аутентификации
- Сделка API нуждается в кошельке и ключе API
- Следите за ограничениями скорости.
Оптимизация газа
- Режим EOA требует оплаты POL Gas
- Вы можете подать заявку на прокси-кошельки для выполнения транзакции Gasless.