ctrader-api-client 0.4.0__tar.gz → 0.4.1__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.4.0 → ctrader_api_client-0.4.1}/PKG-INFO +1 -1
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/pyproject.toml +1 -1
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/symbol.py +12 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_symbol.py +19 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/uv.lock +1 -1
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/.claude/settings.local.json +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/.github/workflows/docs.yml +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/.gitignore +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/.pre-commit-config.yaml +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/.python-version +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/Justfile +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/LICENSE +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/README.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/accounts.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/client.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/enums.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/events.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/market-data.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/models.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/symbols.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/api/trading.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/getting-started.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/docs/index.md +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/mkdocs.yml +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/SOURCE +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/VERSION +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/update.sh +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiCommonMessages.proto +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiCommonModelMessages.proto +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiMessages.proto +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiModelMessages.proto +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/scripts/fix_proto_imports.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/messages.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/proto/OpenApiCommonMessages.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/proto/OpenApiCommonModelMessages.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/proto/OpenApiMessages.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/proto/OpenApiModelMessages.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/proto/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/serialization.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/accounts.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/market_data.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/symbols.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/trading.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/auth/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/auth/credentials.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/auth/manager.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/client.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/config.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/heartbeat.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/protocol.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/transport.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/enums.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/emitter.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/router.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/types.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/exceptions.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/__init__.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/_base.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/account.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/deal.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/market_data.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/order.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/position.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/requests.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/py.typed +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/_internal/test_messages.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/_internal/test_serialization.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/api/conftest.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/api/test_accounts.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/api/test_market_data_api.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/api/test_symbols.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/api/test_trading.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/auth/test_credentials.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/auth/test_manager.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/connection/test_heartbeat.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/connection/test_protocol.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/connection/test_transport.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/events/test_emitter.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/events/test_router.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/events/test_types.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_account.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_deal.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_market_data.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_order.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_position.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/models/test_requests.py +0 -0
- {ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/test_client.py +0 -0
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/symbol.py
RENAMED
|
@@ -137,6 +137,18 @@ class Symbol(FrozenModel):
|
|
|
137
137
|
"""
|
|
138
138
|
return int(lots * self.lot_size)
|
|
139
139
|
|
|
140
|
+
def quantize_price(self, price: Decimal) -> Decimal:
|
|
141
|
+
"""Quantize price to symbol's allowed decimal places
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
price: The price to quantize.
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
Quantized price.
|
|
148
|
+
"""
|
|
149
|
+
quantize_exp = Decimal(10) ** (-self.digits)
|
|
150
|
+
return price.quantize(quantize_exp)
|
|
151
|
+
|
|
140
152
|
@classmethod
|
|
141
153
|
def from_proto(cls, proto: ProtoOASymbol) -> Symbol:
|
|
142
154
|
"""Create Symbol from proto message.
|
|
@@ -215,3 +215,22 @@ class TestSymbol:
|
|
|
215
215
|
volume = symbol.lots_to_volume(original_lots)
|
|
216
216
|
result = symbol.volume_to_lots(volume)
|
|
217
217
|
assert result == original_lots
|
|
218
|
+
|
|
219
|
+
def test_quantize(self):
|
|
220
|
+
"""Test that quantize correctly rounds to the symbol's digits."""
|
|
221
|
+
symbol = Symbol(
|
|
222
|
+
symbol_id=1,
|
|
223
|
+
digits=5,
|
|
224
|
+
pip_position=4,
|
|
225
|
+
lot_size=100000,
|
|
226
|
+
min_volume=1000,
|
|
227
|
+
max_volume=10000000,
|
|
228
|
+
step_volume=1000,
|
|
229
|
+
trading_mode=TradingMode.ENABLED,
|
|
230
|
+
swap_long=Decimal("0.0"),
|
|
231
|
+
swap_short=Decimal("0.0"),
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
assert symbol.quantize_price(Decimal("1.23456789")) == Decimal("1.23457")
|
|
235
|
+
assert symbol.quantize_price(Decimal("1.23456123")) == Decimal("1.23456")
|
|
236
|
+
assert symbol.quantize_price(Decimal("1.23456499")) == Decimal("1.23456")
|
|
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.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiCommonMessages.proto
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiCommonModelMessages.proto
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/protos/vendor/OpenApiModelMessages.proto
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/_internal/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/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.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/accounts.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/api/market_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/auth/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/auth/credentials.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/auth/manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/heartbeat.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/protocol.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/connection/transport.py
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/emitter.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/router.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/events/types.py
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/__init__.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/_base.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/account.py
RENAMED
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/market_data.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/order.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/position.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/src/ctrader_api_client/models/requests.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/_internal/test_serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/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.4.0 → ctrader_api_client-0.4.1}/tests/unit/connection/test_heartbeat.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/tests/unit/connection/test_protocol.py
RENAMED
|
File without changes
|
{ctrader_api_client-0.4.0 → ctrader_api_client-0.4.1}/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
|