New: ApexQuant now supports USDC as well as USDT. Pick the currency your account trades in. Learn more
πŸ”

Is ApexQuant right for you?

We'd rather you know before you buy.

✅ A good fit if…
  • You already trade on Binance.
  • You want to keep control of your own API keys — and keep your strategy off third-party servers.
  • You're comfortable running a VPS (or you use Done-With-You Setup and we guide you through it).
  • You want automation without custodial risk — your funds stay in your own Binance (sub-)account.
  • You accept that crypto trading carries real risk and you set your own limits.
❌ Not a good fit if…
  • You're looking for guaranteed returns or “passive income.”
  • You want fully managed or hands-off investing.
  • You expect the AI to make trading decisions for you — AI Commentary is informational only and does not place or block trades.
  • You're not willing to learn basic trading-risk concepts.
How ApexQuant reads the market

ApexQuant reads the market on two levels. Minute-to-minute, it scores price action across eight technical factors — moving averages, momentum, volatility, support and resistance, and volume. On top of that, it weighs the bigger picture: market regime, the Fear & Greed index, macro and FOMC conditions, futures funding, and the 200-week moving average — a long-term gauge of whether price is sitting below historical support or stretched well above it. These shape how cautiously or confidently the bot sizes its positions; they do not make promises about outcomes.

πŸ’° Pricing & Returns 7 questions
How much can ApexQuant earn me? What's the expected APY?
We don't quote expected returns or APY figures, and you should be suspicious of any crypto trading tool that does. Real returns depend on factors entirely outside our control:
  • Market conditions β€” trending vs ranging, volatility level, liquidity, news shocks. The same strategy that returns +15% in one quarter can return βˆ’10% the next.
  • Your strategy choice β€” Directional, DCA, Grid and Harvest all behave differently. Some are designed for trending markets, others for sideways.
  • Your parameter settings β€” stop-loss tightness, take-profit targets, position sizing, Kelly multiplier, signal threshold. Aggressive settings amplify both gains and losses.
  • Your capital β€” small accounts hit minimum-trade-size limits and pay relatively higher fees. Larger accounts have more flexibility.
  • Your symbols β€” BTC/ETH behave very differently from low-cap alts. Pair selection has huge impact.

How to estimate for YOUR setup: use the dashboard's Backtests tab (Pro+). Run your chosen strategy and parameters against 2–3 different historical periods (a bull leg, a bear leg, and a sideways stretch). The variance across those backtests is far more informative than any single number β€” it tells you the realistic range of outcomes, not just the best-case.

What we DO promise:

  • The bot executes the strategy you configure, accurately and consistently
  • Risk controls (kill switch, daily/weekly loss limits, hard stops) work as documented
  • Your data and credentials are yours alone β€” single-tenant, self-hosted
  • Every trade is logged, every decision auditable

Standard disclaimer: Cryptocurrency trading involves substantial risk of loss. Past performance β€” including backtests β€” does not predict future results. ApexQuant does not provide financial advice or guarantee any outcome. Trade only with funds you can afford to lose.

How much does ApexQuant cost?
ApexQuant is priced in MYR (Malaysian Ringgit), billed annually:

Trial: Free for 30 days. No card required.
Starter: RM365/year (just RM1/day)
Pro: RM730/year (just RM2/day)
Elite: RM1,095/year (just RM3/day)

Special Launch Promo β€” 50% off (limited time): Starter RM183 Β· Pro RM365 Β· Elite RM548. Renews at full annual rate after the promotion ends. See Pricing for current rates.
What's the real monthly cost to run ApexQuant?
Your monthly running cost has three or four parts, depending on tier. Numbers below are typical ranges β€” your actual VPS and AI API spend will vary by provider and usage.

πŸ’± RM ↔ USD figures use an approximate rate of RM4.65 per USD (as of May 2026). Actual rate fluctuates daily.
Cost component Trial Starter Pro Elite
Licence Free RM30/mo RM61/mo RM91/mo
VPS hosting ~$5/mo
(RM23) or local
~$6–10/mo
(RM28–47)
~$8–12/mo
(RM37–56)
~$10–15/mo
(RM47–70)
Binance trading fees β€”
(Testnet)
0.1%/trade 0.1%/trade 0.1%/trade
AI API spend
(optional)
β€” β€” β€” ~$5–30/mo
(RM23–140)
TradingView Pro
(only for the TradingView webhook, coming soon)
β€” β€” ~$14.95/mo
(RM70)
~$14.95/mo
(RM70)
Total est. (excl. Binance fees) RM0–23/mo RM58–77/mo RM98–187/mo RM161–371/mo

Notes:

  • Binance fees are paid to Binance, not ApexQuant. They apply to any trading activity regardless of bot used.
  • AI API is optional and available on Pro (Anthropic only) and Elite (all providers + choice). You bring your own API key and pay the provider directly. Dashboard budget cap prevents runaway spend. Providers: Anthropic Claude Haiku (cheapest), DeepSeek v4-flash (very affordable), OpenAI, Gemini, Xiaomi MiMo, or a custom endpoint.
  • TradingView Pro will be needed only for the TradingView Webhook strategy, which is coming soon (not available yet). Free TradingView accounts can't send webhooks. Plans start around $14.95/month β€” check current TradingView pricing as it may change. Skip this cost if you don't use webhook-driven strategies.
  • VPS recommendations: Starter — 1 vCPU / 2 GB RAM. Pro & Elite — 2 vCPU / 2 GB RAM (4 GB optional only if running many symbols). A standard SSD is fine — NVMe isn't needed. Vultr, DigitalOcean, Linode all suitable.
  • Exchange rate: figures use RM4.65 per USD (May 2026 approximate). Actual rate fluctuates daily β€” see XE.com for live rates. VPS and AI providers bill in USD; your card issuer converts at their rate.
  • Special Launch Promo (50% off licence) runs until 31 Dec 2026: Starter RM183, Pro RM365, Elite RM548 for the first year. Renewals at full rate. See Pricing.
What's the difference between the tiers?
The tiers are a RM1/day upsize ladder β€” each step adds meaningful capability:

Trial β†’ Starter (RM1/day): Unlocks live trading on Binance and a second symbol.
Starter β†’ Pro (RM1/day more): Adds SWING mode, 5 symbols, auto ML retrain, DCA Bot, Harvest.
Pro β†’ Elite (RM1/day more): Pro already includes AI commentary (Anthropic). Elite adds provider choice + custom endpoints (OpenAI, Gemini, DeepSeek, MiMo), AI Trade Coach (post-trade AI explanations), 10 symbols, and AI-assisted manual trades.

Full comparison at pricing.html.
Can I upgrade later?
Yes. Each paid tier is just RM1/day more than the previous. You can upgrade anytime from the dashboard or by purchasing a new license key. Remaining time on your current tier is credited toward the upgrade.
Is there a free trial?
Yes β€” 30-day Trial with Paper mode and Testnet, no credit card required. Paper mode simulates trading against live prices with a virtual balance (no real money). Testnet uses Binance's sandbox with fake funds but real order mechanics. The Trial gives you enough to validate your configuration before committing to a paid tier.
What currency is pricing in?
All pricing is in MYR (Malaysian Ringgit). Payments are processed via Stripe, which supports international credit/debit cards and GrabPay. Stripe will convert to your local currency at checkout if needed.
βš™οΈ Setup & Configuration 17 questions
What VPS specs do I need?
Minimum: 1 vCPU, 2 GB RAM, 25 GB SSD, Ubuntu 24.04 LTS. Recommended: 2 vCPU, 2 GB RAM (the 2nd vCPU speeds the weekly ML retrain). A standard SSD is sufficient — NVMe gives no real benefit for this workload. The installer automatically adds a 2 GB swapfile so the ML retrain always has headroom. A low-latency VPS near Binance (Singapore or Tokyo) is best for live trading. A suitable VPS runs about $10–15/month. No co-location, special hardware or paid data feeds are needed: ApexQuant reads Binance's own price feeds from an ordinary VPS, and the optional AI is the only paid extra.
Does the bot work on Binance Testnet?
Yes. Set Trading Mode (TRADING_MODE) to TESTNET in Dashboard β†’ Bot Config. The bot connects to testnet.binance.vision with testnet API keys. Testnet uses fake money and real order flow mechanics β€” it's the recommended way to validate your configuration before going live. Get testnet keys from testnet.binance.vision.
What is PAPER mode vs TESTNET mode?
PAPER mode (Trading Mode (TRADING_MODE) = PAPER): Fully local simulation. No connection to Binance. The bot simulates buys and sells against live price feeds using a virtual balance. No API keys required beyond a read-only price feed connection.

TESTNET mode (Trading Mode (TRADING_MODE) = TESTNET): Connects to Binance Testnet with real order-flow mechanics but fake funds. Requires Binance Testnet API keys. Closer to live behavior than PAPER mode.
How do I update ApexQuant to a new version?
Full step-by-step update instructions are in the Updating to a new version section of the Guide. The safe pattern is rename-and-clone (never git pull in the running directory): stop the bot, extract the new version, run the updater, and your config and keys carry over — keep the old copy for 24 hours until you confirm the new version is stable. We also email licensed customers when a new version is released.
How do I know if I need separate Binance Futures API keys?

You only need Futures for funding-rate harvest. Everything else in ApexQuant works without it, so if you don't use harvest you can skip the futures key.

Whichever key gets Futures has to meet Binance's conditions, listed in Why can't I turn on Futures for my Binance API key? You can use one key for spot and Futures, or a second key just for Futures: ApexQuant uses a separate Futures key when you give it one, and otherwise the same key as spot. Enter the keys via apexquant --config-gui (Binance panel).

Why can't I turn on Futures for my Binance API key?

Binance only allows it when all of these are true:

  • Your Futures account is opened first. On a sub-account, open Futures on that sub-account.
  • The API key is created after that. An older key can't get Futures, so create a new one.
  • The key is restricted to your server's IP address.
  • The account isn't using portfolio margin.

You only need Futures for funding-rate harvest. Everything else in ApexQuant works without it.

How do I switch from TESTNET to live trading?
Go live from the dashboard: Bot Config β†’ Trading Mode β†’ LIVE (typed confirmation + PIN). Swap your testnet keys for live Binance keys via apexquant --config-gui (Binance panel β€” Spot Trading enabled, VPS IP whitelisted). Note: SWING mode requires Pro tier or above.
What is the Bot Config tab and what can I configure there?
The Dashboard β†’ Bot Config tab lets you configure all operational parameters without editing .env. Settings are saved to the database and persist across reboots.

Configurable via Bot Config tab: Trading mode (live/testnet), trading pairs, timeframe, max positions, daily loss limit, Kelly fraction, drawdown limit, ATR settings, ML gate, AI Commentary, AI Conviction Scorer, Grid Bot parameters, and all strategy toggles (SWING, HARVEST, SENTIMENT, FOMC, MACRO).

Keep in .env (SSH only): Binance API keys, AI provider key, Dashboard password, Telegram token, Session secret.

Yellow dot = customised (saved in database). Green dot = using default value.
What is reconciliation? Why does the bot poll Binance every 6 hours?
ApexQuant runs a reconciliation pass every 6 hours that compares its local database against Binance's actual records. This catches and self-heals discrepancies β€” orders that completed but weren't recorded locally, deposits or withdrawals you made manually, or any state drift caused by a crash or restart at the wrong moment.

The reconciliation is lightweight (a handful of API calls per cycle) and runs silently in the background. You'll see [RECONCILE] log lines when it runs. No action needed from you under normal conditions.
Do I need to update my VPS regularly?

Yes β€” this is your responsibility. Linux receives security patches regularly (kernel, networking, system libraries). ApexQuant cannot protect against operating system vulnerabilities. Run apt update && apt upgrade -y monthly, and reboot if a kernel update was installed. See guide section 1.6 β€” Keep Your VPS Patched for the full procedure including unattended-upgrades setup.

Does ApexQuant trade Spot or Futures?

Currently Spot trading only, in USDT or USDC pairs: you choose one currency for your account. The Harvest module uses funding rate data from perpetuals but does not open futures positions β€” it only holds hedged spot positions to collect funding. Futures/perpetuals support is on the roadmap.

Which stablecoins does ApexQuant support?

USDT and USDC. Your account trades in one of them at a time: you pick it during setup, and you can switch later in Settings (the Base currency setting). All prices, budgets and profits are then shown in that currency.

If your Binance account also holds the other stablecoin (say you trade USDC and still have some USDT), ApexQuant never touches it. It is listed under "Other (not managed by ApexQuant)", valued at today's exchange rate, and counted in your wallet's grand total, but never in the bot's equity or in the money the bot trades with.

The Grand Total card on the Holdings tab is headed “Grand Total (Base currency: USDT)” (or USDC). The big figure is what the account side of your wallet holds: your base currency's cash plus the other coins, valued in the base currency. Another stablecoin is never converted into that figure: it is shown on its own line in its own unit (for example “3,000.00 USDC”), and a small line at the bottom gives the whole wallet at today's rates. Only when one other stablecoin holds more than the whole account side does the big figure become that stablecoin, in its own unit, with your base currency's coins on a line beneath. On the card only the currency code is coloured: your base currency in green, another stablecoin in amber (hover it to see that ApexQuant does not trade it).

Other stablecoins are not traded. More may follow.

Can I switch from USDT to USDC (or back)?

Yes: change the currency in Settings (the Base currency setting). If your grids are holding coins or have open orders, ApexQuant asks what you would like to do with them, and you decide:

  • Wind down: your current grids sell what they hold at their normal sell prices and buy nothing new; new grids start in the new currency.
  • Sell now: everything the bot holds (grids, DCA baskets and directional positions) is sold at the market price. You see the estimated profit or loss for each grid first (it may be a loss), and you confirm twice.
  • Move across: your coins are kept, not sold: their records move to the new currency's pair at the live exchange rate (you see the rate and the cost on both sides first, and the move is refused if the rate looks wrong).
  • Cancel: nothing changes.

An open funding-harvest position must be closed before you switch. If you have an open DCA basket or directional position, "Sell now" sells it too; to wind down or move across instead, close it first.

Optional: you can also convert your leftover money in the old currency to the new one when the switch finishes: either only the money the bot was using, or all your free money in the old currency. It is off unless you tick it, and you see the estimated amount first. Money locked in orders you placed yourself on Binance is never touched. ApexQuant always uses the live exchange rate and never assumes one stablecoin equals another.

It costs a trading fee. Converting is a market trade on Binance, so Binance charges its trading fee (about 0.1%, read from your account for that pair). The estimate you see before you tick the box is already after the fee (for example “up to 1,000.00 USDT, about 999.00 USDC after the exchange's fee”), and the finish note reports what actually arrived, with the fee. Move across is not a trade (the coin stays in your account and only its records move), so it has no fee.

Do I enter BTCUSDT or BTC?

Just the coin: BTC, ETH, SOL. ApexQuant builds the pair from your account's currency (BTCUSDT on a USDT account, BTCUSDC on a USDC account). If you saved pairs in an older version, they are converted for you automatically. In Telegram, /buy BTC 50 and /sell BTC work the same way (a full pair such as BTCUSDT is accepted too).

How do I back up / move ApexQuant to a new server?
ApexQuant has a built-in encrypted backup in Settings – Backup & Restore, producing an encrypted .aqbackup file. When you create it, choose Routine (settings & trading state only) or Migration (also includes your credentials, passphrase-protected). To move to a new server: run bash install.sh, then apexquant --setup-gui and pick Restore from backup β€” it shows what will and won't be restored and prompts for anything missing. Your license key is never in a backup and can't be resent (security) β€” keep your purchase email from {email} and paste the key when asked. A lost passphrase means the backup is permanently unreadable.
Why are some settings in .env and others in the database? What goes where?

ApexQuant splits configuration into two layers by design:

πŸ“„ The .env file holds secrets and bootstrap infrastructure the bot needs before its own database is available, or that changes rarely:

  • Binance API keys (BINANCE_API_KEY, BINANCE_API_SECRET, and the futures equivalents)
  • Dashboard password, Admin PIN, and session secret
  • Telegram bot token and chat ID
  • FRED API key and Cloudflare Turnstile keys (if enabled)
  • Server bind address, ports, and timezone

These are read at startup, so changing any of them requires a bot restart. Secrets live only in .env β€” they are never written to the database.

πŸ—„οΈ The database holds everything else β€” your day-to-day trading parameters and Elite AI provider keys β€” which you edit live from the dashboard's Bot Config tab: trading mode (paper / testnet / live), trading symbols, candle interval, strategy and risk settings, and your Anthropic/OpenAI/Gemini/DeepSeek/MiMo API key. Most apply immediately; a few (such as symbols or interval) note “restart required” next to the setting.

The rule of thumb: secrets and how the bot connects to Binance/Telegram go in .env; everything about how the bot trades, including your AI provider key, goes in the dashboard. See also “Where do I configure a given setting?”.

If a key exists in both: a value saved via the dashboard or apexquant --config-gui lives in the database and takes precedence over the same key in .env β€” .env is only read for a key the database has no value for. Editing .env for something you've already changed in the dashboard will appear to do nothing until you change it the same way you set it.

For backup and migration: use the built-in encrypted Backup & Restore in Settings β†’ Backup & Restore. Choose Routine (settings & trading state only β€” credentials excluded, the default) or Migration (also includes your credentials, passphrase-protected; use when moving servers). Your license key is never in a backup and can't be resent β€” keep your purchase email safe. See Guide β†’ Backup & Restore for full steps.

Does ApexQuant update itself automatically?

Yes — automatic daily updates are enabled by default. Each new version is verified (SHA-256) and installed automatically, with auto-rollback on failure; your .env, license and database are always preserved.

You can opt out any time with sudo aq-update.sh --disable (re-enable with sudo aq-update.sh --enable), or update manually with curl -fsSL https://get.apexquant.tech/update | sudo bash. Updates run around 04:30 server time; the log is at /var/log/aq-update.log.

Will I be notified when my bot auto-updates?

Yes. If you have Telegram set up, the bot sends a message after each auto-update β€” confirming the new version, or letting you know if an update was rolled back and the previous version restored. No action is needed; the bot restarts itself. You can also see the last update status on the dashboard's Auto-update card at any time (works with or without Telegram).

What does “positions are still being managed” mean when the bot pauses?

When a safety limit pauses the bot, it places no new buys, but selling still works: it keeps watching your open positions and still sells them at their stop-loss, trailing stop or take-profit, your grids' sells keep working, and your own sells work too. “Managed” means watching and exiting, not buying more.

New trades resume by themselves only for two of the limits: the daily loss limit resets at your local midnight and the weekly one the following week. A losing streak or the minimum balance stays on until you press Resume (and Resume is refused while the balance is still below the minimum).

What happens to my grid's orders when a safety stop (or Emergency Stop) is on?

Buying is not allowed while a stop is on, so the grid's waiting buy orders are taken off Binance, once. If Binance does not confirm the cancel, ApexQuant tries again every minute until it does. Sell orders already on Binance stay and can still fill, and your coins stay yours. A halt blocks new buys only: stop-losses, take-profits and sells still work, and a grid still puts a sell on coin it holds. When trading resumes, the grid puts a buy back on every empty level below the price by itself. A stop never sells anything by itself; your own exit rules and your own sells keep working.

The log says the stop once, with the reason; reminds you every 15 minutes while it lasts (“Still halted after 1 h 30 min”); and says once when it is over. A stop that was in force when ApexQuant restarted comes back after the restart, and its message says its figures are as of the halt.

What does the daily loss limit count?

Your cash plus the cost of the coin you hold. It does not count coin price moves, so a price falling on coin you still hold does not trip it. Money that really leaves the account does count, such as a withdrawal or a Binance test-network reset. When the limit stops ApexQuant, the message says it plainly: “this counts your cash and the cost of the coin you hold, not coin price moves, so money that left the account, such as a withdrawal or a reset, counts too.” The daily limit lifts at your local midnight.

Why does my grid say “The safety monitor is starting” after a restart?

When ApexQuant starts, it first reads your account and restores any safety stop that was in force. No grid starts and no order is sent until that is done, so a stop can never be skipped by a restart. It takes a moment and the grid then starts by itself. If a stop is in force you see “Trading is halted, so no new grid is started. Press Resume when you're ready.”

Why does ApexQuant say my balance is 0 when I hold another stablecoin?

ApexQuant trades in one currency. If that currency is below the smallest order while another stablecoin in your wallet holds at least that much, it tells you once, for example: “Your USDT balance is 0, but you hold 500.00 USDC. ApexQuant trades in USDT, so it can't use that. Switch your currency to USDC in Settings, or convert on Binance (Binance charges a small trading fee).” The dashboard keeps the notice for as long as it is true.

Nothing is switched or converted for you. Switch the currency in Settings, or convert on Binance (Binance charges a small trading fee). The notice clears by itself once the balance is back or the currency is switched.

What is the Honest Performance Report?

A performance view scoped to your real live trades only β€” paper and testnet results are excluded, and it isolates your current strategy configuration so results from old settings don’t inflate the numbers.

It shows win rate, profit factor, expectancy, net and gross P&L (with fee drag broken out), and max drawdown. Statistically weak metrics like Sharpe are labelled “insufficient sample” rather than shown as if meaningful. Available on the dashboard Performance tab and via the /performance Telegram command. Works on all tiers.

Which actions ask for my PIN or 2FA code?

Every action that moves money, or changes what the bot does with your money, needs two things: you are signed in (or it is your own Telegram chat), and you give your Admin PIN, or your 2FA code if you use 2FA. It is asked every time: a code you entered a moment ago for something else does not count, and Telegram's five-minute pass is not used for these. If you use 2FA and have no PIN, you type the 2FA code where the PIN would go.

That covers: buying and selling by hand (the dashboard buttons, and in Telegram /buy, /sell, /forcesell, /dca buy, /dca close, /dca sell); Stop & Liquidate and Reset & Rebuild; Resume, Restart and Stop & Quit; resuming, recentering or extending a grid; the currency switch; changing the strategy or the trading mode; saving or resetting any money setting (the grid and DCA budgets and size, capital, the loss limits, stops and take-profits, the coins you trade, funding harvest, the AI budget, your Binance keys); taking over coin (setting the cost basis, adopting, re-assigning); restoring a backup, resuming after one, and a backup that includes your keys; the licence key; the TradingView secret (TradingView is coming soon).

Emergency Stop is different on purpose. You may not have time to find your phone, so it asks for your dashboard password typed again, and nothing else: no PIN and no 2FA code. It works on every account. In Telegram, /stop and /emergency ask for nothing, because the chat is yours. Pausing or draining a grid keeps the PIN check it always had.

With neither a PIN nor 2FA set up, these actions do not run: ApexQuant says “To sell manually, set an Admin PIN or turn on 2FA first.” for a sale and “To do this, set an Admin PIN or turn on 2FA first.” for the others. (A new install can still enter its licence key before it has either.) It works the same in paper, testnet and live mode, and while trading is halted. ApexQuant's own exits (stop-loss, trailing stop, take-profit, a grid's sells, a DCA exit) are not your actions and never ask.

Is the profit/loss ApexQuant shows me after trading fees?

Yes. Every realised profit or loss figure ApexQuant reports β€” on the dashboard, in the Honest Performance Report, and in Telegram β€” is calculated net of trading fees for the full round trip (both the buy fee and the sell fee), not just one side.

Fees are computed from your effective Binance fee rate (including the BNB-discount rate if you use it), and where the exact fee Binance charged on a fill is available it uses that actual amount; otherwise it uses a close estimate, doubled to cover both legs. The Honest Performance Report additionally breaks out gross vs net so you can see the fee drag on its own.

Binance charges a lower rate to an order that waits on its book (a maker order) than to one that fills straight away at the market price (a taker order). Grid orders are normally maker orders; market buys and market exits are taker orders, so strategies that use more market orders pay more in fees. Your own rate is shown on Binance.

These are Binance’s fees, paid to Binance on any trading activity β€” ApexQuant does not add or take any fee of its own.

What is Smart TP / Runaway Chase?

Smart TP is an opt-in, Elite-only second-layer exit that activates when a position blows strongly past its original take-profit. Instead of selling at the original TP price, the bot cancels that resting order and follows the move up with a configurable trailing stop.

The key safety property: the trail has a hard floor at the original TP price, so the exit can never be worse than a normal take-profit. If the move immediately reverses, you exit at (or above) the original TP. If it keeps running, the bot rides it and locks in a higher gain.

It is designed for trend conditions and is off by default. You can configure the arm gap (how far price must overshoot before arming), the trail percentage, and whether to require a BULL regime before arming. Find all settings under Bot Config → Features & Gates.

How do I uninstall / factory-reset ApexQuant?

There are two paths β€” see the Uninstall section of the guide for full details and copy-ready commands.

Remove software, keep your data (safe default): your license key, database, and configuration stay on disk. Your license seat stays bound β€” reinstalling later re-attaches everything automatically.

curl -fsSL https://get.apexquant.tech/uninstall | sudo bash

Full factory reset (purge) β€” irreversible: deletes all local data including your license key, trade database, and configuration, and releases your license seat so you can activate on a different server. You will be prompted to type PURGE to confirm.

curl -fsSL https://get.apexquant.tech/uninstall | sudo bash -s -- --purge

In both cases your Binance exchange account itself is untouched β€” uninstalling or resetting ApexQuant does not cancel your Binance orders or move funds. (The one action that cancels orders is the dashboard's Switch Binance Account flow, which you trigger and confirm yourself β€” see the Switching Binance Accounts guide.) Manage any open positions on Binance directly if needed.

🧭 How the bot behaves 20 questions
Will my orders fill at a worse price than I expect (slippage)?

It depends on the kind of order.

  • Grid buys and sells are limit orders that rest on Binance at their own price. They fill at that price or better, never worse.
  • Market orders fill at whatever the market gives at that moment, which can be a little away from the last price you saw. ApexQuant uses market orders for stop-losses, trailing stops, Stop & Liquidate and emergency sales, and as the fallback when a banded exit misses (below).
  • Funding Harvest opens and closes both of its legs with market orders.

A price band on the less urgent orders. DCA entries and take-profits, and Directional entries and partial take-profits, are sent as a limit order that must fill at once within a small band around the price the bot saw (0.3% by default), or it is cancelled. If an entry misses the band, it is skipped and never chased; the bot looks again at its next chance. If an exit misses, it goes to the market straight away so it still completes, and the log says so. Stop-losses, trailing stops, emergency sales, Stop & Liquidate and Funding Harvest stay market orders, because getting out matters more than the price; the grid uses limit orders anyway.

See it for yourself. The Performance tab has a card called “Fill quality of market orders”: per coin and reason, over the last 7 and 30 days, how far market orders filled from the price the bot saw (average and worst). On busy coins such as BTC and ETH the difference is usually small; on thin coins it can be larger (see “Which coins does ApexQuant work best on?”). A backtest uses assumed fees and slippage, not your real fills.

How fast does the bot react and send orders?

ApexQuant is built for steady, rule-based trading, not for speed. It is not a high-frequency system, and it does not need special hardware or a server next to Binance's.

  • Grid: live prices come from Binance and the bot looks at them every couple of seconds. Your buy and sell orders already rest on Binance, so Binance fills them without waiting for the bot. After a fill, the next order is placed within a moment.
  • DCA: buys follow your schedule or a price drop; the take-profit and trailing checks run every couple of seconds.
  • Directional: it looks at the live price every couple of seconds, against signals that update once per closed one-minute candle. The optional AI check (Elite) can add a few seconds, and there is a short pause between orders on the same coin.
  • Funding Harvest: it checks every five minutes (funding itself is paid every eight hours).
  • Slower inputs: market mood, news and the market regime update every few minutes to every half hour, because they change slowly.

If the live price feed goes quiet, the bot stops trusting it and uses ordinary price requests until it is back. The TradingView webhook has its own answer in the TradingView section.

How does the bot handle Binance's request limits and dropped connections?

It copes with both by itself.

  • Request limits: ApexQuant keeps track of how much of Binance's allowance it is using. When it gets high, it puts non-urgent requests (such as extra price checks) on hold; orders and cancels always go first.
  • When Binance asks it to slow down: it waits as long as Binance says, then carries on. Nothing is lost. If Binance pauses the server for a while, it sends nothing until that ends and tells you on Telegram.
  • Dropped price or fill streams: it reconnects on its own, waiting a little longer between tries, and uses ordinary requests as a backup meanwhile. After a fill stream reconnects it checks your orders directly, so no fill is missed.
  • Binance unreachable: it trades nothing, says so once, reminds you every 15 minutes and carries on by itself when Binance is back. Orders already resting on Binance stay there. See “What happens during a Binance outage?”.

One thing to know: while ApexQuant cannot reach Binance it cannot send a stop-loss or take-profit either. Telegram tells you when that is the case.

What happens if my server restarts, goes offline or the bot crashes, even in the middle of a trade?

Nothing is cancelled or sold when ApexQuant stops. Your coins stay in your account, and orders already resting on Binance stay there and can still fill.

Every order is recorded with its own ID before it is sent. When the bot starts again it asks Binance about each one, books anything that filled, and does not send a duplicate. It then compares its records with Binance and books any fills it missed while it was down; they show as ordinary rows in Recent Trades. While it runs, it also re-checks recent fills against Binance every couple of minutes, so a missed update does not stay missed. If that check cannot finish at once, it keeps trying and says so in the log. A safety stop that was on when it stopped comes back after the restart (see “Why does my grid say ‘The safety monitor is starting’ after a restart?”).

What protects you while the bot is down, by strategy:

  • Grid: its buy and sell orders on Binance keep working. If a buy filled while the bot was down, the sell for it is placed when the bot is back.
  • DCA: your basket is saved. Its take-profit or trailing exit is watched by the bot, so it cannot fire while the bot is down; it carries on after the restart.
  • Directional: open positions are saved and restored. Their stop-loss, trailing stop, partial take-profit and time limit are watched by the bot, so they do not fire while it is down.
  • Funding Harvest: if the outcome of an order was uncertain, the bot keeps the spot coin, tells you, and does not open again until it is sorted out. Closing is done by the bot, so it waits for the restart.

If a position matters to you, look at the dashboard after any outage.

Do stop-losses and take-profits sit on Binance, or does ApexQuant manage them?

Only the grid's sell orders sit on Binance. Everything else is watched by the bot and sent when it is due, as a market sell (the DCA and Directional take-profits first try a small price band and go to market if it misses; see the slippage answer):

  • Grid: buy and sell orders are limit orders resting on Binance. A grid has no stop-loss by default: it is built to hold coin when the price falls, and an optional safety backstop is off by default.
  • DCA: the take-profit or the trailing exit (your choice) is watched by the bot. DCA has no stop-loss; it is designed to hold through dips.
  • Directional: the stop-loss, the trailing stop, the partial take-profit and the time limit are watched by the bot, every couple of seconds.
  • Funding Harvest: the bot closes it when funding falls below your exit level.

So if the bot loses its connection or is switched off, only the grid's resting orders keep working; a DCA take-profit or a Directional stop will not fire until the bot is back and can reach Binance. A safety stop does not block exits: it stops new buys and never force-sells.

What happens in a flash crash or a sudden spike?

ApexQuant cannot prevent losses in a sharp move; coin you hold loses or gains value with the price. What it does:

  • Grid: its limit orders fill at their own prices as the price moves, so on the way down it buys level by level and holds the coin. If the price falls below the bottom of the range, the default is to cancel the grid's orders, move the coin it holds to Held, sell nothing, and restart by itself once the price has been back inside the range for a while. Smart Grid (off by default) can widen the range instead. On a spike up, sells fill at their levels.
  • DCA: it has no stop-loss; it buys by its own rules and holds.
  • Directional: the stop-loss is a market sell. In a very fast drop it can fill below the stop price.
  • Safety monitor: it counts realised losses and your cash plus the cost of the coin you hold, so a price falling on coin you still hold does not trip it. When a limit is reached it stops new buys; it never force-sells (see “What does the daily loss limit count?”).
How does each strategy behave when the market switches between trending and sideways?
  • Grid: it ignores trend signals. It earns when the price moves back and forth inside its range. In a steady fall it keeps buying and holds more coin; in a steady rise it sells at each level and can end up with little to sell. When the price leaves the range, the default is to stop the grid and hold the coin (see “What happens in a flash crash”).
  • DCA: it buys on your schedule or after price drops whatever the trend, and it does not stop buying in a downtrend. Smart DCA changes the size of each buy with market mood: bigger when others are fearful, smaller or skipped when they are greedy.
  • Directional: it reads the market state (rising, neutral, falling, choppy or wild). It buys only when the market is rising or neutral, and waits when it is falling, choppy or wild.
  • Funding Harvest: it ignores the trend and follows the funding rate only.

No strategy is right in every market. Grid and DCA suffer in a long fall; Directional does not trade much in a choppy market; Harvest depends on funding being positive.

Why is my unrealised profit negative while my realised profit is positive?

Realised counts only finished cycles, after fees: coin that was bought and then sold. Unrealised is the coin you still hold, valued at today's price against what it cost. Both can be true at once: a grid or a DCA basket can finish many small winning cycles while the coin it still holds was bought higher than today's price.

The two figures are shown separately and are not netted against each other. Unrealised moves with the price every second; it becomes realised only when the coin is sold. A realised gain is not a promise that the unrealised part will recover.

Will ApexQuant sell coins I already owned before I started?

No. Every sale is limited to what that strategy bought itself. Coin you already held is recorded as your starting balance and is not touched.

Coin in your wallet that no strategy manages shows under “Other (not managed by ApexQuant)” on Holdings, with a note: “Some coins in your wallet aren’t managed by any strategy.” and a link to review them. ApexQuant never adopts it by itself: you can hand it to a strategy yourself, or sell it by hand (a sale needs your PIN or 2FA).

Can I trade by hand on Binance, or deposit and withdraw, while the bot runs?

Yes, with care. ApexQuant tells your coin from its own by its records of the orders it placed itself.

  • Trades you make on Binance by hand are not counted in any strategy. ApexQuant tells you once a day per coin that trades made outside the bot were found, and the coin shows under “Other (not managed by ApexQuant)”.
  • Deposits and withdrawals are noticed and are not counted as profit or loss. The daily report line shows them together with price moves of your coin.
  • Keep a large withdrawal in mind: the daily loss limit counts money that really leaves the account (see “What does the daily loss limit count?”).
  • Do not sell a coin that a grid or a DCA basket holds, or cancel the bot's orders on Binance: the bot will notice and correct its records, but you will have changed what it is doing. Use the dashboard buttons instead.
Does ApexQuant use leverage? Can I be liquidated?

Spot strategies (Grid, DCA, Directional): no. They buy and sell coin with your own money, with no borrowing, no margin and no short selling. You cannot be liquidated.

Funding Harvest is different. It is off by default and needs Pro or Elite. It buys the coin on Spot and opens a short of the same amount on Binance Futures, so the price moves of the two roughly cancel and it earns the funding payments. What to know:

  • Before any money moves, ApexQuant sets that coin's Futures position to 1x leverage with isolated margin. If it cannot do that, nothing is bought. If you already have an open position on that coin, it is left as it is.
  • The spot coin is not margin for the short. If the price rose very far, the short could lose its margin and Binance could close it. At 1x that is much less likely than with leverage, but not impossible. ApexQuant does not top up margin; it only records such a close afterwards.
  • If the short cannot be opened after the spot buy, the bot sells the spot coin back; if the outcome is unclear it keeps the spot coin and tells you.
  • Funding can turn negative, and fees and the small price gap between the two legs cost money too.

See “How do I know if I need separate Binance Futures API keys?” and the Funding Harvest section of the guide.

Does the bot keep trading if ApexQuant's own servers are unreachable?

Yes. The bot runs on your server, and your orders go straight to Binance. A short interruption in reaching ApexQuant's licence server does not stop trading, and you will see nothing alarming.

If it stays unreachable for a long time, the log warns you first (“Your licence could not be confirmed for a while. Trading will pause unless it can be. Check your internet connection.”). If it is still not confirmed after that, new trading pauses and you are told why; it resumes once the licence can be checked again. Selling and your orders already on Binance are not affected by the check.

Is the backtest free of look-ahead and survivorship bias?

It avoids look-ahead in how it uses prices, but a backtest is still only history, and it has limits you should know:

  • Look-ahead: each decision uses data up to the close of its own candle only. For the Directional strategy it then trades at that same candle's close, with a small assumed slippage and fee. Exits are decided on closes, so a stop is not tested against a candle's low.
  • Survivorship: the Backtest tab takes the price history Binance gives for the one pair you type. It has no list of past coins, so a coin that was delisted and is no longer offered cannot be tested. Results on coins that survived look better than results on all coins would.
  • Grid fills: a grid order counts as filled when the candle's low or high reaches its price, with no queue and no slippage, and a buy and its sell can both fill inside one candle. Real fills can be slower, as the grid FAQ explains.
  • What is not simulated: the ML gate, the AI, the funding, news and market-mood filters and the wild-market state are not part of the backtest. Smart DCA is tested with a neutral mood, so it buys the normal size every time.
  • Fees: they are included. Slippage is included for Directional and DCA, not for the grid.
  • Synthetic data: if Binance's history cannot be read, the tab shows a clear red “simulated data” badge and the result is not based on real prices.

Treat a backtest as a way to compare settings and spot problems, not as a forecast. Our Terms say the same: backtests can suffer from look-ahead bias, survivorship bias and overfitting.

What's the worst drawdown I should expect?

There is no safe number we can give you, and we do not publish a promised or typical drawdown. A drawdown is the fall from a peak, and it depends on your strategy, your coins, your settings and the market you run in. Three places show you real figures:

  • Performance tab (the Honest Performance Report): your own live results, with max drawdown, win rate, fee drag and more. Sharpe appears once you have enough closed trades.
  • Backtest: it reports the max drawdown for the settings and the coin you test. It is measured on candle closes in the past.
  • The Live page: a real account's equity curve and returns, delayed and in percentages.

A coin you hold can fall a lot; the grid and DCA hold coin by design. Decide the amount you could lose without trouble, and size your budget by that.

Are the default settings overfitted to past data?

We do not claim the defaults are optimal for any coin or period, and nothing in the product says they were tuned to a past stretch. Treat them as a cautious starting point.

  • Test your own coin and settings in a backtest, and read the answer above about its limits.
  • Be careful with the Elite parameter sweep: it finds the settings that fit one stretch of history best, which is exactly how overfitting happens. A setting that wins a backtest may not win live.
  • The ML gate retrains weekly on recent market candles, not on your trades.
How does each strategy size its orders?

The defaults below are the ones the bot ships with. You can change them in Bot Config.

  • Grid: your grid budget (default 200) is split evenly over the levels (default 10), so each level gets budget divided by levels. Each level must be at least about 10 after rounding or the grid is not started, and the spacing must be wide enough to clear fees.
  • DCA: a fixed amount per buy (default 50), up to a budget per coin (default 500) and a number of buys (default 10). The per-buy amount cannot be set below the bot's minimum order size (11 by default).
  • Smart DCA: it scales each buy by market mood: balanced runs about half to double the base size, conservative half to one and a half, aggressive half to triple, and pure DCA always buys the base size. A buy is skipped when the mood score is very low, and a 200-week-average check nudges the size a little up or down.
  • Directional: a share of your balance for each trade, from about 2% up to 10%, scaled by recent results and by how volatile the coin is. With little trade history it uses the small end.
  • Funding Harvest: about 15% of your balance per coin and at most 30% in total by default; half of each amount buys the coin on Spot, and a short of the same quantity is opened on Futures.
Is the bot just a bet on Bitcoin's price?

Partly, yes, and it is better to know that. Grid, DCA and Directional buy and hold coin on Spot, long only (no short selling), so the value of what they hold moves with the price of those coins. If BTC falls, a grid or DCA basket on BTC falls with it until the coin is sold at a gain.

What the strategies add is how and when they buy and sell, not protection from a falling market. Funding Harvest is the exception: it holds the coin on Spot and an equal short on Futures, so it does not depend on the price direction, but it has its own risks (see the leverage answer above).

Is there a circuit breaker that stops everything on a bad day?

Yes: the safety monitor. Its default limits are a daily loss of 3%, a weekly loss of 10%, four losing trades in a row, and a minimum balance. You can change them in Bot Config. When one is reached:

  • New buys stop and the grid's waiting buys are taken off Binance. Nothing is force-sold: exits, the grid's sells and your own PIN-confirmed sales still go through.
  • The daily limit clears by itself at your local midnight and the weekly one at the next week. A losing streak or the minimum balance stays until you press Resume.
  • A stop that was on when the bot restarts comes back after the restart.

It counts your cash plus the cost of the coin you hold, not coin price moves; see “What does the daily loss limit count?”. Directional also pauses its own new entries after a few stop-losses in a row, until a winning trade or the next day.

Does it still work with much more money?

It works, but size changes the picture, and the bot does not check how deep the market is before it trades.

  • Market orders (Directional, DCA, exits) have no price limit, so a large order on a thin coin moves the price against you. On BTC and ETH this is small until the amounts are very large.
  • Directional uses a share of your balance, so its orders grow with the account. Grid and DCA use the amounts you set, so they do not grow by themselves.
  • Binance's minimum order size is the floor, not the ceiling: a very small budget spread over many levels can fall below it.
  • The number of coins is limited by your plan, and the grid has a cap on levels and open orders.

Start with an amount you are comfortable with, and increase it in steps while you watch real fills (see the slippage answer above).

Which coins does ApexQuant work best on?

On busy, liquid coins. The defaults are BTC and ETH, with the grid on BTC. Thin markets move against you when you buy or sell, and a coin that trades little can leave a limit order unfilled for a long time.

  • Each coin needs your order to be above Binance's minimum order size. If it is below, ApexQuant skips it and says so (“order skipped - size is below the exchange's minimum; nothing placed, nothing lost”).
  • You can trade in USDT or USDC pairs; the account has one currency.
  • Pro and Elite can let the coin scanner choose coins by volume and recent change; it only looks at coins with a lot of 24-hour trading, and its list is applied at the next restart.
πŸ”§ Troubleshooting 5 questions
The bot started but isn't making any trades. Why?
Several things can block entries: (1) ML gate is filtering signals β€” lower the ML confidence setting (ML_CONFIDENCE_MIN, group ML Gate) or retrain with /trainml. (2) Regime is BEAR or CHOP β€” the bot waits for trending conditions. (3) FOMC blackout window is active β€” check with /fomc. (4) FRED macro score is blocking β€” check with /macro. (5) Fear & Greed is at extreme levels. (6) Daily loss limit already hit β€” check with /status. Use the Gate Audit view in the dashboard to see which gate is blocking.
My license key says "invalid" or "machine mismatch". What do I do?
Contact {email} with your reference number. We will resolve it within 24 hours.
Do I need to use Cloudflare for Turnstile to work?

No. Turnstile is a standalone Cloudflare product. You only need a free Cloudflare account (no credit card, no domain transfer). Your domain can use any DNS provider β€” Cloudflare, Route53, Namecheap, GoDaddy, etc. When creating the widget, enter your root domain (e.g., yourdomain.com) and Turnstile automatically covers all subdomains.

What happens if Cloudflare is down?

If you have Turnstile enabled and Cloudflare cannot be reached, login is denied until it can be. This is intentional β€” to enforce the protection you opted in to. To temporarily bypass during an outage, edit /root/apexquant-data/.env, blank out the two TURNSTILE_ keys, and run systemctl restart apexquant.

How do I check what my bot is doing / read its logs?

Start in the dashboard β€” no shell needed for most checks:

  • ℹ️ System Info (Dashboard) β€” click to view your config, version, mode, strategy, and risk limits inline, with a Copy button for sharing with support. Secrets are redacted.
  • ⬇ Export Log (Dashboard) β€” downloads the filtered log as a text file, with the System Info report prepended as a header.

Shell commands (if you need them):

  • Check status: systemctl is-active apexquant or systemctl status apexquant
  • Last 200 lines: journalctl -u apexquant -n 200 --no-pager
  • Since today: journalctl -u apexquant --since today
  • Last hour: journalctl -u apexquant --since "1 hour ago"
  • Warnings and errors only: journalctl -u apexquant -p warning -n 100 --no-pager
  • Live follow: journalctl -u apexquant -f
  • Save to file: journalctl -u apexquant --since today --no-pager > apexquant-$(date +%F).log
  • Targeted search: journalctl -u apexquant | grep -iE "grid|ticker stale|kill|license"

Privacy: before sharing logs with anyone, redact your chat IDs, IP addresses, and any license key visible in the output.

πŸ” Binance Sub-accounts & API Keys 8 questions
What is a Binance sub-account?
A Binance sub-account is a separate wallet within your main Binance account. It has its own balance, its own API keys, and its own transaction history β€” completely isolated from your main holdings. ApexQuant runs against the Binance sub-account's API key, so it can only see and trade the funds you've explicitly transferred into the Binance sub-account. Your HODL stack, manual trades, and other balances remain untouched. If you run ApexQuant on a main account instead of a sub-account, you can also set a fixed trading-capital amount in Settings β†’ Capital, so ApexQuant only uses the portion of your account's currency (USDT or USDC) you choose and leaves the rest untouched.
Why is a Binance sub-account recommended?
A Binance sub-account gives the bot its own isolated wallet. Even in a worst-case scenario β€” bug, compromised key, misconfiguration β€” only the Binance sub-account funds are exposed. Your main holdings, HODL stack, and manual trades are completely untouched. It also gives you a clean balance view in the ApexQuant dashboard without noise from your main account.

Required for Elite in LIVE mode, strongly recommended for Pro LIVE, optional for Trial/Starter and any TESTNET/PAPER mode.
Can I use my main Binance account API key?
Trial, Starter, and Pro tiers support main account keys (a Binance sub-account is optional but strongly recommended for fund isolation). Elite in LIVE mode requires a Binance sub-account β€” this is enforced at bot startup. For Elite users on TESTNET or PAPER mode, the sub-account requirement is relaxed.
How do I create a Binance sub-account?
See the full walkthrough in the Setup Guide β€” Step 4b. The short version: Binance β†’ Profile β†’ Sub-Accounts β†’ Create Sub-Account β†’ Virtual Sub-Account β†’ transfer USDT or USDC (the currency you'll trade in) β†’ create API key with Spot Trading only, no withdrawals, IP-restricted.
My Binance entity doesn't support Binance sub-accounts (e.g. Binance.US)
Some regional Binance entities (including Binance.US) do not offer Binance sub-accounts. If you are on such a platform, dedicate a separate full Binance account to ApexQuant, or accept the main-account risk with documented awareness. For region-specific Binance account questions, contact Binance support directly β€” ApexQuant cannot advise on Binance account configuration.
Can ApexQuant manage multiple Binance accounts or API keys?
No. ApexQuant is single-tenant by design β€” each instance manages exactly one Binance API key on one Binance sub-account. This is a deliberate security and isolation choice. If you want to trade on multiple Binance accounts, deploy separate ApexQuant instances on separate VPS β€” one license per VPS, each with its own dedicated Binance sub-account.
Will my main account holdings show in ApexQuant?
No. ApexQuant only sees what the Binance sub-account API key has access to. Your main account holdings, other sub-accounts, and any other wallets are completely invisible to the bot.
Why does ApexQuant refuse to start if Withdrawals is enabled on my API key?
This is a hard safety guard. An API key with withdrawal permission can move funds out of your account β€” which ApexQuant never needs to do. If such a key were compromised, funds could be extracted. ApexQuant refuses to operate with withdrawal-capable keys as a non-negotiable safety measure. Fix: Binance β†’ API Management β†’ Edit your key β†’ uncheck "Enable Withdrawals" β†’ Save β†’ restart the bot.
πŸ”‘ Licensing 17 questions
Is ApexQuant related to apexquant.io?
No. ApexQuant (apexquant.tech) is an independent product. We aren’t affiliated with apexquant.io or any other company or product using a similar name. Our only website is apexquant.tech, and we never ask for your Binance keys, passwords or payments anywhere else.
Can I share my installation with a friend?
No. License sharing violates the Terms of Service and may result in suspension. Each license activates exactly one installation. If you want to use ApexQuant on additional machines or for additional accounts, please purchase additional licenses.
What if I lose my license key?
Your license key is in your purchase confirmation email β€” search your inbox for "ApexQuant" or check your spam folder. If you cannot locate it, contact {email} with your purchase reference number and we will resend it.
Which AI providers are supported?

ApexQuant supports six AI providers for AI Commentary, set via AI Commentary Provider (AI_PROVIDER, group Elite AI):

  • Anthropic Claude β€” anthropic. Available on Pro and Elite.
  • OpenAI (ChatGPT) β€” openai. Elite only.
  • Google Gemini β€” gemini. Elite only.
  • DeepSeek β€” deepseek. Elite only. Very affordable ($0.14/$0.28 per 1M tokens).
  • Xiaomi MiMo β€” mimo. Elite only.
  • Custom endpoint β€” custom + Custom Endpoint Base URL (AI_BASE_URL) + Custom Model ID (AI_MODEL), both in group Elite AI. Any OpenAI-compatible API. Elite only.

Pro tier is limited to Anthropic. Elite unlocks all providers and provider choice. See the AI Commentary guide section for full setup instructions and pricing.

Do I need my own API key for AI Commentary?
Yes β€” AI Commentary is bring-your-own-key (BYO). You create an account with your chosen AI provider, generate an API key, and enter it in the dashboard (Settings β†’ Elite AI) or .env. You pay the provider directly at their published rates. ApexQuant does not proxy or mark up AI API calls β€” $0 AI cost to us.
Does Pro tier include AI?
Yes β€” Pro includes AI Market Commentary using Anthropic Claude. This reviews signals before BUY entries and provides reasoning context. Pro is limited to Anthropic. Elite unlocks all providers (Anthropic, OpenAI, Gemini, DeepSeek, MiMo, custom endpoint) plus provider choice and the AI Trade Coach (post-trade AI explanations).
Where is my data processed when I enable AI Commentary?
AI Commentary providers are operated from different jurisdictions: Anthropic, OpenAI, and Google (Gemini) are US-based companies; DeepSeek and Xiaomi (MiMo) are China-based companies; a Custom endpoint sends requests to whatever provider you configure. Regardless of provider, ApexQuant transmits only a sanitized market-context prompt (symbol, price, indicators, regime/sentiment scores, bot state) — never API keys, balances, trade history, or personal data — and AI Commentary is opt-in and can be disabled at any time.
Can I move ApexQuant to a different VPS?
Yes. Create an encrypted backup from the dashboard (Settings β†’ Backup & Restore), then on the new VPS run bash install.sh followed by apexquant --setup-gui and choose Restore from backup. The setup wizard prompts for your license key during restore. Your license is bound to a machine ID β€” contact {email} with your purchase reference number BEFORE you start the bot on the new machine so we can release the old binding and let the new one register. See the User Guide for full backup & restore steps.
Do I need a new license if I switch to a Binance sub-account?
No. Switching Binance sub-accounts or rotating API keys does not affect your license. Update the values in your .env and restart the bot β€” your license continues to work normally.
Can I run ApexQuant on multiple VPS instances with one license?
No. Each license covers one installation. If you need additional installations (for example, running multiple strategies on separate VPS), please purchase additional licenses. To move an existing license between machines, contact {email} with your reference number and we will process the transfer. One free transfer per license period.
Can multiple ApexQuant instances share the same Binance API key?
No β€” each instance must use its own dedicated Binance sub-account with its own API key. Reasons:

1. Position tracking conflicts. Each ApexQuant instance maintains its own internal position state. If two instances share an API key, they'll see each other's trades and misinterpret them as their own β€” leading to incorrect P&L, wrong stop-loss triggers, and double-selling positions.

2. Order ID collisions. Manual trades initiated from instance A would appear as unknown orders in instance B's reconciliation cycle, triggering false alerts.

3. Binance rate limits are per-API-key. Sharing one key across instances burns through rate limits faster, causing trade failures.

4. Loss of fund isolation. The whole point of Binance sub-accounts is to isolate strategy capital. Sharing a key defeats this safety layer.

Correct setup for running multiple strategies: create one Binance sub-account per ApexQuant instance, generate a separate API key per sub-account, transfer only the funds you want that strategy to manage.
What happens when my license expires?
The bot will halt gracefully and send you a Telegram notification 7 days before expiry and again on the expiry date. Your existing open positions are NOT auto-closed β€” you can either close them manually via /sell or the dashboard, or renew your license to resume trading. To resume, renew using the same email you registered with β€” your existing key and configuration are preserved and the bot resumes automatically (see "How do I renew my license?" below). No new key is issued.
I'm on a trial β€” what are the limitations?
Trial gives you full access to the bot for 30 days, limited to 1 trading symbol and Paper + Testnet modes. That includes the grid bot, so you can try it on testnet; for live grid trading you need Pro or Elite. ML, advanced regime filters, and AI Commentary are not available on Trial. Binance sub-account use is encouraged but optional. Email support is included on all tiers β€” Trial too. No credit card required to start. After the trial, upgrade to Starter for just RM1/day (Special Launch Promo: RM183 first year).
Will I be warned before my license expires?
Yes β€” ApexQuant reminds you on multiple channels as your license approaches expiry:
  • Email β€” at 14, 7, and 1 day before expiry, with a note on how many early-renewal bonus days you still have.
  • Telegram β€” a nudge at 7 and 1 day before expiry (push is less frequent to avoid noise).
  • Dashboard banner β€” shown from 30 days out, escalating in colour as expiry nears.
All reminders can be silenced from Profile β€Ί License in your dashboard β€” one click mutes all channels. See "How do I renew my license?" below to renew before expiry and earn bonus days.
How do I renew my license?
Renew by purchasing your tier again using the same email you originally registered with β€” your license key stays the same and your bot keeps running without interruption. There is nothing to update in the dashboard after renewal; your bot picks up the new expiry automatically.

How to renew:
1. Go to Profile β€Ί License in your dashboard β€” a Renew button appears 30 days before expiry (or immediately if lapsed).
2. Or visit apexquant.tech/renew and enter your registered email.

Early-renewal bonus: Renew within 30 days of expiry to earn bonus days (up to +30) added on top of your new year.

Which email? The one you bought with: your key email was sent there. Not sure? Enter an address on the renew page and it emails the license details to that address only if a license exists for it.

Your configuration, trade history, and bot state are all preserved.
I didn't get my renewal email.
First check your spam or junk folder. If it still hasn't arrived after an hour, contact support from the Support page with the email address on your licence, and we'll get it to you another way.
Where do I configure a given setting β€” .env or the dashboard?

Quick guide:

Dashboard β†’ βš™ Bot Config is where you change settings β€” trading mode (paper / testnet / live), trading symbols, candle interval, strategy and risk parameters, and your Elite AI provider key (Anthropic, OpenAI, Gemini, DeepSeek, or MiMo). Most apply live, no restart needed; a few note “restart required” next to the setting.

Edit in .env (then restart the bot) only for what genuinely cannot be set in Bot Config: Binance API key and secret, dashboard password, admin PIN, session secret, FRED API key, Telegram token and chat ID, Turnstile keys, and timezone. These are secrets or connection settings read only at startup.

If a setting has a Bot Config field, that's the way to change it β€” not .env. A value saved via the dashboard takes precedence over the same key in .env, so editing .env for something already set in Bot Config has no effect. For the reasoning behind the split, see “Why are some settings in .env and others in the database?” in Setup & Configuration.

πŸ“± Dashboard & Mobile 14 questions
What is the Profile tab and what's in it?

The Profile tab is your single place for personal identity, authentication, and license info.

Sections:

  • Identity: display name and avatar (PNG/JPG upload, max 256KB)
  • Change Password: change your dashboard login without editing .env
  • License: view your license key, tier, and expiry
  • Connections: Telegram chat ID (read-only)
  • Language: English currently; more languages coming soon
How do I view daily, monthly, and yearly performance?

The πŸ“Š Performance tab shows all your performance data with a pill switcher at the top to toggle between Daily, Monthly, and Yearly views. Each view shows a bar chart plus a detail table for the selected period.

Is there a chart of my account balance over time?

Yes β€” an equity curve chart is shown at the top of the Live tab, just below the balance and P&L stats. It plots your account balance from your earliest equity snapshot to now, showing your overall P&L percentage and the date range. It's a quick visual reference for your bot's long-term performance.

My Holdings total and Portfolio total show a small difference β€” is something wrong?

No β€” a small difference is normal and clears on its own. ApexQuant cross-checks your tracked holdings (coins being traded + managed coins + any set-aside + cash) against your portfolio total on every pass.

The most common reason is simple market volatility: the two totals are valued a moment apart, so when a coin's price is moving, each one gets marked at a slightly different price β€” a few cents or dollars that disappears on the next check once they line up again. There's nothing to do.

How big is "small"? Judge the difference as a percentage of your account, not the dollar figure alone β€” a $0.75 gap on a $400,000 book is a tiny fraction of a percent (just market movement), not a real discrepancy.

When it's worth a look: if the difference is large and doesn't clear after repeated checks, it usually means your wallet holds some coin ApexQuant has no purchase record for. The bot simply leaves that coin alone β€” it will never buy or sell it on its own. This is a bookkeeping mismatch, not a trading fault: nothing has been or will be sold automatically. That coin stays yours to keep or sell as you wish. You may also see this for a specific coin as a [TALLY] message (e.g. “BCH: tracked and wallet disagree”) — it means the same thing, just for that one coin.

Another stablecoin you hold (for example USDT on a USDC account) is listed under "Other" and counted in the grand total, but never in the bot's total, so it does not affect this check.

Can I install the dashboard as a mobile app?

Yes β€” ApexQuant dashboard is now a Progressive Web App (PWA). On your mobile browser, visit your dashboard URL and use "Add to Home Screen" (iOS Safari β†’ Share β†’ Add to Home Screen; Android Chrome β†’ menu β†’ Install app). The dashboard then launches in standalone mode (no browser bars) like a native app. Repeat visits load faster from cache.

Note: the PWA caches static dashboard assets (HTML, JS, icons) but always fetches fresh data from your bot's API endpoints. Your trades, balances, and P&L are always live.

Where is the Emergency Stop button?

The πŸ›‘ EMERGENCY STOP button sits in the dashboard header, top-right area. It's visible from every tab (Live, Performance, Profile, Bot Config, etc.) so you can halt the bot quickly regardless of where you are in the dashboard. Clicking it asks you to confirm, and to type your dashboard password again (only if you have set one), then halts all new buys. It never asks for your PIN or a 2FA code, so you can stop the bot fast; selling still works while it is stopped.

On mobile (narrow screens), the button shrinks but stays visible.

What is Stop & Quit and how is it different from Emergency Stop?
Emergency Stop halts ApexQuant immediately and pauses all new trading. Your open positions are kept. The stop itself sells nothing. It blocks new buys only: your stop-losses, take-profits and own sells keep working, and sell orders already on Binance stay and can still fill. A grid's waiting buy orders are taken off Binance once and are put back when you resume.

Stop & Quit (the πŸšͺ button or /stop_quit in Telegram) does the same halt, plus it cancels all ApexQuant's resting orders and releases its management of every position β€” your coins stay in your Binance wallet, unsold. Use this when you want to leave ApexQuant and manage your funds yourself on Binance.
How do I change my dashboard password?

Go to Dashboard β†’ Profile tab β†’ Change Password. Enter your current password, your new password (minimum 8 characters), and confirm. Your existing session will be logged out and you'll be redirected to log in with the new password.

The new password is hashed with bcrypt and stored in your database. The DASHBOARD_PASSWORD in .env is used only as a bootstrap value on first install and as a recovery fallback if the database is lost.

Lost password recovery: Set DASHBOARD_PASSWORD to a new value in .env, add RESET_DASHBOARD_PASSWORD=1, and restart the bot. Log in with the new password, then remove RESET_DASHBOARD_PASSWORD from .env and restart again. This resets only the password — your trade history, settings, and open positions are untouched. Never delete apexquant.db — it stores all your trades, equity, settings, and open-position state.

How do I set or change my Admin PIN?

Open dashboard → Profile tab → πŸ” Admin PIN section. Leave "Current PIN" blank for first-time setup, enter a 4–8 digit New PIN, confirm, and click Update PIN. To change an existing PIN, enter the current one first.

PIN is stored as a bcrypt hash in the database β€” never plaintext.

I forgot my Admin PIN β€” how do I reset it?

Set APEXQUANT_PIN to a new value in .env (or leave it unset to clear the PIN), add RESET_ADMIN_PIN=1, and restart the bot. Then open dashboard → Profile → Admin PIN to set a fresh PIN, and remove RESET_ADMIN_PIN from .env and restart again. No database editing required.

What does the Admin PIN actually protect?

The PIN (or your 2FA code, if you use 2FA) is the second protection, after being signed in, on every action that moves money or changes what the bot does with it in both dashboard and Telegram: manual BUY / SELL, Resume, Restart, Stop & Quit, Mode Change, a change to a money setting, and similar. It is independent of your dashboard password. It is asked every time, never remembered. After several wrong attempts it is locked for a while. Emergency Stop is the one exception: it asks for your dashboard password typed again (when you have one), never a PIN or a 2FA code, so you can stop the bot fast. Resume and Stop & Quit do need the PIN or 2FA code. See “Which actions ask for my PIN or 2FA code?” for the full list.

Can I sell only part of a position instead of closing it all?
Yes. In the dashboard’s manual SELL dialog you can pick 25%, 50%, 75%, or 100%, type a custom percentage, or enter an exact number of units. The rest of the position keeps being managed automatically β€” take-profit and trailing stay active on the remainder. If selling your chosen amount would leave a remainder too small to trade under the exchange minimum, the dialog will offer to close the whole position instead. You can also partial-sell from Telegram: the SELL menu has the same 25/50/75/100% presets plus Custom % and Custom qty options, or type /sell SYMBOL 30% / /sell SYMBOL 0.5 directly. Elite-tier accounts also get AI commentary on whether to exit now or let the bot manage the exit.
I have a tiny coin balance I can't sell β€” what is it and what do I do?

Over time, a very small leftover amount of a coin can build up β€” too small to trade on its own because exchanges enforce a minimum order size (both a minimum quantity and a minimum dollar value per order).

ApexQuant collects these into a "Small leftover amounts" card in the Holdings tab, so they're visible and tracked β€” never silently discarded, your coins are always kept.

Two manual choices per coin, once it's large enough to act on:

  • Sell to USDT or Sell to USDC (the button names your account's currency) β€” sell it at the current market price.
  • Adopt β€” bring it back under an active strategy's tracking on that symbol. This does not buy or sell anything.

Both buttons stay disabled together, with an explanation, until the amount reaches the exchange's minimum β€” the row shows roughly how much more it needs. Adopting a still-too-small amount wouldn't actually help (there's nothing to trade it with yet), so it isn't offered until it would. The card also shows each amount's average cost and a +/- indicator, just like the open-positions view, so you can see whether selling now would be a small gain or loss β€” or "cost unknown" when there's no recorded cost for a genuine rounding remnant.

Nothing here is ever auto-sold β€” every action is your choice.

Why are the Sell and Adopt buttons greyed out on a small amount?
Because that amount is still below the exchange's own minimum order size β€” it can't be traded yet, either sold or adopted into a strategy (adopting it wouldn't actually free it up, since the same minimum applies). It stays safely held and visible; hover either button for the exact reason and roughly how much more is needed. Once it reaches that minimum, both buttons enable and you choose.
🧠 AI Commentary 8 questions
Which AI does ApexQuant use for commentary?
Pro and Elite tiers include optional AI commentary on signals. Pro: Anthropic Claude only. Elite: all providers β€” Anthropic Claude, OpenAI ChatGPT, Google Gemini, DeepSeek, and Xiaomi MiMo β€” plus custom OpenAI-compatible endpoints. You choose the provider in Settings and bring your own API key. The bot tracks token usage and enforces a monthly budget cap to prevent runaway spend. AI commentary is informational only and never controls trade execution.
What data does AI Commentary send to the AI provider?
Only anonymised market indicators: current price, regime label, macro score, sentiment score, Fear & Greed index value, and ML prediction confidence. No personal information, no API keys, no account balances, no trade history is transmitted. AI Commentary is an optional feature requiring your own API key from your chosen provider.
Why does AI Commentary have a 15-minute cooldown?
Each AI Commentary call uses your chosen provider's API quota (Anthropic, OpenAI, Gemini, DeepSeek, MiMo, or your custom endpoint β€” whichever you configured). Without a cooldown, repeated dashboard refreshes or rapid signal evaluations could exhaust your monthly budget within hours. The 15-minute cooldown ensures commentary remains affordable for daily use. Trade signals themselves run every cycle β€” only the AI commentary layer is rate-limited. You can adjust the monthly budget cap in the dashboard Settings tab β†’ AI Commentary section.
Does AI Commentary make trading decisions?
No. AI Commentary is strictly informational. It provides analysis of current market conditions and signals, but it never blocks, approves, or modifies trade execution. All SELL exits remain fully rule-based (ATR trailing stop, take-profit). AI is fail-open by design β€” an API outage or budget exhaustion never affects trading.
What is the AI Conviction Scorer and how is it different from AI Commentary?
AI Commentary provides informational analysis on signals β€” confidence assessment, market context, and reasoning. It runs before BUY entries and informs (but does not control) the trade decision.

The AI Conviction Scorer runs after AI Commentary. It scores the trade as HIGH / MEDIUM / LOW conviction and adjusts position sizing:

β€’ HIGH β†’ 1.5Γ— Kelly position size
β€’ MEDIUM β†’ 1.0Γ— (normal size)
β€’ LOW β†’ trade is skipped entirely

Enable it in Dashboard β†’ Settings β†’ Conviction Scorer. Requires Elite tier and Anthropic API Key (ANTHROPIC_API_KEY, group Elite AI).
Why doesn't the AI Weekly Digest send automatically?

Starting in v4.9.5, all AI features in ApexQuant are opt-in by default. This includes the Weekly Digest that previously sent every Monday at 9am.

Why the change? To put cost control in your hands. AI features consume your provider credits (Anthropic, OpenAI, Gemini, DeepSeek, MiMo, or custom endpoint). Defaulting them OFF means you only pay for features you actually use.

To re-enable Weekly Digest: dashboard β†’ Settings β†’ Elite AI group β†’ toggle AI Weekly Digest (Mon 9am) to Enabled. Save changes. Next Monday at 9am, the digest will fire normally.

Why does AI Commentary sometimes show "rate-limited"?

AI providers (Anthropic, OpenAI, Google Gemini) enforce per-minute request limits, especially on free or low-volume API tiers. When ApexQuant detects 3 or more HTTP 429 (Too Many Requests) responses within 5 minutes, it auto-pauses calls to that provider for 10 minutes to prevent escalating rate-limit penalties or temporary IP bans.

Typical free-tier limits (as of May 2026):

  • Anthropic Claude: 5 requests per minute on free tier
  • OpenAI ChatGPT: 3 requests per minute on free tier, 60+ on paid
  • Google Gemini: 15 requests per minute on free tier

Options when rate-limited:

  • Wait for the auto-resume timer to elapse (shown on the AI Commentary widget in the dashboard)
  • Switch provider in Settings → Elite AI → AI Provider — different providers have separate counters
  • Upgrade your provider plan (Anthropic Tier 1 = $5 prepaid unlocks 50 RPM; check your provider's pricing page)

This auto-pause is informational only and never affects trading decisions — all auto-trading uses rule-based logic, not AI.

How do I avoid AI provider rate-limit errors?

If your primary AI provider (Gemini, OpenAI, or Anthropic) hits a 429 rate-limit error, ApexQuant can automatically retry with a fallback provider.

How to enable:

  1. Open Dashboard → Settings → Elite AI
  2. Find "AI Provider Fallback Chain"
  3. Enter comma-separated provider names. Valid values: anthropic, openai, gemini, deepseek, mimo, custom
  4. Make sure each fallback provider has its API key configured in the same group
  5. Click Save All

Example: If your primary is Gemini and you have Anthropic + OpenAI keys configured, enter anthropic,openai (or any combination of supported providers). When Gemini rate-limits, the bot will silently try Anthropic, then OpenAI if Anthropic also fails.

Verify it’s working:

journalctl -u apexquant -f | grep -E "ELITE-AI|Trying fallback"

You should see log lines like [ELITE-AI] gemini text API error: HTTP Error 429 followed by [ELITE-AI] Trying fallback provider: anthropic.

Providers without keys are auto-skipped. If you list a provider you don’t have a key for, the bot moves to the next one in the chain.

Cost note: You’re billed by whichever provider actually answers. If your primary is cheap and fallbacks are expensive, factor that into your monthly AI Budget Cap (Settings → Elite AI → AI Monthly Budget Cap).

πŸ“¦ DCA Strategy 9 questions
Why doesn't the manual buy form let me set a stop-loss in DCA mode?
The "exit mode" selector in the manual buy form only applies to Directional strategy. In DCA mode, all buys (automated or manual) are added to the same basket which has its own exit logic (Take-Profit Target (%) (DCA_TP_PCT), Trail Arm Threshold (%) (DCA_TRAIL_ARM_PCT), both group DCA). The bot intentionally hides individual exit controls in DCA mode to avoid confusion β€” the basket controls exits, not individual legs. If you want per-buy stop-losses, switch to Directional strategy via Settings β†’ Primary Strategy (PRIMARY_STRATEGY).
Does DCA have stop-loss protection?
No. DCA is designed to accumulate through dips. Positions do not auto-sell on losses β€” only on take-profit (TP) or trailing stops above your average entry. If price falls 20%, your basket stays open and the bot may continue adding legs (if budget allows).

This is intentional: DCA assumes you have a long-term thesis and are willing to hold through drawdowns. If you need automatic stop-loss protection on every position, use Directional strategy instead. Don't enable DCA if you cannot tolerate holding through significant drawdowns.
What if I press Manual BUY while DCA, Grid, or TradingView (coming soon) is active?
Directional (experimental): opens a tracked position with ATR trailing stop, hard stop, and partial TP. Standard behavior.

DCA mode (default): the buy joins your DCA basket. No separate stop-loss applies; position follows DCA exit rules (TP/trail above avg entry). A warning banner is shown before you confirm.

Grid mode: the buy is blocked and rolled back automatically. Grid manages its own inventory via limit orders β€” a manual buy would create an untracked position that conflicts with the grid. The order is reversed immediately (sold back to your account's currency, trade row removed).

TradingView mode (coming soon, not available yet): also blocked and rolled back. TV strategy expects entries only from webhook signals; a manual entry would have no exit protection. Behavior is identical to Grid mode.
What is Smart DCA "Buy The Dip"?

A composite signal that scales your DCA buy sizes based on market fear. Bigger buys when 5 macro indicators point to panic, smaller (or skipped) when greed dominates.

How is Fear Score calculated?

Weighted combination of: Fear & Greed Index (35%), FRED Macro Health (25%), News Sentiment (20%), Market Regime (10%), FOMC Week (10%). Each signal is normalized to 0.0–1.0 then weighted into a composite score.

Will Smart DCA make me lose more in bear markets?

No. Bigger buys at lower prices is the entire point — you accumulate more units when prices are low. Over a full market cycle this lowers your average cost basis compared to classic DCA.

What's the difference between Balanced and Aggressive mode?

Balanced (default) scales 0.5×–2.0× and skips buys in greed zones. Aggressive scales 0.5×–3.0× — bigger swings, only for customers comfortable with higher drawdowns mid-cycle.

Can I turn it off and run classic DCA?

Yes. Set Buy The Dip (Smart DCA) (DCA_BUY_THE_DIP, group DCA) to off, or pick "pure" mode. Classic DCA behavior is fully preserved when toggled off — zero behavior change.

In DCA mode, can I sell part of my basket?
Yes β€” you can sell a portion of a DCA basket without closing it. Use the dashboard SELL dialog (25/50/75%, a custom %, or exact units) or Telegram /dca sell SYMBOL 30% (or units). The basket is reduced proportionally and keeps its same average entry price; the remainder stays under automatic management (the basket take-profit continues on what’s left). What you can’t do in DCA is exit one specific buy/leg on its own β€” DCA treats all buys as a single combined basket with one average entry, so a partial sell trims the whole basket evenly rather than picking out an individual entry. For per-position stop-loss/take-profit on each entry, use the Directional strategy. To close the entire basket at once, use the dashboard SELL at 100% or Telegram /dca close.
πŸ“Š Grid Bot 20 questions
What is grid bot and how does it differ from Directional and DCA?
Think of three different fruit-stall strategies:

β€’ Directional β€” One basket holds one apple. Buy when prices are rising, sell when they're falling. Each apple is sold individually at its target. Profits depend on getting the direction right.

β€’ DCA β€” Buy one apple every week regardless of price. The basket fills up over time. When total basket value reaches your profit target, sell all apples at once and start a fresh basket. Best for accumulating long-term.

β€’ Grid Bot β€” Multiple baskets at fixed price levels. Buy at $1, sell at $2, buy at $1.50, sell at $2.50, repeat. Each round-trip is small profit. When price exits your range, the bot pauses, releases positions to the exit manager (take-profit/trailing protection, never force-sold), or holds β€” you choose via the Range Break Action.

Grid's exit is the next level up (spacing-based), not a user-set take-profit % like DCA and Directional use β€” see "How is grid bot profit calculated?" below for the math.

Each suits different market conditions: Directional for trending, DCA for accumulating long-term, Grid for sideways markets. You can run only ONE strategy per ApexQuant instance β€” to use multiple strategies, deploy multiple instances on separate VPS (each with its own license).
What market conditions suit grid bot?
Grid bot works best in sideways, choppy, or consolidating markets where price oscillates between a support and resistance zone without breaking out. High intraday volatility with no clear trend is ideal β€” the more often price crosses grid levels, the more round-trips complete and the more profit accumulates.

Avoid grid bot during strong trends (sustained rallies or sell-offs), major news events likely to cause breakouts, or thin liquidity periods where price may gap past multiple levels.
Can I lose money with grid bot?
Yes. Grid bot is not a risk-free strategy. In a strong downtrend, price falls through all your buy levels β€” every level fills and you accumulate a growing inventory of an asset that is declining in value. In a strong uptrend, price moves above your range and no further buys fill, so you miss the move entirely.

Grid downside is governed by your range bounds and the Range Break Action (GRID_BREAK_ACTION): when price exits the range the bot can close (default β€” release inventory to the exit manager's take-profit/trailing protection, never force-sold), pause (keep everything, wait), or hold. Or turn on Smart Grid to widen the range and keep trading instead of stopping (see the Grid Bot guide). There is no separate percentage stop-loss; you manage downside by choosing your range and break action appropriately for the asset's volatility. Setting a narrower range or using close limits how far inventory can run against you, but does not eliminate downside on a spot asset.
What happens when price exits my grid range?
You choose. By default the grid closes (cancels orders and hands your holdings to the safety net β€” never force-sold). You can also set it to pause (keep everything and wait) or hold. Or turn on Smart Grid, which instead grows the grid to follow the market: it adds new sell-levels above on a rally (free), or new buy-levels below on a dip (using that grid's own budget) β€” and holds what it has, without selling at a loss, once it can't safely add another level (budget spent, levels too thin, or at the size limit). Smart Grid never sells your holdings at a loss to keep going. See the Grid Bot guide for a worked example.

Behavior is controlled by the Range Break Action setting (GRID_BREAK_ACTION, Settings β†’ Grid), only used when Smart Grid is off:

close (default) β€” cancels all pending orders and hands filled inventory to the exit manager's take-profit/trailing protection. Not force-sold.

pause β€” cancels pending orders but keeps filled inventory. Your inventory continues losing value if price falls further. Use only if you plan to manually manage the position.

hold β€” does nothing. All orders remain active. Most risky option.

trail_up β€” if price breaks above your range (upside only), shifts the entire range upward to keep the grid alive at higher prices. Does not trigger on downside breaks.

Existing customer configurations are preserved. An inline warning is shown on the dashboard when "pause" or "hold" is selected.
How is grid bot profit calculated?
Unlike DCA and Directional β€” where you set a fixed take-profit percentage and the bot sells when price rises that far above your entry β€” grid does not use a take-profit %. Grid sells at the next grid level up from where it bought. Your profit per cycle is the spacing between levels, which ApexQuant sets automatically from your price range and level count (range Γ· levels), and every sell is checked to clear trading fees before it places. So with grid, your "take profit" is the level spacing (decided by your grid range and number of levels); with DCA and Directional, it's a percentage you choose.

Each completed round-trip (one buy fill + one sell fill at the next level up) earns approximately: (grid spacing) Γ— (quantity filled) βˆ’ (maker fee Γ— 2 sides). With geometric spacing, each level is a fixed percentage of the price apart, so profit per round-trip is roughly constant as a percentage. With arithmetic spacing, the absolute gap is fixed but the percentage shrinks as price rises.

Example (1 symbol, $100, 5 levels): 5 levels between $75,000 and $80,000 β†’ spacing β‰ˆ $1,250 per level (about 1.6% apart). $100 Γ· 5 = $20 per level β†’ each buy β‰ˆ 0.000267 BTC. When price rises one level and that lot sells, gross profit β‰ˆ 0.000267 Γ— $1,250 β‰ˆ $0.33. After two maker fees at ~0.1% each (β‰ˆ $0.04), net β‰ˆ $0.29 per completed buy-sell cycle. How many cycles you get per day depends entirely on how much the price oscillates within your range β€” grid earns from movement, not direction.
Which tier do I need for grid bot?
Grid bot requires Pro tier or higher for live (mainnet) trading. Pro runs a grid on 1 symbol; Elite runs grids on up to 5 symbols. Trial users have access to grid bot on testnet/paper mode during the trial period. Starter tier does not include grid bot.
How do I run grid bot on multiple symbols at once?
Set Grid Coins (GRID_SYMBOLS) in the Bot Config tab (Grid group) to a comma-separated list of coins, e.g. BTC, ETH, SOL, then restart the bot (just the coin: ApexQuant builds each pair from your account's currency). Each symbol gets an independent grid with its own price range, inventory, and PnL. Your Total Allocation (USDT or USDC) (GRID_TOTAL_ALLOCATION_USDT, group Grid) is split equally β€” $1000 across 4 symbols allocates $250 per grid. Pro tier runs a grid on 1 symbol; Elite on up to 5 symbols. Per-symbol Pause / Resume / Reset controls appear in the dashboard Live tab and via Telegram (/grid pause BTC).
What do the Grid controls do β€” Pause, Drain, Recenter, Extend Up/Down, Stop & Liquidate, Reset & Rebuild, Clear Stats?
  • ⏸ Pause / β–Ά Resume β€” freeze the grid (no new orders/fills) keeping inventory, levels and stats; Resume continues where it left off. Sells nothing.
  • πŸ«— Drain β€” cancels buying orders but leaves selling orders live; inventory sells off at its existing profit targets as price reaches them, then the grid stops on its own. Sells only at existing profit targets β€” never at a loss.
  • 🎯 Recenter β€” rebuilds the grid range around the current price. Cancels and replaces open orders, but does NOT sell your holdings β€” carried-over inventory gets a new sell target where possible.
  • ⬆️ Extend Up β€” adds new sell levels above your current range as future sell targets. Free β€” no orders placed, no capital spent.
  • ⬇️ Extend Down β€” adds new buy levels below your current range, funded only from that grid's own unused budget β€” never fresh funds. When it can't add another safely β€” budget spent, levels too thin, or at the size limit β€” it holds what it has and waits. Recenter or add capital to grow further.
  • β›” Stop & Liquidate β€” cancels all open grid orders and market-sells the entire inventory back to your account's currency (USDT or USDC), then stops the grid. The grid is gone (no rebuild). Sells everything. Cannot be undone.
  • πŸ”„ Reset & Rebuild β€” same liquidation, then immediately rebuilds a fresh grid around the current price (Β±Auto-Range % (from current price) (GRID_AUTO_RANGE_PCT, group Grid)). Use this to re-centre the grid after price has moved far from your original range. Sells the existing position first. Cannot be undone.
  • πŸ“Š Clear Stats β€” zeroes the scorecard (realized P&L, fees, fill count) only. Does not touch open orders or inventory β€” the grid keeps running.
Extend Up/Down and Recenter are the manual version of what Smart Grid does automatically β€” see the Grid Bot guide. Stop & Liquidate and Reset & Rebuild require your PIN or 2FA code.
Can I add capital to a running grid without disrupting it?
Yes. When you raise your Total Allocation (USDT or USDC) (GRID_TOTAL_ALLOCATION_USDT), ApexQuant deploys the extra amount as new grid levels and leaves your existing open orders untouched β€” nothing is cancelled, no working orders are lost. The additional capital simply funds more levels at your current level size. You only need enough free balance to cover the increase itself (not your whole new total), so topping up your account and then raising the allocation works smoothly.

Lowering the allocation, or changing the number of levels, is different: that reshapes the existing grid and requires rebuilding it, so ApexQuant will ask you to confirm first (it shows a prompt before cancelling and replacing your open orders). Nothing is cancelled unless you confirm.

If a small top-up is less than one level's worth, ApexQuant holds it as spare budget and deploys it on the next opportunity rather than placing an undersized order.
Can Smart Grid keep extending forever?
No β€” and that's by design. Smart Grid grows the grid only while it can do so safely: while each level stays a worthwhile size and the grid hasn't reached its size limit. Once it reaches capacity, it stops adding new levels rather than diluting into levels too small to matter or growing unmanageably large. It holds what it has, tells you it's at capacity, and waits β€” nothing is sold, nothing lost. To grow further, recenter the grid or add trade capital.

If the grid has grown past its normal size, the extra levels retire themselves as their sells complete at a profit, bringing it back to your set size β€” never selling at a loss.

New: it can do that recenter for you. Turn on Auto-Recenter (GRID_AUTO_RECENTER_ON_IDLE, Settings → Grid, Smart Grid only, off by default) and when the grid has reached its size limit AND price breaks a full grid-width clear of the range, the bot recenters around the current price automatically β€” so a strong trend doesn't leave the grid parked while you're away. It's the same Recenter you'd run by hand: your held coins, cost basis, profit, and settings are unchanged, only the range moves β€” nothing is ever sold to do it. A brief spike won't trigger it, it won't thrash in a choppy market, and there's a daily cap. By default it only acts on an upside break; you can allow downside too, which deploys cash into a falling price (understand the risk first). See the Grid Bot guide.
The whole market is pumping and my grid stopped cycling β€” what's happening?

In a strong, sustained rally, price can climb above your grid's range and keep going. A grid profits from price moving up and down within a range β€” once price leaves the top and stays there, there are no more sells to cycle, so the grid goes quiet. This is normal grid behavior, not a fault.

Your coins are safe the whole time β€” nothing is sold at a loss, and any inventory you're holding simply waits (and is worth more as price rises).

What the bot does about it depends on your settings:

  • With Smart Grid on, the grid first grows itself upward to follow the rally (adding sell-levels as price rises), up to its safe size limit.
  • Once it reaches that limit, with Auto-Recenter enabled it re-anchors the whole grid around the new price automatically so it keeps cycling β€” see “Can Smart Grid keep extending forever?” above for exactly how that works.
  • If Auto-Recenter is off, the grid holds and waits for price to come back into range, or you can Recenter manually from the dashboard at any time (it moves the range, never sells your coins).

In a very fast market-wide melt-up where many coins pump at once, it's normal to see several grids parked above range at the same time β€” each is safe, holding its coins, waiting to resume. Recenter the ones you want to keep trading at the new prices, or let Auto-Recenter handle it.

Can I run Directional and Grid strategies simultaneously?
No. ApexQuant is single-tenant by design β€” one instance runs one primary strategy. Primary Strategy (PRIMARY_STRATEGY, group Features & Gates) determines which strategy is active: directional, dca, or grid (a tradingview option is coming soon). If you want to run both a directional strategy and a grid on the same or different symbols, you need to deploy two separate ApexQuant instances β€” each with its own VPS, Binance sub-account, and license key.
What are DCA Budget per Symbol and DCA Max Averaging Legs?

These are the two exposure controls that cap how much capital a DCA basket can deploy:

  • DCA Budget per Symbol (USDT or USDC) β€” the most the basket will spend on a single coin (in your account's currency) before it stops adding legs. Once the budget is exhausted, no more averaging buys occur until the basket sells. Total DCA exposure across all active symbols is roughly budget Γ— number of symbols.
  • DCA Max Averaging Legs β€” the maximum number of averaging buys (legs) per basket, regardless of budget remaining.

Both are editable in Settings β†’ DCA (PIN-gated). They take effect on the next restart. For a hard account-wide ceiling, also set Trading Capital (CAPITAL_MODE) to fixed and Fixed Capital Amount (USDT or USDC) (TRADING_CAPITAL_USDT, group Capital) in Settings β†’ Capital.

Will DCA stop buying when the market drops?

No β€” DCA is designed to hold through unrealized drawdowns and average into weakness. The bot only stops adding legs when the budget or max-legs cap is hit. It does not halt on unrealized basket losses.

Kill-switch behavior by strategy: Every strategy uses the same measure for the daily and weekly halt: your cash plus the cost of the coin you hold. A price falling on an open basket or grid does not trigger a halt; money that really leaves the account, or a realised loss, does. Unrealized basket drawdown at 20/35/50% shows as warnings in the dashboard budget cell β€” informational only, never a halt.

To cap total capital at risk, set Trading Capital (CAPITAL_MODE) to fixed + Fixed Capital Amount (USDT or USDC) (TRADING_CAPITAL_USDT, group Capital). For a per-symbol limit, use DCA Budget per Symbol in Settings β†’ DCA.

Grid Bot: what do "Buy", "Bought", "Sell", "waiting" and "holding" mean? Why does a waiting buy show no position?

Each line in the Grid order list is an order, and only some orders are positions (coin you actually hold right now):

  • Buy $X → sell $Y · waiting β€” a resting limit buy at $X that has not filled yet. Nothing has been purchased, so there is no position β€” this is correct. The "→ sell $Y" is the plan: when price drops to $X and the buy fills, the grid immediately places a sell at $Y to take profit. The money for it is reserved in the open buy order.
  • Bought $X → sell $Y · holding β€” the buy filled; you now hold that inventory (bought at $X), and a sell order rests at $Y to close it for profit. This is the only line that is an open position.
  • Sell $Y · waiting β€” a resting limit sell at $Y waiting for price to rise (it closes inventory you're holding).

So a "waiting" buy with no open position is normal and expected β€” the grid is simply waiting to buy the dip. You'll only see a position once that buy fills and the line flips to "Bought … holding". A buy can sit unfilled for days if price never reaches its level; that's the grid doing its job.

The grid reconciles its orders against the exchange continuously, so the dashboard reflects your real open orders. You can always cross‑check under Open Orders on the exchange.

Why does one grid buy sometimes show as several rows at the same price?

Each grid level has a set budget. When ApexQuant buys at a level, the exchange sometimes fills that single order in a few pieces over a short time — this is normal, and depends on who else is trading at that moment, not on anything ApexQuant does differently.

ApexQuant records each piece as it fills, so you may see two or three rows in Recent Trades at the same price and level that, added together, come to that level's full amount. They are one grid buy completing, not separate trades — the same applies to sells.

If you want to confirm this yourself, add up the quantities on the same-price rows for that level — they'll sum to the level's own budgeted amount.

Does the grid bot resume automatically after a range break?

Yes β€” if Range Break Action (GRID_BREAK_ACTION) = pause and Grid Auto-Resume (GRID_AUTO_RESUME) = true (the default, group Grid), the grid re-activates itself as soon as price drifts back inside your configured range (with a small 0.1% buffer to prevent flapping at the boundary). You'll receive a Telegram notification when it resumes.

Auto-resume is skipped if:

  • The kill-switch is halted (e.g. daily loss limit hit).
  • Binance is unreachable at the moment price re-enters.
  • The grid was paused manually (via the dashboard or /grid pause) β€” manual pauses always require a manual /grid resume.

To disable auto-resume and always require a manual resume, set Grid Auto-Resume (GRID_AUTO_RESUME) to false in Bot Config β†’ Grid.

Does the Grid bot use the market signals, AI, or regime detection?

No — by design. Grid is a rule-based range trader: it places and replaces limit orders at the fixed price levels you set, and profits from price oscillating inside your range. It deliberately does not use the market-signal pipeline (regime, Fear & Greed/sentiment, macro/FOMC, funding, 200-week MA), the ML gate, the 8-factor signal engine, or AI Commentary.

Gating a range strategy by trend signals would stop it buying the very dips it's meant to buy. Grid does obey the shared safety rails: a kill-switch halt or a Binance API outage stops it immediately (a halt also takes its waiting buys off Binance, once, and the grid puts them back when trading resumes), and it never acts on an invalid price.

Because grid ignores trend signals, it can keep buying within range during a downtrend — that risk is managed by your range bounds, Range Break Action, baseline cap, and the Drain control, not by entry signals. The signal pipeline applies to Directional and DCA; see the Guide's strategy signal matrix.

The price touched my grid level but my buy didn't fill. Why?

A limit order fills when the market actually trades through its price and the orders ahead of it in Binance's queue have been served. Touching a price on a chart does not always mean a trade happened at it, so a buy can sit unfilled while the price brushes its level. ApexQuant books a fill only when Binance says the order filled, never on a guess, so the order simply waits until the price trades through it again.

Why isn't all my grid money being used?

Buys are placed only on empty levels below the current price, so a grid never has all its money in orders at once. The grid card says which reason applies:

  • The level already holds coin that is waiting to sell, so it is taken until that coin sells.
  • Released levels keep no money and no order; they are not bought again until the range changes. Recenter puts that money back to work.
  • All the layers the grid is allowed are placed. Extend, Recenter or a higher Max Levels adds more.
  • Another level would push each one below Binance's minimum order size.
  • The price is outside the range, so there is nothing to buy.

None of these loses money; the card's note says “Nothing sold, nothing lost.”

Why does the bot keep some coin aside instead of selling it?

Coin the records hold that no level currently carries is kept aside, never lost. The grid does not sell it below its cost. As soon as a sell fills and frees a level above its cost, the grid puts a sell on that coin by itself. If it was bought above the top of the range, it stays until the range reaches above its cost (a recenter or an extension).

A leftover that is too small for Binance to sell on its own stays in your account and is shown as such; nothing is asked of you.

Why is my order price slightly different from the level I set?

Binance only accepts prices in fixed steps (the tick size) and amounts in fixed steps (the lot size) for each coin. ApexQuant rounds a price to the nearest step and rounds an amount down, so an order can sit a hair away from the exact level, and a quantity can be a hair smaller. If the bot cannot read a coin's steps it places nothing and tries again, rather than send an unchecked price.

πŸ”„ Switching Binance Accounts 4 questions
Can I switch Binance accounts?
Yes. Use the πŸ”„ Switch Binance Account button in Dashboard β†’ Bot Config. Complete the PIN + double-confirm flow until you see CLEARED, then update your API keys and restart. Never just edit .env directly β€” the bot loses access to the old account the moment keys change, and any open orders are stranded.
Why did my coins move to "Other" after switching accounts?
ApexQuant's fresh-start rule: it only manages your account's currency (USDT or USDC). All other assets in a new (or switched) account start in "Other" β€” unmanaged. This protects your coins from being traded without your explicit intent. To have ApexQuant trade a coin, convert it to your account's currency in Binance; ApexQuant will use that as capital.
Will ApexQuant sell my coins when I switch accounts?
No β€” not by default. The default switch action cancels ApexQuant's own open orders only, freeing the cash they held. Your coins stay in your Binance account, released to "Other" (unmanaged). If you want ApexQuant to also sell its positions to your account's currency before the switch, there is an explicit opt-in checkbox in the switch modal β€” but you must choose it; it is never automatic.
What happens if I just change my Binance API keys?
ApexQuant detects the new account on the next restart and starts fresh (good). However, any open bot orders on the old account are now stranded β€” ApexQuant has lost access to them and cannot cancel them. On Binance testnet, there is no manual order cancel UI, so those orders can only be removed by the bot. Always use πŸ”„ Switch Binance Account first.