xync-client 0.0.57.dev21__tar.gz → 0.0.57.dev23__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.
Files changed (112) hide show
  1. {xync_client-0.0.57.dev21/xync_client.egg-info → xync_client-0.0.57.dev23}/PKG-INFO +1 -1
  2. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/Ex.py +4 -4
  3. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/agent.py +35 -45
  4. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23/xync_client.egg-info}/PKG-INFO +1 -1
  5. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/.env.sample +0 -0
  6. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/.gitignore +0 -0
  7. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/.pre-commit-config.yaml +0 -0
  8. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/README.md +0 -0
  9. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/makefile +0 -0
  10. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/pyproject.toml +0 -0
  11. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/setup.cfg +0 -0
  12. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/TestAgent.py +0 -0
  13. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/TestAsset.py +0 -0
  14. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/TestEx.py +0 -0
  15. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/TestOrder.py +0 -0
  16. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Binance/test_binance.py +0 -0
  17. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
  18. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
  19. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Gate/test_gate.py +0 -0
  20. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
  21. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Wallet/test_agent.py +0 -0
  22. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/Wallet/test_ex.py +0 -0
  23. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/__init__.py +0 -0
  24. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/tests/_todo_refact/_test_ex.py +0 -0
  25. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/Agent.py +0 -0
  26. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/Asset.py +0 -0
  27. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/Auth.py +0 -0
  28. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/BaseTest.py +0 -0
  29. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/InAgent.py +0 -0
  30. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/Order.py +0 -0
  31. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Abc/xtype.py +0 -0
  32. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/__init__.py +0 -0
  33. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/binance_async.py +0 -0
  34. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/earn_api.py +0 -0
  35. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/etype/ad.py +0 -0
  36. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/etype/pm.py +0 -0
  37. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/ex.py +0 -0
  38. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/exceptions.py +0 -0
  39. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/sapi.py +0 -0
  40. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Binance/web_c2c.py +0 -0
  41. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/__init__.py +0 -0
  42. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/agent.py +0 -0
  43. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/base.py +0 -0
  44. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/etype/ad.py +0 -0
  45. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/etype/pm.py +0 -0
  46. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/ex.py +0 -0
  47. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/req.mjs +0 -0
  48. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BingX/sign.js +0 -0
  49. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BitGet/__init__.py +0 -0
  50. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BitGet/agent.py +0 -0
  51. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BitGet/etype/ad.py +0 -0
  52. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BitGet/ex.py +0 -0
  53. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/BitPapa/ex.py +0 -0
  54. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/InAgent.py +0 -0
  55. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/etype/ad.py +0 -0
  56. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/etype/cred.py +0 -0
  57. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/etype/order.py +0 -0
  58. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/ex.py +0 -0
  59. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/order.py +0 -0
  60. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/web_earn.py +0 -0
  61. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/web_p2p.py +0 -0
  62. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Bybit/ws.py +0 -0
  63. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Gate/etype/ad.py +0 -0
  64. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Gate/ex.py +0 -0
  65. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Gate/premarket.py +0 -0
  66. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Gmail/__init__.py +0 -0
  67. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/agent.py +0 -0
  68. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/earn.py +0 -0
  69. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/etype/__init__.py +0 -0
  70. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/etype/ad.py +0 -0
  71. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/etype/cred.py +0 -0
  72. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/etype/pm.py +0 -0
  73. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/etype/test.py +0 -0
  74. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Htx/ex.py +0 -0
  75. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/KuCoin/etype/ad.py +0 -0
  76. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/KuCoin/etype/pm.py +0 -0
  77. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/KuCoin/ex.py +0 -0
  78. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/KuCoin/web.py +0 -0
  79. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Mexc/etype/ad.py +0 -0
  80. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Mexc/etype/pm.py +0 -0
  81. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Mexc/ex.py +0 -0
  82. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Okx/etype/ad.py +0 -0
  83. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Okx/etype/pm.py +0 -0
  84. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Okx/ex.py +0 -0
  85. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/.gitignore +0 -0
  86. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Alfa/__init__.py +0 -0
  87. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Alfa/state.json +0 -0
  88. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Ozon/__init__.py +0 -0
  89. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Sber/__init__.py +0 -0
  90. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Tinkoff/__init__.py +0 -0
  91. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Tinkoff/state.json +0 -0
  92. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Volet/__init__.py +0 -0
  93. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
  94. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
  95. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Volet/api.py +0 -0
  96. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/Pms/Volet/pl.py +0 -0
  97. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/agent.py +0 -0
  98. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/asset.py +0 -0
  99. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/auth.py +0 -0
  100. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/ex.py +0 -0
  101. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/inAgent.py +0 -0
  102. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/order.py +0 -0
  103. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/pyd.py +0 -0
  104. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/pyro.py +0 -0
  105. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/TgWallet/web.py +0 -0
  106. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/__init__.py +0 -0
  107. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/loader.py +0 -0
  108. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client/pm_unifier.py +0 -0
  109. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client.egg-info/SOURCES.txt +0 -0
  110. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client.egg-info/dependency_links.txt +0 -0
  111. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client.egg-info/requires.txt +0 -0
  112. {xync_client-0.0.57.dev21 → xync_client-0.0.57.dev23}/xync_client.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.57.dev21
3
+ Version: 0.0.57.dev23
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client
@@ -261,13 +261,13 @@ class BaseExClient(HttpClient):
261
261
  }
262
262
  prs: tuple[dict, dict] = await self.pairs()
263
263
  for is_sell in (0, 1):
264
- dirs: list[models.Direction] = []
264
+ pss: list[models.PairSide] = []
265
265
  for cur, coinz in prs[is_sell].items():
266
266
  for coin in coinz:
267
267
  pair, _ = await models.Pair.get_or_create(coin=coins[coin], cur=curs[cur])
268
- pairex, _ = await models.PairEx.get_or_create(pair=pair, ex=self.ex)
269
- dirs += [models.Direction(sell=is_sell, pairex=pairex)]
270
- await models.Direction.bulk_create(dirs, ignore_conflicts=True)
268
+ # pairex, _ = await models.PairEx.get_or_create(pair=pair, ex=self.ex) # todo: разные ли комишки на покупку и продажу?
269
+ pss += [models.PairSide(is_sell=is_sell, pair=pair)]
270
+ await models.PairSide.bulk_create(pss, ignore_conflicts=True)
271
271
 
272
272
  # Сохранение чужого объявления (с Pm-ами) в бд
273
273
  async def ad_pydin2db(self, ad_pydin: BaseAdIn) -> models.Ad:
@@ -19,7 +19,7 @@ from x_model import init_db
19
19
  from xync_schema import models
20
20
  from xync_schema.enums import OrderStatus
21
21
 
22
- from xync_schema.models import Actor, Cond, Direction, CondSim, Pmcur
22
+ from xync_schema.models import Actor, Cond, CondSim, Pmcur, PairSide
23
23
 
24
24
  from xync_client.Abc.Agent import BaseAgentClient
25
25
  from xync_client.Abc.xtype import BaseOrderReq, FlatDict
@@ -395,8 +395,8 @@ class AgentClient(BaseAgentClient): # Bybit client
395
395
  size=30,
396
396
  # status=status, # 50 - завершено
397
397
  # tokenId=token_id,
398
- beginTime=begin_time,
399
- endTime=end_time,
398
+ # beginTime=begin_time,
399
+ # endTime=end_time,
400
400
  # side=side, # 1 - продажа, 0 - покупка
401
401
  )
402
402
  except FailedRequestError as e:
@@ -444,13 +444,15 @@ class AgentClient(BaseAgentClient): # Bybit client
444
444
  )
445
445
  ):
446
446
  extr = ", ".join(
447
- [
447
+ x
448
+ for xtr in [
448
449
  ecredex.bankName,
449
450
  ecredex.branchName,
450
451
  ecredex.qrcode,
451
452
  ecredex.payMessage,
452
453
  ecredex.paymentExt1,
453
454
  ]
455
+ if (x := xtr.strip())
454
456
  )
455
457
  crd = await models.Cred.create(
456
458
  detail=ecredex.accountNo,
@@ -476,9 +478,9 @@ class AgentClient(BaseAgentClient): # Bybit client
476
478
  "appealed_at": o.status == 30 and int(order.updateDate[:-3]) or None,
477
479
  "cred_id": ecredex.paymentType and credex.cred_id or None,
478
480
  "taker": taker,
481
+ "ad": ad_db,
479
482
  },
480
483
  exid=o.id,
481
- ad=ad_db,
482
484
  )
483
485
  dmsgs = self.api.get_chat_messages(orderId=oid, size=200)["result"]["result"][::-1]
484
486
  msgs = [Message.model_validate(m) for m in dmsgs if m["msgType"] in (1, 2, 7, 8)]
@@ -653,11 +655,10 @@ class AgentClient(BaseAgentClient): # Bybit client
653
655
  asset = await models.Asset.get(addr__actor=self.actor, addr__coin_id=coinex.coin_id)
654
656
  volume = min(volume, asset.free - (asset.freeze or 0) - (asset.lock or 0))
655
657
  volume = str(round(volume, coinex.coin.scale))
656
- dr = await Direction.get(
657
- pairex__ex=self.ex_client.ex,
658
- pairex__pair__coin_id=coinex.coin_id,
659
- pairex__pair__cur_id=curex.cur_id,
660
- sell=taker_side,
658
+ ps = await PairSide.get(
659
+ is_sell=taker_side,
660
+ pair__coin_id=coinex.coin_id,
661
+ pair__cur_id=curex.cur_id,
661
662
  )
662
663
  while self.actor.person.user.status > 0: # todo: depends on rest asset/fiat
663
664
  ads: list[Ad] = await self.ads(coinex, curex, taker_side, pms and list(creds.keys()))
@@ -673,7 +674,7 @@ class AgentClient(BaseAgentClient): # Bybit client
673
674
  if int(ad.userId) == self.actor.exid:
674
675
  logging.info(f"My ad {'-' if taker_side else '+'}{coinex.exid}/{curex.exid} on place#{i}")
675
676
  continue
676
- ad_db, isnew = await self.cond_upsert(ad, dr=dr)
677
+ ad_db, isnew = await self.cond_upsert(ad, ps=ps)
677
678
  if isnew:
678
679
  s = f"{'-' if taker_side else '+'}{ad.price}[{ad.minAmount}-{ad.maxAmount}]{coinex.exid}/{curex.exid}"
679
680
  print(s, end=" | ", flush=True)
@@ -696,20 +697,16 @@ class AgentClient(BaseAgentClient): # Bybit client
696
697
  await sleep(6)
697
698
 
698
699
  async def cond_upsert(
699
- self, ad: Ad, rname: str = None, dr: Direction = None, force: bool = False
700
+ self, ad: Ad, rname: str = None, ps: PairSide = None, force: bool = False
700
701
  ) -> tuple[models.Ad, bool]:
701
702
  sim, cid = None, None
703
+ ad_db = await models.Ad.get_or_none(exid=ad.id, ex=self.ex_client.ex).prefetch_related("cond")
702
704
  # если точно такое условие уже есть в бд, ниче делать не надо
703
705
  if not (cleaned := clean(ad.remark)) or (cid := {oc[0]: ci for ci, oc in self.all_conds.items()}.get(cleaned)):
704
- if force:
705
- return (
706
- await models.Ad.get_or_none(exid=ad.id).prefetch_related("maker__person")
707
- or await self.ad_create(ad, cid, rname, dr),
708
- False,
709
- )
710
- return None, False
706
+ return (ad_db or force and await self.ad_create(ad, cid, rname, ps)), False
711
707
  # если эта объява уже есть в бд
712
- if ad_db := await models.Ad.get_or_none(exid=ad.id).prefetch_related("cond__ads__maker", "maker__person"):
708
+ if ad_db:
709
+ await ad_db.fetch_related("cond__ads", "maker")
713
710
  # у измененного условия этой объявы есть другие объявы?
714
711
  if rest_ads := set(ad_db.cond.ads) - {ad_db}:
715
712
  # другие объявы этого условия принадлежат другим юзерам
@@ -770,7 +767,7 @@ class AgentClient(BaseAgentClient): # Bybit client
770
767
  return actor.person
771
768
  return await models.Person.create(name=name)
772
769
 
773
- async def ad_create(self, ad: Ad, cid: int, rname: str = None, dr: Direction = None) -> models.Ad:
770
+ async def ad_create(self, ad: Ad, cid: int, rname: str = None, ps: PairSide = None) -> models.Ad:
774
771
  act_df = {}
775
772
  if int(ad.userId) != self.actor.exid:
776
773
  act_df |= {"name": ad.nickName}
@@ -784,16 +781,16 @@ class AgentClient(BaseAgentClient): # Bybit client
784
781
  max_fiat=ad.maxAmount,
785
782
  cond_id=cid,
786
783
  exid=int(ad.id),
787
- direction=dr
788
- or await Direction.get(
789
- sell=ad.side,
790
- pairex__ex=self.ex_client.ex,
791
- pairex__pair__coin__ticker=ad.tokenId,
792
- pairex__pair__cur__ticker=ad.currencyId,
784
+ pair_side=ps
785
+ or await PairSide.get(
786
+ is_sell=ad.side,
787
+ pair__coin__ticker=ad.tokenId,
788
+ pair__cur__ticker=ad.currencyId,
793
789
  ),
790
+ ex=self.ex_client.ex,
794
791
  maker=actor,
795
792
  )
796
- await ad_db.fetch_related("cond", "maker__person")
793
+ await ad_db.pms.add(*(await models.Pm.filter(pmexs__ex=self.ex_client.ex, pmexs__exid__in=ad.payments)))
797
794
  return ad_db
798
795
 
799
796
  async def sim_new(self, new_cid: int, sim: int, old_cid: int):
@@ -816,15 +813,9 @@ class AgentClient(BaseAgentClient): # Bybit client
816
813
  self.cond_sims = {cs.cond_id: (cs.cond_rel_id, cs.similarity) for cs in await CondSim.all()}
817
814
  for c, (o, s) in self.cond_sims.items():
818
815
  self.sim_conds[o].add(c)
819
- dr = await Direction.get(
820
- sell=1,
821
- pairex__ex=self.ex_client.ex,
822
- pairex__pair__coin__ticker="USDT",
823
- pairex__pair__cur__ticker="RUB",
824
- )
825
816
  for ad_db in await models.Ad.filter(direction__pairex__ex=self.ex_client.ex).prefetch_related("cond", "maker"):
826
817
  ad = Ad(id=str(ad_db.exid), userId=str(ad_db.maker.exid), remark=ad_db.cond.raw_txt)
827
- await self.cond_upsert(ad, dr=dr, cid=ad_db.cond_id)
818
+ await self.cond_upsert(ad, force=True)
828
819
 
829
820
  async def get_credexs_by_norms(self, norms: list[str], cur_id: int) -> dict[models.Pmex, models.CredEx] | None:
830
821
  try:
@@ -909,27 +900,23 @@ async def main():
909
900
  eth = await models.Coinex.get(coin__ticker="ETH", ex=cl.actor.ex).prefetch_related("coin")
910
901
  usdc = await models.Coinex.get(coin__ticker="USDC", ex=cl.actor.ex).prefetch_related("coin")
911
902
  rub = await models.Curex.get(cur__ticker="RUB", ex=cl.actor.ex).prefetch_related("cur")
912
- # await models.Direction.get(
913
- # pairex__ex=cl.actor.ex, pairex__pair__coin__ticker="USDT", pairex__pair__cur__ticker="RUB", sell=True
914
- # )
915
903
  cl.all_conds = {
916
904
  c.id: (c.raw_txt, {str(a.maker.exid) for a in c.ads})
917
905
  for c in await Cond.all().prefetch_related("ads__maker")
918
906
  }
919
- # await cl.set_creds()
920
907
  # await cl.actual_cond()
921
908
  await gather(
922
- cl.battle(usdt, rub, False, ["volet"], 79.97), # гонка в стакане покупки - мы продаем
923
- cl.battle(usdt, rub, True, ["volet"], 79.9), # гонка в стакане продажи - мы покупаем
909
+ cl.get_api_orders(20), # 10, 1738357200000, 1742504399999
910
+ cl.battle(usdt, rub, False, ["volet"], 79.8), # гонка в стакане покупки - мы продаем
911
+ cl.battle(usdt, rub, True, ["volet"], 79.8), # гонка в стакане продажи - мы покупаем
924
912
  cl.battle(eth, rub, False, ["volet"], 206_000),
925
913
  cl.battle(eth, rub, True, ["volet"], 200_000),
926
914
  cl.battle(btc, rub, False, ["volet"], 8_500_000),
927
915
  cl.battle(btc, rub, True, ["volet"], 8_400_000),
928
916
  cl.battle(usdc, rub, False, ["volet"], 80.5),
929
917
  cl.battle(usdc, rub, True, ["volet"], 79),
930
- cl.take(usdt, rub, False, ceil=80.5, volume=360),
931
- cl.take(usdt, rub, True, ceil=80.5, volume=360),
932
- # cl.get_api_orders(), # 10, 1738357200000, 1742504399999
918
+ cl.take(usdt, rub, False, ceil=80, volume=360),
919
+ cl.take(usdt, rub, True, ceil=80, volume=360),
933
920
  )
934
921
 
935
922
  bor = BaseOrderReq(
@@ -948,4 +935,7 @@ async def main():
948
935
 
949
936
 
950
937
  if __name__ == "__main__":
951
- run(main())
938
+ try:
939
+ run(main())
940
+ except KeyboardInterrupt:
941
+ logging.info("Shutting down")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.57.dev21
3
+ Version: 0.0.57.dev23
4
4
  Author-email: Mike Artemiev <mixartemev@gmail.com>
5
5
  Project-URL: Homepage, https://gitlab.com/XyncNet/client
6
6
  Project-URL: Repository, https://gitlab.com/XyncNet/client