Como negocio derivados com o Jupyter Notebook?

Publicado em 28 de set. de 2023Atualizado em 23 de dez. de 2025Leitura de 11min178

Descubra como fazer negociações simples de derivativos com as mesmas ferramentas. Vamos usar os recursos completos disponíveis em python-okx em um nível mais alto!

Tipos de Derivativos

Existem três tipos de derivativos disponíveis para trading na OKX:

  • Expiry

  • Perpétuo

  • Opções

Você pode ir até Derivativos de Bitcoin, explicados: Expiry, perpétuo e opções para saber mais sobre as características dos diferentes tipos de derivativos no OKX. Neste tutorial, usaremos Perpétuos como exemplo.

Perguntas frequentes

1. Como posso obter os dados de mercado para trading de derivativos com o Jupyter Notebook usando Obter dados de mercado?

Você também pode substituir o instType por EXPIRY ou OPÇÕES para obter informações.

Python
     import okx.MarketData as MarketData

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

   marketDataAPI = MarketData.MarketAPI(flag = flag)

   result = marketDataAPI.get_tickers(instType = "SWAP")
   print(result)

2. Como posso obter os pares de trading disponíveis para trading de derivativos com o Jupyter Notebook usando Obter instrumentos?

Da mesma forma, escolha o instType para o qual deseja obter informações.

Python
import okx.PublicData as PublicData

if __name__ == '__main__':

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

    publicDataAPI = PublicData.PublicAPI(flag = flag)

    result = publicDataAPI.get_instruments(instType = "SWAP")
    print(result)

2.1 Calcular o valor nocional de um contrato de derivativo com o parâmetro do instrumento ctVal e ctMult

Para calcular o valor nocional de um contrato de derivativos (ou seja, futuros, swaps perpétuos e opções), você precisa de ctVal (valor do contrato) e ctMult (multiplicador do contrato) dos parâmetros do instrumento.

O valor nocional de um contrato de derivativo pode ser calculado como ctVal x ctMult (unidade: ctValCcy);

Por exemplo, a partir dos parâmetros do instrumento mostrados abaixo, podemos calcular o valor nocional de um contrato perpétuo de LTC-USD como: ctVal x ctMult (unidade: ctValccy) = 10 x 1 USD = 10 USD

JSON
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "instFamily":"LTC-USD",
        "uly":"LTC-USD",
        "settleCcy":"LTC",
        "ctVal":"10",
        "ctMult":"1",
        "ctValCcy":"USD"

3. Como posso verificar seu saldo para trading de derivativos com o Jupyter Notebook usando Obter saldo?

Python
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)

4. Quais modos de conta e de margem/modo de trading são elegíveis para trading de derivativos com o Jupyter Notebook?

Como mencionado no último tutorial, na conta de trading unificado, há quatro modos de conta:

  • Modo spot,

  • Modo spot e de futuros,

  • Modo de margem multimoeda,

  • Modo de margem de portfólio.

Observe que apenas os três últimos modos de margem, a saber, spot e futuros, margem multimoeda e margem de portfólio, são elegíveis para trading de derivativos. Acesse como configurar o modo de conta para entender as diferenças entre os quatro modos e como alternar entre eles por meio de nossa interface de usuário da Web.

4.1 Obtenha a configuração atual da conta a partir do parâmetro acctLv em Obter configuração da conta

Verifique se você está no modo de conta correto para negociar derivativos.

Python
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")

5. Como faço para definir a alavancagem para trading de derivativos com o Jupyter Notebook usando Definir alavancagem da conta?

Um parâmetro importante que precisamos definir quando negociamos derivativos é a alavancagem.

A alavancagem permite que os traders insiram uma posição que vale muito mais ao comprometer apenas um pequeno montante de dinheiro. Assim, os ganhos ou perdas são consideravelmente potencializados.

Os traders podem ter uma alavancagem de até 125x ao negociar derivativos na OKX. Leia as referências sobre como definir a alavancagem para diferentes níveis de alavancagem permitidos em diferentes níveis de posições.

Veja o que os glossários mostrados acima significam:

  • Máxima alavancagem: O múltiplo máximo de vezes do capital emprestado para aumentar o retorno potencial de um investimento.

  • Índice de margem inicial (IMR): A margem necessária para manter posições atuais.

  • Índice de margem de manutenção (MMR): A margem mínima necessária para manter as posições atuais. Ocorrerá liquidação se o patrimônio da conta ficar abaixo da margem de manutenção.

Por exemplo, se quiser negociar 3.000 contratos perpétuos de ETHUSDT, você pode alavancar no máximo 75 vezes o capital que possui. IMR = 1 / 75 = 1,3%, e você deve manter 0,8% ou mais de MMR para evitar a liquidação.

Há 9 cenários diferentes para configurações de alavancagem usando as APIs abertas da OKX. Acesse Definir cenários de alavancagem para os diferentes casos.

Para swaps perpétuos, há três cenários diferentes para a configuração de alavancagem:

  • Definir alavancagem para instrumentos SWAP em modo de trading de Margem cruzada no nível do contrato.

  • Definir alavancagem para instrumentos SWAP em modo de trading de Margem isolada e modo de posição Comprar/Vender no nível do contrato.

  • Definir alavancagem para instrumentos SWAP em modo de trading de Margem isolada e modo de posição Long/Short no nível do contrato e do lado da posição.

O exemplo a seguir mostra como definir a alavancagem e o lado da posição de um único contrato de SWAP, em comparação com todos os contratos de SWAP de um determinado subjacente.

Bash
# Set leverage to be 5x for all cross-margin BTC-USDT SWAP positions,
# by providing the SWAP instId
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    mgnMode = "cross"
)
print(result)

# In buy/sell position mode, set leverage to be 5x 
# for all isolated-margin BTC-USDT SWAP positions
# by providing the SWAP instId
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    mgnMode = "isolated"
)
print(result)

# In long/short position mode, set leverage to be 5x
# for an isolated-margin BTC-USDT-SWAP long position;
# This does NOT affect the leverage of the BTC-USDT-SWAP
# short positions
result = accountAPI.set_leverage(
    instId = "BTC-USDT-SWAP",
    lever = "5",
    posSide = "long",
    mgnMode = "isolated"
)
print(result)

Observe que o parâmetro de solicitação posSide só é necessário quando o modo de margem é isolado no modo de posição Long/Short (criação de ordem) para instrumentos expiry/perpétuos (consulte os cenários 6 e 9 em Definir cenários de alavancagem).

6. Como faço para criar ordens para trading de derivativos com o Jupyter Notebook em diferentes modos de posição (criação de ordens): Long/Short e Comprar/Vender?

Existem dois modos de posição (envio de ordens) ao negociar EXPIRY e PERPÉTUOS: Long/Short e Comprar/Vender (líquido).

Você pode alterar o modo de posição (envio de ordens) entre long/short e comprar/vender (líquido) por meio da API Definir modo de posição:

SQL
result = accountAPI.set_position_mode(
    posMode = "long_short_mode"
)
print(result)

Ou, como alternativa, você pode fazer isso em Configurações na web conforme abaixo:

No modo comprar/vender (líquido), a posição de um determinado contrato é a quantidade líquida das suas negociações de compra e venda. Quando você envia ordens em Criar ordem, o parâmetro de solicitação posSide não é obrigatório. Se você passar, o único valor válido será net.

No modo long/short, as posições compradas e vendidas de um determinado contrato serão independentes entre si e precisarão ser fechadas separadamente. Quando você envia ordens em Criar ordem, o parâmetro de solicitação posSide é obrigatório. Os valores válidos são long ou short. Abaixo mostramos como definir os parâmetros side (lado da negociação) e posSide (lado da posição) quando você envia uma ordem em diferentes cenários:

  • - Envie uma ordem de compra e abra/aumente uma posição comprada: side = comprar, PosSide = long

  • - Envie uma ordem de venda e abra/aumente uma posição vendida: side = vender, PosSide = short

  • - Envie uma ordem de venda e feche/reduza uma posição comprada: side = vender, PosSide = long

  • - Envie uma ordem de compra e feche/reduza uma posição vendida: side = comprar, PosSide = short Então você está pronto para criar ordens de derivativos!

6.1 Envie uma ordem limite em Enviar ordem

Comprando 100 contratos de swap de BTC-USDT ao preço de 19.000 USDT.

SQL
# limit order
result = tradeAPI.place_order(
    instId = "BTC-USDT-SWAP",
    tdMode = "isolated",
    side = "buy",
    posSide = "net",
    ordType = "limit",
    px = "19000",
    sz = "100"
)
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"])

6.2 Envie uma ordem a mercado em Enviar ordem

Comprando 100 contratos de swap de BTC-USDT ao preço de mercado.

SQL
# market order
result = tradeAPI.place_order(
    instId = "BTC-USDT-SWAP",
    tdMode = "isolated",
    side = "buy",
    posSide = "net",
    ordType = "market",
    sz = "100"
)
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"])

7. Como posso obter detalhes ou uma ordem para trading de derivativos com o Jupyter Notebook usando Obter detalhes da ordem?

Além de ordId, você também pode especificar o clOrdId para obter detalhes da ordem.

SQL
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

8. Como posso cancelar uma ordem de trading de derivativos no Jupyter Notebook usando Cancelar ordem?

Perl
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)

9. Como posso alterar uma ordem de trading de derivativos no Jupyter Notebook usando Alterar ordem?

Você também usa clOrdId em vez de ordId. Este exemplo mostra a revisão de um novo tamanho.

SQL
result = tradeAPI.amend_order(
    instId = "BTC-USDT-SWAP", 
    ordId = "505073046126960640",
    newSz = "80"
)
print(result)

10. Como posso obter a lista de ordens em aberto para trading de derivativos no Jupyter Notebook usando Obter lista de ordens?

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

11. Como posso obter o histórico de ordens para trading de derivativos com o Jupyter Notebook usando Obter histórico de ordens (últimos 7 dias) e Obter histórico de ordens (últimos 3 meses)?

SQL
# Get order history (last 7 days)
result = tradeAPI.get_orders_history(
    instType = "SWAP"
)
print(result)

# Get order history (last 3 months)
result = tradeAPI.get_orders_history_archive(
    instType = "SWAP"
)
print(result)

12. Como posso obter os detalhes da transação para trading de derivativos com o Jupyter Notebook usando Obter detalhes da transação (últimos 3 dias) e Obter detalhes da transação (últimos 3 meses)?

SQL
# Get transaction details (last 3 days)
result = tradeAPI.get_fills()
print(result)

# Get transaction details (last 3 months)
result = tradeAPI.get_fills_history(
    instType = "SWAP"
)
print(result)

13. Como posso obter posições para trading de derivativos com o Jupyter Notebook usando Obter posições?

Quando sua conta estiver no modo net, será exibida a posição net de cada contrato; quando sua conta estiver no modo long/short, a posição comprada ou vendida de cada contrato será exibida separadamente.

SQL
result = accountAPI.get_positions()
print(result)

Por exemplo, você pode rastrear seus lucros e perdas não realizados por meio do parâmetro de resposta upl.

Mais exemplos

Para obter mais exemplos, baixe o Jupyter Notebook completo aqui.

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