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)
Ok
Parâ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
, unified
e assim por diante.
k
verdade
cordel
Parâmetros estendidos, transmitidos de acordo com o cenário de chamada específico,arg
O 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.POST
solicitaçã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âmetroraw
Para 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 noparams
parameter (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âmetrok
definido em"api"
:
exchange.IO("api", httpMethod, resource, params, raw)
POST
, GET
, etc.URL
.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âmetrok
está 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 separarbaseCurrency
dequoteCurrency
, tais comoBTC_USDT
.
ETH_BTC
só pode mudar paraLTC_BTC
, não paraLTC_USDT
.exchange.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:
k
está 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.k
está 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_normal para 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_margin para mudar para posição de conta de alavancagem por posição, utilizartrade_super_margin para mudar para a posição total da conta de alavancagem.trade_normal para 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_margin para mudar para posição por posição, usartrade_super_margin para mudar para a posição completa, utilizartrade_normal para 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_margin para mudar para posição por posição, usartrade_super_margin para mudar para a posição completa, utilizartrade_normal para 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