xync-client 0.0.57.dev24__tar.gz → 0.0.57.dev26__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.dev24/xync_client.egg-info → xync_client-0.0.57.dev26}/PKG-INFO +1 -1
  2. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/agent.py +79 -71
  3. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26/xync_client.egg-info}/PKG-INFO +1 -1
  4. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/.env.sample +0 -0
  5. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/.gitignore +0 -0
  6. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/.pre-commit-config.yaml +0 -0
  7. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/README.md +0 -0
  8. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/makefile +0 -0
  9. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/pyproject.toml +0 -0
  10. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/setup.cfg +0 -0
  11. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/TestAgent.py +0 -0
  12. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/TestAsset.py +0 -0
  13. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/TestEx.py +0 -0
  14. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/TestOrder.py +0 -0
  15. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Binance/test_binance.py +0 -0
  16. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
  17. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
  18. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Gate/test_gate.py +0 -0
  19. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
  20. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Wallet/test_agent.py +0 -0
  21. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/Wallet/test_ex.py +0 -0
  22. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/__init__.py +0 -0
  23. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/tests/_todo_refact/_test_ex.py +0 -0
  24. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/Agent.py +0 -0
  25. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/Asset.py +0 -0
  26. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/Auth.py +0 -0
  27. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/BaseTest.py +0 -0
  28. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/Ex.py +0 -0
  29. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/InAgent.py +0 -0
  30. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/Order.py +0 -0
  31. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Abc/xtype.py +0 -0
  32. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/__init__.py +0 -0
  33. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/binance_async.py +0 -0
  34. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/earn_api.py +0 -0
  35. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/etype/ad.py +0 -0
  36. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/etype/pm.py +0 -0
  37. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/ex.py +0 -0
  38. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/exceptions.py +0 -0
  39. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/sapi.py +0 -0
  40. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Binance/web_c2c.py +0 -0
  41. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/__init__.py +0 -0
  42. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/agent.py +0 -0
  43. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/base.py +0 -0
  44. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/etype/ad.py +0 -0
  45. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/etype/pm.py +0 -0
  46. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/ex.py +0 -0
  47. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/req.mjs +0 -0
  48. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BingX/sign.js +0 -0
  49. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BitGet/__init__.py +0 -0
  50. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BitGet/agent.py +0 -0
  51. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BitGet/etype/ad.py +0 -0
  52. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BitGet/ex.py +0 -0
  53. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/BitPapa/ex.py +0 -0
  54. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/InAgent.py +0 -0
  55. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/etype/ad.py +0 -0
  56. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/etype/cred.py +0 -0
  57. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/etype/order.py +0 -0
  58. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/ex.py +0 -0
  59. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/order.py +0 -0
  60. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/web_earn.py +0 -0
  61. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/web_p2p.py +0 -0
  62. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Bybit/ws.py +0 -0
  63. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Gate/etype/ad.py +0 -0
  64. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Gate/ex.py +0 -0
  65. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Gate/premarket.py +0 -0
  66. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Gmail/__init__.py +0 -0
  67. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/agent.py +0 -0
  68. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/earn.py +0 -0
  69. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/etype/__init__.py +0 -0
  70. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/etype/ad.py +0 -0
  71. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/etype/cred.py +0 -0
  72. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/etype/pm.py +0 -0
  73. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/etype/test.py +0 -0
  74. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Htx/ex.py +0 -0
  75. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/KuCoin/etype/ad.py +0 -0
  76. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/KuCoin/etype/pm.py +0 -0
  77. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/KuCoin/ex.py +0 -0
  78. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/KuCoin/web.py +0 -0
  79. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Mexc/etype/ad.py +0 -0
  80. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Mexc/etype/pm.py +0 -0
  81. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Mexc/ex.py +0 -0
  82. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Okx/etype/ad.py +0 -0
  83. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Okx/etype/pm.py +0 -0
  84. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Okx/ex.py +0 -0
  85. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/.gitignore +0 -0
  86. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Alfa/__init__.py +0 -0
  87. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Alfa/state.json +0 -0
  88. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Ozon/__init__.py +0 -0
  89. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Sber/__init__.py +0 -0
  90. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Tinkoff/__init__.py +0 -0
  91. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Tinkoff/state.json +0 -0
  92. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Volet/__init__.py +0 -0
  93. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
  94. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
  95. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Volet/api.py +0 -0
  96. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/Pms/Volet/pl.py +0 -0
  97. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/agent.py +0 -0
  98. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/asset.py +0 -0
  99. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/auth.py +0 -0
  100. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/ex.py +0 -0
  101. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/inAgent.py +0 -0
  102. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/order.py +0 -0
  103. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/pyd.py +0 -0
  104. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/pyro.py +0 -0
  105. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/TgWallet/web.py +0 -0
  106. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/__init__.py +0 -0
  107. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/loader.py +0 -0
  108. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client/pm_unifier.py +0 -0
  109. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client.egg-info/SOURCES.txt +0 -0
  110. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client.egg-info/dependency_links.txt +0 -0
  111. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/xync_client.egg-info/requires.txt +0 -0
  112. {xync_client-0.0.57.dev24 → xync_client-0.0.57.dev26}/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.dev24
3
+ Version: 0.0.57.dev26
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
@@ -397,7 +397,7 @@ class AgentClient(BaseAgentClient): # Bybit client
397
397
  # status=status, # 50 - завершено
398
398
  # tokenId=token_id,
399
399
  beginTime=begin_time,
400
- endTime=end_time,
400
+ # endTime=end_time,
401
401
  # side=side, # 1 - продажа, 0 - покупка
402
402
  )
403
403
  except FailedRequestError as e:
@@ -533,6 +533,8 @@ class AgentClient(BaseAgentClient): # Bybit client
533
533
  self.overprice_filter(ads, ceil, k)
534
534
 
535
535
  def get_cad(self, ads: list[Ad], ceil: float, k: Literal[-1, 1], place: int, cur_plc: int) -> Ad:
536
+ if not ads:
537
+ return None
536
538
  # чью цену будем обгонять, предыдущей или слещующей объявы?
537
539
  cad: Ad = ads[place] if cur_plc > place else ads[cur_plc]
538
540
  # а цена обгоняемой объявы не выше нашего потолка?
@@ -585,7 +587,8 @@ class AgentClient(BaseAgentClient): # Bybit client
585
587
  if not ads:
586
588
  await sleep(60)
587
589
  continue
588
- cad = self.get_cad(ads, ceil, k, place, cur_plc)
590
+ if not (cad := self.get_cad(ads, ceil, k, place, cur_plc)):
591
+ continue
589
592
  new_price = f"%.{curex.cur.scale}f" % round(float(cad.price) - k * step(mad, cad), curex.cur.scale)
590
593
  if mad.price == new_price: # Если нужная цена и так уже стоит
591
594
  print(end="v" if taker_side else "^", flush=True)
@@ -714,7 +717,8 @@ class AgentClient(BaseAgentClient): # Bybit client
714
717
  if rest_uids := {ra.maker_id for ra in rest_ads} - {ad_db.maker_id}:
715
718
  # создадим новое условие и присвоим его только текущей объяве
716
719
  new_cond = await Cond.create(raw_txt=cleaned)
717
- await self.sim_new(new_cond.id, get_sim(cleaned, ad_db.cond.raw_txt), ad_db.cond_id)
720
+ if sim := get_sim(cleaned, ad_db.cond.raw_txt):
721
+ await CondSim.create(cond_id=new_cond.id, similarity=sim, cond_rel_id=ad_db.cond_id)
718
722
  ad_db.cond_id = new_cond.id
719
723
  self.all_conds[ad_db.cond_id] = cleaned, {ad_db.maker.exid}
720
724
  await ad_db.save()
@@ -763,19 +767,13 @@ class AgentClient(BaseAgentClient): # Bybit client
763
767
 
764
768
  async def cond_get_max_sim(self, cid: int, txt: str, uids: set[int]) -> tuple[int | None, int | None]:
765
769
  # находим все старые тексты похожие на 90% и более
770
+ if len(txt) < 15:
771
+ return None, None
766
772
  sims: dict[int, int] = {}
767
773
  for old_cid, (old_txt, old_uids) in self.all_conds.items():
768
- if len(old_txt) < 15 or cid == old_cid or uids == old_uids:
769
- continue
770
- elif self.cond_sims.get(cid) == old_cid:
774
+ if len(old_txt) < 15 or uids == old_uids:
771
775
  continue
772
- elif self.cond_sims.get(old_cid) == cid:
773
- continue
774
- elif cid in self.rcond_sims.get(old_cid, {}):
775
- continue
776
- elif old_cid in self.rcond_sims.get(cid, {}):
777
- continue
778
- elif self.find_in_tree(cid, old_cid):
776
+ elif not self.can_add_sim(cid, old_cid):
779
777
  continue
780
778
  if sim := get_sim(txt, old_txt):
781
779
  sims[old_cid] = sim
@@ -786,6 +784,21 @@ class AgentClient(BaseAgentClient): # Bybit client
786
784
  return old_cid, sim
787
785
  return None, None
788
786
 
787
+ def can_add_sim(self, cid: int, old_cid: int) -> bool:
788
+ if cid == old_cid:
789
+ return False
790
+ elif self.cond_sims.get(cid) == old_cid:
791
+ return False
792
+ elif self.find_in_tree(cid, old_cid):
793
+ return False
794
+ elif self.cond_sims.get(old_cid) == cid:
795
+ return False
796
+ elif cid in self.rcond_sims.get(old_cid, {}):
797
+ return False
798
+ elif old_cid in self.rcond_sims.get(cid, {}):
799
+ return False
800
+ return True
801
+
789
802
  async def person_upsert(self, name: str, exid: int) -> models.Person:
790
803
  if actor := await models.Actor.get_or_none(exid=exid, ex=self.ex_client.ex).prefetch_related("person"):
791
804
  if not actor.person:
@@ -820,11 +833,6 @@ class AgentClient(BaseAgentClient): # Bybit client
820
833
  await ad_db.pms.add(*(await models.Pm.filter(pmexs__ex=self.ex_client.ex, pmexs__exid__in=ad.payments)))
821
834
  return ad_db
822
835
 
823
- async def sim_new(self, new_cid: int, sim: int, old_cid: int):
824
- if not sim:
825
- return None
826
- return await CondSim.create(cond_id=new_cid, similarity=sim, cond_rel_id=old_cid)
827
-
828
836
  async def sim_check_rels(self, cid: int, new_txt: int):
829
837
  if _old_sims := await CondSim.filter(Q(join_type="OR", cond_id=cid, cond_rel_id=cid)):
830
838
  for sim_db in _old_sims:
@@ -968,60 +976,60 @@ async def main():
968
976
  actor = (
969
977
  await models.Actor.filter(ex_id=9, agent__isnull=False).prefetch_related("ex", "agent", "person__user").first()
970
978
  )
971
- # async with FileClient(TOKEN) as b:
972
- cl: AgentClient = actor.client(FileClient(TOKEN))
973
- # await cl.ex_client.set_pmcurexs(cookies=actor.agent.auth["cookies"]) # 617 -> 639
974
- # await cl.set_creds()
975
- # await cl.ex_client.set_pairs()
976
- usdt = await models.Coinex.get(coin__ticker="USDT", ex=cl.actor.ex).prefetch_related("coin")
977
- btc = await models.Coinex.get(coin__ticker="BTC", ex=cl.actor.ex).prefetch_related("coin")
978
- eth = await models.Coinex.get(coin__ticker="ETH", ex=cl.actor.ex).prefetch_related("coin")
979
- usdc = await models.Coinex.get(coin__ticker="USDC", ex=cl.actor.ex).prefetch_related("coin")
980
- rub = await models.Curex.get(cur__ticker="RUB", ex=cl.actor.ex).prefetch_related("cur")
981
- cl.all_conds = {
982
- c.id: (c.raw_txt, {a.maker.exid for a in c.ads}) for c in await Cond.all().prefetch_related("ads__maker")
983
- }
984
- for curr, old in await CondSim.filter().values_list("cond_id", "cond_rel_id"):
985
- cl.cond_sims[curr] = old
986
- cl.rcond_sims[old] |= {curr}
987
- cl.build_tree()
988
- a = set()
989
-
990
- def check_tree(tre):
991
- for p, c in tre.items():
992
- a.add(p)
993
- check_tree(c)
994
-
995
- for pr, ch in cl.tree.items():
996
- check_tree(ch)
997
- await cl.actual_cond()
998
- await gather(
999
- cl.get_api_orders(10, 1737493200000, 1742590800000), # 10, 1738357200000, 1742504399999
1000
- cl.battle(usdt, rub, False, ["volet"], 79.8), # гонка в стакане покупки - мы продаем
1001
- cl.battle(usdt, rub, True, ["volet"], 79.8), # гонка в стакане продажи - мы покупаем
1002
- cl.battle(eth, rub, False, ["volet"], 206_000),
1003
- cl.battle(eth, rub, True, ["volet"], 200_000),
1004
- cl.battle(btc, rub, False, ["volet"], 8_500_000),
1005
- cl.battle(btc, rub, True, ["volet"], 8_400_000),
1006
- cl.battle(usdc, rub, False, ["volet"], 80.5),
1007
- cl.battle(usdc, rub, True, ["volet"], 79),
1008
- cl.take(usdt, rub, False, ceil=80, volume=360),
1009
- cl.take(usdt, rub, True, ceil=80, volume=360),
1010
- )
979
+ async with FileClient(TOKEN) as b:
980
+ cl: AgentClient = actor.client(b)
981
+ # await cl.ex_client.set_pmcurexs(cookies=actor.agent.auth["cookies"]) # 617 -> 639
982
+ # await cl.set_creds()
983
+ # await cl.ex_client.set_pairs()
984
+ usdt = await models.Coinex.get(coin__ticker="USDT", ex=cl.actor.ex).prefetch_related("coin")
985
+ btc = await models.Coinex.get(coin__ticker="BTC", ex=cl.actor.ex).prefetch_related("coin")
986
+ eth = await models.Coinex.get(coin__ticker="ETH", ex=cl.actor.ex).prefetch_related("coin")
987
+ usdc = await models.Coinex.get(coin__ticker="USDC", ex=cl.actor.ex).prefetch_related("coin")
988
+ rub = await models.Curex.get(cur__ticker="RUB", ex=cl.actor.ex).prefetch_related("cur")
989
+ cl.all_conds = {
990
+ c.id: (c.raw_txt, {a.maker.exid for a in c.ads}) for c in await Cond.all().prefetch_related("ads__maker")
991
+ }
992
+ for curr, old in await CondSim.filter().values_list("cond_id", "cond_rel_id"):
993
+ cl.cond_sims[curr] = old
994
+ cl.rcond_sims[old] |= {curr}
995
+ cl.build_tree()
996
+ a = set()
997
+
998
+ def check_tree(tre):
999
+ for p, c in tre.items():
1000
+ a.add(p)
1001
+ check_tree(c)
1002
+
1003
+ for pr, ch in cl.tree.items():
1004
+ check_tree(ch)
1005
+ # await cl.actual_cond()
1006
+ await gather(
1007
+ cl.get_api_orders(10, 1742504400000), # 10, 1738357200000, 1742504399999
1008
+ cl.battle(usdt, rub, False, ["volet"], 79.8), # гонка в стакане покупки - мы продаем
1009
+ cl.battle(usdt, rub, True, ["volet"], 79.8), # гонка в стакане продажи - мы покупаем
1010
+ cl.battle(eth, rub, False, ["volet"], 206_000),
1011
+ cl.battle(eth, rub, True, ["volet"], 200_000),
1012
+ cl.battle(btc, rub, False, ["volet"], 8_500_000),
1013
+ cl.battle(btc, rub, True, ["volet"], 8_400_000),
1014
+ cl.battle(usdc, rub, False, ["volet"], 80.5),
1015
+ cl.battle(usdc, rub, True, ["volet"], 79),
1016
+ cl.take(usdt, rub, False, ceil=80, volume=360),
1017
+ cl.take(usdt, rub, True, ceil=80, volume=360),
1018
+ )
1011
1019
 
1012
- bor = BaseOrderReq(
1013
- ad_id="1861440060199632896",
1014
- # asset_amount=40,
1015
- fiat_amount=3000,
1016
- amount_is_fiat=True,
1017
- is_sell=False,
1018
- cur_exid=rub.exid,
1019
- coin_exid=usdt.exid,
1020
- coin_scale=usdt.coin.scale,
1021
- )
1022
- res: OrderResp = await cl.order_request(bor)
1023
- await cl.cancel_order(res.orderId)
1024
- await cl.close()
1020
+ bor = BaseOrderReq(
1021
+ ad_id="1861440060199632896",
1022
+ # asset_amount=40,
1023
+ fiat_amount=3000,
1024
+ amount_is_fiat=True,
1025
+ is_sell=False,
1026
+ cur_exid=rub.exid,
1027
+ coin_exid=usdt.exid,
1028
+ coin_scale=usdt.coin.scale,
1029
+ )
1030
+ res: OrderResp = await cl.order_request(bor)
1031
+ await cl.cancel_order(res.orderId)
1032
+ await cl.close()
1025
1033
 
1026
1034
 
1027
1035
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xync-client
3
- Version: 0.0.57.dev24
3
+ Version: 0.0.57.dev26
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