v1.8.39
Documentation

DerBinAlpha v1.8.39

Deriv Volatility Index bot — multi-mode last-digit strategy with martingale recovery

DerBinAlpha is a browser-based algorithmic trading bot for Deriv's synthetic Volatility Indices. It analyses the last digit of every incoming price tick, detects statistical imbalances between Even and Odd outcomes, and places digit contracts automatically when conditions are met.

It runs entirely in a single HTML file — no installation, no server, no dependencies. Open in any modern browser and connect with your Deriv API token.

Install as App (PWA)

DerBinAlpha is a Progressive Web App. You can install it on any device — it runs in its own window, works offline, and behaves like a native app. No app store required.

Desktop — Chrome or Edge

  1. Open the app URL in Chrome or Edge
  2. Look for the install icon (⊕) in the right side of the address bar
  3. Click it → click "Install" in the prompt
  4. DerBinAlpha opens in its own window with no browser chrome
  5. It appears in your Start Menu (Windows) or Applications folder (macOS)
Can't see the install icon? In Chrome: Menu (⋮) → Cast, save, and shareInstall page as app. In Edge: Menu (…) → AppsInstall this site as an app.

Android — Chrome

  1. Open the app in Chrome for Android
  2. Tap the ⋮ menu (three dots, top right)
  3. Tap "Add to Home screen"
  4. Tap "Add" in the confirmation dialog
  5. The DerBinAlpha icon appears on your home screen — tap it to launch
Wake Lock on Android When you tap Start, the app requests a screen wake lock — your screen stays on while the bot is running so the WebSocket connection is not suspended. The lock is released automatically when you tap Stop.

iOS — Safari

  1. Open the app in Safari — must be Safari, not Chrome or Firefox
  2. Tap the Share button (the box with an arrow pointing up, bottom toolbar)
  3. Scroll down and tap "Add to Home Screen"
  4. Tap "Add" (top right)
  5. The DerBinAlpha icon appears on your home screen
iOS limitations Apple does not support the Wake Lock API in Safari. The screen will lock normally after your auto-lock timeout, which suspends the WebSocket connection and stops the bot. Keep your screen on manually, or set a longer auto-lock in Settings → Display & Brightness → Auto-Lock while trading.

Updates

The app updates silently in the background via its service worker. When a new version is deployed, you will see an "App update available — reload to apply" message in the Activity Log on your next visit. No manual reinstall needed.

Getting Started

  1. Open DerBinAlpha.html in Chrome, Edge, or Firefox
  2. In the Connection panel, choose Legacy or API Key mode
  3. Paste your Deriv API token
  4. Select your market (default: Volatility 75 (1s) Index)
  5. Click Connect
  6. Review Trade Settings and Scanner Settings
  7. Click Start
Credentials are remembered Your token and App ID are saved to browser localStorage automatically. They persist across page reloads and are never sent anywhere except directly to Deriv's WebSocket API.

Connection Modes

Legacy (Recommended)

Uses Deriv's shared App ID 1089 — the same used by Deriv's own SmartTrader. No markup, full 95% payouts. Token obtained from your Deriv Dashboard → API Token page.

API Key (PAT)

Uses a Personal Access Token from api.deriv.com plus your own App ID.

Critical: Set App markup to 0% Any markup above 0% reduces payouts and will make the strategy unprofitable. Check your App at api.deriv.com → Applications → Markup.

Why markup matters

MarkupPayoutBreak-even win rateStatus
0%95%51.3%Safe
1%94%51.6%Marginal
3%92%52.2%Avoid
5%90%52.6%Avoid

Live / Demo Account Switching

Available in Legacy mode only. When you connect, Deriv's authorize response includes tokens for all accounts linked to your profile. DerBinAlpha stores these and shows a LIVE / DEMO toggle pill in the topbar.

  • Switching re-authorises on the same WebSocket — no reconnect needed
  • If the bot is running, it stops automatically before switching
  • LIVE = real money account   DEMO = virtual account
  • Toggle does not appear if only one account type is found

How the Scanner Works

The scanner subscribes to live price ticks from Deriv's WebSocket API. Every tick price is examined and the last digit (0–9) is extracted using the market's pip_size to ensure digit 0 is never lost to floating-point truncation. Each digit is stored in a rolling 1,000-tick buffer.

Two-phase entry logic — every tick

Phase 1 — Signal evaluation (runs every tick, sets the target):

  1. Count digit frequency — how many times each digit appeared in the 1,000-tick window
  2. Calculate parity split — Even digits (0,2,4,6,8) vs Odd digits (1,3,5,7,9) as percentages
  3. Check parity threshold — if ODD% ≥ threshold OR EVEN% ≥ threshold, a candidate side qualifies
  4. Check digit strength — count how many individual digits on the qualifying side exceed the strength threshold
  5. Check min qualifying — require at least N digits above strength threshold
  6. Set entry target — if all conditions pass, identify the HOT digit for the qualifying side and store it as the entry target. No trade is placed yet.

Phase 2 — Entry gate (runs every tick, after phase 1):

  1. Is an entry target set?
  2. Does the current tick's digit equal the target HOT digit?
  3. If both YES — place trade. This is the only path to a buy.
Why wait for the HOT digit? Entering on any tick that meets the parity/strength conditions ignores what digit just landed. The entry gate ensures the bot acts precisely when the scanner cursor lands on the digit with the highest statistical edge — matching the DCircles reference behaviour.

Signal flow

New tick arrives
  └─► Extract last digit via pip_size → update 1,000-tick buffer
      └─► Evaluate signal: parity + strength conditions met? ─ No ─► Clear target, keep scanning
          └─► Yes: set entry target = HOT digit for qualifying side
              └─► Current tick digit === target HOT digit? ─ No ─► Wait for next tick
                  └─► Entry gate opens → place trade

HOT & COLD Digits

HOT 🔥 — the digit that appeared most frequently in the current lookback window (green glow on scanner grid).

COLD ❄️ — the digit that appeared least frequently (red glow on scanner grid).

In v1.8.0, the HOT digit for the qualifying side (ODD or EVEN) is now the entry trigger. The bot waits for the live scanner cursor to land on the HOT digit before placing each trade. The HOT digit is re-evaluated every tick, so it updates automatically if the distribution shifts between runs.

Trade Settings

Stake ($)
$0.35
Starting stake per session. Defaults to the minimum for a $100 account (Risk Calculator: ×2.2, 5 runs, 10% risk). Use the Risk Calculator or Dynamic mode to scale for your balance.
Initial Stake ($)
$0.35
The stake the bot resets to at the start of each new session. Always keep equal to Stake ($) — they are the same field from different views.
Martingale ×
×2.2
Pure ×2 barely recovers at 95% payout. ×2.2 adds a small profit buffer on each recovery win, compounding positively over time.
Runs / Session
30
30 runs per session maximises signal exposure. Stake resets to initial on every win — extended runs only matter during a losing streak, which the parity/strength filters are designed to prevent.
Take Profit ($)
$8
Set to 50% of Stop Loss. Targets a 2:1 risk/reward ratio, reached more frequently and locks in gains sooner than targeting full worst-case.
Stop Loss ($)
$15
Should equal the full worst-case session loss (5 consecutive losses at ×2.2 from $0.35 = $14.71). Setting it lower cuts the bot mid-sequence, realising a large loss without the recovery trade.
Break (seconds)
30s
30-second pause between sessions. Short enough to stay in active market conditions, long enough for the distribution window to shift slightly before the next session opens.
Duration (ticks)
1
Always 1 for last-digit contracts on 1s markets. Setting above 1 means the contract resolves on a future tick, changing the strategy entirely.

Dynamic Settings

The DYNAMIC checkbox in the Trade Settings header automatically recalculates stake, SL, and TP as your balance grows — using a $100 stepped tier system. Settings only change when your balance crosses a $100 boundary, not on every trade.

How tiers work

Balance rangeTier usedStakeSLTP
Below $100$100 (minimum floor)$0.35$15$8
$100 – $199$100$0.35$15$8
$200 – $299$200$0.47$20$10
$300 – $399$300$0.71$30$15
$400 – $499$400$0.94$40$20
$500 – $599$500$1.18$50$25
$1,000 – $1,099$1,000$2.37$100$50

Formula: tier = max($100, floor(balance ÷ 100) × 100). The tier is used to calculate stake — the raw balance is never used directly, so a balance of $187 and $142 both use the $100 tier and produce identical settings.

ModeBehaviour
Dynamic ONAfter each trade closes, the bot checks which $100 tier your balance falls in. If the tier changed, settings update and the activity log shows: ⚡ Dynamic tier $200 (Bal $213.40) → Stake $0.47 | SL $20 | TP $10. Fields go read-only. Setting persists across reloads.
Dynamic OFFSettings are static. Use the Risk Calculator manually or edit fields directly when you want to rebalance.
Dynamic mode uses: your current Martingale × setting, 5 consecutive-loss protection runs, and 10% max risk. It never interrupts a martingale run in progress — only updates at session boundaries. If your balance drops below a tier (drawdown), the floor of $100-tier settings always applies.

Trade Side

SettingBehaviour
BothTrades Even or Odd depending on scanner signal — recommended
Even onlyOnly places Even contracts regardless of signal
Odd onlyOnly places Odd contracts regardless of signal

Daily Risk Controls

These three limits apply across all sessions in a trading day — not per-session. They prevent a profitable day from being eroded across multiple sessions. Set any value to 0 to disable that control.

Daily Stop Loss ($)
0 (off)
Halts all trading for the rest of the day once cumulative losses reach this amount. Works regardless of how many sessions have run. Suggested: 1.5–2× your per-session stop loss.
Daily Take Profit ($)
0 (off)
Stops trading for the day once cumulative gains reach this target. Lock in profits and walk away. Suggested: 1.5–2× your per-session take profit.
Profit Protection ($)
0 (off)
Trailing stop on your daily peak P&L. If daily P&L drops more than this amount below the peak reached today, trading halts. Example: peak $50, protection $20 → halt if P&L falls below $30. Prevents the scenario of making $50 and giving it back to $10.
How it works: After every trade closes, the bot checks all three daily limits. If any are breached, it calls stopBot(), shows a "Daily halt" banner in the Daily risk controls panel, and blocks the Start button until you press Reset to resume. Daily stats also auto-reset at midnight via a localStorage date check.

Day Reset Time

The Day resets at (UTC hour) field sets when a new trading day begins. Default is 0 (midnight UTC). Change it to match your local trading schedule — for example, set 8 if you start each day at 08:00 UTC.

  • A live countdown "Resets in Xh XXm XXs" updates every second in the panel
  • At the reset hour, daily P&L, peak P&L, and the halt state clear automatically
  • The chosen hour persists across page reloads via localStorage
  • Sessions that span the reset boundary are attributed to the correct day

Suggested values for a $100 account

ControlSuggested valueWhy
Daily Stop Loss$302× per-session SL of $15 — two bad sessions max
Daily Take Profit$162× per-session TP of $8 — two strong sessions then stop
Profit Protection$8Never give back more than $8 from the daily peak

Scanner Settings

SettingDefaultWhy
Lookback100 Matches DCircles sample size exactly. At 1,000 ticks each digit converges to ~10% in a flat market, giving reliable parity and strength readings. Lower values produce noisy distributions that diverge from DCircles.
Parity threshold51% 51% is just above the 50% break-even line — qualifies more windows while still requiring the dominant side to have a measurable edge. Tighter thresholds miss too many profitable signals.
Digit strength10.5% Baseline is 10% (uniform random). 10.5% is a low bar that keeps signal frequency high while still filtering out perfectly flat distributions.
Min qualifying2 Requiring 2 digits above strength threshold ensures at least a mild skew exists before trading. Reduces missed signals compared to 3 while still filtering flat distributions.

Risk Calculator

Accessed via the ⚠ Risk calc button next to Trade Side in the sidebar.

How to use

  1. Enter your Account Balance
  2. Adjust Martingale ×, Runs, and Max risk % if needed (defaults are recommended)
  3. The Recommended Stake is calculated automatically
  4. The breakdown shows each run's stake and cumulative exposure
  5. Stop Loss and Take Profit are derived from the worst-case total
  6. Click Apply to settings — updates stake, martingale, runs, SL, and TP at once

The math

Worst-case factor = 1 + mult + mult² + mult³ + ... + mult^(runs-1)
Recommended stake = (balance × risk%) ÷ factor   [min $0.35]
Stop Loss         = ceil(worst-case total)
Take Profit       = ceil(worst-case total × 0.5)

Colour coding

ColourMeaning
GreenWorst-case ≤ 12% of balance — safe
AmberWorst-case 12–22% of balance — moderate risk
RedWorst-case > 22% — reduce stake or runs

Session Management

A session is one complete trading cycle: pre-fill → watch for signal → trade → end.

Connect
  └─► Pre-fill scanner (collect Lookback ticks)
      └─► Session opens — watching for signal
          └─► Signal fires → trade placed
              ├─► Win → reset stake → watch for next signal
              ├─► Loss → multiply stake → watch for next signal
              └─► Runs exhausted / TP hit / SL hit → session ends
                  └─► Break (configurable) → new session opens

Trade watchdog

Every contract has a 15-second watchdog timer. If the contract result does not arrive (WebSocket drop, server delay), the bot logs a warning, marks the contract as ignored, and resets — preventing it from freezing indefinitely. If the result arrives late after the watchdog has already fired, it is silently discarded to prevent double-counting.

Session break

A corner toast shows the countdown and a Skip break button. The same button appears in the Current Trade panel. The break is non-blocking — you can adjust settings, review the log, or monitor the scanner during it.

Activity Log

Records every event in real time. Newest entries appear at the top.

ColourType
CyanInfo — signals, trade details, connections
GreenWin
RedLoss
AmberWarning — watchdog triggers, errors
GreySystem messages

Click Export to download the log as DerBinAlpha_log_DD-MM-YYYY_HH-MM-SS.txt (oldest first).

Recommended Settings by Balance

Derived using 10% max risk, ×2.2 martingale, 5 protection runs. These are the same values the Risk Calculator and Dynamic mode produce. Use Dynamic mode to have these applied automatically as your balance changes.

BalanceStakeMartingaleRunsStop LossTake Profit
$100$0.35×2.25$15$8
$200$0.47×2.25$20$10
$500$1.18×2.25$50$25
$1,000$2.37×2.25$100$50
$2,000$4.74×2.25$200$100

Best Practices

DoDon't
Use Legacy mode with 0% markupSet parity threshold below 51%
Enable Dynamic mode — let stake scale with your balanceSet Stop Loss below worst-case session exposure
Test settings on Demo before switching to LiveReduce lookback below 1,000 — lower values diverge from DCircles
Export the activity log after each sessionLeave the bot unmonitored overnight
Keep screen on (Android) — tap Start to activate Wake LockTrade during major economic news events
Install as PWA for a cleaner, app-like experienceRun on iOS with screen auto-lock on — connection will drop

FAQ

Why are Volatility Indices available 24/7?

They are computer-generated synthetic markets — not tied to any real exchange. Deriv runs them continuously using a certified random number generator.

Is there a best time to trade?

For Volatility Indices, no — the RNG doesn't change behaviour by time of day. The best time is when you are alert and available to monitor. Avoid trading when fatigued.

Why does my friend's account lose while mine profits on the same bot?

Check App ID markup. Even on demo accounts, Deriv's pricing engine applies markup to payout calculations. Any markup above 0% directly reduces winning payouts and can tip the strategy from profitable to losing.

Can I use the same API key for both Live and Demo?

No — each token is tied to one account. In Legacy mode, DerBinAlpha automatically detects both accounts from the authorize response and offers a one-click Live/Demo toggle in the topbar.

The trade shows "In progress..." for more than a few seconds — is something wrong?

The watchdog timer resolves this automatically within 15 seconds. Digit contracts on 1s markets normally settle in 1–2 seconds. Extended "In progress" can happen during high server load or a WebSocket delay — the bot recovers, marks the contract ignored, and continues. If a buy error occurs (e.g. stake exceeds market maximum), the trade is also cleared immediately and the panel shows "Buy failed — waiting for next signal".

What does HOT/COLD mean?

HOT is the digit with the highest frequency in the current 1,000-tick window. COLD is the least frequent. Since v1.8.0, the HOT digit for the qualifying side (ODD or EVEN) is the entry trigger — the bot waits for the scanner cursor to land on that specific digit before placing each trade.

Should I exclude certain digits?

The Digit Selection panel lets you exclude digits from triggering entries. Only exclude if you have a specific reason — by default all 10 digits are active and all contribute to signal evaluation.

Changelog

v1.8.39
  • Auto-resume: bot restarts automatically after an unexpected disconnect — no manual Start required
  • Reconnect uses the token active at drop time — Demo/Live account is preserved across reconnects
  • Linked alt-account token no longer cleared on auto-reconnect
v1.8.38
  • ODD/EVEN signal: both sides evaluated independently — stronger hot-digit percentage wins instead of ODD always taking priority
v1.8.37
  • Fixed: Legacy/PAT token cross-contamination — Legacy reconnect no longer picks up a PAT token written by API Key mode (and vice versa)
v1.8.36
  • Fixed: API Key mode now sends underlying_symbol in proposals — resolves "Properties not allowed: symbol" errors on custom App IDs
v1.8.35
  • Fixed: Demo/Live toggle now appears in API Key mode after connecting
v1.8.34
  • API Key mode account switching: Live↔Demo triggers the full OTP flow with the target PAT
  • Fixed: Demo account misclassified as Live — Deriv REST returns "demo" not "virtual"
  • Alt-account section in API Key mode prompts for a PAT from developers.deriv.com
v1.8.33
  • Fixed: primary token never saved — account_list omits tokens; captured via pendingConnectToken before authorize response
  • Fixed: race condition on account switch — old WS close event fired after connect() re-enabled auto-reconnect
v1.8.32
  • Fixed: Demo→Live switch now instant — Deriv silently drops re-authorize on an existing connection; app now disconnects and reconnects with the target token (~1s)
v1.8.31
  • Fixed: account switch looping on Demo — single dba_alt_token key was ambiguous after switching; replaced with typed dba_live_token / dba_demo_token keys
v1.8.30
  • Demo/Live segmented toggle added directly in Connection panel — visible in both Legacy and API Key modes
  • Active account highlighted (amber = Demo, green = Live); clicking an unavailable account prompts for token inline
v1.8.29
  • Fixed: accordion content clipped on mobile — sidebar flex-shrink was compressing cards; all options now fully visible with scroll
v1.8.28
  • Mobile accordion padding, touch targets, and single-column form grid improvements
v1.8.27
  • Removed accordion pinning — one accordion open at a time; tapping a header closes the current and opens the selected one
v1.8.26
  • Fixed: Excel export now includes row colors — replaced xlsx with xlsx-js-style (free fork that honours cell styles)
v1.8.25
  • Light/dark theme toggle — sun/moon button in topbar; preference saved across sessions
v1.8.24
  • Export activity log to Excel — color-coded rows (green = win, red = loss, amber = signal/system)
v1.8.23
  • Multi-mode trade side — Even, Odd, Under 4/6/8 selectable simultaneously as checkboxes; first qualifying signal across all active modes fires the trade
v1.8.22
  • Fixed: lookback window inconsistency — processTick and fetchTicksHistory now both default to 1000 ticks; 5000-tick max cap enforced
v1.8.21
  • WebSocket keepalive ping every 25s — prevents Deriv idle timeout mid-session
  • Auto-reconnect on unexpected disconnect — reconnects within 3s; stops cleanly on manual disconnect
  • Asset locked during active session — market dropdown reverts and warns if changed while the bot is running
  • Fixed: scanner cursor invisible on hot digit — last-tick highlight restored
v1.8.20
  • Fixed: API Key mode now correctly shows Demo/Live badge and alt-token section immediately on connect
  • Fixed: removed invalid underlying_symbol field from proposal payload (was causing trade errors in API Key mode)
v1.8.19
  • Alt-account linking instructions are now mode-aware — API Key users and Legacy users see different guidance
v1.8.18
  • Live/Demo account switching — link your alternate account token in the Connection panel to enable one-tap switching
v1.8.17
  • Account badge shows switch target (e.g. "Demo → Live") and is clickable
  • Fixed: day-key month was 0-indexed (Jan showed as 0) — now correctly 1–12
  • Fixed: duplicate tick/balance subscriptions on account switch
  • Daily P&L, peak, and halt state persist across page reloads
v1.8.16
  • New contract modes: Under 4, Under 6, Under 8
  • Under 4: enters when all four digits 0–3 exceed strength threshold; fires on any 0–3 tick
  • Under 6: enters when digits 6–9 all drop below 10%; fires on 7, 8, or 9
  • Under 8: enters when digits 7–9 are stable; fires on 2 consecutive 7/8/9 ticks
  • Amber scanner highlight for UNDER trigger digits; signal panel shows live qualifying status
v1.8.15
  • Trade settings persist across page reloads — all fields saved automatically
  • "Reset to capital defaults" button recalculates from live balance in one click
v1.8.14
  • Daily P/L, peak, and halt state persist across page reloads
  • Fixed: proposal failure no longer locks the bot permanently
  • Fixed: stale proposal can no longer execute a buy in the wrong session
  • Ghost proposal_open_contract subscriptions cancelled on every trade settle, timeout, and bot stop
v1.8.13
  • Fixed: duplicate trade settlement — Deriv can deliver two is_sold=1 WebSocket frames for a fast-settling contract; onTradeClose now rejects any call where the contract ID no longer matches the active trade, preventing double P/L accounting and double martingale progression
  • Fixed: session crash-loop — endSession firing twice (caused by the above) would create two setInterval break timers; the second overwrote S.breakTimer without clearing the first, leaving an orphaned interval that called openSession() every second indefinitely (Sessions 5–30 cascade). Fixed by calling clearInterval(S.breakTimer) at the top of startBreak
v1.8.9
  • Dynamic mode now uses $100 stepped tiers — settings only change when balance crosses a $100 boundary, not on every trade
  • Minimum tier is $100 (floor) — accounts below $100 receive $100-tier settings
  • Log now shows tier and live balance: ⚡ Dynamic tier $200 (Bal $213.40) → Stake $0.47 | SL $20 | TP $10
  • No-op guard added — recalculation skipped entirely if tier has not changed since last update
v1.8.8
  • Fixed topbar row 3 (account info) not displaying on mobile after header rewrite
v1.8.7
  • Mobile header restructured into 3 fixed rows: logo left / version right, controls row, account info row
  • Logo wordmark and version no longer stack — version pushed to right with margin-left auto
  • Controls row (Settings, ?, Sound, Status) distributed with space-between
v1.8.6
  • Default trade settings recalibrated to $100 account (Risk Calc: ×2.2, 5 runs, 10% risk)
  • Stake / Initial Stake default: $3.00 → $0.35  ·  Take Profit: $50 → $8  ·  Stop Loss: $30 → $15
  • Risk Calculator default balance: $500 → $100
  • Dynamic Settings toggle in Trade Settings header — auto-recalculates stake/SL/TP from live balance after every trade; fields go read-only; persists via localStorage
v1.8.5
  • Fixed 2-row mobile header (logo + controls) — position fixed, no longer scrolls away
  • Bottom stats bar slimmed to Win rate / Day P&L / Total P&L only
  • App content padded to not hide under fixed header or bottom bar
v1.8.4
  • Mobile floating info bar (fixed bottom) — shows account badge, name, ID, balance, live price, win rate, day P&L, total P&L at all times
  • Wake Lock API — tapping Start requests a screen wake lock to keep Android screen on while bot runs; released on Stop
  • Wake lock auto-reacquires if tab regains focus while bot is still running
v1.8.3
  • All sidebar accordion panels collapse by default when Settings overlay opens on mobile
v1.8.2
  • Eliminated horizontal scroll on mobile — overflow-x hidden on html/body/app, ticker self-contained, log entries wrap
v1.8.1
  • Mobile responsive layout — breakpoints at 640px and 480px
  • Sidebar hidden by default on mobile; toggled via ⚙ Settings button in topbar
  • Topbar non-essential items hidden on mobile (balance, account info, P&L strip) — data shown in bottom bar instead
  • Modal widths capped at 92vw — no overflow on narrow screens
  • Form grid collapses to single column below 480px
  • PWA: manifest.json, service worker (network-first, cache fallback), app icons
  • Netlify deployment with root redirect to DerBinAlpha.html
v1.8.0
  • Configurable daily reset time — set any UTC hour (0–23) as your trading day boundary
  • Live countdown to next reset displayed in Daily risk controls panel, updates every second
  • UTC-aware day key — boundary correctly handles sessions that span the reset hour
  • Reset hour persists across page refreshes via localStorage
v1.7.0
  • Daily stop loss — halts all trading for the day when cumulative losses exceed the limit
  • Daily take profit — stops trading for the day once cumulative gains reach the target
  • Profit protection — trailing stop on daily peak P&L; prevents giving back gains across sessions
  • Daily P/L visible in topbar (Day column) and in the Daily risk controls panel
  • Daily stats auto-reset at midnight via localStorage date check
v1.6.0
  • Fixed: digit 0 always showing 0% — prices now formatted with pip_size before digit extraction
  • Fixed: ODD/EVEN percentages now match DCircles (root cause was digit 0 bug)
  • Fixed: EVEN trades now fire correctly when parity conditions are met
  • Fixed: entry now gates on HOT digit tick — bot waits for scanner to land on target before buying
  • Fixed: reconnect no longer causes uncontrolled trading — full state reset on WebSocket close
  • Lookback default and max raised to 1,000 to match DCircles sample size
v1.5.0
  • Fixed: buy error no longer leaves trade stuck in "In progress..."
  • Watchdog extended 5s → 15s to handle slow contract settlement
  • Late contract results after watchdog fire are discarded — no double-counting
  • Scanner cursor flash extended to 900ms for smoother digit tracking
  • Aggressive defaults seeded: Stake $3, Runs 30, TP $50, Break 30s, Parity 51%, Strength 10.5%, Min qualifying 2
v1.4.0
  • Risk calculator drives Stop Loss and Take Profit
  • Apply to settings updates all 5 fields at once
  • Empty balance field shows prompt instead of phantom values
v1.3.0
  • Risk calculator popup — balance in, stake auto-calculated
  • $500 recommended settings seeded as defaults
  • Scanner thresholds tightened (parity 54%, strength 14%, lookback 100)
v1.2.0
  • HOT/COLD digit highlighting on live scanner
  • Live price display in topbar
  • Trading status dot blinks green
  • Session break changed to non-blocking corner toast with Skip button
  • 5-second trade watchdog — auto-recovers hung contracts
  • API credentials persist across page reloads
  • Market symbols corrected (1HZ75V vs R_75)
  • Live/Demo account switcher (Legacy mode)
v1.1.0
  • Activity log newest-first order fixed
  • Scanner cursor speed matched to reference
v1.0.0
  • Initial release — live scanner, martingale engine
  • Legacy + PAT connection modes
  • Session management with break timer