Sumber daya yang dimuat... Pemuatan...

exchange.IO

Peraturanexchange.IO()fungsi digunakan untuk panggilan antarmuka lain yang terkait dengan objek pertukaran.

Peraturanexchange.IO()fungsi memanggil antarmuka lain yang terkait dengan objek pertukaran, mengembalikan data respons yang diminta pada panggilan yang berhasil dan mengembalikan nol pada panggilan yang gagal. string, number, bool, object, array, null, dan jenis lain yang didukung oleh sistem

exchange.IO(k,... args)

PeraturankParameter digunakan untuk mengatur jenis panggilan, dengan nilai opsional"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifieddan sebagainya. k benar string Parameter diperluas, lulus sesuai dengan skenario panggilan tertentu,argKarena mekanisme polimorfik dariexchange.IO()fungsi, pengaturan parameter yang berbeda sesuai dengan fungsi yang berbeda.exchange.IO()Fungsi tidak pasti. arg benar string, number, bool, object, array, null dan jenis lain yang didukung 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)bentuk panggilan dariexchange.IO()fungsi, perlu untuk memahami antarmuka API dari pertukaran dan memeriksa dokumentasi yang relevan terlebih dahulu. ini akan memungkinkan Anda untuk memperluas fungsi yang tidak ditambahkan ke platform FMZ.POSTpermintaan tidak memerlukan Anda untuk khawatir tentang enkripsi, penandatanganan, atau memverifikasi parameter, yang sudah ditangani oleh FMZ di bagian bawah, selama Anda mengisi parameter yang sesuai.OKX Exchangekontrak berjangka, dan menggunakan parameterrawuntuk melewati parameter urutan:

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 (yaitu, parameter permintaan HTTP) adalah string, itu perlu ditulis dalam tanda kutip tunggal (yaitu, 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);
}

Hal ini mendukung melewati di parameter url lengkap yang dapat menghilangkan operasi beralih alamat dasar (menelponexchange.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());
}

Mengubah pasangan perdagangan pertukaran saat ini, sehingga akan mengubah pasangan perdagangan yang dikonfigurasi oleh kodepada 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 dasar yang berbeda untuk antarmuka ticker dan antarmuka perdagangan, misalnya, Bitfinex Futures memiliki dua alamat, satu untuk antarmuka ticker dan yang lainnya untuk antarmuka perdagangan.exchange.SetBase("xxx"). Bitfinex berjangka beralih alamat dasar antarmuka publik menggunakanexchange.IO("mbase", "xxx").

I. Untuk pertukaran yang berpusat pada cryptocurrency panggilan antarmuka API lainnya yang tidak terkapsul secara seragam, dengan parameterkdiatur untuk"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod : Parameter adalah jenis string, isi jenis permintaanPOST, GET, dll.
  • sumber: Parameter ini adalah jenis string dan mengisi jalur permintaan; Ini mendukung penggunaan jalur permintaan lengkap, lihat contoh referensi untuk rincian.
  • Parameter: Parameter adalah jenis string, diisi dengan parameter permintaan, dikodekan denganURL.
  • raw: Parameter adalah parameter string mentah dan dapat dilewatkan.

Peraturanexchange.IO("api", httpMethod, resource, params, raw)panggilan fungsi akan mengakses antarmuka pertukaran dan mengembalikan null jika panggilan gagal dan terjadi kesalahan. Hanya perdagangan nyata mendukung panggilanexchange.IO("api", httpMethod, resource, params, raw) function.

II. Untuk beralih pasangan perdagangan, parameterkdiatur untuk"currency":

exchange.IO("currency", currency)
  • mata uang: Parameter adalah jenis string dengan format huruf besar yang seragam, menggunakan tanda bawah untuk memisahkanbaseCurrencydariquoteCurrency, sepertiBTC_USDT.

    1. Sistem backtesting sekarang mendukung switching trading pairs (hanya untuk mata uang digital spot exchange objects), ketika backtesting, Anda perlu memperhatikan bahwa Anda hanya dapat beralih ke trading pairs dengan mata uang denominasi yang sama, misalnya, pasangan perdagangan saat ini adalahETH_BTChanya bisa beralih keLTC_BTC, tidak untukLTC_USDT.
    2. Untuk kontrak berjangka cryptocurrency, objek pertukaran beralih pasangan perdagangan dan kode kontrak perlu ditetapkan kembali untuk menentukan kontrak mana yang akan diperdagangkan.
    3. Menggunakan fungsi {@fun/Account/exchange.SetCurrency exchange.SetCurrency} untuk beralih pasangan perdagangan adalah persis sama dengan menggunakanexchange.IO("currency", currency)untuk menukar pasangan perdagangan.

III. Digunakan untuk beralih ke mode akun leveraged objek pertukaran cryptocurrency spot:

  • Parameterkdiatur untuk"trade_margin"untuk beralih ke mode akun leverage spot. menempatkan pesanan dan memperoleh aset akun akan mengakses pertukarans spot leveraged interface. Jika bursa membedakan antara margin penuh dan margin terisolasi dalam leverage spot, gunakan:exchange.IO("trade_super_margin")untuk beralih ke margin penuh untuk akun leveraged, danexchange.IO("trade_margin")untuk beralih ke margin terisolasi untuk akun leveraged.
  • Parameterkdiatur untuk"trade_normal"untuk beralih kembali ke mode akun spot normal.

Bursa spot yang mendukung beralih antara model akun leveraged:

Pertukaran Catatan Khusus
OKX Pasangan perdagangan dalam mode akun leveraged berbeda dari yang normal, beberapa pasangan perdagangan mungkin tidak memilikinya.exchange.IO("trade_super_margin")untuk beralih ke posisi penuh untuk akun leveraged dan menggunakanexchange.IO("trade_margin")untuk beralih ke posisi dengan posisi.trade_normaluntuk beralih ke mode spot normal.exchange.IO("tdMode", "cross")untuk secara langsung menentukan mode leverage.
Huobi Pasangan perdagangan mode akun leveraged berbeda dari yang normal, beberapa pasangan perdagangan mungkin tidak memilikinya.trade_marginuntuk beralih ke posisi akun leverage berdasarkan posisi, menggunakantrade_super_marginuntuk beralih ke leverage account posisi penuh.trade_normaluntuk beralih ke mode mata uang-mata uang normal.
Binance Modus akun leveraged dibagi menjadi posisi per posisi dan posisi penuh, penggunaantrade_marginuntuk beralih ke posisi dengan posisi, menggunakantrade_super_marginuntuk beralih ke posisi penuh, gunakantrade_normaluntuk beralih ke mode mata uang-mata uang normal.
Gerbang Modus akun leveraged dibagi menjadi posisi per posisi dan posisi penuh, penggunaantrade_marginuntuk beralih ke posisi dengan posisi, menggunakantrade_super_marginuntuk beralih ke posisi penuh, gunakantrade_normaluntuk beralih ke mode mata uang-mata uang normal.
AscendEx Penggunaanexchange.IO("trade_margin")untuk beralih ke mode akun leverage danexchange.IO("trade_normal")untuk beralih kembali ke mode akun normal.
WOO Penggunaanexchange.IO("trade_margin")untuk beralih ke mode akun leverage danexchange.IO("trade_normal")untuk beralih kembali ke mode akun normal.
CoinEx Penggunaanexchange.IO("trade_margin")untuk beralih ke mode akun leveraged danexchange.IO("trade_normal")untuk beralih kembali ke mode akun normal.

IV. Fungsi switching lainnya:Lihatlahexchange.IO()fungsi untukFungsi switching lainnyadalam Panduan Pengguna.

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

exchange.SetRate exchange.Log