Extend fills

This commit is contained in:
waterquarks 2023-04-25 04:47:04 +00:00
parent 04bf6dd456
commit 5d91691480
5 changed files with 29 additions and 26 deletions

View File

@ -17,7 +17,7 @@ notebook:
publish:
make clean
python setup.py sdist bdist_wheel
pipenv run twine upload -u serum-community dist/*
pipenv run twine upload dist/*
test-publish:
make clean

View File

@ -14,11 +14,15 @@ async def main():
connection = AsyncClient('https://mango.rpcpool.com/0f9acc0d45173b51bf7d7e09c1e5')
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']
])
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__':

View File

@ -92,30 +92,37 @@ class MarketCore:
def parse_fill_event(self, event: t.Event) -> t.FilledOrder:
if event.event_flags.bid:
side = Side.BUY
side = 'bids'
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
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:
side = Side.SELL
side = 'asks'
price_before_fees = (
event.native_quantity_released - event.native_fee_or_rebate
if event.event_flags.maker
else event.native_quantity_released + event.native_fee_or_rebate
)
price = (price_before_fees * self.state.base_spl_token_multiplier()) / (
self.state.quote_spl_token_multiplier() * event.native_quantity_paid
)
size = event.native_quantity_paid / 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)
size = event.native_quantity_paid / self.state.base_spl_token_multiplier()
return t.FilledOrder(
order_id=event.order_id,
side=side,
type='maker' if event.event_flags.maker else 'taker',
price=price,
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(

View File

@ -39,16 +39,13 @@ class AccountFlags(NamedTuple):
class FilledOrder(NamedTuple):
client_order_id: int
""""""
side: str
""""""
type: str
price: float
""""""
size: float
""""""
fee_cost: float
""""""
fee: float
open_orders: PublicKey
client_order_id: int
class OrderInfo(NamedTuple):

View File

@ -3,13 +3,8 @@
from setuptools import find_packages, setup
setup(
<<<<<<< Updated upstream
name="pyserum",
version="0.6.0a",
=======
name="pyopenbook",
version="0.7.0a",
>>>>>>> Stashed changes
version="0.7.3a",
author="serum-community",
description="""Python client library for interacting with the Project Serum DEX.""",
install_requires=[