DSL Troubleshooting and State Validation
Updated May 22, 2026 · 1 min read
Check active status, core state fields, and field naming to fix broken DSL, and confirm a zero-trade agent is actually running.
If your DSL is not working or positions are unprotected, check these critical state fields in order:
DSL skipping the position
Fix
`active` must be `true`. Otherwise DSL skips the position.
highWaterPrice is 0
Fix
`highWaterPrice` should be `null`, not 0.
No tiers configured
Fix
`tiers` array must be present with at least one tier.
Config field-name mistakes
Fix
Use phase1MaxMinutes, not hardTimeoutMinutes. Use deadWeightCutMin, not deadWeightCutMinutes.
Zero trades since deploy
Fix
Check if your agent's cron is actually running. Zero-trade agents are broken until proven otherwise. Run the scanner manually on deployment and verify output.
For the underlying ratchet stop architecture (which fields belong to which phase), see article 23. For configuration values per asset, see article 24.
Runtime source
Inspect the DSL engine on GitHub.
Related articles
DSL Configuration: Tiers, Time-Based Exits, and Asset Tuning
Configure DSL trailing stop tiers, time-based exits, and per-asset timing, and edit exit parameters on active positions.
DSL / Ratchet Stop: Architecture and Phase Handoff
How the DSL/Ratchet Stop engine runs loss protection then profit trailing, and hands off to the backend so positions stay protected offline.
