{"id":21602324,"url":"https://github.com/cryptomkt/cryptomkt-python","last_synced_at":"2025-04-11T02:32:52.372Z","repository":{"id":45291603,"uuid":"104257422","full_name":"cryptomkt/cryptomkt-python","owner":"cryptomkt","description":"CryptoMarket Python SDK","archived":false,"fork":false,"pushed_at":"2024-03-13T18:52:45.000Z","size":233,"stargazers_count":20,"open_issues_count":0,"forks_count":6,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-04-14T07:12:10.549Z","etag":null,"topics":["bitcoin","cryptocurrency","cryptomarket","cryptomkt","eos","ether","ethereum","exchange","python","stellar-lumens"],"latest_commit_sha":null,"homepage":"https://developers.cryptomkt.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cryptomkt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-20T19:11:55.000Z","updated_at":"2024-06-13T03:27:43.603Z","dependencies_parsed_at":"2024-02-13T15:17:22.938Z","dependency_job_id":"730ec036-7115-4dd2-af46-47088fbaa193","html_url":"https://github.com/cryptomkt/cryptomkt-python","commit_stats":{"total_commits":66,"total_committers":8,"mean_commits":8.25,"dds":"0.48484848484848486","last_synced_commit":"87e60213eaca33ee0b09ef6714e5a93ba05859a3"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptomkt%2Fcryptomkt-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptomkt%2Fcryptomkt-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptomkt%2Fcryptomkt-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cryptomkt%2Fcryptomkt-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cryptomkt","download_url":"https://codeload.github.com/cryptomkt/cryptomkt-python/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248329742,"owners_count":21085595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","cryptocurrency","cryptomarket","cryptomkt","eos","ether","ethereum","exchange","python","stellar-lumens"],"created_at":"2024-11-24T19:12:50.489Z","updated_at":"2025-04-11T02:32:52.362Z","avatar_url":"https://github.com/cryptomkt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CryptoMarket-Python\n\n[main page](https://www.cryptomkt.com/)\n\n[sign up in CryptoMarket](https://www.cryptomkt.com/account/register).\n\n# Installation\n\nTo install Cryptomarket use pip\n\n```\npip install cryptomarket==3.3.0\n```\n\n# Documentation\n\nThis sdk makes use of the [api version 3](https://api.exchange.cryptomkt.com) of cryptomarket\n\n# Quick Start\n\n## rest client\n\n```python\nfrom cryptomarket.client import Client\nfrom cryptomarket.args import Account, Side, OrderType\nfrom cryptomarket.exceptions import CryptomarketSDKException\n\n# instance a client\napi_key='AB32B3201'\napi_secret='21b12401'\nclient = Client(api_key, api_secret)\n\n# get currencies\ncurrencies = client.get_currencies()\n\n# get order books\norder_book = client.get_order_book_of_symbol('EOSETH')\n\n# get your wallet balances\nwallet_balance = client.get_wallet_balances()\n\n# get your spot trading balances\ntrading_balance = client.get_spot_trading_balances()\n\n# move balance from wallet account to trading account\ntransfer = client.transfer_between_wallet_and_exchange('ETH', '3.2', source=Account.WALLET, destination=Account.SPOT)\n\n# get your active spot orders\norders = client.get_all_active_spot_orders('EOSETH')\n\n# create a new spot order\norder = client.create_spot_order('EOSETH', Side.BUY, '10', type=OrderType.MARKET)\n```\n\n## Websocket Clients\n\nthere are three websocket clients, `MarketDataClient`, the `TradingClient` and the `WalletClient`. The `MarketDataClient` is public, while the others require authentication to be used.\n\nSome subscription callbacks take a second argument, indicating the type of notification, either 'snapshsot' or 'update'.\n\n### MarketDataClient\n\nThere are no unsubscriptions methods for the `MarketDataClient`. To stop recieving messages is recomended to close the `MarketDataClient`.\n\n```python\n# instance a client\nclient = MarketDataClient()\nclient.connect()\n\n# subscribe to public trades\ndef trades_callback(trades_by_symbol: Dict[str, List[WSTrade]], notification_type):\n    for symbol in trades_by_symbol:\n        trade_list = trades_by_symbol[symbol]\n        for trade in trade_list:\n            print(trade)\nclient.subscribe_to_trades(\n  callback=trades_callback,\n  symbols=['ETHBTC'],\n  limit=5,\n)\n\n# subscribe to symbol tickers\ndef ticker_callback(tikers_of_symbol: Dict[str, WSTicker]):\n    for symbol in tikers_of_symbol:\n        ticker = tikers_of_symbol[symbol]\n        print(ticker)\nclient.subscribe_to_ticker(\n    callback=ticker_callback,\n    speed=TickerSpeed._3_SECONDS,\n    result_callback=lambda err, result: print(f'err:{err}, result:{result}')\n)\n\n# run for some time\ntime.sleep(10)\n\n# close the client\nclient.close()\n```\n\n### TradingClient\n\n```python\n# instance a client with a 15 seconds window\nclient = TradingClient(api_key, api_secret, window=15_000)\nclient.connect()\n# close the client\nclient.close()\n\n# subscribe to order reports\ndef print_feed(feed, feed_type):\n    for report in feed:\n        print(report)\nclient.subscribe_to_reports(callback)\n# unsubscribe from order reports\nclient.unsubscribe_to_reports()\n\nclient_order_id = str(int(time.time()*1000))\n\n# create an order\nclient.create_spot_order(\n  client_order_id=client_order_id,\n  symbol='EOSETH',\n  side='sell',\n  quantity='0.01',\n  price='10000',\n)\n\n# candel an order\nclient.cancel_spot_order(client_order_id)\n\n```\n\n### WalletClient\n\n```python\n# instance a client\nclient = WalletClient(api_key, api_secret)\nclient.connect()\n\n# close the client\nclient.close()\n\n# subscribe to wallet transactions\ndef callback(transaction):\n  print(transaction)\nclient.subscribe_to_transactions(callback)\n\n# unsubscribe from wallet transactions\nerr = client.unsubscribe_to_transactions()\n\n# get wallet balances\ndef callback(err, balances):\n  if err:\n      print(err)\n      return\n  print(balances)\nclient.get_wallet_balances(callback)\n```\n\n## exception handling\n\n```python\nfrom cryptomarket.client import Client\nfrom cryptomarket.exceptions import CryptomarketSDKException\n\nclient = Client(api_key, secret_key)\n\n# catch a wrong argument\ntry:\n    order = client.create_order(\n        symbol='EOSETH',\n        side='selllll', # wrong\n        quantity='3'\n    )\nexcept CryptomarketSDKException as e:\n    print(f'exception catched {e}')\n\n# catch a failed transaction\ntry:\n    order = client.create_order(\n        symbol='eosehtt',  # non existant symbol\n        side='sell',\n        quantity='10',\n    )\nexcept CryptomarketSDKException as e:\n    print(f'exception catched {e}')\n\n\nclient = WalletClient(api_key, api_secret)\ntry:\n  client.connect()\nexcept Exception as e:\n  # here we are catching connection and authentication errors\n  print(e)\n```\n\nwebsocket methods take callbacks with two parameters, the first is the possible error, the second is the result of response from the server, for example:\n\n```python\ndef callback(err, balances):\n  if err:\n      print(err)\n      return\n  print(balances)\nclient.get_wallet_balances(callback)\n```\n\nwebsocket subscriptions also have this type of callback, but is called **result_callback** instead\n\n## Constants of interest\n\nAll constants required for calls are in the `cryptomarket.args` module.\n\n## Dataclasses\n\nAll classes returned by the client are in the `cryptomarket.dataclasses` module\n\n# Checkout our other SDKs\n\n[node sdk](https://github.com/cryptomkt/cryptomkt-node)\n\n[java sdk](https://github.com/cryptomkt/cryptomkt-java)\n\n[go sdk](https://github.com/cryptomkt/cryptomkt-go)\n\n[ruby sdk](https://github.com/cryptomkt/cryptomkt-ruby)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptomkt%2Fcryptomkt-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptomkt%2Fcryptomkt-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptomkt%2Fcryptomkt-python/lists"}