Skip to main content

A python client for foxbit exchange API

Project description

Foxbit

Status de teste Coverage Status
Versão Version
Compatibilidade Version

Cliente python para API websocket da foxbit.

Instalação

PIP

Para instalar via pip, execute no terminal:

$> pip install foxbit

GIT

Para instalar via git, execute no terminal:

$> git clone https://gitlab.com/qlrddev/foxbit.git

Testar

Para testar o código-fonte, instale o pacote tox e execute:

$> tox

Uso

O exemplo apresentado aqui é feito no console. Mas também funciona em um script ou em um notebook.

Existem exemplos na pasta examples/ que podem auxiliar.

Configuração do ambiente virtual

Para experimentar, sem comprometer o seu sistema, é recomendado usar a abordagem git de instalação e configurar um ambiente virtual.

Para configuração do ambiente virtual, é necessária a instalção do pacote virtualenv. Para isso, execute:

$> pip install virtualenv
$> virtualenv <meu_nome_de_ambiente_virtual>
$> source ./<meu_nome_de_ambiente_virtual>/bin/activate
$> pip install -e .

Adentre no console do python:

$> python
Python 3.10.1 (main, Xxx XXXX, XX:XX:XX) [GCC X.Y.Z] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Importe classes e métodos:

O módulo foxbit é consituído, basicamente, de classes-cliente e de classes-mensagens.

Dentre as classes-cliente, podemos importar a classe base:

>>> from foxbit.client import Client

Ou uma classe-cliente de endpoints públicos (que não requerem autenticação):

>>> from foxbit.client import PublicClient

A classe-mensagem é a classe que cria mensagens na forma definida pela API da foxbit:

>>> from foxbit.frame import MessageFrame

Defina funções de callback:

on_open

Função que é executada assim que a conexão com os servidores da Foxbit são estabelecidos.

Requer 1 argumento, ws, que é o próprio cliente websocket.

>>> def on_open(ws):
...   """Assim que a conexão for aberta, envie uma requisição"""
...   print("Connected")
...   public_client.getInstruments(
...     OMSId=1,
...     InstrumentId=1
...   )
>>>

Note que a instância public_client ainda será definida posteriormente

on_close

Função que é executada assim que a conexão com os servidores da Foxbit são fechados. Requer três argumento:

  • ws, que é o próprio cliente websocket;
  • status que é o estado durante o fechamento;
  • msg que é uma mensagem do servidor;
>>> def on_close(ws, status, msg):
...   """Assim que a conexão for fechada, crie uma mensagem"""
...   print("Disconnected with status {}: {}".format(status, msg))
>>>

on_message

Função que é executada assim que uma mensagem é recebida. Requer dois argumentos, ws, que é o próprio cliente websocket, e msg, que é a mensagem recebida. Note que aqui podemos fechar a conexão através do método close.

>>> def on_message(ws, msg):
...   """"Assim que a mensagem for recebida, 
...   transforme-a em um `dict`, imprima e feche a conexão"""
...   parsed = MessageFrame.fromJSON(msg)
...   print(parsed)
...   public_client.close()
>>>

on_error

função que é executada assim que algum erro é estabelecido. Requer dois argumentos, ws, que é o proóprio cliente websocket, e err, que é o proório erro.

>>> def on_error(ws, err):
...   print(err)
>>>

Defina uma instância de cliente

>>> public_client = PublicClient(
...  on_open=on_open,
...  on_close=on_close,
...  on_message=on_message,
...  on_error=on_error
...)
>>>

Execute a função run_forever

>>> public_client.run_forever()

Classes e métodos

  • Classe foxbit.client.Client: subclasse derivada de websocket.WebsocketApp; não possue métodos próprios.

    • Classe foxbit.client.PublicClient: subclasse derivada de foxbit.client.Client; possue métodos próprios:

      • getInstrument
      • getInstruments
      • getProducts
      • getL2Snapshot
      • getTickerHistory
      • subscribeTicker
      • unsubscribeTicker
      • subscribeLevel1
      • unsubscribeLevel1
      • subscribeLevel2
      • unsubscribeLevel2
      • onSubscription
  • Classe foxbit.frame.MessageFrame: classe de utilidade para criar mensagens em formato definido:

    • toJSON: tranforma as propriedades da classe em uma str JSON;
    • fromJSON tranforma uma str JSON em uma instância de MessageFrame.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

foxbit-0.0.12-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file foxbit-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: foxbit-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for foxbit-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 3a9a84bc57d01c825401ddb51a416945a535200632205bec0f1620a16ce561da
MD5 3d21fa942f04a9c4bb10c48203c67425
BLAKE2b-256 778df4a4764f278d4ecbc47f917401eededa608e10644226e4e46870eb498ad2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page