Como faço trading spot com o Jupyter Notebook?

Publicado em 29 de set. de 2023Atualizado em 18 de ago. de 2024Leitura de 9min276

Saiba como fazer o Trading spot chamando as funções na python-okx no Jupyter Notebook.

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

CT-web-spottrading-howtoapi-1

O Jupyter Notebook é uma ferramenta incrivelmente avançada e fácil de usar para desenvolvimento e análise de dados em Python. Você pode executar um servidor Jupyter Notebook no Windows, MacOS ou Linux. Este tutorial fornece um guia abrangente sobre como colocar o Jupyter Notebook para funcionar.

2. Como instalo o pacote python-okx?

Depois de começar a executar o Jupyter Notebook, você pode instalar o pacote python-okx executando o comando pip install python-okx no notebook ou em um terminal (ou via prompt de comando no Windows):

CT-web-spottrading-howtoapi-2

3. Como crio chaves de API?

  1. Após entrar na OKX, acesse Negociar> Demonstração para criar chaves de API para fins de teste

    CT-web-trade-demo trading

    Abra a página de Trading simulado

  2. Acesse Conta > API para criar chaves de API

    CT-web-profile-API

    Acesse API para criar chaves de API

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

    CT-web-API-create

    Selecione Criar chave de API

  4. Selecione Negociar nas Permissões para negociar utilizando a chave de API

    CT-web-API-trade

    Selecione Negociar nas Permissões

  5. Agora você tem acesso à sua chave de API (API key), à sua chave secreta (secret key) e à sua frase secreta (passphrase). Mantenha-as em um local seguro!

  6. Instancie as variáveis python para salvar 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 importo os módulos da OKX?

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

  • Negociar

  • BlockTrading

  • Funding

  • Conta

  • Converter

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

Para importar o módulo Trade execute:

Python
1 import okx.Trade as Trade

Agora você está pronto para usar os inúmeros recursos disponíveis no python-okx!

5. Como acesso nossos dados de mercado?

Saiba mais sobre como acessar 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 leio os pares de trading disponíveis?

Saiba mais sobre como ler 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 leio o saldo da minha conta?

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

Observação: para trading spot no tdMode "cash", você precisa verificar principalmente os parâmetros cashBal, frozenBal para cada ccy em details 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 acesso os quatro diferentes modos de conta?

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

  • Modo spot

  • Modo spot e de futuros

  • Modo de margem multimoeda

  • Modo de margem de portfólio

Para entender a diferença entre os diferentes modos de conta e como configurar o modo de conta através da IU da web, leia nosso guia dedicado.

No modo de margem ou no modo de negociação, o parâmetro tdMode determina como sua posição será marginada, o que você precisa definir sempre que enviar uma nova ordem.

Para trading spot no modo spot ou spot e futuros, defina tdMode='cash'.

Para trading spot no modo de conta de margem multimoedas ou de margem de portfólio, defina o parâmetro tdMode = 'cross'.

Você encontrará abaixo uma explicação rápida de como descobrir em que modo sua conta atual está configurada.

9. Como descubro em que modo minha conta atual está configurada?

Para mais informações sobre como descobrir em que modo sua conta atual está configurada, leia 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 faço para criar ordens spot no modo Spot/Spot e de futuros?

10.1 Como faço para criar uma ordem limitada?

Para mais informações sobre como criar uma ordem limitada em um modo spot ou spot e de futuros, leia nosso guia dedicado.

Comprando 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 faço para criar uma ordem a mercado?

Para mais informações sobre como criar uma ordem a mercado em um modo spot ou spot e de futuros, leia nosso guia dedicado.

Veja um exemplo de compra de BTC no valor de 100 USD ao preço atual de mercado.

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 faço para usar o parâmetro de moeda de destino tgtCcy durante o trading spot?

No trading spot, 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 padrão, tgtCcy = quote_ccy para ordens de compra, o que significa que o sz que você especificou está em termos da moeda de cotação. Por outro lado, o valor padrão de tgtCcy para ordens de venda é base_ccy, o que significa que o sz que você especificou está em termos da moeda-base.

No exemplo abaixo, você está prestes a criar uma ordem a mercado para comprar BTC no valor de 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 faço para usar o parâmetro de ID de ordem de cliente clOrdId?

Ao enviar uma ordem, você pode especificar o documento de identidade da ordem do cliente especificando o parâmetro clOrdId, que pode ser usado posteriormente como um identificador no lugar de ordId ao chamar um endpoint de cancelamento, alteração ou recuperação de 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 obtenho detalhes sobre uma determinada ordem?

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

11.1 Usando ordId

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

11.2 Usando clOrdId

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

12. Como cancelo uma ordem?

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

Você também pode usar clOrdId em vez de ordId.

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

13. Como altero uma ordem?

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

Você também pode usar clOrdId em vez de ordId.

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

14. Como acesso a lista de ordens abertas?

Para mais informações sobre como acessar a lista de ordens em aberto, leia nosso guia dedicado.

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

15. Como acesso o histórico de ordens?

15.1 Para os últimos 7 dias

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

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

15.2 Para os últimos 3 meses

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

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

16. Como vou além com a API da OKX com o Jupyter Notebook?

Para mais exemplos, baixe o Jupyter Notebook completo aqui.

Se você tiver alguma dúvida sobre nossas APIs, você pode participar da nossa comunidade de API e divulgá-las na comunidade.