Strategy Startup Guardrails
Quick Checklist (before launch)
-
Imports: avoid shadowing time ; use from datetime import time as dt_time and import time as time_module for timestamps.
-
Market hours helpers: call dt_time(...) , not time(...) if time is a module.
-
Config/env: confirm OPENALGO_APIKEY , broker creds, and host/port.
-
Data readiness: master contracts downloaded for required exchanges/symbols.
-
History preflight: run one manual history request with real payload (see history-payload-validator ).
Fast Triage Steps
-
Read the latest strategy log for the traceback.
-
If TypeError: 'module' object is not callable , search for time( with a module import: rg "import time" openalgo/strategies | head rg "time\(" openalgo/strategies/scripts
Ensure you call dt_time(...) for market hours and time_module.time() for timestamps.
-
If crash happens before first request, check missing env vars or config JSON.
-
If crash is on history fetch, switch to history-payload-validator .
-
Restart only after the above checks pass.
Safe Patterns
- Import pattern: from datetime import time as dt_time import time as time_module
use dt_time(9, 15); use time_module.time()
-
Guard market hours: if not is_market_open(): logger.info("Market closed; exiting") return
-
Validate dependencies at start: raise clear errors if env/config is missing.
Post-Fix Verification
-
Rerun the strategy and ensure logs show:
-
Startup banner
-
Successful history fetch
-
No immediate traceback within the first minute
-
Keep tailing logs for 2–3 minutes after restart to confirm stability.