Skip to content

Blog · TradingView · Article · updated 2026-09-25

TradingView study_error and alert rate limits: causes and fixes

Why TradingView alerts end up in study_error, how rate limits affect bulk alert creation, and how the TensorTrader extension detects both and stops safely.

Key takeaways

  1. 1study_error means the script failed to calculate on TradingView’s servers; the alert never fires.
  2. 2Batch Create checks the first alert and stops the batch if it errors.
  3. 3Rate limits pause the batch; the extension reconciles instead of retrying blindly.

What study_error means

study_error is the state TradingView gives an alert when the script behind it fails to calculate on the server. The alert exists, counts toward your quota, and never fires. Common causes are scripts that exceed server-side limits (too many bars requested, too many security() calls, loops that time out), inputs that are invalid for the symbol or timeframe, and scripts whose alertconditions depend on something unavailable server-side.

How Batch Create catches it early

Creating 200 alerts on a script that errors wastes the quota and your time. So the extension runs a pre-flight: after the first alert of a batch is created, it waits six seconds and checks that alert. If TradingView reports study_error, the extension deletes that alert, stops the batch, and suggests switching the mechanism to "Any alert() function call", which often works for scripts whose alertconditions fail. The run reports "Batch stopped after pre-flight test".

Fixes to try

  1. 1Switch the Alert mechanism to "Any alert() function call" if the script calls alert().
  2. 2Reduce heavy inputs: shorter lookbacks, fewer higher-timeframe requests.
  3. 3Try a different timeframe; some scripts only calculate on certain resolutions.
  4. 4Check the symbol: scripts that need volume or specific data fail on symbols without it.
  5. 5Ask the script author; some scripts are simply not alert-safe on the server.

Rate limits during bulk creation

TradingView limits how quickly an account can create alerts. Hit the limit and requests fail with a rate-limit error. The extension paces creation at 750 milliseconds between alerts, and if TradingView still returns a rate limit it stops the batch with the message that it paused before creating more alerts to avoid duplicate or rate-limit storms. It then waits and reconciles, so you know exactly which alerts exist.

The extension never retries a create blindly. A retry after an ambiguous error is how duplicate alerts, and duplicate orders, happen. Instead, the reconciliation sweep reads your real alert list, deletes any extra copies and recomputes results from what actually exists.

Multi-condition quota errors

Multi-condition alerts have their own cap. When TradingView reports max_complex_alerts_count_exceeded, the batch stops and reconciles. Free slots by deleting old multi-condition alerts or reduce the plan, then run again; alerts that already exist are skipped.

Diagnosing which cause you have

The extension's results panel lists failures with the first reason shown, which is usually enough to tell these apart. Deleting the failed alerts and re-running the batch is safe: existing good alerts are skipped automatically.

every symbol fails
The script itself is not alert-safe on the server; switch mechanism or pick another script
only some symbols fail
Missing data such as volume on those symbols; skip them
only low timeframes fail
Too many bars requested; shorten lookbacks or use a higher timeframe
worked, then started failing
The author updated the script or its inputs; recreate the alerts

Why no blind retries

It is tempting to make a bulk tool retry every failed create. The problem is ambiguity: a create request can fail on your side after TradingView already made the alert. Retrying then produces a duplicate, and a duplicate alert produces a duplicate order when it fires. That is why the extension creates once, then reads the real alert list to decide what exists.

Frequently asked questions

Does a study_error alert count toward my limit?
Yes. Delete it; it will never fire.
Will re-running a batch create duplicates?
No. Existing alerts are detected and skipped, and a reconciliation sweep removes accidental extras.

Keep reading

Not financial advice. Performance figures are TensorTrader testnet or backtest results with the method stated; past results do not predict future returns.

All guides · Start on paper · Pricing