Documentation for Deptle Terminal.

Guides for setup, scripting, troubleshooting, and more.

Reading a diagnostic

Every DSL compile error prints in the same shape: a headline with an error code, a source location, a snippet with a caret under the exact tokens, and optional help: or note: lines.

  • Headlineerror[EXXXX]: <message>. The code (like E0513) is stable and searchable.
  • Location--> <file>:<line>:<col> points at the start of the flagged span.
  • Snippet — the source line with a caret (^) under the exact tokens. A multi-line span shows the opening line, an elided ..., and the closing line; very long lines are windowed around the span.
  • Context line — errors past line 1 also print the line above for surrounding code.
  • Secondary label — errors that reference two places (like a duplicate name) mark the first occurrence with previously declared here.
  • Help / Notenote: lines explain why; help: lines suggest a concrete fix. Notes print first.
  • Did you mean? — an unknown name gets the closest in-scope name suggested in a help: line.
Example output
1error[E0513]: `Parameter n` annotation must be `int` or `float`
2 --> <strategy.py>:3:5
3 |
4 3 | n: str = Parameter(default=5, max=10)
5 | ^^^^^^
6 |
7 = help: annotate the parameter as `int` (whole number) or `float` (decimal)

Declaration errors (E05xx)

Raised while analyzing class fields and Parameter / State / Extra / asset declarations.

  • E0500on_tick has the wrong signature. Use (self, tick) or (self, tick, sys).
  • E0501on_bar is not supported; rename it to on_tick and configure bars in the Optimizer.
  • E0502 — the strategy class is missing its on_tick method.
  • E0504 — a field name uses the reserved deptle_bar_ prefix.
  • E0505 — the same field name is declared twice.
  • E0513 — a Parameter annotation is not int or float.
  • E0514 — a Parameter value uses too many decimal places.
  • E0520, E0523E0525 — a Parameter is missing default, or has min > max, a default out of range, or a non-positive step.
  • E0526E0529, E0555 — strict declaration rules: an unknown keyword, a positional argument, a ** splat, or an unrecognised field value.
  • E0541E0549State and indicator declarations, including window validation.
  • E0550, E0551, E0553, E0554Extra declaration issues: positional arguments, a bad annotation, or an out-of-range binding.
  • E0570E0577required_assets / asset_slots validation.

Body errors (E02xx–E04xx)

Raised while translating the body of on_tick into the engine's internal form.

  • E02xx — statement-level issues (an unsupported for/while, a bad assignment target, a mismatched +=, an unsupported return shape).
  • E03xx — expression-level issues (an unknown name, an unsupported attribute, a bad literal, a slice/index error). Includes E0385, whole-number / division.
  • E04xx — call and order issues (an unknown built-in, the wrong number of arguments, a bad Order.*(...) shape, a disallowed call). Includes E0435/E0436 for a bad base()/price() argument and E0437 for converting an already-converted value.

The caret points at the exact token. The help: line is hand-written for each error and suggests a concrete fix.

Fixing errors quickly

Habits that make compile errors painless.

  • Fix errors top to bottom: the compiler stops at the first hard error in your declarations before it looks at the body.
  • Error codes are stable across releases — pin them in team notes or tests.
  • When a help: line suggests different wording (like size= instead of a positional value), use its wording exactly.
  • Plain syntax errors are reported by the editor before the DSL compiler runs.
Need help?

If launch fails, include your loader version, OS, and latest crash log so support can reproduce the issue quickly.

Check service status