Files
2026-02-21 07:43:33 +01:00

88 lines
3.1 KiB
Markdown

# config
`aiomql.core.config` — Singleton configuration manager for the aiomql package.
## Overview
The `Config` class manages all runtime settings — login credentials, paths, database names,
trade-recording preferences, and shutdown signals. It implements the singleton pattern and can
load values from a JSON file (default `aiomql.json`) or be configured programmatically.
## Classes
### `Config`
> Singleton configuration class.
#### Key Attributes
| Attribute | Type | Default | Description |
|-----------|------|---------|-------------|
| `login` | `int` | `None` | MetaTrader account number |
| `password` | `str` | `""` | Account password |
| `server` | `str` | `""` | Account server name |
| `path` | `str \| Path` | `""` | Path to the MT5 terminal executable |
| `timeout` | `int` | `60000` | Connection timeout (ms) |
| `filename` | `str` | `"aiomql.json"` | Config file name to search for |
| `root` | `Path` | CWD | Project root directory |
| `trade_record_mode` | `Literal["csv","json","sql"]` | `"sql"` | Trade recording format |
| `record_trades` | `bool` | `True` | Enable/disable trade recording |
| `records_dir_name` | `str` | `"trade_records"` | Trade records directory name |
| `db_dir_name` | `str` | `"db"` | Database directory name |
| `db_name` | `str \| Path` | `""` | SQLite database file name |
| `shutdown` | `bool` | `False` | Graceful shutdown signal |
| `force_shutdown` | `bool` | `False` | Forced shutdown signal |
| `stop_trading` | `bool` | `False` | Stop opening new trades |
| `db_commit_interval` | `float` | `30` | Database commit interval (seconds) |
| `auto_commit` | `bool` | `False` | Auto-commit database changes |
| `flush_state` | `bool` | `False` | Flush state on init |
| `state` | `State` | — | Persistent key-value store |
| `store` | `Store` | — | Key-value database store |
| `task_queue` | `TaskQueue` | — | Background task queue |
| `bot` | `Bot` | `None` | Associated bot instance |
#### `__init__(**kwargs)`
Loads the config file and sets attributes. If already initialised and no `root` or
`config_file` is provided, only the extra `kwargs` are applied.
#### `load_config(*, config_file=None, filename=None, root=None, **kwargs)`
Sets the project root, locates/loads the JSON config file, initialises the database,
and applies all settings. Returns `self` for chaining.
#### `set_root(root=None)`
Resolves and creates the project root directory. Falls back to CWD.
#### `find_config_file()`
Searches up from CWD through parent directories for the config filename.
**Returns:** `Path | None`
#### `set_attributes(**kwargs)`
Sets attributes, but prevents `root` and `config_file` from being changed here
(use `load_config` instead).
#### `state` *(property)*
Lazily initialised `State` instance.
#### `store` *(property)*
Lazily initialised `Store` instance.
#### `records_dir` *(cached property)*
Path to the trade records directory. Created on first access.
#### `plots_dir` *(cached property)*
Path to the plots directory. Created on first access.
#### `account_info` *(property)*
Returns `{"login": …, "password": …, "server": …}`.