Name | mt5-trading-lib JSON |
Version |
0.1.1
JSON |
| download |
home_page | None |
Summary | Современная Python-библиотека для взаимодействия с MetaTrader5 |
upload_time | 2025-08-13 13:52:35 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
trading
metatrader5
forex
finance
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# MT5 Trading Library
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://github.com/psf/black)
[](https://github.com/paxelcool/MT5_trading_lib_project/actions/workflows/ci.yml)
Современная Python-библиотека для взаимодействия с MetaTrader5, предоставляющая высокоуровневый API с расширенными возможностями.
## 🚀 Особенности
- **Надежное соединение** с автоматическим переподключением и circuit breaker
- **Асинхронная поддержка** для высокопроизводительных сценариев
- **Умное кэширование** с TTL и стратегиями инвалидации
- **Безопасность** с шифрованием учетных данных
- **Мониторинг** и метрики производительности
- **Расширяемость** через middleware и event-driven архитектуру
- **Production-ready** с comprehensive тестированием
## 📦 Установка
```bash
pip install mt5-trading-lib
```
## 🔧 Быстрый старт
Асинхронный высокоуровневый клиент:
```python
import asyncio
from mt5_trading_lib import AsyncMt5Client, Config
from mt5_trading_lib.logging_config import setup_logging
import MetaTrader5 as mt5
async def main():
setup_logging()
cfg = Config.load_config()
client = AsyncMt5Client(cfg)
if await client.connect():
account = await client.get_account_info()
print(f"Balance: {account['balance']}")
quotes = await client.get_real_time_quotes("EURUSD")
print(f"EURUSD: {quotes['bid']}/{quotes['ask']}")
await client.disconnect()
if __name__ == "__main__":
asyncio.run(main())
```
Синхронные компоненты (низкоуровневое использование):
```python
from mt5_trading_lib import (
Config, Mt5Connector, CacheManager, RetryManager, DataFetcher
)
from mt5_trading_lib.logging_config import setup_logging
import MetaTrader5 as mt5
setup_logging()
cfg = Config.load_config()
connector = Mt5Connector(cfg)
connector.connect()
cache = CacheManager(cfg)
retry = RetryManager(cfg)
data = DataFetcher(cfg, connector, cache, retry)
account = data.get_account_info()
print(account)
quotes = data.get_real_time_quotes("EURUSD")
print(quotes)
connector.disconnect()
```
## 📚 Документация
- API Reference: `docs/api_reference.rst`
- Архитектура: `doc/project_design_concept.md`
- План проекта: `doc/project_plan.md`
## 🛠️ Разработка
Этот проект находится в активной разработке. См. [план проекта](project_plan.md) для деталей.
### Требования для разработки
- Python 3.8+
- MetaTrader5 Terminal
- Windows 10/11
### Установка для разработки
```bash
git clone https://github.com/paxelcool/MT5_trading_lib_project.git
cd MT5_trading_lib_project
python -m venv venv
venv\Scripts\activate
pip install -e ".[dev]"
```
## 🤝 Участие в проекте
Приветствуются contributions! См. [CONTRIBUTING.md](CONTRIBUTING.md) для деталей.
## 📄 Лицензия
Этот проект лицензирован под MIT License - см. [LICENSE](LICENSE) файл для деталей.
## ⚠️ Предупреждение
Эта библиотека предназначена для образовательных и исследовательских целей. Торговля на финансовых рынках связана с высокими рисками. Всегда тестируйте стратегии на демо-счетах перед использованием реальных средств.
## 📞 Поддержка
- 📧 Email: mtrfrgm@gmail.com
- 🐛 Issues: [GitHub Issues](https://github.com/yourusername/mt5-trading-lib/issues)
- 💬 Discussions: [GitHub Discussions](https://github.com/yourusername/mt5-trading-lib/discussions)
Raw data
{
"_id": null,
"home_page": null,
"name": "mt5-trading-lib",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "trading, metatrader5, forex, finance",
"author": null,
"author_email": "\u041f\u0430\u0432\u0435\u043b \u0421\u0430\u0434\u043e\u0432\u0435\u043d\u043a\u043e <mtrfrgm@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/fb/f1/5441e89261feaa64d9989edf92af895c67634861bbbc56eea76ee6f2a72c/mt5_trading_lib-0.1.1.tar.gz",
"platform": null,
"description": "# MT5 Trading Library\r\n\r\n[](https://www.python.org/downloads/)\r\n[](LICENSE)\r\n[](https://github.com/psf/black)\r\n[](https://github.com/paxelcool/MT5_trading_lib_project/actions/workflows/ci.yml)\r\n\r\n\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f Python-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 MetaTrader5, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 API \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438.\r\n\r\n## \ud83d\ude80 \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438\r\n\r\n- **\u041d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435** \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0438 circuit breaker\r\n- **\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430** \u0434\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432\r\n- **\u0423\u043c\u043d\u043e\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435** \u0441 TTL \u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f\u043c\u0438 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438\r\n- **\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c** \u0441 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\r\n- **\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433** \u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\r\n- **\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c** \u0447\u0435\u0440\u0435\u0437 middleware \u0438 event-driven \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443\r\n- **Production-ready** \u0441 comprehensive \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c\r\n\r\n## \ud83d\udce6 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n```bash\r\npip install mt5-trading-lib\r\n```\r\n\r\n## \ud83d\udd27 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442:\r\n\r\n```python\r\nimport asyncio\r\nfrom mt5_trading_lib import AsyncMt5Client, Config\r\nfrom mt5_trading_lib.logging_config import setup_logging\r\nimport MetaTrader5 as mt5\r\n\r\nasync def main():\r\n setup_logging()\r\n cfg = Config.load_config()\r\n client = AsyncMt5Client(cfg)\r\n\r\n if await client.connect():\r\n account = await client.get_account_info()\r\n print(f\"Balance: {account['balance']}\")\r\n\r\n quotes = await client.get_real_time_quotes(\"EURUSD\")\r\n print(f\"EURUSD: {quotes['bid']}/{quotes['ask']}\")\r\n\r\n await client.disconnect()\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n```\r\n\r\n\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (\u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435):\r\n\r\n```python\r\nfrom mt5_trading_lib import (\r\n Config, Mt5Connector, CacheManager, RetryManager, DataFetcher\r\n)\r\nfrom mt5_trading_lib.logging_config import setup_logging\r\nimport MetaTrader5 as mt5\r\n\r\nsetup_logging()\r\ncfg = Config.load_config()\r\n\r\nconnector = Mt5Connector(cfg)\r\nconnector.connect()\r\n\r\ncache = CacheManager(cfg)\r\nretry = RetryManager(cfg)\r\ndata = DataFetcher(cfg, connector, cache, retry)\r\n\r\naccount = data.get_account_info()\r\nprint(account)\r\n\r\nquotes = data.get_real_time_quotes(\"EURUSD\")\r\nprint(quotes)\r\n\r\nconnector.disconnect()\r\n```\r\n\r\n## \ud83d\udcda \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\r\n\r\n- API Reference: `docs/api_reference.rst`\r\n- \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: `doc/project_design_concept.md`\r\n- \u041f\u043b\u0430\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430: `doc/project_plan.md`\r\n\r\n## \ud83d\udee0\ufe0f \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\r\n\r\n\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0421\u043c. [\u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430](project_plan.md) \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439.\r\n\r\n### \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\n\r\n- Python 3.8+\r\n- MetaTrader5 Terminal\r\n- Windows 10/11\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\r\n\r\n```bash\r\ngit clone https://github.com/paxelcool/MT5_trading_lib_project.git\r\ncd MT5_trading_lib_project\r\npython -m venv venv\r\nvenv\\Scripts\\activate\r\npip install -e \".[dev]\"\r\n```\r\n\r\n## \ud83e\udd1d \u0423\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435\r\n\r\n\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f contributions! \u0421\u043c. [CONTRIBUTING.md](CONTRIBUTING.md) \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439.\r\n\r\n## \ud83d\udcc4 \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\r\n\r\n\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434 MIT License - \u0441\u043c. [LICENSE](LICENSE) \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439.\r\n\r\n## \u26a0\ufe0f \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435\r\n\r\n\u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0422\u043e\u0440\u0433\u043e\u0432\u043b\u044f \u043d\u0430 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0440\u044b\u043d\u043a\u0430\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c\u0438 \u0440\u0438\u0441\u043a\u0430\u043c\u0438. \u0412\u0441\u0435\u0433\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u043d\u0430 \u0434\u0435\u043c\u043e-\u0441\u0447\u0435\u0442\u0430\u0445 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.\r\n\r\n## \ud83d\udcde \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\r\n\r\n- \ud83d\udce7 Email: mtrfrgm@gmail.com\r\n- \ud83d\udc1b Issues: [GitHub Issues](https://github.com/yourusername/mt5-trading-lib/issues)\r\n- \ud83d\udcac Discussions: [GitHub Discussions](https://github.com/yourusername/mt5-trading-lib/discussions)\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f Python-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 MetaTrader5",
"version": "0.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/paxelcool/MT5_trading_lib_project/issues",
"Documentation": "https://github.com/paxelcool/MT5_trading_lib_project/blob/main/README.md",
"Homepage": "https://github.com/paxelcool/MT5_trading_lib_project",
"Repository": "https://github.com/paxelcool/MT5_trading_lib_project"
},
"split_keywords": [
"trading",
" metatrader5",
" forex",
" finance"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "4874c5afc3af524a8e1a8a0770293ee9ed9e12073fb87ff9ee8c2d823e64afea",
"md5": "e2c91c8a96f2fe80abc73fe8e39dab4b",
"sha256": "84533cb06f81b1c2a57349e74c5cf9d08e59aa2eeec4c6191e56085f446ec89e"
},
"downloads": -1,
"filename": "mt5_trading_lib-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e2c91c8a96f2fe80abc73fe8e39dab4b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 54990,
"upload_time": "2025-08-13T13:52:34",
"upload_time_iso_8601": "2025-08-13T13:52:34.058268Z",
"url": "https://files.pythonhosted.org/packages/48/74/c5afc3af524a8e1a8a0770293ee9ed9e12073fb87ff9ee8c2d823e64afea/mt5_trading_lib-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fbf15441e89261feaa64d9989edf92af895c67634861bbbc56eea76ee6f2a72c",
"md5": "41e4bd72381f157e91c8e1cac05b8560",
"sha256": "4ae289b82d4b6addab5728e09e84b6df1e74d47e3fb3d29d636c0d7b106dcdbc"
},
"downloads": -1,
"filename": "mt5_trading_lib-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "41e4bd72381f157e91c8e1cac05b8560",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 58088,
"upload_time": "2025-08-13T13:52:35",
"upload_time_iso_8601": "2025-08-13T13:52:35.690530Z",
"url": "https://files.pythonhosted.org/packages/fb/f1/5441e89261feaa64d9989edf92af895c67634861bbbc56eea76ee6f2a72c/mt5_trading_lib-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 13:52:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "paxelcool",
"github_project": "MT5_trading_lib_project",
"github_not_found": true,
"lcname": "mt5-trading-lib"
}