ctrader-api-client 0.2.1__tar.gz → 0.2.2__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.
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/PKG-INFO +1 -1
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/pyproject.toml +1 -1
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/market_data.py +1 -1
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/market_data.py +10 -10
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/uv.lock +1 -1
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/.claude/settings.local.json +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/.github/workflows/docs.yml +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/.gitignore +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/.pre-commit-config.yaml +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/.python-version +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/Justfile +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/LICENSE +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/README.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/accounts.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/client.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/enums.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/events.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/market-data.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/models.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/symbols.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/api/trading.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/getting-started.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/docs/index.md +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/mkdocs.yml +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/SOURCE +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/VERSION +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/update.sh +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/.gitkeep +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiCommonMessages.proto +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiCommonModelMessages.proto +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiMessages.proto +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiModelMessages.proto +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/scripts/fix_proto_imports.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/messages.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/proto/OpenApiCommonMessages.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/proto/OpenApiCommonModelMessages.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/proto/OpenApiMessages.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/proto/OpenApiModelMessages.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/proto/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/serialization.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/accounts.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/symbols.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/trading.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/auth/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/auth/credentials.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/auth/manager.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/client.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/config.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/heartbeat.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/protocol.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/transport.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/enums.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/emitter.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/router.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/types.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/exceptions.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/__init__.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/_base.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/account.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/deal.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/order.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/position.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/requests.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/symbol.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/py.typed +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/_internal/test_messages.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/_internal/test_serialization.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/api/conftest.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/api/test_accounts.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/api/test_market_data_api.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/api/test_symbols.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/api/test_trading.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/auth/test_credentials.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/auth/test_manager.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/connection/test_heartbeat.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/connection/test_protocol.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/connection/test_transport.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/events/test_emitter.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/events/test_router.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/events/test_types.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_account.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_deal.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_market_data.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_order.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_position.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_requests.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/models/test_symbol.py +0 -0
- {ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/test_client.py +0 -0
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/market_data.py
RENAMED
|
@@ -372,7 +372,7 @@ class MarketDataAPI:
|
|
|
372
372
|
description=f"Expected ProtoOAGetTrendbarsRes, got {type(response).__name__}",
|
|
373
373
|
)
|
|
374
374
|
|
|
375
|
-
return [Trendbar.from_proto(t) for t in response.trendbar]
|
|
375
|
+
return [Trendbar.from_proto(t, historical=True) for t in response.trendbar]
|
|
376
376
|
|
|
377
377
|
async def get_tick_data(
|
|
378
378
|
self,
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/market_data.py
RENAMED
|
@@ -56,17 +56,15 @@ class Trendbar(FrozenModel):
|
|
|
56
56
|
volume: int
|
|
57
57
|
|
|
58
58
|
@classmethod
|
|
59
|
-
def from_proto(cls, proto: ProtoOATrendbar, bid_price: float | None = None) -> Trendbar:
|
|
60
|
-
"""Create Trendbar from proto message.
|
|
59
|
+
def from_proto(cls, proto: ProtoOATrendbar, bid_price: float | None = None, historical: bool = False) -> Trendbar:
|
|
60
|
+
"""Create a Trendbar from a proto message.
|
|
61
61
|
|
|
62
62
|
Args:
|
|
63
|
-
proto:
|
|
64
|
-
bid_price:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Returns:
|
|
68
|
-
A new Trendbar instance.
|
|
63
|
+
proto: Source proto message.
|
|
64
|
+
bid_price: Bid price used as close when the API omits delta_close on live updates.
|
|
65
|
+
historical: If False, raises on delta_close == 0 instead of silently returning low == close.
|
|
69
66
|
"""
|
|
67
|
+
|
|
70
68
|
# Calculate timestamp from utc_timestamp_in_minutes
|
|
71
69
|
ts = datetime.now(UTC)
|
|
72
70
|
if proto.utc_timestamp_in_minutes:
|
|
@@ -80,9 +78,11 @@ class Trendbar(FrozenModel):
|
|
|
80
78
|
if bid_price is not None:
|
|
81
79
|
close = bid_price
|
|
82
80
|
else:
|
|
83
|
-
if proto.delta_close == 0:
|
|
84
|
-
# If delta_close is 0, it means the API did not provide a close price
|
|
81
|
+
if not historical and proto.delta_close == 0:
|
|
82
|
+
# If delta_close is 0 on a live bar, it means the API did not provide a close price.
|
|
85
83
|
# In this case, we must raise instead of silently returning an incorrect close price.
|
|
84
|
+
# If historical is True, we allow delta_close to be 0 since historical bars can have a close price equal
|
|
85
|
+
# to the low price.
|
|
86
86
|
raise RuntimeError(
|
|
87
87
|
"delta_close missing from Trendbar proto and no bid_price was provided to use as fallback."
|
|
88
88
|
"Returning error as this is safer than silently returning an incorrect close price of low + 0."
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiCommonMessages.proto
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiCommonModelMessages.proto
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/protos/vendor/OpenApiModelMessages.proto
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/_internal/messages.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/api/accounts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/auth/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/auth/credentials.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/auth/manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/heartbeat.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/protocol.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/connection/transport.py
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/emitter.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/router.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/events/types.py
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/_base.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/account.py
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/order.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/position.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/requests.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/src/ctrader_api_client/models/symbol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/_internal/test_serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/api/test_market_data_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/connection/test_heartbeat.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/connection/test_protocol.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.2.1 → ctrader_api_client-0.2.2}/tests/unit/connection/test_transport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|