создать готового торгового робота Binarium

Создано: 19 июня 2025 г.

Отвечено с использованием O3 от Chat01

Вопрос

создать готового торгового робота Binarium

Мысль

Building a Binarium trading bot

Since there's no official API, there are a few options for creating a bot:

  1. Use a third-party "Binarium Bot," though this might not be open-source.
  2. Automate the web interface with Selenium for a custom robot. I’d walk through the steps in Python using Selenium and ChromeDriver to log in, capture WebSocket data, and place trades with defined strategies like Martingale.

I’d provide a skeleton script, but also emphasize the risks of unregulated platforms and the potential legal issues. I'd recommend testing with a small amount or a demo account.

Thought for 50 seconds

Ответ

Важное вводное

  • У Binarium нет публично-документированного API: на сайте и в открытых обзорах упоминается лишь «application API» без деталей daytrading.com.
  • На самих страницах о «Binarium Bot» говорится, что это стороннее ПО, а не встроенный инструмент платформы binariumen.com.
  • Автоматизация поэтому сводится к двум путям:
    1. UI-робот (Selenium/Puppeteer) — эмулируем действия человека в веб- или мобильной версии.
    2. Сниффинг WebSocket — перехватываем торговые сообщения и повторяем их собственным клиентом (требует обратного инжиниринга и чревато баном).

Ниже — минимально-жизнеспособный проект робота-трейдера на Python (вариант 1), который можно развивать под свои стратегии и рисковый профиль.


Архитектура бота

text
┌─────────────────────┐ │ your_strategy.py │ ← бизнес-логика (сигналы, риск-менеджмент) └────────┬────────────┘ │calls ┌────────▼───────────┐ │ broker_interface │ ← транспортный слой (UI-автоматизация) └────────┬───────────┘ │persists ┌────────▼───────────┐ │ data_logger.py │ ← журнал, БД, интерфейс Prometheus/Grafana └────────────────────┘

1. Ядро стратегии (your_strategy.py)

python
import talib, numpy as np from broker_interface import BinariumUI class MaCross: def __init__(self, ui, fast=5, slow=20, stake=1): self.ui, self.fast, self.slow, self.stake = ui, fast, slow, stake def run(self, symbol='EUR/USD', tf=30): # tf – секундный тайм-фрейм candles = self.ui.fetch_candles(symbol, tf, self.slow+1) close = np.array([c['close'] for c in candles]) fast_ma = talib.SMA(close, timeperiod=self.fast)[-1] slow_ma = talib.SMA(close, timeperiod=self.slow)[-1] if fast_ma > slow_ma: self.ui.place_trade(direction='call', amount=self.stake, expiry=1*60) elif fast_ma < slow_ma: self.ui.place_trade(direction='put', amount=self.stake, expiry=1*60)

2. Транспортный слой (broker_interface.py)

python
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait as Wait from selenium.webdriver.support import expected_conditions as EC import time, json class BinariumUI: LOGIN_URL = "https://binarium.com/login" def __init__(self, email, password, headless=True): opts = webdriver.ChromeOptions() if headless: opts.add_argument("--headless=new") self.driver = webdriver.Chrome(options=opts) self.login(email, password) def login(self, email, pwd): self.driver.get(self.LOGIN_URL) Wait(self.driver, 15).until(EC.presence_of_element_located((By.NAME, "email"))) self.driver.find_element(By.NAME, "email").send_keys(email) self.driver.find_element(By.NAME, "password").send_keys(pwd) self.driver.find_element(By.CSS_SELECTOR, "button[type=submit]").click() # ждём появления торгового терминала Wait(self.driver, 20).until( EC.presence_of_element_located((By.CSS_SELECTOR, "div.chart-container")) ) def fetch_candles(self, symbol, timeframe, lookback): # простейший способ — читать JS-переменную, в которой Binarium хранит свечи. # точное имя выясните в DevTools → Sources. script = "return window.BINARIUM_CHART_DATA || [];" data = self.driver.execute_script(script) return data[-lookback:] def place_trade(self, direction, amount, expiry): # direction: 'call' | 'put' side_btn = { 'call': "button.buy-up", 'put': "button.buy-down" }[direction] self.driver.find_element(By.CSS_SELECTOR, "input.trade-amount").clear() self.driver.find_element(By.CSS_SELECTOR, "input.trade-amount").send_keys(str(amount)) # выбираем время экспирации, если требуется (пример для 1 минуты) self.driver.find_element(By.CSS_SELECTOR, "button.expiry-dropdown").click() self.driver.find_element(By.CSS_SELECTOR, "li[data-exp='60']").click() # совершаем сделку self.driver.find_element(By.CSS_SELECTOR, side_btn).click()

Совет: включите --remote-debugging-port=9222, запустите Chrome DevTools Protocol и перехватывайте сообщения wss://.../trade — так можно перейти к варианту 2 (чистый WebSocket-клиент без браузера).

3. Управление риском

  • Stake-model: фиксированная ставка, процент баланса, Мартингейл и т. д.
  • Stop-loss / Take-profit по балансу — завершайте сессию, когда достигнут дневной лимит убытка/прибыли.
  • Сигнальный фильтр — минимум N совпадающих индикаторов.

Развёртывание

bash
python -m venv venv && source venv/bin/activate pip install selenium pandas numpy ta-lib webdriver-manager # chromedriver-manager автоматически подберёт версию драйвера
bash
export BINARIUM_EMAIL="[email protected]" export BINARIUM_PASS="secret" python main.py

Docker-образ (эскиз)

dockerfile
FROM python:3.12-slim RUN apt-get update && apt-get install -y chromium COPY requirements.txt . RUN pip install -r requirements.txt COPY . /app CMD ["python", "/app/main.py"]

Тестирование и эксплуатация

  1. Демо-счёт: отладьте робота минимум на 300–500 сделок.
  2. Логи и алерты: пишите сделки в SQLite/PostgreSQL, рассылайте ошибочные стэктрейсы в Telegram.
  3. Мониторинг: Prometheus + Grafana (equity-кривая, просадка, SLA бота).
  4. High availability: запустите второй экземпляр на резервном сервере с health-check, но держите его в стенд-бай, чтобы не получить дубли сделок.

Юридические и технические риски

РискКак минимизировать
Нарушение ToS — большинство бинарных брокеров запрещает авто-торговлюспросите у поддержки салонах, используйте отдельный аккаунт, не превышайте частоту сделок
Бан по IP/UAротация User-Agent, прокси с разным ASN
Изменения DOM или WebSocket-протоколазаведите unit-тест, который каждый час проверяет ключевые селекторы; CI уведомит о падении
Отсутствие регулирования брокерадержите минимальный рабочий депозит, выводите прибыль ежедневно

Куда идти дальше

  • Добавить стратегии: RSI + Stochastic (они же используются в маркетинговом «Binarium Bot» binariumen.com) или машинное обучение (Gradient Boosting по свечам).
  • Сделать грааль-песочницу: модуль-поставщик сигналов ⇄ модуль исполнения, чтобы можно было тестировать новые идеи без изменения остального кода.
  • Подготовить Jupyter-бэктест: выгрузить исторические котировки (WebSocket REST-запросы к сервису history) и прогони стратегию офлайн.

Помните: любые обещания «гарантированной доходности» — маркетинговый шум. Опирайтесь на собственный анализ и соблюдайте мани-менеджмент.

Удачи в разработке и тестировании вашего робота!

Поделиться этим Q&A