O recurso está a ser carregado... Carregamento...

exchange.IO

Oexchange.IO()A função é utilizada para outras chamadas de interface relacionadas com o objeto de troca.

Oexchange.IO()função chama outras interfaces relacionadas com o objeto de troca, devolvendo os dados de resposta solicitados em uma chamada bem-sucedida e devolve nulo em uma chamada falhada. string, number, bool, object, array, null e qualquer outro tipo suportado pelo sistema

exchange.IO(k,...args)

OkParâmetro utilizado para definir o tipo de chamada, com valores opcionais"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifiede assim por diante. k verdade cordel Parâmetros estendidos, transmitidos de acordo com o cenário de chamada específico,argO mecanismo polimórfico do sistema permite que os parâmetros possam ser passados para mais de um.exchange.IO()O número e o tipo de parâmetros para oexchange.IO()Funções são indeterminadas. arg verdade string, number, bool, object, array, null e quaisquer outros tipos suportados pelo sistema

function main() {
    var arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    
    // Call exchange.IO to access the exchange's bulk order interface directly
    var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
    Log(ret)
}
import json
def main():
    arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}, 
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
    Log(ret)
void main() {
    json arrOrders = R"([
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ])"_json;
    auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
    Log(ret);
}

Utilizando oexchange.IO("api", httpMethod, resource, params, raw)Convocatóriaexchange.IO()Para que você possa usar a função, é necessário entender a interface API da troca e verificar a documentação relevante primeiro.POSTsolicitação não requer que você se preocupe com a criptografia, assinatura ou verificação dos parâmetros, que já são tratados pela FMZ na parte inferior, desde que você preencha os parâmetros correspondentes.Intercâmbio OKXcontratos futuros, e utilizar o parâmetrorawPara passar os parâmetros de ordem:

var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
    // Note that both amount.toString() and price.toString() have a ' character on the left and right side
    var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
    var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
    message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
    id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
    auto amount = 1.0;
    auto price = 10.0;
    auto basecurrency = "ltc";
    string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
    auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}

Se o valor chave noparamsparameter (ou seja, Http requisit parameter) é uma cadeia, ele precisa ser escrito em aspas simples (ou seja, o símbolo ') em torno do valor do parâmetro para envolver o valor do parâmetro.

function main() {
    var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
    Log(ret);
}

Ele suporta passar em parâmetros de url completos, que podem omitir a operação de alternar o endereço de base (chamando oexchange.SetBase()função).

function main(){
    var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
    Log(ret);
}

Exemplo de chamada sem o parâmetroraw:

function main() {
    // For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
    Log(exchange.GetTicker())
    // Switch the trading pair to LTC_BTC      
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.IO("currency", "LTC_BTC");
    Log(exchange.GetTicker());
}

Mudar o par de negociação da troca atual, de modo que ele irá mudar o par de negociação configurado por códigona criação de negociação ao vivoouem backtest.

function main () {
    // exchanges[0] is the first exchange object added when the live trading is created 
    exchanges[0].IO("base", "https://api.huobi.pro")
}
def main():
    exchanges[0].IO("base", "https://api.huobi.pro")
void main() {
    exchanges[0].IO("base", "https://api.huobi.pro");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
    exchange.SetBase("https://api.bitfinex.com");
    exchange.IO("mbase", "https://api-pub.bitfinex.com");
}

Para exchanges com diferentes endereços de base para a interface do ticker e a interface de negociação, por exemplo, o Bitfinex Futures tem dois endereços, um para a interface do ticker e o outro para a interface de negociação.exchange.SetBase("xxx")Os futuros da Bitfinex mudam de endereço de base de interface pública usandoexchange.IO("mbase", "xxx").

I. Para as trocas centradas em criptomoedas, outras chamadas de interface de API que não sejam uniformemente encapsuladas, com parâmetrokdefinido em"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod : O parâmetro é um tipo de string, preencha o tipo de solicitaçãoPOST, GET, etc.
  • recurso: O parâmetro é de tipo string e preenche o caminho de solicitação; suporta o uso de caminhos de solicitação completos, ver o exemplo de referência para mais detalhes.
  • Parâmetros: O parâmetro é um tipo de cadeia, preenchido com parâmetros de solicitação, codificado comURL.
  • raw: O parâmetro é o parâmetro da string raw e pode ser omitido.

Oexchange.IO("api", httpMethod, resource, params, raw)a chamada de função acessará a interface de troca e retornará null se a chamada falhar e ocorrer um erro. Só o mercado real suporta a chamadaexchange.IO("api", httpMethod, resource, params, raw) function.

II. Para trocas de pares de negociação, o parâmetrokestá definido em"currency":

exchange.IO("currency", currency)
  • moeda: O parâmetro é um tipo de cadeia de caracteres com um formato de maiúscula uniforme, utilizando um sublinhado para separarbaseCurrencydequoteCurrency, tais comoBTC_USDT.

    1. O sistema de backtesting agora suporta trocar pares de negociação (apenas para objetos de câmbio spot de moeda digital), ao backtesting, você precisa prestar atenção que você só pode mudar para pares de negociação com a mesma moeda denominada, por exemplo, o par de negociação atual éETH_BTCsó pode mudar paraLTC_BTC, não paraLTC_USDT.
    2. Para os contratos de futuros de criptomoedas, o objeto da troca muda de pares de negociação e o código do contrato precisa ser redefinido para determinar qual contrato deve ser negociado.
    3. Usando a função {@fun/Account/exchange.SetCurrency exchange.SetCurrency} para trocar pares de negociação é exatamente o mesmo que usarexchange.IO("currency", currency)para trocar pares de negociação.

III. Utilizado para alternar o modo de conta alavancada do objecto de câmbio spot de criptomoedas:

  • O parâmetrokestá definido em"trade_margin"Para colocar ordens e obter ativos da conta, será acessada a interface de alavancagem spot da bolsa. Se a bolsa distinguir entre margem total e margem isolada na alavancagem spot, utilizar:exchange.IO("trade_super_margin")A transição para a margem total para a conta alavancada, eexchange.IO("trade_margin")Para a transferência para a margem isolada para a conta alavancada.
  • Parâmetrokestá definido em"trade_normal"para voltar ao modo normal de conta à vista.

Bolsas à vista que suportam a troca entre modelos de contas alavancadas:

Intercâmbio Observações especiais
OKX Os pares de negociação no modo de conta alavancada são diferentes dos normais, alguns pares de negociação podem não tê-los.exchange.IO("trade_super_margin")para mudar para a posição completa para as contas alavancadas e utilizarexchange.IO("trade_margin")para mudar de posição em posição.trade_normalpara mudar para o modo normal de localização.exchange.IO("tdMode", "cross")Para especificar directamente o modo de alavancagem.
Huobi Os pares de negociação no modo de conta alavancada são diferentes dos normais, alguns pares de negociação podem não tê-los.trade_marginpara mudar para posição de conta de alavancagem por posição, utilizartrade_super_marginpara mudar para a posição total da conta de alavancagem.trade_normalpara mudar para o modo normal moeda-moeda.
Binance O modo de conta alavancada é dividido em posição por posição e posição total, utilizaçãotrade_marginpara mudar para posição por posição, usartrade_super_marginpara mudar para a posição completa, utilizartrade_normalpara mudar para o modo normal moeda-moeda.
Portão O modo de conta alavancada é dividido em posição por posição e posição total, utilizaçãotrade_marginpara mudar para posição por posição, usartrade_super_marginpara mudar para a posição completa, utilizartrade_normalpara mudar para o modo normal moeda-moeda.
AscendEx Utilizaçãoexchange.IO("trade_margin")para mudar para o modo de conta de alavancagem eexchange.IO("trade_normal")para voltar ao modo de conta normal.
O quê? Utilizaçãoexchange.IO("trade_margin")para mudar para o modo de conta de alavancagem eexchange.IO("trade_normal")para voltar ao modo de conta normal.
CoinEx Utilizaçãoexchange.IO("trade_margin")para mudar para o modo de conta alavancada eexchange.IO("trade_normal")para voltar ao modo de conta normal.

Outras funções de comutação:Veja oexchange.IO()função paraOutras funções de comutaçãono Guia do Utilizador.

{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}

exchange.SetRate exchange.Log