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.
- pybynix-1.0.0/.env.example +5 -0
- pybynix-1.0.0/.github/workflows/ci.yml +30 -0
- pybynix-1.0.0/.github/workflows/publish.yml +33 -0
- pybynix-1.0.0/.gitignore +22 -0
- pybynix-1.0.0/CHANGELOG.md +25 -0
- pybynix-1.0.0/CITATION.cff +9 -0
- pybynix-1.0.0/CONTRIBUTING.md +22 -0
- pybynix-1.0.0/LICENSE +21 -0
- pybynix-1.0.0/NOTICE.md +9 -0
- pybynix-1.0.0/PKG-INFO +199 -0
- pybynix-1.0.0/README.bn.md +164 -0
- pybynix-1.0.0/README.md +164 -0
- pybynix-1.0.0/SECURITY.md +12 -0
- pybynix-1.0.0/assets/languages/ar.svg +1 -0
- pybynix-1.0.0/assets/languages/bn.svg +1 -0
- pybynix-1.0.0/assets/languages/de.svg +1 -0
- pybynix-1.0.0/assets/languages/en.svg +1 -0
- pybynix-1.0.0/assets/languages/es.svg +1 -0
- pybynix-1.0.0/assets/languages/fa.svg +1 -0
- pybynix-1.0.0/assets/languages/fr.svg +1 -0
- pybynix-1.0.0/assets/languages/hi.svg +1 -0
- pybynix-1.0.0/assets/languages/id.svg +1 -0
- pybynix-1.0.0/assets/languages/it.svg +1 -0
- pybynix-1.0.0/assets/languages/ja.svg +1 -0
- pybynix-1.0.0/assets/languages/ko.svg +1 -0
- pybynix-1.0.0/assets/languages/pt.svg +1 -0
- pybynix-1.0.0/assets/languages/ru.svg +1 -0
- pybynix-1.0.0/assets/languages/ta.svg +1 -0
- pybynix-1.0.0/assets/languages/te.svg +1 -0
- pybynix-1.0.0/assets/languages/tr.svg +1 -0
- pybynix-1.0.0/assets/languages/ur.svg +1 -0
- pybynix-1.0.0/assets/languages/vi.svg +1 -0
- pybynix-1.0.0/assets/languages/zh-CN.svg +1 -0
- pybynix-1.0.0/assets/logo-dark.png +0 -0
- pybynix-1.0.0/assets/logo.png +0 -0
- pybynix-1.0.0/benchmarks/dispatch.py +65 -0
- pybynix-1.0.0/benchmarks/replay.py +51 -0
- pybynix-1.0.0/benchmarks/results/alternate-host-report.json +1 -0
- pybynix-1.0.0/benchmarks/results/auth-report.json +1 -0
- pybynix-1.0.0/benchmarks/results/browser-report.json +1 -0
- pybynix-1.0.0/benchmarks/results/domains-report.json +156 -0
- pybynix-1.0.0/benchmarks/results/early-close-report.json +1 -0
- pybynix-1.0.0/benchmarks/results/event-report.json +1 -0
- pybynix-1.0.0/benchmarks/results/live-readonly-report.json +47 -0
- pybynix-1.0.0/benchmarks/results/proxy-report.json +1 -0
- pybynix-1.0.0/benchmarks/results/replay-windows-python313.json +25 -0
- pybynix-1.0.0/benchmarks/results/short-soak-report.json +15 -0
- pybynix-1.0.0/benchmarks/results/source-manifest.json +15 -0
- pybynix-1.0.0/benchmarks/results/validation-summary.json +30 -0
- pybynix-1.0.0/docs/API.md +312 -0
- pybynix-1.0.0/docs/ARCHITECTURE.md +83 -0
- pybynix-1.0.0/docs/AUTHENTICATION.md +140 -0
- pybynix-1.0.0/docs/AUTOMATION.md +69 -0
- pybynix-1.0.0/docs/FEATURE_MATRIX.md +77 -0
- pybynix-1.0.0/docs/LAUNCH_CHECKLIST.md +53 -0
- pybynix-1.0.0/docs/PROTOCOL.md +87 -0
- pybynix-1.0.0/docs/RECOVERY.md +104 -0
- pybynix-1.0.0/docs/REPOSITORY_MAP.md +43 -0
- pybynix-1.0.0/docs/TROUBLESHOOTING.md +29 -0
- pybynix-1.0.0/docs/VALIDATION.md +103 -0
- pybynix-1.0.0/docs/i18n/README.ar.md +164 -0
- pybynix-1.0.0/docs/i18n/README.de.md +164 -0
- pybynix-1.0.0/docs/i18n/README.es.md +164 -0
- pybynix-1.0.0/docs/i18n/README.fa.md +164 -0
- pybynix-1.0.0/docs/i18n/README.fr.md +164 -0
- pybynix-1.0.0/docs/i18n/README.hi.md +164 -0
- pybynix-1.0.0/docs/i18n/README.id.md +164 -0
- pybynix-1.0.0/docs/i18n/README.it.md +164 -0
- pybynix-1.0.0/docs/i18n/README.ja.md +164 -0
- pybynix-1.0.0/docs/i18n/README.ko.md +164 -0
- pybynix-1.0.0/docs/i18n/README.pt.md +164 -0
- pybynix-1.0.0/docs/i18n/README.ru.md +164 -0
- pybynix-1.0.0/docs/i18n/README.ta.md +164 -0
- pybynix-1.0.0/docs/i18n/README.te.md +164 -0
- pybynix-1.0.0/docs/i18n/README.tr.md +164 -0
- pybynix-1.0.0/docs/i18n/README.ur.md +164 -0
- pybynix-1.0.0/docs/i18n/README.vi.md +164 -0
- pybynix-1.0.0/docs/i18n/README.zh-CN.md +164 -0
- pybynix-1.0.0/docs/i18n/locales/ar.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/bn.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/de.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/en.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/es.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/fa.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/fr.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/hi.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/id.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/it.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/ja.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/ko.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/pt.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/ru.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/ta.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/te.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/tr.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/ur.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/vi.json +71 -0
- pybynix-1.0.0/docs/i18n/locales/zh-CN.json +71 -0
- pybynix-1.0.0/examples/README.md +27 -0
- pybynix-1.0.0/examples/demo_order.py +27 -0
- pybynix-1.0.0/examples/history_export.py +23 -0
- pybynix-1.0.0/examples/live_data.py +26 -0
- pybynix-1.0.0/examples/multiple_clients.py +18 -0
- pybynix-1.0.0/examples/orchestration.py +32 -0
- pybynix-1.0.0/examples/order_recovery.py +24 -0
- pybynix-1.0.0/examples/public_data.py +18 -0
- pybynix-1.0.0/examples/sentiment_stream.py +18 -0
- pybynix-1.0.0/examples/session_login.py +18 -0
- pybynix-1.0.0/pyproject.toml +43 -0
- pybynix-1.0.0/src/pybynix/__init__.py +79 -0
- pybynix-1.0.0/src/pybynix/auth.py +207 -0
- pybynix-1.0.0/src/pybynix/cli.py +158 -0
- pybynix-1.0.0/src/pybynix/client.py +1263 -0
- pybynix-1.0.0/src/pybynix/data.py +85 -0
- pybynix-1.0.0/src/pybynix/domains.json +28 -0
- pybynix-1.0.0/src/pybynix/domains.py +35 -0
- pybynix-1.0.0/src/pybynix/errors.py +74 -0
- pybynix-1.0.0/src/pybynix/indicators.py +328 -0
- pybynix-1.0.0/src/pybynix/journal.py +195 -0
- pybynix-1.0.0/src/pybynix/models.py +98 -0
- pybynix-1.0.0/src/pybynix/network.py +152 -0
- pybynix-1.0.0/src/pybynix/orchestration.py +477 -0
- pybynix-1.0.0/src/pybynix/pool.py +44 -0
- pybynix-1.0.0/src/pybynix/runtime.py +23 -0
- pybynix-1.0.0/src/pybynix/sentiment.py +44 -0
- pybynix-1.0.0/src/pybynix/stable_api.py +5 -0
- pybynix-1.0.0/src/pybynix/stream.py +54 -0
- pybynix-1.0.0/tests/fixtures/tick.json +20 -0
- pybynix-1.0.0/tests/test_auth.py +29 -0
- pybynix-1.0.0/tests/test_boundaries.py +148 -0
- pybynix-1.0.0/tests/test_client.py +417 -0
- pybynix-1.0.0/tests/test_documentation.py +118 -0
- pybynix-1.0.0/tests/test_indicators.py +77 -0
- pybynix-1.0.0/tests/test_journal_failure.py +43 -0
- pybynix-1.0.0/tests/test_optional_data.py +30 -0
- pybynix-1.0.0/tests/test_orchestration.py +314 -0
- pybynix-1.0.0/tests/test_reconciliation.py +58 -0
- pybynix-1.0.0/tests/test_release.py +233 -0
- pybynix-1.0.0/tests/test_replay.py +90 -0
- pybynix-1.0.0/tools/action-versions.json +14 -0
- pybynix-1.0.0/tools/live_lab.py +252 -0
- pybynix-1.0.0/tools/package_release.py +67 -0
- pybynix-1.0.0/tools/readmes.py +283 -0
- pybynix-1.0.0/tools/soak.py +129 -0
|
@@ -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/
|
pybynix-1.0.0/.gitignore
ADDED
|
@@ -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,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.
|
pybynix-1.0.0/NOTICE.md
ADDED
|
@@ -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&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&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>
|