Como faço trading à vista com o Jupyter Notebook?

Publicado a 29/09/2023Atualizado a 18/08/2024Leitura de 9 minutos276

Saiba como pode fazer trading à vista simples com as funções da biblioteca python-okx num Jupyter Notebook.

1. Como posso executar fragmentos de código Python no Jupyter Notebook?

CT-web-spottrading-howtoapi-1

O Jupyter Notebook é uma ferramenta incrivelmente poderosa e fácil de utilizar para a programação e análise de dados em Python. Pode executar um servidor Jupyter Notebook no Windows, MacOS ou Linux. Este tutorial fornece um guia abrangente sobre como colocar o Jupyter Notebook a funcionar.

2. Como posso instalar o pacote python-okx?

Depois de começar a executar o Jupyter Notebook, pode instalar o pacote python-okx ao executar o pip install python-okx no notebook ou num terminal (ou através de linha de comandos no Windows):

CT-web-spottrading-howtoapi-2

3. Como posso criar chaves API?

  1. Após iniciar sessão na OKX, aceda a Trading > Trading de demonstração para criar chaves API para propósitos de teste

    CT-web-trade-demo trading

    Abra a página de trading de demonstração

  2. Aceda a Conta > API para criar chaves API

    CT-web-profile-API

    Abra a API para criar chaves API

  3. Crie chaves API para as diferentes contas principais/subcontas

    CT-web-API-create

    Selecione Criar chave API

  4. Selecione Trading nas Permissões para fazer trading com a chave API

    CT-web-API-trade

    Selecione Trading em Permissões

  5. Agora tem acesso à sua chave API, à sua chave secreta e à sua frase de acesso. Mantenha-as num local seguro!

  6. Represente as variáveis python para guardar as informações da sua API no notebook para uso posterior

    Python
    1 api_key = "xxxxx"
    2 secret_key = "xxxxx"
    3 passphrase = "xxxxxx"

4. Como posso importar os módulos da OKX?

No python-okx, vários módulos são baseados nos nossos módulos do API REST. Leia o nosso guia para saber como importar os módulos da OKX.

  • Fazer trading

  • BlockTrading

  • Funding

  • Conta

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

Para importar o módulo Trading, pode executar:

Python
1 import okx.Trade as Trade

Agora está pronto para utilizar as funcionalidades abrangentes disponíveis no python-okx!

5. Como posso aceder aos nossos dados de mercado?

Saiba mais sobre como aceder aos nossos dados de mercado e consulte o código abaixo.

Python
1  import okx.MarketData as MarketData
2  flag = "1"  # live trading: 0, demo trading: 1
3  marketDataAPI = MarketData.MarketAPI(flag=flag)
4  result = marketDataAPI.get_tickers(instType="SPOT")print(result)

6. Como posso ler os pares de trading disponíveis?

Saiba mais sobre como ler os nossos pares de trading disponíveis e consulte o código abaixo.

Python
1   import okx.PublicData as PublicData
2
3   flag = "1"  # live trading: 0, demo trading: 1
4
5   PublicDataAPI = PublicData.PublicAPI(flag=flag)
6
7    result = PublicDataAPI.get_instruments(
8        instType="SPOT"
9    )
10  print(result)

7. Como posso ler o saldo da minha conta?

Para mais informações sobre como ler o saldo da sua conta, leia o nosso guia dedicado.

Nota: Para trading à vista no tdMode “cash”, deve consultar principalmente os parâmetros cashBal, frozenBal para cada ccy em detalhes e o parâmetro totalEq.

Python
1   import okx.Account as Account
2   flag = "1"  # live trading: 0, demo trading: 1
3
4   accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
5
6   result = accountAPI.get_account_balance()
7   print(result)

8. Como posso aceder aos quatro diferentes modos de conta?

No nosso sistema de conta unificada, há quatro modos de conta:

  • Modo à vista

  • Modo à vista e de futuros

  • Modo de margem multidivisas

  • Modo de margem de portefólio

Para entender a diferenças entre os vários modos de conta e como configurar o modo de conta através da interface de utilizador da web, leia o nosso guia dedicado.

No modo de margem ou no modo de trading, o parâmetro tdMode determina como a sua posição será marginada. Tem de definir isto sempre que colocar uma nova ordem.

Para trading à vista no modo à vista ou no modo à vista e de futuros, defina tdMode='cash'.

Para trading à vista no modo de margem multidivisas ou no modo de margem de portefólio, defina tdMode = 'cross'.

Irá encontrar abaixo uma explicação rápida sobre como descobrir em que modo a sua conta atual está configurada.

9. Como posso descobrir em que modo é que a minha conta atual está configurada?

Para mais informações sobre como descobrir em que modo a sua conta atual está configurada, leia o nosso guia dedicado e insira o parâmetro acctLv.

Python
1 import okx.Account as Account
2
3 flag = "1"  # live trading: 0, demo trading: 1
4 
5 accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
6 result = accountAPI.get_account_config()
7 print(result)
8 
9 if result['code'] == "0":
10     acctLv = result["data"][0]["acctLv"]
11     if acctLv == "1":
12         print("Simple mode")
13     elif acctLv == "2":
14        print("Single-currency margin mode")
15     elif acctLv == "3":
16        print("Multi-currency margin mode")
17     elif acctLv == "4":
18        print("Portfolio margin mode")

10. Como posso efetuar ordens à vista em modo à vista/à vista e de futuros?

10.1 Como é que posso colocar uma ordem com limite?

Para mais informações sobre como colocar uma ordem com limite no modo à vista ou no modo à vista e de futuros, leia o nosso guia dedicado.

Pode comprar 0,01 BTC ao preço de 19.000 USDT.

Python
1 # limit order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="limit",
7     px="19000",
8     sz="0.01"
9 )
10 print(result)
11 
12 if result["code"] == "0":
13     print("Successful order request,order_id = ",result["data"][0]["ordId"])
14 else:
15     print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

10.2 Como é que posso colocar uma ordem de mercado?

Para mais informações sobre como colocar uma ordem de mercado no modo à vista ou no modo à vista e de futuros, leia o nosso guia dedicado.

Eis um exemplo de compra de BTC que vale 100 USD ao preço de mercado atual.

Python
1 #  market order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="market",
7     sz="100",
8 )
9 print(result)

10.3 Como é que posso utilizar o parâmetro da moeda alvo tgtCcy ao fazer trading à vista?

No trading à vista, o parâmetro tgtCcy determina a unidade do parâmetro de tamanho sz, que pode ser a moeda-base ou a moeda de cotação do par de trading. Por exemplo, no par BTC-USDT, a moeda base é BTC e a moeda de cotação é USDT.

Por predefinição, tgtCcy = quote_ccy para ordens de compra, o que significa que o sz especificado é em termos da moeda de cotação. Entretanto, o valor predefinido de tgtCcy para ordens de venda é base_ccy, o que significa que o sz que especificou é em termos da moeda-base.

No exemplo abaixo, está prestes a colocar uma ordem de mercado para comprar BTC que vale 100 USD.

Python
1 #  market order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="market",
7     sz="100",
8     tgtCcy="quote_ccy" # this determines the unit of the sz parameter.
9 )
10 print(result)

10.4 Como é que posso utilizar o parâmetro de ID de ordem de cliente clOrdId?

Ao colocar uma ordem, pode especificar o ID da ordem do cliente ao especificar o parâmetro clOrdId, que pode ser usado posteriormente como um identificador no lugar de ordId em caso de ponto final de cancelamento, alteração ou recuperação de uma ordem.

Python
1 #  market order
2 result = tradeAPI.place_order(
3     instId="BTC-USDT",
4     tdMode="cash",
5     side="buy",
6     ordType="market",
7     sz="100",
8     clOrdId="003" # you can define your own client defined order ID
9 )
10 print(result)

11. Como posso obter detalhes sobre uma determinada ordem?

Para mais informações sobre como obter detalhes sobre uma determinada ordem, leia o nosso guia dedicado.

11.1 Usar o ordId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", ordId="497819823594909696")
2 print(result)

11.2 Usar o clOrdId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
2 print(result)

12. Como posso cancelar uma ordem?

Para mais informações sobre como cancelar uma ordem, leia o nosso guia dedicado.

Também é possível utilizar o clOrdId em vez do ordId.

Python
1 result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
2 print(result)

13. Como posso alterar uma ordem?

Para mais informações sobre como alterar uma ordem, leia o nosso guia dedicado.

Também é possível utilizar o clOrdId em vez do ordId.

Python
1 result = tradeAPI.amend_order(
2     instId="BTC-USDT",
3     ordId="489103565508685824",
4     newSz="0.012"
5 )
6 print(result)

14. Como posso aceder à lista de ordens abertas?

Para mais informações sobre como aceder à lista de ordens abertas, leia o nosso guia específico.

Python
1 result = tradeAPI.get_order_list()
2 print(result)

15. Como posso aceder ao histórico de ordens?

15.1 Nos últimos 7 dias

Para mais informações sobre como aceder ao histórico de ordens nos últimos 7 dias, leia o nosso guia dedicado.

Python
1 result = tradeAPI.get_orders_history(
2     instType="SPOT"
3 )
4 print(result)

15.2 Nos últimos 3 meses

Para mais informações sobre como aceder ao histórico de ordens nos últimos 3 meses, leia o nosso guia dedicado.

Python
1 result = tradeAPI.get_orders_history_archive(
2     instType="SPOT"
3 )
4 print(result)

16. Como posso levar a API da OKX a outro nível com o Jupyter Notebook?

Para mais exemplos, descarregue o Jupyter Notebook completo aqui.

Caso tenho dúvidas sobre as nossas APIs, pode juntar-se à nossa comunidade de API e colocar questões na comunidade.