gexbot docs
portal & bots

troubleshooting & FAQ

Fixes for sign-in and verification errors, failed payments, web app errors and stream limits, desktop plugins, missing strikes, and API rate limits.

This guide groups the fixes by area: your account, your payments, the web app, the desktop integrations, the market data, and the developer API.


Account & Sign-in

Why can I not log in?

The site names the cause in the message it shows. Match the message to the fix.

MessageWhat it meansWhat to do
Please verify your email before logging in.The account exists, but nobody opened the verification link yet.Open the verification link in the signup email. Look in the spam folder for it.
Invalid email or password.The address or the password is wrong.Reset the password at gexbot.com/user/forgot.
Your session changed. Please log in again.Another login replaced the session, usually from a different browser or device.Log in again.
Server error. Please try again later.The fault is on the gexbot side.Wait a few minutes and try again.
Service temporarily unavailable. Try again soon.The fault is on the gexbot side.Wait a few minutes and try again.
An unexpected error occurred.The cause is none of the above.Use the recovery steps under The site shows an error below.

The verification page shows one of these messages:

  • Account already verified. — the account is ready. Log in.
  • Verification failed. The link may have expired, or the account is already verified. — log in first. When the login still asks you to verify, ask support for manual verification.
  • Invalid verification code format. — the link is incomplete. Open the full link from the email again.
  • No verification code found. Please check your email link. — the address you opened has no code in it. Open the link from the email again.

After a verification error, clear the cookies and the cache for gexbot.com, then log in again. A cookie stored before the verification holds the old state and blocks the new one.

When the login still refuses the account, write to support@gexbot.com from the address on the account and ask for manual verification.


The signup page says "Email already exists."

An account already exists for that address. The signup did not fail: the account was created earlier, and the confirmation can arrive after it.

01

Log in instead

Go to the login page and log in with the password you chose.

02

Reset the password

If the password does not work, reset it at gexbot.com/user/forgot.

03

Use a valid password

A password needs 8 or more characters, with an upper-case letter, a lower-case letter and a number.

Do not create a second account with another address. Your subscription and your API keys belong to the first account.


The password reset code did not arrive

The reset page says If the address has an account, a code is on its way. It says this for every address, so the page does not show whether an account exists.

No code goes out in these cases:

  • No account uses the address. Check the spelling, and try the other addresses that you use.
  • Nobody verified the address yet. Open the verification link in the signup email first.
  • You asked for many codes in a short time. Wait 15 minutes, then ask once more.

Look in the spam folder before you ask again. When no code arrives, write to support@gexbot.com from the address on the account.


The password reset code does not work

The page says The code is not valid. Ask for a new code.

  • A code works for 15 minutes, and only once.
  • When you ask for more than one code, the three newest codes work.
  • After five wrong codes, every code that you have stops working. Ask for a new code. Your account is not locked.

After a reset, all your sessions end. Sign in again with the new password.


Billing & Payments

My renewal payment failed

The bank refused the renewal charge. The subscription becomes past_due and keeps your access while the payment is open.

01

Ask your bank first

Ask your bank why it refused the charge. Only your bank can release a blocked card, and the invoice cannot be paid until it does.

02

Update the card

Open Account → Subscription, select Manage Subscription, and add or update the card.

03

Pay the open invoice

Pay the outstanding invoice from the same page.

A past-due subscription cannot change plan

While a payment is open, a plan change fails with "This subscription status does not permit a plan change." Settle the payment first, then change the plan. See Account & Billing.


Web App

Browser Tab Sleeping & Latency Spinner

If the latency indicator in the bottom-right corner displays yellow/red or large timestamp delays when switching back to the browser tab, the browser has throttled background JavaScript execution.

Resolution:

  • In Google Chrome / Brave / Edge, navigate to Settings → Performance.
  • Under Always keep these sites active, add: https://www.gexbot.com
  • This ensures uninterrupted real-time WebSocket tick processing and chart rendering.

The site shows an error

Use these steps in order. Stop when the site works again.

01

Reload the page

Reload once and wait for the charts to connect.

02

Sign out and sign in

Sign out, then sign in again. This replaces a session that expired.

03

Clear the site data

Clear the cookies and the cache for gexbot.com, then sign in again.

04

Open a private window

Open the site in a private or incognito window. A private window ignores the stored cookies and shows whether an extension or a stored cookie causes the error.

05

Try another browser

Open the site in Chrome or Firefox.


"Stream connection failed. Device limit reached."

This message counts your stream connection requests, not your devices. Each request for a live connection counts against the daily quota for that endpoint, and the message appears when the quota is spent.

Three things raise the count:

  • Every open window and tab. Each one holds its own live connection and asks for its own.
  • Every reconnection. A window that cannot connect asks again on its own, so a failing window keeps spending the quota.
  • Every page reload. A reload asks for a new connection.

Resolution:

  • Close the other gexbot windows and tabs. Keep one window open.
  • Reload the remaining window once, then wait for it to connect.
  • Daily quotas reset every night at 12:00 AM ET. See Rate Limits & Quotas.

The quota email and this message are the same event

gexbot emails your account address on the first breach of an endpoint in each window. A breach email for the stream endpoint and this message describe one event, not two faults.


Why do my charts stop updating when I have several windows open?

Each window holds its own live connection, so several windows multiply the connection requests and reach the quota above.

Resolution:

  • Keep one browser window and change the ticker in it, instead of one window per ticker.
  • If one window still will not connect, open the site in Chrome or Firefox.

Desktop Integrations

Windows blocks a downloaded DLL

Windows blocks .dll files downloaded from the internet. Blocked files fail to load in ATAS, Sierra Chart, or Quantower.

Resolution:

  1. Open PowerShell as Administrator.
  2. Run Unblock-File on the downloaded DLL:
    Unblock-File -Path "C:\Path\To\Gexbot_ATAS.dll"
  3. Alternatively, right-click the .dll file in Windows Explorer, select Properties, check Unblock at the bottom, and click Apply.

NinjaTrader is different

The NinjaTrader 8 add-on is a .zip package, not a loose DLL. Do not unblock or copy a DLL for it. See NinjaTrader below.


NinjaTrader

NinjaTrader closes when I add the indicator

Import the package the way NinjaTrader expects, and remove the older copies first.

01

Import the zip, do not extract it

In the NinjaTrader 8 Control Center, select Tools → Import → NinjaScript Add-On... and choose the downloaded .zip file. Do not extract the zip, and do not copy a DLL into the NinjaTrader folders.

02

Remove the old add-on first

Select Tools → Remove NinjaScript Add-On... and remove the earlier gexbot add-on. An import over an older version can cause assembly conflicts.

03

Remove a hand-placed Newtonsoft.Json.dll

Delete any Newtonsoft.Json.dll that you copied into the NinjaTrader bin directory by hand.

04

Check the version

The add-on needs NinjaTrader 8.1 or higher (64-bit). NinjaTrader 8.0 is deprecated.

Full install steps are on the NinjaTrader integration page.


Sierra Chart

The study does not appear

Sierra Chart requires custom studies to reside in its data directory.

Resolution:

  • Copy gexbot.dll directly to your Sierra Chart Data path (typically C:\SierraChart\Data\ or C:\SierraChartInstance_1\Data\).
  • In Sierra Chart, click Analysis → Build/Open Custom Studies DLL to verify compilation or load status.
  • Configure all parameters in the Settings and Inputs tab (not Subgraphs).

The study reports an invalid API key

Each integration has its own API key. A key made for another platform does not work in the Sierra Chart study.

01

Use the Sierra Chart key

Copy the Sierra Chart key from Connections. A Sierra Chart key starts with gexbot_sierra_.

02

Paste the whole key

Paste the complete string into API KEY in Settings & Inputs. Leave no space before or after it, and do not paste only a part of it.

03

Match the Package to your subscription

The State setting needs an active State subscription. With a Classic subscription, set Package to Classic.

04

Update every chart after you regenerate a key

A regenerated key is a new key. Paste it into every chart that uses the study.

05

Read the Message Log

Open the Sierra Chart Message Log. The study writes its own messages there, and the message names the reason it stopped.

Settings and study messages are on the Sierra Chart integration page.


Bookmap & MotiveWave Java Runtime Setup

  • Bookmap: Install Java 17 or higher. Add the add-on through the in-app Add-ons manager.
  • MotiveWave: Ensure MotiveWave is closed before placing the JAR in the Extensions directory.

Market Data

Why are strikes missing from the volume profile?

On some days the GEX by Volume profile for one ticker skips strikes, so the gap between the strikes it draws is wider than usual.

The clearing house sometimes lists new option contracts late in the day. The premarket run reads the contract list from the data provider, and contracts that the provider lists after that run stay out of the profile for the rest of the day.

  • The 1DTE profile is not affected.
  • The strikes come back the next day, after the next premarket run.

Developer API & WebSocket

1. Daily Quota Reset Schedule

  • Daily API request quotas reset every night at midnight US Eastern Time (00:00 ET). Monthly quotas reset at the start of the month, Eastern Time. gexbot applies no hourly API quota.

2. HTTP 429 Too Many Requests

If your application exceeds your subscription rate limit, the API returns status code 429.

Resolution:

  • Implement exponential backoff in your HTTP client:
    import time, requests
    
    def fetch_with_backoff(url, headers, max_retries=3):
        for attempt in range(max_retries):
            response = requests.get(url, headers=headers)
            if response.status_code == 429:
                wait_time = 2 ** attempt
                time.sleep(wait_time)
                continue
            return response
        return response

3. WebSocket Handshake Timeout & Reconnections

  • The client URL returned by POST /negotiate expires after 15 minutes if not connected.
  • If the WebSocket disconnects, negotiate a new client token via POST /negotiate before reconnecting.
  • To modify group subscriptions on an active connection without reconnecting, send a PATCH /negotiate request.

4. Slow API Responses

A single total time does not say where the delay is. Measure each phase of the request first.

Resolution:

  • Follow latency & diagnostics to break one call into DNS, TCP, TLS, server and transfer.
  • Reuse one HTTP client so each call does not pay the connection setup again.
  • Poll no faster than once each second. Live calculations refresh at most that often.
  • In the web app, open Portal → Diagnostics and copy the report into your support message.

Synthetic Futures Pricing & Basis Offset

Why does SPX 5,000 not equal ES 5,000?

Cash indices (SPX, NDX, RUT) and equity index futures (ES, NQ, RTY) trade with a basis offset.

Basis Offset Factors:

  1. Dividend Yield Drag: S&P 500 dividends reduce the future cash value.
  2. Cost of Carry / Interest Rates: Short-term interest rates increase the futures price relative to spot until expiration.
  3. Fair Value Basis Formula:
    Futures Price = (Cash Index × Multiplier) + Basis Offset
  4. Historical Replay Calibration: When calibrating historical basis for replay charts:
    Additive Offset = Futures Price - (Spot Price × Multiplier)
    Use the Level Converter to convert strike levels automatically.

Contact Support

Support is by email. Write to support@gexbot.com from the email address on your gexbot account, so the team can find your subscription without extra questions.

The team also answers some quick questions on the gexbot Discord server. Discord is a limited channel: send anything about your account, subscription, billing or API keys by email, and never post an API key or account details in a public channel.

gexbot is a small team and does not give support by phone, live chat, video call, screen share or virtual meeting (Zoom, Microsoft Teams, Google Meet or similar). For setup help, email the steps you took, what you saw and a screenshot, and the team will send you the steps to fix it.

On this page