valdiate and ack order requests from ems
parent
66da58525d
commit
b21bbf5031
|
@ -33,6 +33,7 @@ import tractor
|
||||||
from pydantic.dataclasses import dataclass
|
from pydantic.dataclasses import dataclass
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
import wsproto
|
import wsproto
|
||||||
|
from itertools import count
|
||||||
|
|
||||||
from .. import config
|
from .. import config
|
||||||
from .._cacheables import open_cached_client
|
from .._cacheables import open_cached_client
|
||||||
|
@ -290,9 +291,9 @@ class Client:
|
||||||
"""Place an order and return integer request id provided by client.
|
"""Place an order and return integer request id provided by client.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# Build order data from kraken
|
# Build order data for kraken api
|
||||||
data = {
|
data = {
|
||||||
"userref": 1,
|
"userref": reqid,
|
||||||
"ordertype": "limit",
|
"ordertype": "limit",
|
||||||
"type": action,
|
"type": action,
|
||||||
"volume": size,
|
"volume": size,
|
||||||
|
@ -465,12 +466,14 @@ def normalize_symbol(
|
||||||
|
|
||||||
async def handle_order_requests(
|
async def handle_order_requests(
|
||||||
|
|
||||||
client: 'test',#kraken,
|
client: Client,
|
||||||
ems_order_stream: tractor.MsgStream,
|
ems_order_stream: tractor.MsgStream,
|
||||||
|
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
# order_request: dict
|
request_msg: dict
|
||||||
|
order: BrokerdOrder
|
||||||
|
userref_counter = count()
|
||||||
async for request_msg in ems_order_stream:
|
async for request_msg in ems_order_stream:
|
||||||
log.info(f'Received order request {request_msg}')
|
log.info(f'Received order request {request_msg}')
|
||||||
|
|
||||||
|
@ -484,7 +487,7 @@ async def handle_order_requests(
|
||||||
'This is a kraken account, \
|
'This is a kraken account, \
|
||||||
only a `kraken.spot` selection is valid'
|
only a `kraken.spot` selection is valid'
|
||||||
)
|
)
|
||||||
await ems_order_stream.send(BrokerError(
|
await ems_order_stream.send(BrokerdError(
|
||||||
oid=request_msg['oid'],
|
oid=request_msg['oid'],
|
||||||
symbol=request_msg['symbol'],
|
symbol=request_msg['symbol'],
|
||||||
reason=f'Kraken only, No account found: `{account}` ?',
|
reason=f'Kraken only, No account found: `{account}` ?',
|
||||||
|
@ -503,7 +506,7 @@ async def handle_order_requests(
|
||||||
action=order.action,
|
action=order.action,
|
||||||
size=order.size,
|
size=order.size,
|
||||||
## XXX: how do I handle new orders
|
## XXX: how do I handle new orders
|
||||||
reqid=order.reqid,
|
reqid=next(userref_counter),
|
||||||
)
|
)
|
||||||
|
|
||||||
# deliver ack that order has been submitted to broker routing
|
# deliver ack that order has been submitted to broker routing
|
||||||
|
|
Loading…
Reference in New Issue