pybynix 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. pybynix-1.0.0/.env.example +5 -0
  2. pybynix-1.0.0/.github/workflows/ci.yml +30 -0
  3. pybynix-1.0.0/.github/workflows/publish.yml +33 -0
  4. pybynix-1.0.0/.gitignore +22 -0
  5. pybynix-1.0.0/CHANGELOG.md +25 -0
  6. pybynix-1.0.0/CITATION.cff +9 -0
  7. pybynix-1.0.0/CONTRIBUTING.md +22 -0
  8. pybynix-1.0.0/LICENSE +21 -0
  9. pybynix-1.0.0/NOTICE.md +9 -0
  10. pybynix-1.0.0/PKG-INFO +199 -0
  11. pybynix-1.0.0/README.bn.md +164 -0
  12. pybynix-1.0.0/README.md +164 -0
  13. pybynix-1.0.0/SECURITY.md +12 -0
  14. pybynix-1.0.0/assets/languages/ar.svg +1 -0
  15. pybynix-1.0.0/assets/languages/bn.svg +1 -0
  16. pybynix-1.0.0/assets/languages/de.svg +1 -0
  17. pybynix-1.0.0/assets/languages/en.svg +1 -0
  18. pybynix-1.0.0/assets/languages/es.svg +1 -0
  19. pybynix-1.0.0/assets/languages/fa.svg +1 -0
  20. pybynix-1.0.0/assets/languages/fr.svg +1 -0
  21. pybynix-1.0.0/assets/languages/hi.svg +1 -0
  22. pybynix-1.0.0/assets/languages/id.svg +1 -0
  23. pybynix-1.0.0/assets/languages/it.svg +1 -0
  24. pybynix-1.0.0/assets/languages/ja.svg +1 -0
  25. pybynix-1.0.0/assets/languages/ko.svg +1 -0
  26. pybynix-1.0.0/assets/languages/pt.svg +1 -0
  27. pybynix-1.0.0/assets/languages/ru.svg +1 -0
  28. pybynix-1.0.0/assets/languages/ta.svg +1 -0
  29. pybynix-1.0.0/assets/languages/te.svg +1 -0
  30. pybynix-1.0.0/assets/languages/tr.svg +1 -0
  31. pybynix-1.0.0/assets/languages/ur.svg +1 -0
  32. pybynix-1.0.0/assets/languages/vi.svg +1 -0
  33. pybynix-1.0.0/assets/languages/zh-CN.svg +1 -0
  34. pybynix-1.0.0/assets/logo-dark.png +0 -0
  35. pybynix-1.0.0/assets/logo.png +0 -0
  36. pybynix-1.0.0/benchmarks/dispatch.py +65 -0
  37. pybynix-1.0.0/benchmarks/replay.py +51 -0
  38. pybynix-1.0.0/benchmarks/results/alternate-host-report.json +1 -0
  39. pybynix-1.0.0/benchmarks/results/auth-report.json +1 -0
  40. pybynix-1.0.0/benchmarks/results/browser-report.json +1 -0
  41. pybynix-1.0.0/benchmarks/results/domains-report.json +156 -0
  42. pybynix-1.0.0/benchmarks/results/early-close-report.json +1 -0
  43. pybynix-1.0.0/benchmarks/results/event-report.json +1 -0
  44. pybynix-1.0.0/benchmarks/results/live-readonly-report.json +47 -0
  45. pybynix-1.0.0/benchmarks/results/proxy-report.json +1 -0
  46. pybynix-1.0.0/benchmarks/results/replay-windows-python313.json +25 -0
  47. pybynix-1.0.0/benchmarks/results/short-soak-report.json +15 -0
  48. pybynix-1.0.0/benchmarks/results/source-manifest.json +15 -0
  49. pybynix-1.0.0/benchmarks/results/validation-summary.json +30 -0
  50. pybynix-1.0.0/docs/API.md +312 -0
  51. pybynix-1.0.0/docs/ARCHITECTURE.md +83 -0
  52. pybynix-1.0.0/docs/AUTHENTICATION.md +140 -0
  53. pybynix-1.0.0/docs/AUTOMATION.md +69 -0
  54. pybynix-1.0.0/docs/FEATURE_MATRIX.md +77 -0
  55. pybynix-1.0.0/docs/LAUNCH_CHECKLIST.md +53 -0
  56. pybynix-1.0.0/docs/PROTOCOL.md +87 -0
  57. pybynix-1.0.0/docs/RECOVERY.md +104 -0
  58. pybynix-1.0.0/docs/REPOSITORY_MAP.md +43 -0
  59. pybynix-1.0.0/docs/TROUBLESHOOTING.md +29 -0
  60. pybynix-1.0.0/docs/VALIDATION.md +103 -0
  61. pybynix-1.0.0/docs/i18n/README.ar.md +164 -0
  62. pybynix-1.0.0/docs/i18n/README.de.md +164 -0
  63. pybynix-1.0.0/docs/i18n/README.es.md +164 -0
  64. pybynix-1.0.0/docs/i18n/README.fa.md +164 -0
  65. pybynix-1.0.0/docs/i18n/README.fr.md +164 -0
  66. pybynix-1.0.0/docs/i18n/README.hi.md +164 -0
  67. pybynix-1.0.0/docs/i18n/README.id.md +164 -0
  68. pybynix-1.0.0/docs/i18n/README.it.md +164 -0
  69. pybynix-1.0.0/docs/i18n/README.ja.md +164 -0
  70. pybynix-1.0.0/docs/i18n/README.ko.md +164 -0
  71. pybynix-1.0.0/docs/i18n/README.pt.md +164 -0
  72. pybynix-1.0.0/docs/i18n/README.ru.md +164 -0
  73. pybynix-1.0.0/docs/i18n/README.ta.md +164 -0
  74. pybynix-1.0.0/docs/i18n/README.te.md +164 -0
  75. pybynix-1.0.0/docs/i18n/README.tr.md +164 -0
  76. pybynix-1.0.0/docs/i18n/README.ur.md +164 -0
  77. pybynix-1.0.0/docs/i18n/README.vi.md +164 -0
  78. pybynix-1.0.0/docs/i18n/README.zh-CN.md +164 -0
  79. pybynix-1.0.0/docs/i18n/locales/ar.json +71 -0
  80. pybynix-1.0.0/docs/i18n/locales/bn.json +71 -0
  81. pybynix-1.0.0/docs/i18n/locales/de.json +71 -0
  82. pybynix-1.0.0/docs/i18n/locales/en.json +71 -0
  83. pybynix-1.0.0/docs/i18n/locales/es.json +71 -0
  84. pybynix-1.0.0/docs/i18n/locales/fa.json +71 -0
  85. pybynix-1.0.0/docs/i18n/locales/fr.json +71 -0
  86. pybynix-1.0.0/docs/i18n/locales/hi.json +71 -0
  87. pybynix-1.0.0/docs/i18n/locales/id.json +71 -0
  88. pybynix-1.0.0/docs/i18n/locales/it.json +71 -0
  89. pybynix-1.0.0/docs/i18n/locales/ja.json +71 -0
  90. pybynix-1.0.0/docs/i18n/locales/ko.json +71 -0
  91. pybynix-1.0.0/docs/i18n/locales/pt.json +71 -0
  92. pybynix-1.0.0/docs/i18n/locales/ru.json +71 -0
  93. pybynix-1.0.0/docs/i18n/locales/ta.json +71 -0
  94. pybynix-1.0.0/docs/i18n/locales/te.json +71 -0
  95. pybynix-1.0.0/docs/i18n/locales/tr.json +71 -0
  96. pybynix-1.0.0/docs/i18n/locales/ur.json +71 -0
  97. pybynix-1.0.0/docs/i18n/locales/vi.json +71 -0
  98. pybynix-1.0.0/docs/i18n/locales/zh-CN.json +71 -0
  99. pybynix-1.0.0/examples/README.md +27 -0
  100. pybynix-1.0.0/examples/demo_order.py +27 -0
  101. pybynix-1.0.0/examples/history_export.py +23 -0
  102. pybynix-1.0.0/examples/live_data.py +26 -0
  103. pybynix-1.0.0/examples/multiple_clients.py +18 -0
  104. pybynix-1.0.0/examples/orchestration.py +32 -0
  105. pybynix-1.0.0/examples/order_recovery.py +24 -0
  106. pybynix-1.0.0/examples/public_data.py +18 -0
  107. pybynix-1.0.0/examples/sentiment_stream.py +18 -0
  108. pybynix-1.0.0/examples/session_login.py +18 -0
  109. pybynix-1.0.0/pyproject.toml +43 -0
  110. pybynix-1.0.0/src/pybynix/__init__.py +79 -0
  111. pybynix-1.0.0/src/pybynix/auth.py +207 -0
  112. pybynix-1.0.0/src/pybynix/cli.py +158 -0
  113. pybynix-1.0.0/src/pybynix/client.py +1263 -0
  114. pybynix-1.0.0/src/pybynix/data.py +85 -0
  115. pybynix-1.0.0/src/pybynix/domains.json +28 -0
  116. pybynix-1.0.0/src/pybynix/domains.py +35 -0
  117. pybynix-1.0.0/src/pybynix/errors.py +74 -0
  118. pybynix-1.0.0/src/pybynix/indicators.py +328 -0
  119. pybynix-1.0.0/src/pybynix/journal.py +195 -0
  120. pybynix-1.0.0/src/pybynix/models.py +98 -0
  121. pybynix-1.0.0/src/pybynix/network.py +152 -0
  122. pybynix-1.0.0/src/pybynix/orchestration.py +477 -0
  123. pybynix-1.0.0/src/pybynix/pool.py +44 -0
  124. pybynix-1.0.0/src/pybynix/runtime.py +23 -0
  125. pybynix-1.0.0/src/pybynix/sentiment.py +44 -0
  126. pybynix-1.0.0/src/pybynix/stable_api.py +5 -0
  127. pybynix-1.0.0/src/pybynix/stream.py +54 -0
  128. pybynix-1.0.0/tests/fixtures/tick.json +20 -0
  129. pybynix-1.0.0/tests/test_auth.py +29 -0
  130. pybynix-1.0.0/tests/test_boundaries.py +148 -0
  131. pybynix-1.0.0/tests/test_client.py +417 -0
  132. pybynix-1.0.0/tests/test_documentation.py +118 -0
  133. pybynix-1.0.0/tests/test_indicators.py +77 -0
  134. pybynix-1.0.0/tests/test_journal_failure.py +43 -0
  135. pybynix-1.0.0/tests/test_optional_data.py +30 -0
  136. pybynix-1.0.0/tests/test_orchestration.py +314 -0
  137. pybynix-1.0.0/tests/test_reconciliation.py +58 -0
  138. pybynix-1.0.0/tests/test_release.py +233 -0
  139. pybynix-1.0.0/tests/test_replay.py +90 -0
  140. pybynix-1.0.0/tools/action-versions.json +14 -0
  141. pybynix-1.0.0/tools/live_lab.py +252 -0
  142. pybynix-1.0.0/tools/package_release.py +67 -0
  143. pybynix-1.0.0/tools/readmes.py +283 -0
  144. pybynix-1.0.0/tools/soak.py +129 -0
@@ -0,0 +1,5 @@
1
+ BYNIX_EMAIL=your-email@example.com
2
+ BYNIX_PASSWORD=replace-locally
3
+ # Or provide a current session token instead:
4
+ # BYNIX_TOKEN=replace-locally
5
+ BYNIX_HOST=bynixbrokers.com
@@ -0,0 +1,30 @@
1
+ name: checks
2
+ on: [push, pull_request]
3
+ permissions:
4
+ contents: read
5
+ concurrency:
6
+ group: checks-${{ github.ref }}
7
+ cancel-in-progress: true
8
+ jobs:
9
+ test:
10
+ strategy:
11
+ matrix:
12
+ os: [ubuntu-latest, windows-latest]
13
+ python: ['3.11', '3.13']
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
+ with:
18
+ persist-credentials: false
19
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
20
+ with:
21
+ python-version: ${{ matrix.python }}
22
+ - run: python -m pip install --upgrade pip
23
+ - run: python -m pip install -e ".[dev,network,dataframe]"
24
+ - run: ruff check .
25
+ - run: python -m pytest
26
+ - run: python -m build
27
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
28
+ with:
29
+ name: distributions-${{ matrix.os }}-${{ matrix.python }}
30
+ path: dist/*
@@ -0,0 +1,33 @@
1
+ name: publish
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ publish:
13
+ runs-on: ubuntu-latest
14
+ environment:
15
+ name: pypi
16
+ url: https://pypi.org/p/pybynix
17
+ permissions:
18
+ id-token: write
19
+ steps:
20
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
21
+ with:
22
+ persist-credentials: false
23
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
24
+ with:
25
+ python-version: "3.13"
26
+ - name: Build distributions
27
+ run: |
28
+ python -m pip install --upgrade build
29
+ python -m build
30
+ - name: Publish to PyPI
31
+ uses: pypa/gh-action-pypi-publish@release/v1
32
+ with:
33
+ packages-dir: dist/
@@ -0,0 +1,22 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ dist/
7
+ *.egg-info/
8
+ .env
9
+ .env.*
10
+ !.env.example
11
+ session*.json
12
+ *.har
13
+ browser-profile/
14
+ *.sqlite
15
+ *.sqlite3
16
+ *.sqlite-wal
17
+ *.sqlite-shm
18
+ *.db
19
+ *.db-wal
20
+ *.db-shm
21
+ .pybynix-session-*
22
+ private/
@@ -0,0 +1,25 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0 - release-preparation snapshot, 22 October 2026
4
+
5
+ - Independent REST + Socket.IO client based on observed Bynix behavior.
6
+ - Explicit session, password, browser and custom providers; challenge-only fallback.
7
+ - Typed market ticks/candles, history, account events and bounded stream subscriptions.
8
+ - Demo-default execution, settlement lookup, early close and uncertain-order reporting.
9
+ - HTTP CONNECT proxy, static DNS overrides and trusted login-host chain.
10
+ - Twenty maintained README editions, localized quickstarts, diagnostics CLI, replay tests and
11
+ documented measurements.
12
+ - Profile health refresh is isolated from market fallback with bounded, zero-retry
13
+ supervision polling; regression coverage includes a deliberately slow profile response.
14
+ - All public SDK capabilities are included in the MIT package without a paid or premium
15
+ feature tier. Added pure Decimal SMA/EMA/RSI/MACD/Bollinger/ATR/stochastic helpers,
16
+ `buy_and_wait`, the explicit `sell` early-close alias, and caller-owned automation.
17
+ - Added fail-closed orchestration: unknown order outcomes, journal failures, missing trade IDs,
18
+ and settlement errors pause new submissions; idle sources stop cleanly and in-flight order
19
+ submissions are drained rather than blindly canceled.
20
+ - Added bounded-concurrency independent candle batching and opt-in historical-page caching;
21
+ latest/forming queries are never cached.
22
+ - Completed source-fingerprinted three-stream demo soak: 600.801864 seconds, one scheduled
23
+ reconnect, 3,597 ticks, zero malformed/duplicate ticks, on the owner's Windows demo setup.
24
+ - Selected green/gold concept 07 branding. The GitHub repository is now public; PyPI publication
25
+ remains a separate release action. No premium parity or production certification is claimed.
@@ -0,0 +1,9 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, cite the version and its repository when published."
3
+ type: software
4
+ title: PyBynix
5
+ version: 1.0.0
6
+ authors:
7
+ - family-names: Hossain Bappy
8
+ given-names: C. M. Jubayer
9
+ license: MIT
@@ -0,0 +1,22 @@
1
+ # Contributing
2
+
3
+ Install `.[dev,network,dataframe]`, then run `ruff check .`, `pytest` and `python -m build`.
4
+ Use synthetic fixtures or fully sanitized observed samples. Ordinary tests must not
5
+ log into an account, send an order or require network access. Record live demo checks
6
+ separately with date, code version and limitations. Keep strategies out of the SDK.
7
+
8
+ New endpoints need observed requests/responses, typed failure behavior and meaningful
9
+ tests. Never infer platform capability from a method name in a different broker SDK.
10
+
11
+ The twenty README editions use reviewed UTF-8 sources in docs/i18n/locales/. Change
12
+ the appropriate locale and run `python tools/readmes.py`; don't hand-edit generated
13
+ README files. Preserve method names and code samples across languages. Ordinary tests
14
+ check local links, feature completeness and Python snippet syntax without network access.
15
+
16
+ Live validation is deliberately separate: tools/live_lab.py only affects its own local
17
+ test relays; tools/soak.py performs a finite read-only stream run. Demo order experiments
18
+ are explicitly scoped and must keep account/trade identifiers out of public artifacts.
19
+
20
+ Run release packaging from a reviewed, committed public checkout with
21
+ `python tools/package_release.py --out PATH`. Publish only its public artifacts; owner
22
+ sessions, browser profiles, order databases and manuscript working files stay separate.
pybynix-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 C. M. Jubayer Hossain Bappy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ # Attribution and marks
2
+
3
+ PyBynix is independently implemented. PyQuotex and the owner's QX-PY-API were reviewed as
4
+ interface and workflow references; their source files were not copied into this package.
5
+
6
+ The selected green/gold logo was AI-assisted from the owner's chosen concept, combining
7
+ the supplied Bynix mark with Python-inspired forms. Bynix and Python marks belong to
8
+ their respective rights holders. The code's MIT license grants no trademark rights or
9
+ claim of endorsement. Review branding permissions before a public production release.
pybynix-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,199 @@
1
+ Metadata-Version: 2.5
2
+ Name: pybynix
3
+ Version: 1.0.0
4
+ Summary: Unofficial asynchronous Bynix market data and execution client
5
+ Project-URL: Homepage, https://github.com/thecmjhb/PyBynix
6
+ Project-URL: Repository, https://github.com/thecmjhb/PyBynix
7
+ Project-URL: Issues, https://github.com/thecmjhb/PyBynix/issues
8
+ Author: C. M. Jubayer Hossain Bappy
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ License-File: NOTICE.md
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Python: >=3.11
17
+ Requires-Dist: aiohttp<4,>=3.12
18
+ Requires-Dist: httpcore<2,>=1
19
+ Requires-Dist: httpx<1,>=0.28
20
+ Requires-Dist: python-socketio[asyncio-client]<6,>=5.13
21
+ Provides-Extra: browser
22
+ Requires-Dist: playwright<2,>=1.49; extra == 'browser'
23
+ Provides-Extra: dataframe
24
+ Requires-Dist: pandas<4,>=2.2; extra == 'dataframe'
25
+ Provides-Extra: dev
26
+ Requires-Dist: build>=1.2; extra == 'dev'
27
+ Requires-Dist: pytest-asyncio<2,>=0.24; extra == 'dev'
28
+ Requires-Dist: pytest<10,>=8; extra == 'dev'
29
+ Requires-Dist: ruff>=0.9; extra == 'dev'
30
+ Provides-Extra: network
31
+ Requires-Dist: aiohttp-socks<1,>=0.10; extra == 'network'
32
+ Requires-Dist: dnspython<3,>=2.6; extra == 'network'
33
+ Requires-Dist: httpx[socks]<1,>=0.28; extra == 'network'
34
+ Description-Content-Type: text/markdown
35
+
36
+ <!-- Generated by tools/readmes.py; edit docs/i18n/locales/en.json. -->
37
+ <div align="center">
38
+ <picture>
39
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.png">
40
+ <source media="(prefers-color-scheme: light)" srcset="assets/logo.png">
41
+ <img src="assets/logo.png" alt="PyBynix" width="390">
42
+ </picture>
43
+ <h3>Market data. Trade execution. One Python client.</h3>
44
+ <p>An asynchronous Python interface for Bynix, built for trading applications, data pipelines and developer tools.</p>
45
+ <p>
46
+ <img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&amp;logoColor=white" alt="Python 3.11+">
47
+ <img src="https://img.shields.io/badge/Version-1.0.0-00843D" alt="Version 1.0.0">
48
+ <img src="https://img.shields.io/badge/License-MIT-22c55e" alt="MIT">
49
+ <img src="https://img.shields.io/badge/Documentation-20_languages-C49A00" alt="20 languages">
50
+ </p>
51
+ </div>
52
+
53
+ <p align="center" dir="ltr"><a href="README.md" title="English"><img src="assets/languages/en.svg" width="58" height="28" alt="English"></a><a href="README.bn.md" title="āĻŦāĻžāĻ‚āϞāĻž"><img src="assets/languages/bn.svg" width="58" height="28" alt="āĻŦāĻžāĻ‚āϞāĻž"></a><a href="docs/i18n/README.zh-CN.md" title="中文"><img src="assets/languages/zh-CN.svg" width="58" height="28" alt="中文"></a><a href="docs/i18n/README.hi.md" title="ā¤šā¤ŋ⤍āĨā¤ĻāĨ€"><img src="assets/languages/hi.svg" width="58" height="28" alt="ā¤šā¤ŋ⤍āĨā¤ĻāĨ€"></a><a href="docs/i18n/README.es.md" title="EspaÃąol"><img src="assets/languages/es.svg" width="58" height="28" alt="EspaÃąol"></a><a href="docs/i18n/README.ar.md" title="Ø§Ų„ØšØąØ¨ŲŠØŠ"><img src="assets/languages/ar.svg" width="58" height="28" alt="Ø§Ų„ØšØąØ¨ŲŠØŠ"></a><a href="docs/i18n/README.fr.md" title="Français"><img src="assets/languages/fr.svg" width="58" height="28" alt="Français"></a><a href="docs/i18n/README.pt.md" title="PortuguÃĒs"><img src="assets/languages/pt.svg" width="58" height="28" alt="PortuguÃĒs"></a><a href="docs/i18n/README.id.md" title="Bahasa Indonesia"><img src="assets/languages/id.svg" width="58" height="28" alt="Bahasa Indonesia"></a><a href="docs/i18n/README.ur.md" title="Ø§ØąØ¯Ųˆ"><img src="assets/languages/ur.svg" width="58" height="28" alt="Ø§ØąØ¯Ųˆ"></a><a href="docs/i18n/README.ru.md" title="Đ ŅƒŅŅĐēиК"><img src="assets/languages/ru.svg" width="58" height="28" alt="Đ ŅƒŅŅĐēиК"></a><a href="docs/i18n/README.ko.md" title="한ęĩ­ė–´"><img src="assets/languages/ko.svg" width="58" height="28" alt="한ęĩ­ė–´"></a><a href="docs/i18n/README.ja.md" title="æ—ĨæœŦčĒž"><img src="assets/languages/ja.svg" width="58" height="28" alt="æ—ĨæœŦčĒž"></a><a href="docs/i18n/README.de.md" title="Deutsch"><img src="assets/languages/de.svg" width="58" height="28" alt="Deutsch"></a><a href="docs/i18n/README.tr.md" title="TÃŧrkçe"><img src="assets/languages/tr.svg" width="58" height="28" alt="TÃŧrkçe"></a><a href="docs/i18n/README.it.md" title="Italiano"><img src="assets/languages/it.svg" width="58" height="28" alt="Italiano"></a><a href="docs/i18n/README.fa.md" title="ŲØ§ØąØŗÛŒ"><img src="assets/languages/fa.svg" width="58" height="28" alt="ŲØ§ØąØŗÛŒ"></a><a href="docs/i18n/README.vi.md" title="Tiáēŋng Viáģ‡t"><img src="assets/languages/vi.svg" width="58" height="28" alt="Tiáēŋng Viáģ‡t"></a><a href="docs/i18n/README.ta.md" title="āŽ¤āŽŽāŽŋāŽ´ā¯"><img src="assets/languages/ta.svg" width="58" height="28" alt="āŽ¤āŽŽāŽŋāŽ´ā¯"></a><a href="docs/i18n/README.te.md" title="ā°¤āą†ā°˛āąā°—āą"><img src="assets/languages/te.svg" width="58" height="28" alt="ā°¤āą†ā°˛āąā°—āą"></a></p>
54
+
55
+ ## 🚀 Capability categories
56
+
57
+ - đŸ›Ąī¸ **Free/open core** — MIT-licensed public package; public market data works without an account, with optional browser, network, and DataFrame extras.
58
+ - ⚡ **Fast market data** — Stream-first ticks, forming/closed candles, bounded historical pages, and concurrent candle batches with REST fallback.
59
+ - 🔑 **Multi-login and client pool** — Token, password, browser, and OTP-capable providers plus independent named clients and account events.
60
+ - 🤖 **Safe caller-owned automation** — ExecutionOrchestrator/AutoExecutor accepts explicit application intents with dry-run, demo-only defaults, cooldown, concurrency limits, and no uncertain-order retry.
61
+ - 📊 **Pure indicators** — Decimal SMA, EMA, RSI, MACD, Bollinger Bands, ATR, and stochastic measurements over caller-owned data; no signals or strategy.
62
+ - đŸŽ¯ **Execution conveniences** — `buy_and_wait`, `sell`/early close, settlement wait, journaling, and reconciliation around explicit one-order-at-a-time calls.
63
+ - 🔍 **Verified Bynix scope** — Read the matrix for implemented, offline-tested, and live-demo-observed behavior; unsupported parity is not implied.
64
+
65
+ See the full verified scope in the [feature and fallback matrix](docs/FEATURE_MATRIX.md).
66
+
67
+ ## đŸ› ī¸ Features
68
+
69
+ | API | Features |
70
+ | --- | --- |
71
+ | `connect ¡ PasswordAuth ¡ BrowserAuth` | Session tokens, password login, browser-assisted login and 2FA callbacks. |
72
+ | `get_assets ¡ get_asset ¡ get_payouts` | Asset discovery, exact symbol lookup, availability and payout information. |
73
+ | `get_candles ¡ get_historical_candles ¡ get_candles_batch` | Recent candles and paginated historical OHLCV with UTC timestamps. |
74
+ | `subscribe_ticks ¡ stream_candles ¡ get_tick` | Live ticks, forming/closed candles and automatic REST polling fallback. |
75
+ | `place_order ¡ wait_order_result ¡ close_trade_early ¡ ExecutionOrchestrator` | Explicit demo, real and funded orders, settlement lookup and early close. |
76
+ | `SQLiteJournal ¡ reconcile_order ¡ unresolved_orders` | Durable order records, restart recovery and duplicate-reference protection. |
77
+ | `ClientPool ¡ account_events ¡ get_balance_breakdown` | Independent named clients, account events and detailed balances. |
78
+ | `proxy ¡ dns_servers ¡ connect_any` | HTTP/SOCKS5 proxies, custom DNS and trusted-domain connection fallback. |
79
+ | `get_realtime_sentiment ¡ stream_sentiment` | Streaming market sentiment using the platform-style candle and tick model. |
80
+ | `export_candles ¡ candles_to_dataframe ¡ resample_candles ¡ sma ¡ ema ¡ rsi ¡ macd ¡ bollinger_bands ¡ atr ¡ stochastic` | Decimal-preserving CSV/JSON export, optional pandas and candle resampling. |
81
+
82
+ ## đŸ“Ļ Installation
83
+
84
+ Install the published package from PyPI. Add optional browser, networking and DataFrame integrations as needed.
85
+
86
+ ```console
87
+ python -m pip install pybynix
88
+ ```
89
+
90
+ ```console
91
+ python -m pip install "pybynix[browser,network,dataframe]"
92
+ python -m playwright install chromium
93
+ ```
94
+
95
+ ## ⚡ Stream your first market
96
+
97
+ Public market data works without an account. This complete example retrieves candles and reads three incoming ticks.
98
+
99
+ ```python
100
+ import asyncio
101
+ from pybynix import Bynix
102
+
103
+ async def main():
104
+ async with Bynix.public() as client:
105
+ candles = await client.get_candles("EUR/USD OTC", interval="1m", count=100)
106
+ print(candles[-1])
107
+ async with await client.subscribe_ticks("EUR/USD OTC") as ticks:
108
+ for _ in range(3):
109
+ tick = await anext(ticks)
110
+ print(tick.timestamp, tick.price)
111
+
112
+ asyncio.run(main())
113
+ ```
114
+
115
+ ## 🔐 Authentication and sessions
116
+
117
+ Use the interactive login command, import an existing Bynix access token, or configure a password/browser provider. Login stores a local session; Python applications can also supply their own session provider. Use the client in an async context manager.
118
+
119
+ ```console
120
+ pybynix login
121
+ pybynix doctor
122
+ pybynix balances
123
+ ```
124
+
125
+ ```python
126
+ import asyncio
127
+ import os
128
+ from pybynix import Bynix, PasswordAuth, SQLiteJournal
129
+
130
+ async def main():
131
+ async with Bynix(
132
+ provider=PasswordAuth(os.environ["BYNIX_EMAIL"], os.environ["BYNIX_PASSWORD"]),
133
+ journal=SQLiteJournal("orders.sqlite"),
134
+ ) as client:
135
+ print(await client.get_balance())
136
+
137
+ asyncio.run(main())
138
+ ```
139
+
140
+ ## đŸŽ¯ Order execution
141
+
142
+ With a connected authenticated client, place an explicit demo order and await the server result. Demo is the default account. Real or funded execution requires allow_real_trading=True; funded orders also require challenge_id. Keep order IDs and use SQLiteJournal for restart recovery.
143
+
144
+ ```python
145
+ async def execute_demo_order(client):
146
+ order = await client.place_order("EUR/USD OTC", "call", "1.00", 5)
147
+ result = await client.wait_order_result(order["trade_id"], timeout=90)
148
+ return result
149
+ ```
150
+
151
+ ## 🌐 Connections and recovery
152
+
153
+ Persistent connections, resubscription and bounded queues support continuous consumers. Auto mode uses the platform's REST tick endpoint when streaming is unavailable. Network extras enable authenticated SOCKS5 and custom DNS. Configure the same route on your authentication provider.
154
+
155
+ ```python
156
+ client = Bynix.from_token(token, proxy="socks5://user:password@proxy-host:1080")
157
+ # HTTP CONNECT: proxy="http://proxy-host:8080"
158
+ # Custom DNS: Bynix.from_token(token, dns_servers=["1.1.1.1"])
159
+ # Data fallback: Bynix.public(stream_transport="auto")
160
+ ```
161
+
162
+ ## đŸ’ģ Command-line tools
163
+
164
+ Inspect the platform, stream prices, export candles and check published domains from the terminal. The CLI supplies public data directly and uses a saved session for account commands.
165
+
166
+ ```console
167
+ pybynix stream --symbol "EUR/USD OTC" --interval 15s --count 5
168
+ pybynix candles --symbol "EUR/USD OTC" --count 100 --output candles.csv
169
+ pybynix sentiment --symbol "EUR/USD OTC"
170
+ pybynix domains
171
+ ```
172
+
173
+ ## 📚 Documentation
174
+
175
+ Detailed signatures, return values, runnable examples and recovery behavior are documented below. Use exact trade_symbol values from the asset catalog.
176
+
177
+ - [API reference](docs/API.md)
178
+ - [Authentication](docs/AUTHENTICATION.md)
179
+ - [Examples](examples)
180
+ - [Recovery and networking](docs/RECOVERY.md)
181
+ - [Automation boundary](docs/AUTOMATION.md)
182
+ - [Feature and fallback matrix](docs/FEATURE_MATRIX.md)
183
+ - [Launch checklist](docs/LAUNCH_CHECKLIST.md)
184
+ - [Repository map](docs/REPOSITORY_MAP.md)
185
+ - [Troubleshooting](docs/TROUBLESHOOTING.md)
186
+
187
+ ## đŸ§Ē Testing and performance
188
+
189
+ The validation record lists tested Python versions, asset/timeframe coverage, demo execution, interrupted connections and measured performance. Reproducible tests and benchmark inputs accompany the source. [Validation](docs/VALIDATION.md) ¡ [Benchmarks](benchmarks)
190
+
191
+ ## đŸ”Ŧ Research
192
+
193
+ The architecture, protocol adaptation, and empirical evaluation of PyBynix are documented in our research paper. It covers asynchronous stream recovery, safe order lifecycle handling, and benchmark observations.
194
+
195
+ ## 🤝 Community and license
196
+
197
+ Contributions, reproducible bug reports and documentation improvements are welcome. PyBynix is independently maintained; platform and language trademarks remain with their owners. [Contributing](CONTRIBUTING.md) ¡ [Security](SECURITY.md) ¡ [MIT](LICENSE)
198
+
199
+ <p align="center"><strong>C. M. Jubayer Hossain Bappy</strong> ¡ PyBynix</p>
@@ -0,0 +1,164 @@
1
+ <!-- Generated by tools/readmes.py; edit docs/i18n/locales/bn.json. -->
2
+ <div align="center">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.png">
5
+ <source media="(prefers-color-scheme: light)" srcset="assets/logo.png">
6
+ <img src="assets/logo.png" alt="PyBynix" width="390">
7
+ </picture>
8
+ <h3>āĻŽāĻžāĻ°ā§āϕ⧇āϟ āĻĄā§‡āϟāĻž āĻ“ āĻŸā§āϰ⧇āĻĄ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāĻ¨â€”āĻāĻ•āϟāĻŋ Python āĻ•ā§āϞāĻžā§Ÿā§‡āĻ¨ā§āĻŸā§‡āĨ¤</h3>
9
+ <p>Bynix-āĻāϰ āϜāĻ¨ā§āϝ asynchronous Python interface; trading application, data pipeline āĻ“ developer tool āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝāĨ¤</p>
10
+ <p>
11
+ <img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&amp;logoColor=white" alt="Python 3.11+">
12
+ <img src="https://img.shields.io/badge/Version-1.0.0-00843D" alt="Version 1.0.0">
13
+ <img src="https://img.shields.io/badge/License-MIT-22c55e" alt="MIT">
14
+ <img src="https://img.shields.io/badge/Documentation-20_languages-C49A00" alt="20 languages">
15
+ </p>
16
+ </div>
17
+
18
+ <p align="center" dir="ltr"><a href="README.md" title="English"><img src="assets/languages/en.svg" width="58" height="28" alt="English"></a><a href="README.bn.md" title="āĻŦāĻžāĻ‚āϞāĻž"><img src="assets/languages/bn.svg" width="58" height="28" alt="āĻŦāĻžāĻ‚āϞāĻž"></a><a href="docs/i18n/README.zh-CN.md" title="中文"><img src="assets/languages/zh-CN.svg" width="58" height="28" alt="中文"></a><a href="docs/i18n/README.hi.md" title="ā¤šā¤ŋ⤍āĨā¤ĻāĨ€"><img src="assets/languages/hi.svg" width="58" height="28" alt="ā¤šā¤ŋ⤍āĨā¤ĻāĨ€"></a><a href="docs/i18n/README.es.md" title="EspaÃąol"><img src="assets/languages/es.svg" width="58" height="28" alt="EspaÃąol"></a><a href="docs/i18n/README.ar.md" title="Ø§Ų„ØšØąØ¨ŲŠØŠ"><img src="assets/languages/ar.svg" width="58" height="28" alt="Ø§Ų„ØšØąØ¨ŲŠØŠ"></a><a href="docs/i18n/README.fr.md" title="Français"><img src="assets/languages/fr.svg" width="58" height="28" alt="Français"></a><a href="docs/i18n/README.pt.md" title="PortuguÃĒs"><img src="assets/languages/pt.svg" width="58" height="28" alt="PortuguÃĒs"></a><a href="docs/i18n/README.id.md" title="Bahasa Indonesia"><img src="assets/languages/id.svg" width="58" height="28" alt="Bahasa Indonesia"></a><a href="docs/i18n/README.ur.md" title="Ø§ØąØ¯Ųˆ"><img src="assets/languages/ur.svg" width="58" height="28" alt="Ø§ØąØ¯Ųˆ"></a><a href="docs/i18n/README.ru.md" title="Đ ŅƒŅŅĐēиК"><img src="assets/languages/ru.svg" width="58" height="28" alt="Đ ŅƒŅŅĐēиК"></a><a href="docs/i18n/README.ko.md" title="한ęĩ­ė–´"><img src="assets/languages/ko.svg" width="58" height="28" alt="한ęĩ­ė–´"></a><a href="docs/i18n/README.ja.md" title="æ—ĨæœŦčĒž"><img src="assets/languages/ja.svg" width="58" height="28" alt="æ—ĨæœŦčĒž"></a><a href="docs/i18n/README.de.md" title="Deutsch"><img src="assets/languages/de.svg" width="58" height="28" alt="Deutsch"></a><a href="docs/i18n/README.tr.md" title="TÃŧrkçe"><img src="assets/languages/tr.svg" width="58" height="28" alt="TÃŧrkçe"></a><a href="docs/i18n/README.it.md" title="Italiano"><img src="assets/languages/it.svg" width="58" height="28" alt="Italiano"></a><a href="docs/i18n/README.fa.md" title="ŲØ§ØąØŗÛŒ"><img src="assets/languages/fa.svg" width="58" height="28" alt="ŲØ§ØąØŗÛŒ"></a><a href="docs/i18n/README.vi.md" title="Tiáēŋng Viáģ‡t"><img src="assets/languages/vi.svg" width="58" height="28" alt="Tiáēŋng Viáģ‡t"></a><a href="docs/i18n/README.ta.md" title="āŽ¤āŽŽāŽŋāŽ´ā¯"><img src="assets/languages/ta.svg" width="58" height="28" alt="āŽ¤āŽŽāŽŋāŽ´ā¯"></a><a href="docs/i18n/README.te.md" title="ā°¤āą†ā°˛āąā°—āą"><img src="assets/languages/te.svg" width="58" height="28" alt="ā°¤āą†ā°˛āąā°—āą"></a></p>
19
+
20
+ ## 🚀 āϏāĻ•ā§āώāĻŽāϤāĻžāϰ āĻŦāĻŋāĻ­āĻžāĻ—
21
+
22
+ - đŸ›Ąī¸ **āĻĢā§āϰāĻŋ/āĻ“āĻĒ⧇āύ āϕ⧋āϰ** — MIT-āϞāĻžāχāϏ⧇āĻ¨ā§āϏāϝ⧁āĻ•ā§āϤ public package; account āĻ›āĻžā§œāĻžāχ public market data, āϏāĻ™ā§āϗ⧇ optional browser, network āĻ“ DataFrame extrasāĨ¤
23
+ - ⚡ **āĻĻā§āϰ⧁āϤ market data** — Stream-first tick, forming/closed candle, āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ historical page āĻāĻŦāĻ‚ REST fallback-āϏāĻš concurrent candle batchāĨ¤
24
+ - 🔑 **āĻāĻ•āĻžāϧāĻŋāĻ• login āĻ“ client pool** — Token, password, browser āĻ“ OTP-capable provider; independent named client āĻāĻŦāĻ‚ account eventāĨ¤
25
+ - 🤖 **āύāĻŋāϰāĻžāĻĒāĻĻ caller-owned automation** — ExecutionOrchestrator/AutoExecutor āĻļ⧁āϧ⧁ application-āĻāϰ explicit intent āĻ¨ā§‡ā§Ÿ; dry-run, demo-only default, cooldown, concurrency limit āĻāĻŦāĻ‚ uncertain order retry āύ⧇āχāĨ¤
26
+ - 📊 **Pure indicator** — Caller-owned data-āϰ āωāĻĒāϰ Decimal SMA, EMA, RSI, MACD, Bollinger Bands, ATR āĻ“ stochastic measurement; signal āĻŦāĻž strategy āύ⧟āĨ¤
27
+ - đŸŽ¯ **Execution convenience** — `buy_and_wait`, `sell`/early close, settlement wait, journal āĻ“ reconciliation—explicit āĻāĻ•-order-at-a-time call-āĻāϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇āĨ¤
28
+ - 🔍 **āϝāĻžāϚāĻžāχāĻ•ā§ƒāϤ Bynix scope** — Implemented, offline-tested āĻ“ live-demo-observed āφāϚāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ matrix āĻĻ⧇āϖ⧁āύ; āĻ…āϝāĻžāϚāĻžāχāĻ•ā§ƒāϤ parity āĻŦā§‹āĻāĻžāύ⧋ āĻšā§Ÿ āύāĻžāĨ¤
29
+
30
+ āϝāĻžāϚāĻžāχāĻ•ā§ƒāϤ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ scope āĻĻ⧇āϖ⧁āύ [feature āĻ“ fallback matrix-āĻ](docs/FEATURE_MATRIX.md).
31
+
32
+ ## đŸ› ī¸ āϏ⧁āĻŦāĻŋāϧāĻžāϏāĻŽā§‚āĻš
33
+
34
+ | API | āϏ⧁āĻŦāĻŋāϧāĻžāϏāĻŽā§‚āĻš |
35
+ | --- | --- |
36
+ | `connect ¡ PasswordAuth ¡ BrowserAuth` | Session token, password, browser login āĻ“ 2FA callbackāĨ¤ |
37
+ | `get_assets ¡ get_asset ¡ get_payouts` | Asset āϤāĻžāϞāĻŋāĻ•āĻž, āϏāĻ āĻŋāĻ• symbol, availability āĻ“ payout āϤāĻĨā§āϝāĨ¤ |
38
+ | `get_candles ¡ get_historical_candles ¡ get_candles_batch` | UTC timestamp-āϏāĻš āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ• āĻ“ paginated historical OHLCV candlesāĨ¤ |
39
+ | `subscribe_ticks ¡ stream_candles ¡ get_tick` | Live tick, āϚāϞāĻŽāĻžāύ āĻ“ closed candle; āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāϞ⧇ REST polling fallbackāĨ¤ |
40
+ | `place_order ¡ wait_order_result ¡ close_trade_early ¡ ExecutionOrchestrator` | Demo, real āĻ“ funded order, settlement result āĻāĻŦāĻ‚ early closeāĨ¤ |
41
+ | `SQLiteJournal ¡ reconcile_order ¡ unresolved_orders` | āĻ¸ā§āĻĨāĻžā§Ÿā§€ order journal, restart recovery āĻ“ duplicate reference āĻĒā§āϰāϤāĻŋāϰ⧋āϧāĨ¤ |
42
+ | `ClientPool ¡ account_events ¡ get_balance_breakdown` | āĻ¸ā§āĻŦāĻžāϧ⧀āύ named client, account event āĻ“ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ balanceāĨ¤ |
43
+ | `proxy ¡ dns_servers ¡ connect_any` | HTTP/SOCKS5 proxy, custom DNS āĻ“ trusted domain fallbackāĨ¤ |
44
+ | `get_realtime_sentiment ¡ stream_sentiment` | Platform-style candle āĻ“ tick model āĻĨ⧇āϕ⧇ streaming market sentimentāĨ¤ |
45
+ | `export_candles ¡ candles_to_dataframe ¡ resample_candles ¡ sma ¡ ema ¡ rsi ¡ macd ¡ bollinger_bands ¡ atr ¡ stochastic` | Decimal āĻ…āĻ•ā§āώ⧁āĻŖā§āĻŖ āϰ⧇āϖ⧇ CSV/JSON export, pandas āĻ“ candle resamplingāĨ¤ |
46
+
47
+ ## đŸ“Ļ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ
48
+
49
+ PyPI āĻĨ⧇āϕ⧇ published package install āĻ•āϰ⧋āĨ¤ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāϞ⧇ browser, network āĻ“ DataFrame integration āϝ⧋āĻ— āĻ•āϰ⧋āĨ¤
50
+
51
+ ```console
52
+ python -m pip install pybynix
53
+ ```
54
+
55
+ ```console
56
+ python -m pip install "pybynix[browser,network,dataframe]"
57
+ python -m playwright install chromium
58
+ ```
59
+
60
+ ## ⚡ āĻĒā§āϰāĻĨāĻŽ live market stream
61
+
62
+ Account āĻ›āĻžā§œāĻžāχ public market data āύ⧇āĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤ āĻāχ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āωāĻĻāĻžāĻšāϰāĻŖāϟāĻŋ candles āφāύ⧇ āĻāĻŦāĻ‚ āϤāĻŋāύāϟāĻŋ live tick āĻĒā§œā§‡āĨ¤
63
+
64
+ ```python
65
+ import asyncio
66
+ from pybynix import Bynix
67
+
68
+ async def main():
69
+ async with Bynix.public() as client:
70
+ candles = await client.get_candles("EUR/USD OTC", interval="1m", count=100)
71
+ print(candles[-1])
72
+ async with await client.subscribe_ticks("EUR/USD OTC") as ticks:
73
+ for _ in range(3):
74
+ tick = await anext(ticks)
75
+ print(tick.timestamp, tick.price)
76
+
77
+ asyncio.run(main())
78
+ ```
79
+
80
+ ## 🔐 āϞāĻ—āχāύ āĻ“ session
81
+
82
+ Interactive login, āύāĻŋāĻœā§‡āϰ Bynix access token āĻ…āĻĨāĻŦāĻž password/browser provider āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋āĨ¤ Login āĻāĻ•āϟāĻŋ local session āϰāĻžāϖ⧇; Python application āύāĻŋāϜāĻ¸ā§āĻŦ session provider-āĻ“ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Client-āϕ⧇ async context manager-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋āĨ¤
83
+
84
+ ```console
85
+ pybynix login
86
+ pybynix doctor
87
+ pybynix balances
88
+ ```
89
+
90
+ ```python
91
+ import asyncio
92
+ import os
93
+ from pybynix import Bynix, PasswordAuth, SQLiteJournal
94
+
95
+ async def main():
96
+ async with Bynix(
97
+ provider=PasswordAuth(os.environ["BYNIX_EMAIL"], os.environ["BYNIX_PASSWORD"]),
98
+ journal=SQLiteJournal("orders.sqlite"),
99
+ ) as client:
100
+ print(await client.get_balance())
101
+
102
+ asyncio.run(main())
103
+ ```
104
+
105
+ ## đŸŽ¯ āĻŸā§āϰ⧇āĻĄ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ
106
+
107
+ Connected authenticated client āĻĻāĻŋā§Ÿā§‡ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ demo order āĻĻāĻžāĻ“ āĻāĻŦāĻ‚ server result-āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧋āĨ¤ Default account demoāĨ¤ Real āĻŦāĻž funded execution-āĻāϰ āϜāĻ¨ā§āϝ allow_real_trading=True āϞāĻžāϗ⧇; funded order-āĻ challenge_id-āĻ“ āϞāĻžāĻ—āĻŦ⧇āĨ¤ Order ID āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧋ āĻāĻŦāĻ‚ restart recovery-āϰ āϜāĻ¨ā§āϝ SQLiteJournal āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋āĨ¤
108
+
109
+ ```python
110
+ async def execute_demo_order(client):
111
+ order = await client.place_order("EUR/USD OTC", "call", "1.00", 5)
112
+ result = await client.wait_order_result(order["trade_id"], timeout=90)
113
+ return result
114
+ ```
115
+
116
+ ## 🌐 Connection āĻ“ recovery
117
+
118
+ Persistent connection, resubscription āĻ“ bounded queue āĻĻāĻŋā§Ÿā§‡ āĻĻā§€āĻ°ā§āϘāϏāĻŽā§Ÿ data āύ⧇āĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤ Streaming āύāĻž āĻĨāĻžāĻ•āϞ⧇ auto mode platform-āĻāϰ REST tick endpoint āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ Network extras-āĻ authenticated SOCKS5 āĻ“ custom DNS āφāϛ⧇āĨ¤ Authentication provider-āĻāĻ“ āĻāĻ•āχ route configure āĻ•āϰ⧋āĨ¤
119
+
120
+ ```python
121
+ client = Bynix.from_token(token, proxy="socks5://user:password@proxy-host:1080")
122
+ # HTTP CONNECT: proxy="http://proxy-host:8080"
123
+ # Custom DNS: Bynix.from_token(token, dns_servers=["1.1.1.1"])
124
+ # Data fallback: Bynix.public(stream_transport="auto")
125
+ ```
126
+
127
+ ## đŸ’ģ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ-āϞāĻžāχāύ āϟ⧁āϞ
128
+
129
+ Terminal āĻĨ⧇āϕ⧇ platform āĻĒāϰ⧀āĻ•ā§āώāĻž, price stream, candle export āĻ“ published domain check āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ Public data āϏāϰāĻžāϏāϰāĻŋ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžā§Ÿ; account command saved session āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤
130
+
131
+ ```console
132
+ pybynix stream --symbol "EUR/USD OTC" --interval 15s --count 5
133
+ pybynix candles --symbol "EUR/USD OTC" --count 100 --output candles.csv
134
+ pybynix sentiment --symbol "EUR/USD OTC"
135
+ pybynix domains
136
+ ```
137
+
138
+ ## 📚 āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ
139
+
140
+ Method signature, return value, runnable example āĻ“ recovery behavior āύāĻŋāĻšā§‡āϰ documentation-āĻ āφāϛ⧇āĨ¤ Asset catalog-āĻāϰ exact trade_symbol āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋āĨ¤
141
+
142
+ - [API reference](docs/API.md)
143
+ - [Authentication](docs/AUTHENTICATION.md)
144
+ - [Examples](examples)
145
+ - [Recovery and networking](docs/RECOVERY.md)
146
+ - [Automation boundary](docs/AUTOMATION.md)
147
+ - [Feature and fallback matrix](docs/FEATURE_MATRIX.md)
148
+ - [Launch checklist](docs/LAUNCH_CHECKLIST.md)
149
+ - [Repository map](docs/REPOSITORY_MAP.md)
150
+ - [Troubleshooting](docs/TROUBLESHOOTING.md)
151
+
152
+ ## đŸ§Ē āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ“ performance
153
+
154
+ Validation record-āĻ āĻĒāϰ⧀āĻ•ā§āώāĻŋāϤ Python version, asset/timeframe coverage, demo execution, connection interruption āĻ“ performance measurement āφāϛ⧇āĨ¤ Reproducible tests āĻ“ benchmark input source-āĻāϰ āϏāĻ™ā§āϗ⧇ āĻĻ⧇āĻ“ā§ŸāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤ [Validation](docs/VALIDATION.md) ¡ [Benchmarks](benchmarks)
155
+
156
+ ## đŸ”Ŧ āĻ—āĻŦ⧇āώāĻŖāĻž
157
+
158
+ PyBynix-āĻāϰ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ, āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻ…ā§āϝāĻžāĻĄāĻžāĻĒā§āĻŸā§‡āĻļāύ āĻ“ āĻāĻ­āĻžāĻ˛ā§ā§Ÿā§‡āĻļāύ āϰāĻŋāϏāĻžāĻ°ā§āϚ āĻĒ⧇āĻĒāĻžāϰ⧇ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϤ⧁āϞ⧇ āϧāϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤ āĻāϤ⧇ āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽ āϰāĻŋāĻ•āĻ­āĻžāϰāĻŋ, āύāĻŋāϰāĻžāĻĒāĻĻ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āĻ“ āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āϕ⧇āϰ āĻĒā§āϰāĻŽāĻžāĻŖ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ°ā§Ÿā§‡āϛ⧇āĨ¤
159
+
160
+ ## 🤝 āĻ•āĻŽāĻŋāωāύāĻŋāϟāĻŋ āĻ“ āϞāĻžāχāϏ⧇āĻ¨ā§āϏ
161
+
162
+ Contribution, āĻĒ⧁āύāϰāĻžā§Ÿ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āϝāĻžā§Ÿ āĻāĻŽāύ bug report āĻāĻŦāĻ‚ documentation improvement āĻ¸ā§āĻŦāĻžāĻ—āϤāĨ¤ PyBynix āĻ¸ā§āĻŦāĻžāϧ⧀āύāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ; platform āĻ“ language-āĻāϰ trademark āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āĻŽāĻžāϞāĻŋāĻ•āĻĻ⧇āϰāĨ¤ [Contributing](CONTRIBUTING.md) ¡ [Security](SECURITY.md) ¡ [MIT](LICENSE)
163
+
164
+ <p align="center"><strong>C. M. Jubayer Hossain Bappy</strong> ¡ PyBynix</p>