Sumber dimuat naik... memuat...

exchange.IO

Peraturanexchange.IO()fungsi digunakan untuk panggilan antara muka lain yang berkaitan dengan objek pertukaran.

Peraturanexchange.IO()fungsi memanggil antara muka lain yang berkaitan dengan objek pertukaran, mengembalikan data tindak balas yang diminta pada panggilan yang berjaya dan ia mengembalikan null pada panggilan yang gagal. string, nombor, bool, objek, array, null, dan mana-mana jenis lain yang disokong oleh sistem

exchange.IO(k,... args)

PeraturankParameter digunakan untuk menetapkan jenis panggilan, dengan nilai pilihan"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifieddan seterusnya. k betul senar Parameter yang diperluaskan, lulus mengikut senario panggilan tertentu,argOleh kerana mekanisme polimorfik dariexchange.IO()fungsi, tetapan parameter yang berbeza sepadan dengan fungsi yang berbeza.exchange.IO()Fungsi tidak pasti. arg betul rentetan, nombor, bool, objek, susunan, sifar dan mana-mana jenis lain yang disokong oleh sistem

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);
}

Menggunakanexchange.IO("api", httpMethod, resource, params, raw)Borang panggilanexchange.IO()fungsi, adalah perlu untuk memahami antara muka API pertukaran dan memeriksa dokumentasi yang berkaitan terlebih dahulu. ini akan membolehkan anda untuk memperluaskan fungsi yang tidak ditambah kepada platform FMZ.POSTpermintaan tidak memerlukan anda untuk bimbang tentang penyulitan, menandatangani, atau mengesahkan parameter, yang sudah dikendalikan oleh FMZ di bahagian bawah, selagi anda mengisi parameter yang sepadan.OKX Exchangekontrak niaga hadapan, dan menggunakan parameterrawuntuk lulus parameter perintah:

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);
}

Jika nilai kunci dalamparamsparameter (iaitu, parameter permintaan HTTP) adalah rentetan, ia perlu ditulis dalam tanda petik tunggal (iaitu, simbol ') di sekitar nilai parameter untuk membungkus nilai parameter.

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);
}

Ia menyokong lulus dalam parameter url lengkap yang boleh mengabaikan operasi menukar alamat pangkalan (menyebutexchange.SetBase()fungsi).

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);
}

Contoh panggilan tanpa parameterraw:

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());
}

Bertukar pasangan dagangan bursa semasa, supaya ia akan menukar pasangan dagangan yang dikonfigurasi oleh kodpada penciptaan perdagangan langsungataupada 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");
}

Untuk pertukaran dengan alamat asas yang berbeza untuk antara muka ticker dan antara muka perdagangan, misalnya, Bitfinex Futures mempunyai dua alamat, satu untuk antara muka ticker dan yang lain untuk antara muka perdagangan.exchange.SetBase("xxx"). Bitfinex niaga hadapan menukar alamat asas antara muka awam menggunakanexchange.IO("mbase", "xxx").

I. Untuk pertukaran berpusat pada mata wang kripto panggilan antara muka API lain yang tidak disatukan secara seragam, dengan parameterkditetapkan kepada"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod : Parameter adalah jenis rentetan, isi jenis permintaanPOST, GET, dan lain-lain
  • sumber: Parameter adalah jenis rentetan dan mengisi laluan permintaan; Ia menyokong penggunaan laluan permintaan lengkap, lihat contoh rujukan untuk butiran.
  • Parameter adalah jenis rentetan, diisi dengan parameter permintaan, dikodkan denganURL.
  • raw: Parameter adalah parameter rentetan mentah dan boleh ditinggalkan.

Peraturanexchange.IO("api", httpMethod, resource, params, raw)panggilan fungsi akan mengakses antara muka pertukaran dan mengembalikan null jika panggilan gagal dan ralat berlaku. Hanya perdagangan sebenar menyokong memanggilexchange.IO("api", httpMethod, resource, params, raw) function.

Untuk menukar pasangan dagangan, parameterkditetapkan kepada"currency":

exchange.IO("currency", currency)
  • mata wang: Parameter adalah jenis rentetan dengan format huruf besar seragam, menggunakan garis bawah untuk memisahkanbaseCurrencydaripadaquoteCurrency, sepertiBTC_USDT.

    1. Backtesting sistem kini menyokong menukar pasangan dagangan (hanya untuk mata wang digital spot pertukaran objek), apabila backtesting, anda perlu memberi perhatian bahawa anda hanya boleh beralih ke pasangan dagangan dengan mata wang yang sama, sebagai contoh, pasangan dagangan semasa adalahETH_BTChanya boleh beralih keLTC_BTC, bukan untukLTC_USDT.
    2. Untuk kontrak niaga hadapan cryptocurrency, objek pertukaran menukar pasangan dagangan dan kod kontrak perlu ditetapkan semula untuk menentukan kontrak mana yang akan didagangkan.
    3. Menggunakan fungsi {@fun/Account/exchange.SetCurrency exchange.SetCurrency} untuk menukar pasangan dagangan adalah sama seperti menggunakanexchange.IO("currency", currency)untuk menukar pasangan dagangan.

III. Digunakan untuk menukar mod akaun leveraged objek pertukaran mata wang kripto spot:

  • Parameterkditetapkan kepada"trade_margin"untuk beralih ke mod akaun leverage spot. meletakkan pesanan dan mendapatkan aset akaun akan mengakses antara muka leveraged spot bursa. Jika bursa membezakan antara margin penuh dan margin terpencil dalam leverage spot, gunakan:exchange.IO("trade_super_margin")untuk beralih kepada margin penuh untuk akaun leveraged, danexchange.IO("trade_margin")untuk beralih kepada margin terpencil untuk akaun leveraged.
  • Parameterkditetapkan kepada"trade_normal"untuk beralih semula ke mod akaun spot biasa.

Bursa spot yang menyokong beralih antara model akaun leveraged:

Pertukaran Nota khas
OKX Pasangan perdagangan dalam mod akaun leveraged berbeza dari yang biasa, beberapa pasangan perdagangan mungkin tidak memilikinya.exchange.IO("trade_super_margin")untuk beralih kepada kedudukan penuh untuk akaun leveraged dan penggunaanexchange.IO("trade_margin")untuk beralih ke kedudukan oleh kedudukan.trade_normaluntuk beralih ke mod spot biasa.exchange.IO("tdMode", "cross")untuk menentukan secara langsung mod leverage.
Huobi Pasangan dagangan mod akaun leveraged berbeza dari yang biasa, beberapa pasangan dagangan mungkin tidak memilikinya.trade_marginuntuk beralih ke kedudukan akaun leverage mengikut kedudukan, menggunakantrade_super_marginuntuk beralih ke kedudukan penuh akaun leverage.trade_normaluntuk beralih ke mod mata wang-mata wang biasa.
Binance Mod akaun leveraged dibahagikan kepada kedudukan mengikut kedudukan dan kedudukan penuh, penggunaantrade_marginuntuk beralih ke kedudukan oleh kedudukan, menggunakantrade_super_marginuntuk beralih ke kedudukan penuh, gunakantrade_normaluntuk beralih ke mod mata wang-mata wang biasa.
GateIO Mod akaun leveraged dibahagikan kepada kedudukan mengikut kedudukan dan kedudukan penuh, penggunaantrade_marginuntuk beralih ke kedudukan oleh kedudukan, menggunakantrade_super_marginuntuk beralih ke kedudukan penuh, gunakantrade_normaluntuk beralih ke mod mata wang-mata wang biasa.
AscendEx Penggunaanexchange.IO("trade_margin")untuk beralih ke mod akaun leverage danexchange.IO("trade_normal")untuk beralih semula ke mod akaun biasa.
WOO Penggunaanexchange.IO("trade_margin")untuk beralih ke mod akaun leverage danexchange.IO("trade_normal")untuk beralih semula ke mod akaun biasa.
CoinEx Penggunaanexchange.IO("trade_margin")untuk beralih ke mod akaun leveraged danexchange.IO("trade_normal")untuk beralih semula ke mod akaun biasa.

IV. Fungsi suis lain:Lihatlahexchange.IO()fungsi untukFungsi suis laindalam Panduan Pengguna.

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

exchange.SetRate exchange.Log