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

Publicado a 29/09/2023Atualizado a 24/04/2024Leitura de 8 minutos133

Saiba como pode fazer trading à vista simples ao chamar 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 em Windows, Mac OS ou Linux. Este tutorial fornece um guia bastante completo sobre como colocar um Jupyter Notebook em funcionamento.

2. Como instalo 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 crio chaves de API?

1. Após entrar na OKX, aceda a Transação > Trading de demonstração para criar chaves de API para fins de teste

CT-web-trade-demo trading

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

2. Aceda a Conta > API para criar chaves de API

CT-web-profile-API

Abra a API para criar chaves de API

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

CT-web-API-create

Selecione “Criar chave API”

4. Selecione Transação em Permissões para negociar com a chave API

CT-web-API-trade

Selecione Transação em Permissões

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

6. Crie instâncias de variáveis python para guardar os detalhes da sua API no bloco de notas para utilização posterior

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

```
api_key = "xxxxx"
secret_key = "xxxxx"
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 o nosso guia para saber como importar os módulos da OKX.

  • Trade

  • BlockTrading

  • Funding

  • Account

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

Para importar o módulo Trade , pode executar:

1 import okx.Trade as Trade

```
import okx.Trade as Trade
```

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

5. Como acedo aos nossos dados de mercado?

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

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)

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

6. Como leio os pares de negociação disponíveis?

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

```
import okx.PublicData as PublicData

flag = "1" # live trading: 0, demo trading: 1

PublicDataAPI = PublicData.PublicAPI(flag=flag)

result = PublicDataAPI.get_instruments(
instType="SPOT"
)
print(result)
```

7. Como leio o saldo da minha conta?

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

Nota: Para a negociação à vista em "cash" tdMode, é necessário verificar principalmente os parâmetros cashBal, frozenBal para cada ccy em details, e o parâmetro totalEq .

```
import okx.Account as Account
flag = "1" # live trading: 0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)

result = accountAPI.get_account_balance()
print(result)
```

8. Como acedo aos quatro diferentes modos de conta?

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

  • Conta simples

  • Conta de margem de uma só divisa

  • Conta de margem multidivisas

  • Conta de margem de portefólio

Para compreender a diferença entre os diferentes modos de conta e como configurar o modo de conta através da interface do utilizador web, leia o nosso guia dedicado. No modo de margem ou no modo de trading, o parâmetro tdMode determina a forma como a sua posição será limitada, que tem de definir sempre que coloca uma nova ordem. Para trading à vista no modo de conta de margem simples ou de uma só divisa, defina tdMode='cash'. Para trading à vista de margem multimoedas ou no modo de conta de margem de carteira, 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 descubro em que modo é que a minha conta atual está configurada?

Para mais informações sobre como descobrir em que modo a sua conta corrente está configurada, leia o nosso guia específico e introduza o parâmetro acctLv .

```
import okx.Account as Account

flag = "1" # live trading: 0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag) result = accountAPI.get_account_config()
print(result)

if result['code'] == "0":
acctLv = result["data"][0]["acctLv"]
if acctLv == "1":
print("Simple mode")
elif acctLv == "2":
print("Single-currency margin mode")
elif acctLv == "3":
print("Multi-currency margin mode")
elif acctLv == "4":
print("Portfolio margin mode")
```

10. Como envio ordens spot no modo de conta simples ou de margem de moeda única?

10.1 Como é que posso colocar uma ordem limite?

Para mais informações sobre como enviar uma ordem limite num modo de conta simples ou de margem de moeda única, leia o nosso guia dedicado.

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

```
# limit order
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="limit",
px="19000",
sz="0.01"
)
print(result)

if result["code"] == "0":
print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
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 num modo de conta de margem simples ou de uma só divisa, leia o nosso guia dedicado.

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

```
# market order
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
)
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 dimensão sz, que pode ser a moeda base ou a moeda cotada do par de negociação. Por exemplo, no par BTC-USDT, a moeda base é BTC e a moeda de cotação é USDT.

Por defeito, tgtCcy = quote_ccy para ordens de compra, o que significa que o sz que especificou é em termos da moeda cotada. 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.

```
# market order
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
tgtCcy="quote_ccy" # this determines the unit of the sz parameter.
)
print(result)
```

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

Quando coloca uma ordem, pode especificar o seu próprio ID de ordem de cliente especificando o parâmetro clOrdId, que pode ser posteriormente utilizado como um identificador em vez de ordId ao chamar um ponto final de cancelamento, alteração ou recuperação de ordens.

```
# market order
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
clOrdId="003" # you can define your own client defined order ID
)
print(result)
```

11. Como obtenho detalhes sobre uma determinada ordem?

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

Utilizando ordId

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

Utilizando clOrdId

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

12. Como cancelo uma ordem?

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

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

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

13. Como altero uma ordem?

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

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

```
result = tradeAPI.amend_order(
instId="BTC-USDT",
ordId="489103565508685824",
newSz="0.012"
)
print(result)
```

14. Como acedo à lista de ordens abertas?

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

```
result = tradeAPI.get_order_list()
print(result)
```

15. Como acedo 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.

```
result = tradeAPI.get_orders_history(
instType="SPOT"
)
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.

```
result = tradeAPI.get_orders_history_archive(
instType="SPOT"
)
print(result)
```

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

Para mais exemplos, descarregue o Jupyter Notebook completo aqui. Se tiver alguma dúvida sobre as APIs da OKX, pode apresentá-la no canal do Telegram para suporte de API da OKX.