создать готового торгового робота Binarium
बनाया गया: 19 जून 2025
बनाया गया: 19 जून 2025
создать готового торгового робота Binarium
Ниже — минимально-жизнеспособный проект робота-трейдера на Python (вариант 1), который можно развивать под свои стратегии и рисковый профиль.
text┌─────────────────────┐ │ your_strategy.py │ ← бизнес-логика (сигналы, риск-менеджмент) └────────┬────────────┘ │calls ┌────────▼───────────┐ │ broker_interface │ ← транспортный слой (UI-автоматизация) └────────┬───────────┘ │persists ┌────────▼───────────┐ │ data_logger.py │ ← журнал, БД, интерфейс Prometheus/Grafana └────────────────────┘
your_strategy.py
)pythonimport 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)
broker_interface.py
)pythonfrom 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-клиент без браузера).
bashpython -m venv venv && source venv/bin/activate pip install selenium pandas numpy ta-lib webdriver-manager # chromedriver-manager автоматически подберёт версию драйвера
dockerfileFROM 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"]
Риск | Как минимизировать |
---|---|
Нарушение ToS — большинство бинарных брокеров запрещает авто-торговлю | спросите у поддержки салонах, используйте отдельный аккаунт, не превышайте частоту сделок |
Бан по IP/UA | ротация User-Agent, прокси с разным ASN |
Изменения DOM или WebSocket-протокола | заведите unit-тест, который каждый час проверяет ключевые селекторы; CI уведомит о падении |
Отсутствие регулирования брокера | держите минимальный рабочий депозит, выводите прибыль ежедневно |
Помните: любые обещания «гарантированной доходности» — маркетинговый шум. Опирайтесь на собственный анализ и соблюдайте мани-менеджмент.
Удачи в разработке и тестировании вашего робота!