A python client for foxbit exchange API
Project description
Foxbit
Status de teste | |
---|---|
Versão | |
Compatibilidade |
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 dewebsocket.WebsocketApp
; não possue métodos próprios.-
Classe
foxbit.client.PublicClient
: subclasse derivada defoxbit.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 umastr
JSON;fromJSON
tranforma umastr
JSON em uma instância deMessageFrame
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.