Extend fills
This commit is contained in:
parent
04bf6dd456
commit
5d91691480
2
Makefile
2
Makefile
|
@ -17,7 +17,7 @@ notebook:
|
||||||
publish:
|
publish:
|
||||||
make clean
|
make clean
|
||||||
python setup.py sdist bdist_wheel
|
python setup.py sdist bdist_wheel
|
||||||
pipenv run twine upload -u serum-community dist/*
|
pipenv run twine upload dist/*
|
||||||
|
|
||||||
test-publish:
|
test-publish:
|
||||||
make clean
|
make clean
|
||||||
|
|
|
@ -14,11 +14,15 @@ async def main():
|
||||||
connection = AsyncClient('https://mango.rpcpool.com/0f9acc0d45173b51bf7d7e09c1e5')
|
connection = AsyncClient('https://mango.rpcpool.com/0f9acc0d45173b51bf7d7e09c1e5')
|
||||||
|
|
||||||
serum_markets = await asyncio.gather(*[
|
serum_markets = await asyncio.gather(*[
|
||||||
AsyncMarket.load(connection, Publ(serum_market_config['serumMarketExternal']), Pubkey(serum_market_config['serumProgram']))
|
AsyncMarket.load(connection, PublicKey(serum_market_config['serumMarketExternal']), PublicKey(serum_market_config['serumProgram']))
|
||||||
for serum_market_config in group['serum3Markets']
|
for serum_market_config in group['serum3Markets']
|
||||||
])
|
])
|
||||||
|
|
||||||
print(serum_markets)
|
serum_market: AsyncMarket = serum_markets[0]
|
||||||
|
|
||||||
|
fills = await serum_market.load_fills(9999)
|
||||||
|
|
||||||
|
print([fill._asdict() for fill in fills])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -92,30 +92,37 @@ class MarketCore:
|
||||||
|
|
||||||
def parse_fill_event(self, event: t.Event) -> t.FilledOrder:
|
def parse_fill_event(self, event: t.Event) -> t.FilledOrder:
|
||||||
if event.event_flags.bid:
|
if event.event_flags.bid:
|
||||||
side = Side.BUY
|
side = 'bids'
|
||||||
|
|
||||||
price_before_fees = (
|
price_before_fees = (
|
||||||
event.native_quantity_released + event.native_fee_or_rebate
|
event.native_quantity_paid + event.native_fee_or_rebate
|
||||||
if event.event_flags.maker
|
if event.event_flags.maker
|
||||||
else event.native_quantity_released - event.native_fee_or_rebate
|
else event.native_quantity_paid - event.native_fee_or_rebate
|
||||||
)
|
)
|
||||||
|
|
||||||
|
price = (price_before_fees * self.state.base_spl_token_multiplier()) / (self.state.quote_spl_token_multiplier() * event.native_quantity_released)
|
||||||
|
|
||||||
|
size = event.native_quantity_released / self.state.base_spl_token_multiplier()
|
||||||
else:
|
else:
|
||||||
side = Side.SELL
|
side = 'asks'
|
||||||
|
|
||||||
price_before_fees = (
|
price_before_fees = (
|
||||||
event.native_quantity_released - event.native_fee_or_rebate
|
event.native_quantity_released - event.native_fee_or_rebate
|
||||||
if event.event_flags.maker
|
if event.event_flags.maker
|
||||||
else event.native_quantity_released + event.native_fee_or_rebate
|
else event.native_quantity_released + event.native_fee_or_rebate
|
||||||
)
|
)
|
||||||
|
|
||||||
price = (price_before_fees * self.state.base_spl_token_multiplier()) / (
|
price = (price_before_fees * self.state.base_spl_token_multiplier()) / (self.state.quote_spl_token_multiplier() * event.native_quantity_paid)
|
||||||
self.state.quote_spl_token_multiplier() * event.native_quantity_paid
|
|
||||||
)
|
size = event.native_quantity_paid / self.state.base_spl_token_multiplier()
|
||||||
size = event.native_quantity_paid / self.state.base_spl_token_multiplier()
|
|
||||||
return t.FilledOrder(
|
return t.FilledOrder(
|
||||||
order_id=event.order_id,
|
|
||||||
side=side,
|
side=side,
|
||||||
|
type='maker' if event.event_flags.maker else 'taker',
|
||||||
price=price,
|
price=price,
|
||||||
size=size,
|
size=size,
|
||||||
fee_cost=event.native_fee_or_rebate * (1 if event.event_flags.maker else -1),
|
fee=self.state.quote_spl_size_to_number(event.native_fee_or_rebate) * (-1 if event.event_flags.maker else 1),
|
||||||
|
open_orders=event.public_key,
|
||||||
|
client_order_id=event.order_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _prepare_new_oo_account(
|
def _prepare_new_oo_account(
|
||||||
|
|
|
@ -39,16 +39,13 @@ class AccountFlags(NamedTuple):
|
||||||
|
|
||||||
|
|
||||||
class FilledOrder(NamedTuple):
|
class FilledOrder(NamedTuple):
|
||||||
client_order_id: int
|
|
||||||
""""""
|
|
||||||
side: str
|
side: str
|
||||||
""""""
|
type: str
|
||||||
price: float
|
price: float
|
||||||
""""""
|
|
||||||
size: float
|
size: float
|
||||||
""""""
|
fee: float
|
||||||
fee_cost: float
|
open_orders: PublicKey
|
||||||
""""""
|
client_order_id: int
|
||||||
|
|
||||||
|
|
||||||
class OrderInfo(NamedTuple):
|
class OrderInfo(NamedTuple):
|
||||||
|
|
7
setup.py
7
setup.py
|
@ -3,13 +3,8 @@
|
||||||
from setuptools import find_packages, setup
|
from setuptools import find_packages, setup
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
<<<<<<< Updated upstream
|
|
||||||
name="pyserum",
|
|
||||||
version="0.6.0a",
|
|
||||||
=======
|
|
||||||
name="pyopenbook",
|
name="pyopenbook",
|
||||||
version="0.7.0a",
|
version="0.7.3a",
|
||||||
>>>>>>> Stashed changes
|
|
||||||
author="serum-community",
|
author="serum-community",
|
||||||
description="""Python client library for interacting with the Project Serum DEX.""",
|
description="""Python client library for interacting with the Project Serum DEX.""",
|
||||||
install_requires=[
|
install_requires=[
|
||||||
|
|
Loading…
Reference in New Issue