Полный разбор торгового графика IQ Option — типы, рисование, тайм-контролы, панель ордера и все 75 индикаторов с диалогами настроек и точными дефолтами. Плюс инструментальный бенчмарк перфа против нашего chart.walbi.cfd, разбор WebGL1 vs WebGL2, мультичарт и реконструкция front-end инженерии. Это не один брокер — это движок Quadcode, на котором сидят 65 брокеров / 50M+ юзеров.
График IQ Option — отлично оптимизированный брокерский инструмент: один WebGL1-canvas, рисует только видимое окно (сотни свечей), 120 FPS на лёгкой нагрузке. Но архитектурно это движок прошлого поколения — без инстансинга (15–30 draw call/кадр), перерисовывает даже в простое и падает под нагрузкой. chart.walbi.cfd (WebGL2 + инстансинг) держит то же на 2 draw call, рисует on-demand и тянет 1 000 000 свечей без джанка.
Типы графика, рисование, два тайм-контрола, панель ордера, полный реестр индикаторов, диалоги настроек.
Живой проход (Playwright/Chromium, M5, ANGLE Metal) + frame-time через rAF + хук WebGL draw-вызовов + curl-заголовки + WS-сниффинг.
Бенчмарк «IQ vs Walbi» = «Quadcode WebGL1 vs Walbi WebGL2». Рынок подрыва — 65 брокеров на устаревшем движке.
| Зона | Где | Назначение |
|---|---|---|
| Навигация | сверху | Селектор актива (+), баланс, аккаунт, Deposit |
| График | центр | Цена, теханализ, рисование |
| Торговая панель | справа | Сумма, направление, время, Buy/Sell |
| Сайдбар | левый край | Портфель, история, Market Analysis, dashboard |
| Тулбар | низ-слева | Тип графика, таймфрейм, индикаторы, рисование |


На графике также: Trader Sentiment (HIGHER/LOWER %) — соц-доказательство в момент решения; purchase-deadline line — пунктирная вертикаль микро-срочности «успей до линии».
Панель CHART TYPE: Line · Candles · Bars · Heikin-Ashi. Display Settings — стиль свечей (заливка/контур), кастомные цвета роста/падения, тумблер «Full-width current price line».

| Контрол | Что задаёт | Значения |
|---|---|---|
| Интервал свечи (кнопка «1h») | длительность одной свечи | 5s / 10s / 15s / 30s / 1m / 5m / 15m / 30m / 1h / 4h / 1d / 1w / 1mo |
| Timeframe / диапазон (кнопка «1d») | сколько истории видно | 30 min · 1 hour · 3 hours · 1 day · 3 days · 30 days |
| Инструмент | Назначение | Параметры |
|---|---|---|
| Line | произвольная линия | цвет, толщина, стиль |
| Trend line | тренд по 2+ точкам | цвет, толщина, стиль |
| Horizontal line | уровень цены (S/R) | цвет, толщина, стиль |
| Vertical line | отметка времени | цвет, толщина, стиль |
| Fibonacci retracement | уровни коррекции | 23.6 / 38.2 / 50 / 61.8 / 100 %, цвет |
Авто-трендлайна нет — рисуется вручную; вики упоминает shapes / text-аннотации.
| Поле | Для чего | Значения |
|---|---|---|
| Invest / Amount | сумма сделки | от $1 (опционы), от $10 (CFD) |
| Leverage / Multiplier | плечо (CFD/Forex) | EU до ×30 (ESMA); вне EU выше |
| TP / SL | авто-закрытие | цена / —; по умолчанию пусто |
| Price | вход | Market или Purchase at (отложенный → pending) |
| Expiration (опционы) | время до экспирации | от 5 сек (Blitz), 1 мин и выше |
| HIGHER / LOWER | направление (опционы) | зелёная/красная; payout % над кнопками |
| BUY / SELL | лонг/шорт (CFD) | спред; подтверждение вкл/выкл (one-click) |
Вкладки INDICATORS · TEMPLATES · WIDGETS · SCRIPTS + поиск. 8 категорий, ~100+ индикаторов. У каждого индикатора — вкладка HOW TO USE с аннотированными примерами и готовыми стратегиями-пресетами в 1 клик «Apply».


Каждый индикатор снят живьём (методом поиск → диалог) со скрином окна настроек и точными дефолтами платформы. Диалог: имя, иногда вкладки HOW TO USE / SET UP & APPLY, под-вкладки Basic settings / Colors and display / (Script), кнопки By default · Cancel · Apply. ⚠ = дефолт IQ Option отличается от учебного (поймано ~10 расхождений: Bollinger 14, Stochastic %K 13, Alligator Jaws 14, Awesome 34/5, Fractal 5, DeMarker 13, KAMA 21, ROC 9, TSI signal 13, Elder Ray 13).











































































| Индикатор | Параметры (дефолт IQ Option) |
|---|---|
| Moving Average | Period 14/50/200 · SMA/EMA/WMA/SSMA · thickness · color |
| RSI | Period 14 · OB 70 / OS 30 |
| Bollinger Bands | Period 20 · Deviation 2 (но дефолт диалога 14) |
| MACD | Fast 12 · Slow 26 · Signal 9 |
| Stochastic | %K 14 · %D 3 · smoothing 3 · 80/20 |
| Ichimoku | Tenkan 9 · Kijun 26 · Senkou B 52 |
| Общий паттерн | у каждого: Period, Source (close), цвет, толщина; у осцилляторов — уровни; Apply |
| Метрика (интерактив) | IQ Option | Walbi · 500 | Walbi · 1 000 000 |
|---|---|---|---|
| Контекст | WebGL1, 1 canvas | WebGL2 + 2D | WebGL2 + 2D |
| Avg FPS | 120 | 120 | 120 |
| Avg frame time | 8.33 ms | 8.33 ms | 8.33 ms |
| p95 / max | 9.3 / 9.4 ms | 9.3 / 9.4 ms | 9.3 / 9.4 ms |
| Длинные кадры >16ms | 0 | 0 | 0 |
| Draw calls / кадр | ~15–30 | 2 | 2 |
| Idle draws / кадр | ~30 (всегда) | 0.4 (on-demand) | — |
| Свечей в прогоне | видимое окно (~сотни) | 500 | 1 000 000 |
| JS-память | ~50–58 MB | ~66–74 MB | ~84 MB |

Оба идеальны — 120 Гц, 0 пропущенных кадров.
2 draw call (инстансинг) против ~15–30; Walbi не перерисовывает в простое (0.4 vs ~30 draw/кадр → экономия GPU/батареи).
Walbi держит 1M свечей @120fps / 0 джанка, память +~17 MB. У IQ Option такого режима нет.
WebGL1 = OpenGL ES 2.0 (2011), WebGL2 = OpenGL ES 3.0 (2017). Разница определяет, сколько свечей держишь и сколько GPU-вызовов тратишь.
| Возможность | WebGL1 | WebGL2 | Зачем графику |
|---|---|---|---|
| Instanced drawing | только расширение, ненадёжно | в ядре | Весь массив свечей в 1–2 draw call. Прямая причина 2 draw/кадр у Walbi |
| Data/Integer textures + texelFetch | нет | есть | OHLC в текстуру → 1M свечей на GPU без перегрузки CPU |
| Vertex Array Objects (VAO) | расширение | в ядре | Быстрое переключение состояния (мультичарт) |
| Transform Feedback | нет | есть | Индикаторы на GPU без возврата на CPU |
| Uniform Buffer Objects (UBO) | нет | есть | Меньше overhead (много панелей/индикаторов) |
| Шейдеры | GLSL ES 1.00 | GLSL ES 3.00 | Сложнее логика в шейдере (loops, int-математика) |
IQ Option (иконка-сетка ▦ → Chart Grids 1/2/3/4, далее «More grids» до 9). Каждая панель — свой актив, всё в одном WebGL1-canvas. 4 графика → 120 FPS, 0 джанка, ~48 draw/кадр (~12/панель), 58 MB. Нагрузка лёгкая — каждая панель показывает только видимое окно.


Walbi (layout 1/2/4/9/16, по 1M свечей на КАЖДЫЙ график):
| Раскладка | Свечей всего | Avg FPS | Steady | Draw/кадр | Память |
|---|---|---|---|---|---|
| 4 графика | 4 000 000 | 112 | 120 | ~17 | 384 MB |
| 9 графиков | 9 000 000 | 92 | 102 | ~46 | 697 MB |
| 16 графиков | 16 000 000 | 71 | 106 | ~80 | 1048 MB |
Честные оговорки: всё мерено при dpr=1 (не Retina) и с потолком 120 Гц; показатель запаса — draw calls/кадр и удержание 1M свечей без джанка, а не сам FPS. IQ Option нельзя нагрузить эквивалентно (нет режима 1M), его «потолок» оценён косвенно.
Мы разобрали не одного брокера, а движок Quadcode (Лимассол, 13 лет, 700+ сотрудников, 65 брокеров запущено, 50–88M+ юзеров в 170+ странах). IQ Option = флагман Quadcode; в футере traderoom прямо «Powered by quadcode». На этом же движке — Exnova, Sabio Trade, QuadCode Markets и др.
| Слой | Технология Quadcode |
|---|---|
| Ядро | Go + C++ (главные); PHP/Python/NodeJS бэк; микросервисы + кастомный «IQ Bus» ~500k RPS |
| Фронт | JavaScript / ReactJS |
| График | проприетарный движок — тот самый WebGL1 glengine (glenginedca01201.js) |
| Скрипты | QCS (Quadcode Scripts) — Lua-язык для кастомных индикаторов (вкладка Scripts) |
| Данные | Hadoop / Cassandra / Kafka / Greenplum; Airflow / Kubeflow / K8s |
| Клиенты | web, desktop (Win .msi / Mac .dmg), iOS/Android, PWA |
| Инструменты | Forex, CFD, digital/binary/turbo опционы, crypto; 700+ активов, 100+ индикаторов |
| White-label | $17.5–50k, запуск 14 дней–месяц, окупаемость брокера ~3 мес |
| Фаза | Тайминг | Что происходит |
|---|---|---|
| TTFB | 271 ms | Ответ крошечного HTML-шелла (7 KB, no-cache) |
| DOMContentLoaded | 285 ms | Шелл распарсен мгновенно (SPA-bootstrap) |
| Eager / critical | ~0.3–1.1 s | bundle.js (~256 KB) + glengine.js (чарт-движок) + 4 CSS |
| FB-pixel | @838 ms | fbevents.js 98 KB — маркетинг-пиксель грузится РАНО |
| First Paint | 1092 ms | Первый пиксель на экране |
| First Contentful Paint | 1484 ms | Чарт/UI виден ~1.5 с |
| WebSocket quotes | ~1–2 s | Открывается живой стрим котировок |
| Lazy / deferred | 2.1–3.3 s | Переводы 305 KB (XHR), флаги стран, phone-codes, ad-tech, телеметрия |
Итого initial: ~595 KB transfer · 250 ресурсов. img 164 (флаги, ~0 KB), script 24 (256 KB), XHR 18 (336 KB — самый тяжёлый), fetch 20, beacon 8, css 4, link 7.
| Ресурс | Cache-Control | Разбор |
|---|---|---|
| HTML /traderoom (7 KB) | no-cache, ETag | Всегда ревалидируется — SPA-шелл |
| bundle.js / glengine.js | must-revalidate, max-age ~21 ч | Версия в ?v=hash, но не immutable → ежедневная ревалидация (304). Консервативно |
| translations.json | max-age ~6 ч | Короче |
| CDN | 2 (nginx, HTTP/2) | static.cdnpub.info = код/переводы · static.cdnroute.io = картинки/флаги |
chart-engine (glengine), bundle, CSS — график приоритетнее всего.
i18n 305 KB одним XHR, флаги стран (~25 PNG), phone codes, routes/countries.
~45 трекеров: GTM, Facebook, TikTok, Criteo, Bing, Amazon-ads, Snapchat, DoubleClick, AppsFlyer, Yandex, Kwai.
Важная находка: все 75 индикаторов забандлены эагерно (НЕ lazy-чанк) — при открытии панели индикаторов 0 новых запросов. Тяжёлый indicator-движок сидит в основном бандле.
wss://ws.eu.iqoption.com/echo/websocket — путь /echo/websocket = SockJS-транспорт; живые котировки/свечи. Аналог cerberus WS у Walbi — паритет.
| Узкое место | Эффект |
|---|---|
| WebGL1 без инстансинга | 15–30 draw/кадр, нет режима большой истории (1M не вытянуть) |
| Непрерывный рендер в простое | расход батареи / GPU |
| Рендерер нестабилен под нагрузкой | traderoom стабильно ронял GPU-процесс через ~6–8 с под автоматизацией — признак хрупкости |
| 305 KB переводов одним XHR @2.1 с | блокирует часть UI-текста |
| 164 image-запроса (мелкие флаги) | можно спрайтом/CSS, лишние коннекты |
| ~45 трекеров | вес и приватность |
zerox-charts = отдельный продукт: график-движок + платформа (графики + виджеты + бэктест + wlb-script), прямой конкурент TradingView Charting Library и проприетарных движков брокеров. Walbi = первый клиент-мигрант. Приоритет: P0 сразу/высокий ROI · P1 средний · P2 позже.
| Приор | Преимущество | Что делать |
|---|---|---|
| P0 | WebGL2 + инстансинг: 1M свечей @120fps, мультичарт до 16, on-demand, не падает — бьёт И TradingView, И Quadcode-WebGL1 | #1 сообщение в демо/продажах. Бенчмарк-демо «1M свечей vs их движок» как воронка лидов |
| P0 | wlb-script: конвертация 8 языков (Pine/MQL4-5/thinkScript/cTrader/NinjaScript/EasyLanguage) → исполнение в графике/бэктесте/live | Дифференциатор vs TradingView Pine (только Pine) и Quadcode QCS-Lua (только Lua). «Запусти ЛЮБОЙ скрипт» — наш ров |
| P1 | 75+ индикаторов со стандартными дефолтами | Базовая планка паритета; дифференцироваться перфом и wlb-script, не количеством |
| P1 | Типы графика, рисование, мультичарт, таймфреймы 5с–1мес | Закрыть фич-паритет с TradingView/Quadcode по чарт-тулзам |
| Приор | Паттерн Quadcode | В zerox-charts |
|---|---|---|
| P1 | First-paint: tiny no-cache shell → chart-engine eager → вторичное lazy (чарт за ~1.5с) | Тот же приоритет — движок раньше всего, переводы/иконки/виджеты lazy |
| P2 | Кеш must-revalidate ~21ч (не immutable) — консервативно | Агрессивнее: версионированные ассеты → immutable · 1 год |
| P2 | 164 image-запроса (флаги) + 45 трекеров | Флаги спрайтом; мы — движок, не рекламная воронка → НЕ тащить трекеры (приватность как продающая черта) |
| P1 | Realtime через SockJS | У нас cerberus WS — паритет; абстрагировать data-feed под любой источник клиента |
Сидят на устаревшем WebGL1, который падает под нагрузкой и не тянет 1M свечей. Прямые лиды: «замени движок на WebGL2».
Брокеры/приложения (включая Walbi): мигрировать на наш движок — дешевле, быстрее, приватнее, без лицензии TV.
Первая миграция → кейс «было TradingView → стало zerox-charts» для продаж остальным.
«TradingView-class движок без TradingView-привязки + engagement-слой, которого у TV Library нет».