Sumber dimuat naik... memuat...

Arahan FMZ API

Penulis:Sifar, Dicipta: 2020-04-20 10:19:00, Dikemas kini: 2023-04-12 14:44:56

pp kosong utama() { pertukaran[0].IO(base, https://api.huobipro.com”); }


The ZB exchange is special. There are two addresses: one is the market data interface address, and the other is the trading interface address. Switch the address:
```js
function main() {
    // The second parameter of exchange.IO is the trading interface address, and the third parameter is the market interface address, which is switched to an address that can be accessed domestically
    exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")    
    // Print the account information
    Log(exchange.GetAccount())                                            
}
def main():
    exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")
    Log(exchange.GetAccount())
void main() {
    exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus");
    Log(exchange.GetAccount());
}
  • Bertukar mod pasaran Pertukaran yang kini disokong:

    Pertukaran Catatan
    Huobi Spot Selepas menyokong protokol WebSocket, kodexchange.IO(mata wang, ETH) tidak boleh digunakan untuk menukar mata wang
    • exchange.IO("websocket")

      Tukar protokol komunikasi pasaran kewebsocket(default is rest), cara untuk mendapatkan sebut harga pasaran akan berubah selepas beralih.exchange.GetTicker()danexchange.GetDepth()akan ditukar kepadawebsocketProtokol untuk mengemas kini, dari pengambilalihan aktif mentah data pasaran untuk pengambilalihan pasif data pasaran, hanya Huobi Exchange yang disokong pada masa ini.

    Apabila mod pasaran adalah mekanisme dorong, anda boleh memanggil fungsi berikut untuk menetapkan:

    • exchange.IO("mode", 0)Mod pulangan segera. Jika data pasaran semasa tidak diterima dari bursa, data pasaran lama akan dikembalikan dengan segera. Jika terdapat data baru, data baru akan dikembalikan.

    • exchange.IO("mode", 1)Mod cache (mod lalai). Jika data pasaran terkini bursa tidak diterima (berbanding dengan data yang diperolehi dari antara muka sebelumnya), tunggu untuk menerima dan kemudian kembali. Jika data pasaran terkini telah diterima sebelum memanggil fungsi ini, data terkini akan dikembalikan dengan segera.

    • exchange.IO("mode", 2)Masukkan dan tunggu sehingga data push terkini pertukaran seterusnya diterima dan kemudian kembali.

    Jika anda ingin mendapatkan maklumat pasaran terkini pada kali pertama, anda boleh beralih kewebsocketDan janganlah kamu menyeruSleepdan menguji data dengan segera.exchange.GetTicker()danexchange.GetDepth()fungsi bekerja dalam mod cache, seperti:

    function main () {
        exchange.IO("websocket")
        while (true) {
            Log(exchange.GetTicker())
        }
    }
    
    def main():
        exchange.IO("websocket")
        while True:
            Log(exchange.GetTicker())
    
    void main() {
        exchange.IO("websocket");
        while(true) {
            Log(exchange.GetTicker());
        }
    }
    
  • Mod akaun leverage pertukaran

    Penggunaanexchange.IO("trade_margin")untuk beralih ke mod akaun leverage, meletakkan pesanan dan mengakses aset akaun akan menggunakan antara muka leverage bursa. Penggunaanexchange.IO("trade_normal")untuk beralih semula ke mod akaun biasa.

    Pertukaran yang disokong:

    Pertukaran Perhatikan Khusus
    OKX Pasangan dagangan mod akaun leverage berbeza dari yang biasa, dan beberapa pasangan dagangan mungkin tidak tersedia.exchange.IO("cross", true)untuk beralih ke kedudukan penuh akaun leveraged danexchange.IO("cross", false)untuk beralih ke kedudukan yang terpencil.
    Huobi Pasangan dagangan mod akaun leverage berbeza dari yang biasa, dan beberapa pasangan dagangan mungkin tidak tersedia. akaun leverage Huobi dibahagikan kepada kedudukan bersilang dan kedudukan terpencil.trade_marginuntuk beralih ke kedudukan terpencil akaun leverage; menggunakantrade_super_marginuntuk beralih ke akaun leverage yang melintasi kedudukan; menggunakantrade_normaluntuk beralih ke mod mata wang biasa
    ZB Dana hanya boleh dipindahkan dalam QC. Dalam sektor dagangan leverage, dana antara pasangan dagangan yang berbeza adalah bebas, iaitu jumlah syiling QC di bawah pasangan dagangan ETH_QC tidak kelihatan dalam BTC_QC
    Binance Akaun leverage dibahagikan kepada kedudukan bersilang dan kedudukan yang terpencil.trade_marginuntuk beralih ke kedudukan yang terpencil; menggunakantrade_super_marginuntuk beralih ke kedudukan bersilang; menggunakantrade_normaluntuk beralih ke mod mata wang biasa
    GateIO Akaun leverage dibahagikan kepada kedudukan bersilang dan kedudukan yang terpencil.trade_marginuntuk beralih ke kedudukan yang terpencil; menggunakantrade_super_marginuntuk beralih ke kedudukan bersilang; menggunakantrade_normaluntuk beralih ke mod mata wang biasa
    AscendEx Penggunaanexchange.IO("trade_margin")untuk beralih ke mod akaun leverage, dan menggunakanexchange.IO("trade_normal")untuk beralih semula ke mod akaun biasa.

pertukaran.Log ((...)

exchange.Log(LogType, Price, Amount)tidak meletakkan pesanan apabila dipanggil, dan ia hanya merakam maklumat perdagangan untuk mengeluarkan maklumat log pertukaran.

Nota:

  • Fungsi ini adalah fungsi anggotaexchangeobjek, yang berbeza dari fungsi globalLog().
  • Nilai parameter:LogTypeboleh mengambilLOG_TYPE_BUY, LOG_TYPE_SELL, LOG_TYPE_CANCELdanPricesebagai harga, danAmountsebagai kuantitiLogTypeadalahLOG_TYPE_CANCEL, PriceParameter adalah ID pesanan.

Penggunaanexchange.Log(LogType, Price, Amount)untuk menjalankan ujian susulan dagangan langsung, penempatan pesanan yang disimulasikan, dan untuk membantu dalam merekodkan pesanan.

Kes penggunaan yang paling biasa ialah: menggunakanexchange.IOfungsi untuk mengakses penciptaan antara muka perintah bersyarat bursa untuk meletakkan perintah bersyarat.exchange.IOfungsi tidak akan output maklumat log pertukaran dalam rakaman log bot.exchange.Log(LogType, Price, Amount)untuk melengkapkan output log untuk merakam maklumat pesanan.

var id = 123
function main() {
    // Order type: buy; price: 999; quantity: 0.1
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)      
    // Cancel the order
    exchange.Log(LOG_TYPE_CANCEL, id)         
}
id = 123
def main():
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)
    exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
    auto id = 123;
    exchange.Log(LOG_TYPE_BUY, 999, 0.1);
    exchange.Log(LOG_TYPE_CANCEL, id);
}

pertukaran.HMAC(...)

exchange.HMAC(Algo, OutputAlgo, Data, Key)menyokongHMACpengiraan penyulitanmd5/sha256/sha512/sha1, dan hanya perdagangan langsung berjalan disokong.

exchange.HMAC("sha256", "hex", "xxxxx", "{{secretkey}}")Untuk mengutipaccessKey, gunakan"{{accesskey}}". Untuk mengutipsecretKey, gunakan"{{secretkey}}"; atau anda boleh menggunakan teks biasa"abc-123-xxxx". "{{accessKey}}","{{secretkey}}"hanya sah apabila fungsi ini digunakan.OutputAlgosokongan: hex, base64.Contoh khusus

Push BitMEX perubahan kedudukan (wss protokol)

function main() {
    var APIKEY = "your Access Key(Bitmex API ID)"
    var expires = parseInt(Date.now() / 1000) + 10
    var signature = exchange.HMAC("sha256", "hex", "GET/realtime" + expires, "{{secretkey}}")
    var client = Dial("wss://www.bitmex.com/realtime", 60)
    var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
    var pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while (true) {
        bitmexData = client.read()
        if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
            Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
            pos = parseInt(bitmexData.data[0].currentQty)
        }
    }
}
import time
def main():
    APIKEY = "your Access Key(Bitmex API ID)"
    expires = int(time.time() + 10)
    signature = exchange.HMAC("sha256", "hex", "GET/realtime" + str(expires), "{{secretkey}}")
    client = Dial("wss://www.bitmex.com/realtime", 60)
    auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
    pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while True:
        bitmexData = json.loads(client.read())
        if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:   
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
            pos = bitmexData["data"][0]["currentQty"]
void main() {
    auto APIKEY = "your Access Key(Bitmex API ID)";
    auto expires = Unix() + 10;
    auto signature = exchange.HMAC("sha256", "hex", format("GET/realtime%d", expires), "{{secretkey}}");
    
    auto client = Dial("wss://www.bitmex.com/realtime", 60);
    json auth = R"({"args": [], "op": "authKeyExpires"})"_json;

    auth["args"].push_back(APIKEY);
    auth["args"].push_back(expires);
    auth["args"].push_back(signature);
    auto pos = 0;
    client.write(auth.dump());
    client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
    while(true) {
        auto bitmexData = json::parse(client.read());
        if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
            Log("Test");
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
            pos = bitmexData["data"][0]["currentQty"];
        }
    }
}

Pertukaran. Pergi.

exchange.Go(Method, Args...)adalah fungsi asynchronous yang disokong berbilang benang, yang boleh mengubah operasi semua fungsi yang disokong menjadi serentak asynchronous (yang hanya menyokong pertukaran cryptocurrency). Nilai parameter:Method, jenis rentetan, iaitu nama fungsi yang dipanggil secara serentak.

Nota:

  • Fungsi ini hanya mencipta tugas pelaksanaan berbilang benang apabila dijalankan dalam perdagangan langsung.Backtest tidak menyokong tugas pelaksanaan serentak berbilang benang (backtest tersedia, tetapi masih dijalankan secara berurutan).
  • Selepasexchange.Gofungsi mengembalikan objek,waitfungsi dipanggil untuk mendapatkan data yang dikembalikan oleh utas melalui objek. utas akan dibebaskan secara automatik selepas pemerolehan data dengan memanggilwaitJika menentukan parameter masa lapangwait, benang tidak akan dibebaskan walaupun masa lapang berlaku; dengan cara ini, benang akan dibebaskan secara automatik hanya dengan mendapatkan hasil benang (tidak kira antara muka yang diakses secara serentak dipanggil dengan berjaya atau tidak berjaya).
  • Dalam istilah yang mudah, tidak kira apakah benang yang digunakan berjaya atau gagal, hasilnya mesti diperoleh oleh benang yang digunakan.waitfungsi, dan sumber benang yang digunakan olehexchange.Gofungsi dibebaskan secara automatik oleh docker.
  • Jika hasil pulanganwaitfungsi tidak dicapai pada akhirnya, sumber benang tidak akan dibebaskan secara automatik, yang akan menyebabkan pengumpulan benang yang digunakan; jika bilangan benang melebihi 2000, satu ralat akan dilaporkan:"too many routine wait, max is 2000".

Fungsi yang disokong:GetTicker, GetDepth, GetTrades, GetRecords, GetAccount, GetOrders, GetOrder, CancelOrder, Buy, Sell, GetPositiondanIO.

function main(){
    // The following four operations are executed concurrently and asynchronously by multiple threads, without time-consuming, but with immediate return.
    var a = exchange.Go("GetTicker")
    var b = exchange.Go("GetDepth") 
    var c = exchange.Go("Buy", 1000, 0.1)
    var d = exchange.Go("GetRecords", PERIOD_H1)
           
    // Call the "wait" method, to wait for the return of the asynchronously obtained "ticker" result 
    var ticker = a.wait()            
    // Return the depth; it is possible to return null, if the acquisition fails 
    var depth = b.wait()             
    // Return the order number; limit the timeout in 1 second; the timeout returns "undefined"; this object can continue to call "wait" to wait if the last "wait" is timeout 
    var orderId = c.wait(1000)
    if(typeof(orderId) == "undefined") {
        // Timeout, reacquire
        orderId = c.wait()
    }
    var records = d.wait()
}
def main():
    a = exchange.Go("GetTicker")
    b = exchange.Go("GetDepth")
    c = exchange.Go("Buy", 1000, 0.1)
    d = exchange.Go("GetRecords", PERIOD_H1)

    ticker, ok = a.wait()
    depth, ok = b.wait()
    orderId, ok = c.wait(1000)
    if ok == False:
        orderId, ok = c.wait()
    records, ok = d.wait()
void main() {
    auto a = exchange.Go("GetTicker");
    auto b = exchange.Go("GetDepth");
    auto c = exchange.Go("Buy", 1000, 0.1);
    auto d = exchange.Go("GetRecords", PERIOD_H1);

    Ticker ticker;
    Depth depth;
    Records records;
    TId orderId;
    a.wait(ticker);
    b.wait(depth);
    if(!c.wait(orderId, 300)) {
        c.wait(orderId);
    }
    d.wait(records);
}

Nota:

  • Untuk menilaiundefined, gunakantypeof(xx)==="undefined", kerananull == undefinedtersedia dalam JavaScript.
function main() {
    var d = exchange.Go("GetRecords", PERIOD_H1)
    // Wait for K-line result
    var records = d.wait()
    // Here we wait for an asynchronous operation that has been waited and ended; it will return null, and record the error
    var ret = d.wait()
}
def main():
    d = exchange.Go("GetRecords", PERIOD_H1)
    records, ok = d.wait()
    ret, ok = d.wait()
void main() {
    auto d = exchange.Go("GetRecords", PERIOD_H1);
    Records records;
    d.wait(records);
    Records ret;
    d.wait(ret);
}

Perbezaan antaraPythondanJavaScriptAdakah ituPython...waitfungsi mengembalikan dua parameter: yang pertama adalah hasil yang dikembalikan oleh API asynchronous; yang kedua menunjukkan sama ada panggilan asynchronous selesai.

Pythoncontoh:

def main():
    d = exchange.Go("GetRecords", PERIOD_D1)
    # "ok" must return "True", unless the strategy is stopped
    ret, ok = d.wait()          
    # If the waiting times out, or "wait" for an ended instance, "ok" returns "False"
    ret, ok = d.wait(100)       
    ret, ok = d.wait(100)       

Mendapatkan beberapa pertukaran sebut harga serentak:

function main() {
    while(true) {
        var beginTS = new Date().getTime()
        var arrRoutine = []
        var arrTicker = []
        var arrName = []
        for(var i = 0; i < exchanges.length; i++) {
            arrRoutine.push(exchanges[i].Go("GetTicker"))
            arrName.push(exchanges[i].GetName())
        }

        for(var i = 0; i < arrRoutine.length; i++) {
            arrTicker.push(arrRoutine[i].wait())
        }
        var endTS = new Date().getTime()

        var tbl = {
            type: "table", 
            title: "Market Quotes", 
            cols: ["Index", "Name", "Latest Executed Price"], 
            rows: []
        }
        
        for(var i = 0; i < arrTicker.length; i++) {
            tbl.rows.push([i, arrName[i], arrTicker[i].Last])
        }

        LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(500)
    }
}
import time 
import json
def main():
    while True:
        beginTS = time.time()
        arrRoutine = []
        arrTicker = []
        arrName = []
        for i in range(len(exchanges)):
            arrRoutine.append(exchanges[i].Go("GetTicker"))
            arrName.append(exchanges[i].GetName())

        for i in range(len(exchanges)):
            ticker, ok = arrRoutine[i].wait()
            arrTicker.append(ticker)

        endTS = time.time()
        tbl = {
            "type": "table", 
            "title": "Market Quote", 
            "cols": ["Index", "Name", "Latest Executed Price"], 
            "rows": [] 
        }

        for i in range(len(arrTicker)):
            tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])

        LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
        Sleep(500)
void main() {
    while(true) {
        int length = exchanges.size();
        auto beginTS = UnixNano() / 1000000;
        Ticker arrTicker[length] = {};
        string arrName[length] = {};
        
        // Note that to add a few exchange objects, here we need to execute the "exchanges[n].Go" function several times. In this example, we need to add four exchange objects, which can be modified in details
        auto r0 = exchanges[0].Go("GetTicker");
        auto r1 = exchanges[1].Go("GetTicker");
        auto r2 = exchanges[2].Go("GetTicker");
        auto r3 = exchanges[3].Go("GetTicker");
        GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
        
        for(int i = 0; i < length; i++) {
            arrName[i] = exchanges[i].GetName();
        }

        for(int i = 0; i < length; i++) {
            Ticker ticker;
            arrRoutine[i]->wait(ticker);
            arrTicker[i] = ticker;
        }        
        auto endTS = UnixNano() / 1000000;

        json tbl = R"({
            "type": "table", 
            "title": "Market Quote", 
            "cols": ["Index", "Name", "Latest Executed Price"], 
            "rows": [] 
        })"_json;

        for(int i = 0; i < length; i++) {
            json arr = R"(["", "", ""])"_json;
            arr[0] = format("%d", i);
            arr[1] = arrName[i];
            arr[2] = format("%f", arrTicker[i].Last);
            tbl["rows"].push_back(arr);
        }

        LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
        Sleep(500);
    }
}

Panggilan serentak kepadaexchange.IO("api", ...)fungsi:

function main() {
    /*  
       Use the OKX placing order interface to test
        POST /api/v5/trade/order        
    */
    
    var beginTS = new Date().getTime()
    var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    
    var id1 = ret1.wait()
    var id2 = ret2.wait()
    var id3 = ret3.wait()
    var endTS = new Date().getTime()    

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
    beginTS = time.time()
    param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))

    id1, ok1 = ret1.wait()
    id2, ok2 = ret2.wait()
    id3, ok3 = ret3.wait()
    endTS = time.time()

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Time for placing orders concurrently:", endTS - beginTS, "second")
void main() {
    auto beginTS = UnixNano() / 1000000;
    json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
    auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());

    json id1 = R"({})"_json;
    json id2 = R"({})"_json;
    json id3 = R"({})"_json;

    ret1.wait(id1);
    ret2.wait(id2);
    ret3.wait(id3);
    auto endTS = UnixNano() / 1000000;

    Log("id1:", id1);
    Log("id2:", id2);
    Log("id3:", id3);
    Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond");
}

Maklumat akaun

pertukaran.GetAccount ((()

exchange.GetAccount()mengembalikan maklumat akaun pertukaran. Nilai pulangan:Account structure.

  • Accountstruktur
function main(){
    var account = exchange.GetAccount()
    Log("Account information, Balance:", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:",
        account.Stocks, "FrozenStocks:", account.FrozenStocks)
}
def main():
    account = exchange.GetAccount()
    Log("Account information, Balance", account["Balance"], "FrozenBalance:", account["FrozenBalance"], "Stocks:", 
        account["Stocks"], "FrozenStocks:", account["FrozenStocks"])
void main() {
    auto account = exchange.GetAccount();
    Log("Account information, Balance", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:", 
        account.Stocks, "FrozenStocks:", account.FrozenStocks);
}

Jika objek pertukaran ditetapkan untuk pertukaran niaga hadapan cryptocurrency dan beralih ke kontrak denganUSDTsebagai margin (lihatexchange.SetContractTypefungsi untuk mengetahui bagaimana untuk beralih), aset mengambilUSDTsebagai margin, yang direkodkan dalam sifatBalancedanFrozenBalance.

function main(){
    // Switch the trading pair
    exchange.IO("currency", "BTC_USDT")     
    // Take OKX futures as an example; set the contract as the contract of the week, and the current trading pair is BTC_USDT, so the current contract is BTC USDT-margined contract of this week
    exchange.SetContractType("this_week")   
    // Acquire the data of the current account assets
    var account = exchange.GetAccount()
    // The available balance of USDT as margin
    Log(account.Balance)
    // The frozen amount of USDT as margin
    Log(account.FrozenBalance)
}
def main():
    exchange.IO("currency", "BTC_USDT")
    exchange.SetContractType("this_week")    
    account = exchange.GetAccount()
    Log(account["Balance"])
    Log(account["FrozenBalance"])
void main() {
    exchange.IO("currency", "BTC_USDT");
    exchange.SetContractType("this_week");    
    auto account = exchange.GetAccount();
    Log(account.Balance);
    Log(account.FrozenBalance);
}

pertukaran.GetName()

exchange.GetName()mengembalikan nama pertukaran. Nilai balik: jenis rentetan.exchangeatauexchanges[n]objek dalam kod strategi.

function main() {
    Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
}
def main():
    Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
void main() {
    Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX");
}

Untuk memerintahkan versi baris docker, anda boleh menggunakan-1perintah untuk mencetak senarai nama pertukaran.

pertukaran.GetLabel()

exchange.GetLabel()Mengembalikan label khusus pertukaran. Nilai balik: jenis rentetan.

img

Peraturanexchangeatauexchanges[n]objek dalam kod strategi biasanya ditentukan oleh label yang ditetapkan semasa mengkonfigurasi objek pertukaran.

pertukaran.GetCurrency()

exchange.GetCurrency()mengembalikan nama pasangan mata wang yang dikendalikan oleh bursa, dan platform cryptocurrency mengembalikan rentetan, sepertiLTC_BTC. Nilai pulangan: jenis rentetan.

pertukaran.SetCurrency(...)

Peraturanexchange.SetCurrency(Symbol)fungsi digunakan untuk menukar pasangan dagangan semasa objek pertukaran.exchange.IO ("currency","BTC_USDT"). Ia menyokong menukar pasangan dagangan dalam sistem backtesting, dan namapricing currencytidak boleh diubah apabila menukar pasangan dagangan dalam sistem backtesting (contohnya,BTC_USDTboleh ditukar kepadaLTC_USDT, tetapi ia tidak boleh ditukar kepadaLTC_BTCSelepas beralih ke pasangan dagangan yang pada mulanya ditetapkan pada halaman bukan backtesting, bilangantrading coinsadalah 0 (contohnya, semasa backtest, nilai awal pasangan dagangan pada halaman backtest adalahBTC_USDT, bilangan BTC adalah 3, dan bilangan USDT adalah 10,000.LTC_USDT, bilangantrading coinsSelepas menukar akan menjadi 0, yang bermaksud jumlah LTC dalam akaun adalah 0, tetapi jumlah USDT bersama pasangan dagangan yang ditukar masih 10000).

function main() {
    var ticker = exchange.GetTicker() 
    Log(ticker)
    Log(exchange.GetAccount())    
    // Switch trading pairs, and pay attention to changes in market quote data and account information after switching
    Log("Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
}
def main():
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
    Log(" Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
void main() {
    auto ticker = exchange.GetTicker();
    Log(ticker);
    Log(exchange.GetAccount());
    exchange.SetCurrency("LTC_USDT");
    Log(" Switch LTC_USDT: ");
    ticker = exchange.GetTicker();
    Log(ticker);
    Log(exchange.GetAccount());
}

Hasil operasi ujian belakang:

img

pertukaran.GetQuoteCurrency()

exchange.GetQuoteCurrency()mengembalikan nama mata wang asas yang dikendalikan oleh pertukaran. Sebagai contoh,BTC_CNYpengembalianCNY, danETH_BTCpengembalianBTC. Nilai pulangan: jenis rentetan.

Perdagangan niaga hadapan

Untuk objek pertukaran niaga hadapan cryptocurrency, kod kontrak mesti ditentukan sebelum memanggilnya.pasaran, Perintahdan antara muka lain, danexchange.SetContractTypeApabila menukar pasangan dagangan semasa objek pertukaran, anda perlu memanggilexchange.SetContractTypeUntuk kod kontrak pertukaran mata wang digital yang disokong oleh platform, sila rujukexchange.SetContractType function.

pertukaran.GetPosition()

exchange.GetPosition()mendapatkan maklumat kedudukan semasa. Nilai pulangan:positionstruktur array. Jika tidak ada kedudukan, ia mengembalikan array kosong, iaitu[].

  • Positionstruktur

Biasanya, kontrak niaga hadapan cryptocurrency dibahagikan kepada dua jenis:

  • Kontrak Penghantaran Apabila kontrak ditetapkan kepada kontrak penghantaran, memanggilexchange.GetPosition()fungsi, dan semua kedudukan dalam kontrak penghantaran di bawah pasangan dagangan semasa akan dikembalikan.

  • Kontrak kekal Apabila kontrak ditetapkan kepada kontrak kekal, memanggilexchange.GetPosition()fungsi, dan semua kedudukan dalam kontrak kekal di bawah pasangan dagangan semasa akan dikembalikan.

/*
    Note: if there is no position, it will returns an empty array, so you should judge whether the data returned by the interface is a null array, before you use the returned data
    For example:
    When the exchange is set to OKX futures, if the contract is set to be a delivery contract, when the position data of the current week, the next week, and the quarter is obtained, the data type will be an array of position structure.
    When the exchange is set to OKX futures, if the contract is set to a perpetual contract, the array of position structure containing the position data of the perpetual contract will be obtained.
*/

function main(){
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(10)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    var position = exchange.GetPosition()
    if(position.length > 0){
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,
            "ContractType:", position[0].ContractType)
    }
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(10)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    position = exchange.GetPosition()
    if len(position) > 0:
        Log("Amount:", position[0]["Amount"], "FrozenAmount:", position[0]["FrozenAmount"], "Price:", 
            position[0]["Price"], "Profit:", position[0]["Profit"], "Type:", position[0]["Type"], 
            "ContractType:", position[0]["ContractType"])
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(10);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    auto position = exchange.GetPosition();
    if(position.size() > 0) {
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:", 
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type, 
            "ContractType:", position[0].ContractType);
    } 
}

pertukaran.SetMarginLevel(...)

exchange.SetMarginLevel(MarginLevel)menetapkan saiz leverage. Nilai parameter: jenis nombor.

Tetapkan saiz leverage untuk meletakkan pesanan niaga hadapan mata wang kripto, contohnya:

function main() {
    exchange.SetMarginLevel(10)
}
def main():
    exchange.SetMarginLevel(10)
void main() {
    exchange.SetMarginLevel(10);
}

Untuk niaga hadapan mata wang kripto, mekanisme leverage bursa niaga hadapan mata wang kripto tidak seragam. Pada beberapa bursa, nilai leverage niaga hadapan adalah parameter dalam antara muka pesanan penempatan.SetMarginLevelfungsi tidak boleh menjana permintaan rangkaian, tetapi hanya menetapkan pembolehubah leverage di lapisan bawah (digunakan untuk lulus parameter dalam antara muka pesanan penempatan). Leverage niaga hadapan beberapa bursa adalah tetapan bursa, yang perlu ditetapkan di halaman laman web bursa atau dengan menggunakan antara muka API.SetMarginLevelfungsi akan menjana permintaan rangkaian, dan ia mungkin gagal untuk menetapkan leverage untuk pelbagai sebab. sebagai contoh: jika terdapat kedudukan semasa dan pesanan yang menunggu, nilai leverage mungkin tidak ditetapkan untuk pasangan dagangan ini dan objek asas.

Nota untuk menetapkan leverage dalam reka bentuk strategi:

  • Hanya niaga hadapan cryptocurrency yang disokong.
  • Ujian belakang menyokong menukar leverage.

pertukaran.SetDirection(...)

exchange.SetDirection(Direction)setexchange.Buyatauexchange.SellUntuk membuat arahan untuk meletakkan pesanan niaga hadapan.

PeraturanSetDirectionFungsi menetapkan persamaan antara arah dagangan niaga hadapan dan fungsi penempatan pesanan:

Fungsi Penempatan Perintah Arahan Tetapan Parameter untuk SetDirection fungsi Catatan
exchange.Buy beli membeli kedudukan panjang terbuka
exchange.Buy jual tutup membeli kedudukan pendek yang ditutup
exchange.Sell menjual menjual kedudukan pendek terbuka
exchange.Sell closebuy menjual kedudukan panjang

ParameterDirectionboleh mengambil empat parameter, termasukbuy, closebuy, selldanclosesell.

function main(){
    // Make an example for setting OKX futures weekly contract
    exchange.SetContractType("this_week")    
    // Set 5 times of leverage
    exchange.SetMarginLevel(5)
    // Set the order placing type into placing long order
    exchange.SetDirection("buy")
    // Place an order with the contract quantity of 2, at the price of 10,000
    exchange.Buy(10000, 2)              
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(5)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(5);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    exchange.SetMarginLevel(5);
    exchange.SetDirection("closebuy");
    exchange.Sell(1000, 2);
}

pertukaran.SetContractType(...)

exchange.SetContractType(ContractType)menetapkan jenis kontrak. Nilai parameter: jenis rentetan. Dalam strategi cryptocurrency, ambil BTC_USDT sebagai contoh. Apabila menukar pasangan dagangan denganexchange.SetCurrency("BTC_USDT")atauexchange.IO("currency", "BTC_USDT"), anda perlu menggunakanexchange.SetContractTypeSistem ini menentukan sama ada ia adalah satu pasangan dagangan baru atau tidak.currency-based contractatau aU-based contractberdasarkanPasangan dagangan. Sebagai contoh, apabila pasangan dagangan ditetapkan untukBTC_ USDT, menggunakan fungsiexchange.SetContractTypeuntuk menetapkan kod kontrakswap, yang ditetapkan sebagai kontrak kekal berasaskan USDT BTC.BTC_ USD, menggunakan fungsiexchange.SetContractTypeuntuk menetapkan kod kontrakswap, yang ditetapkan sebagai kontrak kekal berasaskan mata wang BTC.

Kecuali dinyatakan sebaliknya,kontrak penghantaranKod dalam kontrak niaga hadapan mata wang kripto umumnya merangkumi:

  • this_week: kontrak mingguan
  • next_week: kontrak minggu depan
  • quarter: kontrak suku tahunan
  • next_quarter: kontrak suku berikutnya

Kecuali dinyatakan sebaliknya,kontrak kekalKod dalam kontrak niaga hadapan mata wang kripto umumnya merangkumi:

  • swap: kontrak kekal

Tetapkan kontrak semasa kepada kontrak mingguan:

function main() {
    // Set to weekly contract
    exchange.SetContractType("this_week") 
}
def main():
    exchange.SetContractType("this_week")
void main() {
    exchange.SetContractType("this_week");
}

Penerangan terperinci mengenai penamaan kontrak setiap pertukaran cryptocurrency yang disokong ditunjukkan sebagai berikut:

  • OKX Tetapkan kontrak kekal:exchange.SetContractType("swap")Set untuk minggu ini kontrak:exchange.SetContractType("this_week")Kontrak minggu depan:exchange.SetContractType("next_week")Tetapkan kontrak suku tahunan:exchange.SetContractType("quarter")Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")OKX USDT-margined kontrak boleh ditukar kepada kontrak menggunakan USDT penyelesaian yang sepadan dengan kontrak semasa dengan menukartrading pair(atau tetapkannya secara langsung apabila menambah objek pertukaran).

    function main() {
        // The default trading pair is BTC_USD, the contract is set to the weekly contract, and the contract is the crypto-margined contract
        exchange.SetContractType("this_week")
        Log("ticker:", exchange.GetTicker())
        
        // Switch trading pairs, and then set a contract to a USDT-margined contract, which is different from the crypto-margined contract
        exchange.IO("currency", "BTC_USDT")   
        exchange.SetContractType("swap")
        Log("ticker:", exchange.GetTicker())
    }
    
    def main():
        exchange.SetContractType("this_week")
        Log("ticker:", exchange.GetTicker())
        exchange.IO("currency", "BTC_USDT")
        exchange.SetContractType("swap")
        Log("ticker:", exchange.GetTicker())
    
    void main() {
        exchange.SetContractType("this_week");
        Log("ticker:", exchange.GetTicker());
        exchange.IO("currency", "BTC_USDT");
        exchange.SetContractType("swap");
        Log("ticker:", exchange.GetTicker());
    }
    
  • Futures_HuobiDM Set untuk minggu ini kontrak:exchange.SetContractType("this_week")Kontrak minggu depan:exchange.SetContractType("next_week")Tetapkan kontrak suku tahunan:exchange.SetContractType("quarter")Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")Tetapkan kontrak kekal:exchange.SetContractType("swap")

    Platform ini menyokong kontrak margin USDT. Ambil kontrak BTC sebagai contoh. Anda boleh beralih ke kontrak margin USDT hanya dengan menggunakanexchange.SetCurrency("BTC_USDT"), atau dengan menetapkan pasangan dagangan semasa kepadaBTC_USDTlangsung apabila anda mengkonfigurasi parameter bot dan menambah objek pertukaran.exchange.SetContractTypefungsi lagi untuk menetapkan kontrak.

  • Futures_BitMEX Tetapkan kontrak kekal:exchange.SetContractType("XBTUSD"), exchange.SetContractType("APTUSDT"). Kontrak diselesaikan pada masa tertentu, dan log masuk ke laman web rasmi BitMEX untuk memeriksa setiap kod kontrak untuk maklumat lanjut.exchange.SetContractType("XBTM19").

  • Futures_GateIO Set untuk minggu ini kontrak:exchange.SetContractType("this_week"). Kontrak minggu depan:exchange.SetContractType("next_week"). Tetapkan kontrak suku tahunan:exchange.SetContractType("quarter"). Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter"). Tetapkan kontrak kekal:exchange.SetContractType("swap"). Pertukaran menyokong kontrak margin USDT. Ambil kontrak BTC sebagai contoh. Anda boleh beralih ke kontrak margin USDT hanya dengan menggunakanexchange.SetCurrency("BTC_USDT"), atau dengan menetapkan pasangan dagangan semasa kepadaBTC_USDTlangsung apabila anda mengkonfigurasi parameter perdagangan langsung dan menambah objek pertukaran.exchange.SetContractTypefungsi lagi untuk menetapkan kontrak.

  • Futures_Deribit Tetapkan kontrak kekal:exchange.SetContractType("BTC-PERPETUAL")Menyokong kontrak Deribit USDC; panggilanexchange.SetContractType("ADA_USDC-PERPETUAL")untuk menetapkan kontrak kekal dengan margin ADA USDC. Kontrak diselesaikan pada masa tertentu, dan log masuk ke laman web rasmi Deribit untuk memeriksa setiap kod kontrak untuk maklumat lanjut, seperti:exchange.SetContractType("BTC-27APR18").

  • Futures_KuCoin

    • Kontrak Margin Crypto; Sebagai contoh, tetapkan pasangan dagangan kepadaBTC_USD, dan kemudian menetapkan kod kontrak, yang dipanggil kontrak margin crypto. Tetapkan kontrak kekal:exchange.SetContractType("swap")Tetapkan kontrak suku tahunan:exchange.SetContractType("quarter")Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
    • Kontrak Marginal USDT: Sebagai contoh, tetapkan pasangan dagangan kepadaBTC_USDT, dan kemudian menetapkan kod kontrak, yang merupakan kontrak margin USDT. Tetapkan kontrak kekal:exchange.SetContractType("swap").
  • Futures_Binance Binance Futures lalai untuk tidak menetapkan status kontrak, jadi anda perlu menetapkan kontrak terlebih dahulu. Tetapkan kontrak kekal:exchange.SetContractType("swap")Kontrak kekal Binance Futures boleh menjadi kontrak margin USDT.BTCKontrak dengan margin USDT, pasangan dagangan ditetapkan kepadaBTC_USDT. Kontrak kekal Binance Futures juga termasuk kontrak margin kripto. Sebagai contoh, dalam kontrak margin kripto, tetapkan pasangan dagangan kepadaBTC_USD.

    Tetapkan kontrak suku tahunan:exchange.SetContractType("quarter")Kontrak penghantaran termasuk kontrak crypto-margined (iaitu mengambil mata wang yang digunakan sebagai margin).BTC, pasangan dagangan ditetapkan kepadaBTC_USD, dan kemudian menetapkan kod kontrakexchange.SetContractType("quarter"), yang menetapkan kontrak triwulanan BTC crypto-margined.

    Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")Sebagai contoh, dalam kontrak crypto-margined suku tahunanBTC, pasangan dagangan ditetapkan kepadaBTC_USD, dan kemudian menetapkan kod kontrakexchange.SetContractType("next_quarter). Binance menyokong sebahagian daripada kontrak penghantaran dengan margin USDT, seperti menetapkan pasangan dagangan BTC kepadaBTC_USDT, dan kemudian menetapkan kod kontrak.

  • Futures_Bibox Bibox kod kontrak kekal:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap").

  • Futures_AOFEX Kod kontrak kekal AOFEX:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap").

  • Futures_BFX Kod kontrak kekal BFX:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap").

  • Futures_Bybit Bybit lalai untuk kontrak kekal pasangan dagangan semasa.swap. Kod kontrak suku tahunan:quarter. Kod kontrak suku berikutnya:next_quarter.

  • Masa hadapan_Kraken Kraken lalai untuk tidak menetapkan status kontrak, jadi anda perlu menetapkan kod kontrak.swapKontrak kekal.month: kontrak bulanan.quarter: kontrak suku tahun.next_quarterKontrak suku berikutnya.

  • Futures_Bitfinex Bitfinex lalai untuk kontrak kekal pasangan dagangan semasa.swap.

  • Futures_Bitget Bitget lalai untuk kontrak kekal pasangan dagangan semasa.swap. Pasangan dagangan ditetapkan untukBTC_USD, menunjukkan kontrak margin kripto; pasangan dagangan ditetapkan kepadaBTC_USDT, menunjukkan kontrak dengan margin USDT. Kontrak yang disimulasikan boleh menetapkan pasangan dagangan ke dalam:SBTC_USDdanBTC_SUSDT.

  • Futures_dYdX Kod kontrak kontrak kekal dYdX:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap"). dYdX hanya mempunyai kontrak dengan margin USDT.

  • Futures_MEXC Kod kontrak kontrak kekal MEXC:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap"). Pasangan dagangan ditetapkan untukBTC_USD, menunjukkan kontrak margin kripto; pasangan dagangan ditetapkan kepadaBTC_USDT, menunjukkan kontrak dengan margin USDT.

Apabila menulis strategi cryptocurrency, hubungiexchange.SetContractType(ContractType)fungsi dan maklumat kontrak terperinci yang ditetapkan oleh parameter kontrakContractTypeakan dikembalikan.

Sebagai contoh, menjalankan kod strategi kontrak OKX yang ditetapkan sebagai objek pertukaran:

function main(){
    // Set to weekly contract
    var ret = exchange.SetContractType("this_week")     
    // Return the information of the weekly contract
    Log(ret)
}
def main():
    ret = exchange.SetContractType("this_week")
    Log(ret)
void main() {
    auto ret = exchange.SetContractType("this_week");
    Log(ret);
}

Jalankan strategi dalamJavaScriptbahasa, dan cetakretdata, iaitu maklumat terperinci mengenaithis_weekkontrak:

{
    "instrument":"BTC-USD-191101",
    "InstrumentID":"BTC-USD-191101"
}   

pertukaran.GetContractType()

exchange.GetContractType()mengembalikan kod kontrak yang ditetapkan pada masa ini objek pertukaran (exchange), nilai pulangan: rentetan.

function main () {
    Log(exchange.SetContractType("this_week")) 
    Log(exchange.GetContractType())
}
def main():
    Log(exchange.SetContractType("this_week"))
    Log(exchange.GetContractType())
void main() {
    Log(exchange.SetContractType("this_week"));
    Log(exchange.GetContractType());
}

Kesalahan Futures_OP

Jadual berikut menerangkan maklumat ralat yang berkaitan dengan objek pertukaran kontrak niaga hadapan mata wang kripto:

Nilai Kesalahan paparan fungsi Fungsi pencetus Penerangan
0 Futures_OP 0 exchange.SetMarginLevel Kesilapan memanggil fungsi leverage
1 Futures_OP 1 exchange.SetDirection Kesilapan menetapkan fungsi arah dagangan niaga hadapan
2 Futures_OP 2 exchange.SetContractType Kesilapan menetapkan fungsi kontrak
3 Futures_OP 3 exchange.GetPosition Kesilapan mendapatkan fungsi kedudukan
4 Futures_OP 4 exchange.IO Kesilapan memanggil fungsi IO

Perdagangan opsyen

Pilihan Cryptocurrency

Penggunaanexchange.SetContractTypefungsi untuk menetapkan kontrak; Bursa yang berbeza mempunyai kod kontrak pilihan yang berbeza.

Bursa opsyen cryptocurrency yang disokong oleh platform FMZ Quant Trading

  • Deribit Untuk pertukaran Deribit, ia hanya perlu untuk memanggilexchange.SetContractTypefungsi untuk menetapkan kontrak sebagai kontrak opsyen. selepas menetapkan kontrak opsyen, apabila memanggil antara muka pasaran sepertiGetTicker, semua data pasaran kontrak opsyen diperoleh.exchange.Selldanexchange.Buyfungsi untuk meletakkan pesanan, dan memberi perhatian kepada arah perdagangan apabila meletakkan pesanan, dan menetapkan arah perdagangan denganexchange.SetDirection. Gunakanexchange.Cancelfungsi untuk membatalkan pesanan; gunakanexchange.GetPositionfungsi untuk menyoal kedudukan.

    Kod strategi untuk rujukan:Strategi Ujian Pilihan Deribit

  • OKX Menetapkan kontrak, meletakkan pesanan, membatalkan pesanan, meminta pesanan, dan mendapatkan sebut harga pasaran, dll adalah operasi yang sama denganDeribit, dan format kod kontrak adalahBTC-USD-200626-4500-C. Anda boleh menyoal maklumat yang berkaitan dengan kontrak melalui antara mukahttps://www.okx.com/api/v5/public/instruments.

    Sebagai contoh, untuk menyoal maklumat kontrak opsyen BTC:

    function main() {
        Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"))
    }
    
    import json
    import urllib.request
    def main():
        ret = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD").read().decode('utf-8'))
        Log(ret)
    
    void main() {
        Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"));
    }
    
  • Futures_HuobiDM Sebagai contoh, kod kontrak opsyen Huobi:BTC-USDT-201225-P-13000; kontrak adalahBTCkontrak; tarikh pelaksanaan adalah 25 Disember 2020; pilihan adalah Put Options (PUT); harga mogok adalah $ 13,000. Untuk Pilihan Beli, premium yang dibayar oleh pembeli adalah USDT, menunjukkan USDT dalam aset akaun digunakan; margin penjual adalah mata wang, yang dijamin oleh mata wang dalam aset. Untuk Pilihan Jual, premium yang dibayar oleh pembeli adalah USDT, menunjukkan USDT dalam aset akaun digunakan; margin penjual adalah USDT, yang dijamin oleh USDT dalam aset.

  • Futures_Bybit Ia menyokong pilihan USDC pertukaran Bybit, dan menetapkan pasangan dagangan untukETH_USDC, fungsi panggilanexchange.SetContractTypeuntuk menetapkan kontrak sebagai kontrak pilihan. Contoh kod kontrak pilihan:ETH-25NOV22-1375-P.

Tetapan Rangkaian

pertukaran.SetBase(Base)

Peraturanexchange.SetBase(Base)fungsi digunakan untuk menukar alamat asas API yang direkodkan dalam objek pertukaran; Sebagai contoh, beralih keOKXnama domainhttps://aws.okx.com, serasi denganexchange.IO("base","https://aws.okx.com")sistem backtest tidak menyokong menukar alamat asas API pertukaran (sistem backtest adalah persekitaran sandbox, bukan antara muka sebenar untuk mengakses pertukaran).

function main() {
    // Use the default base address
    Log(exchange.GetTicker())
    // Switch to https://aws.okx.com
    exchange.SetBase("https://aws.okx.com")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.SetBase("https://aws.okx.com")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.SetBase("https://aws.okx.com");
    Log(exchange.GetTicker());
}

pertukaran.SetProxy(...)

exchange.SetProxy(...)Fungsi ini tidak mempunyai nilai pulangan (di perolehi oleh pembolehubah, dan apa yang anda perolehi adalahundefinedJika tetapan proksi gagal, nilai null akan dikembalikan apabila antara muka dipanggil, hanya untukberehatSetiap objek pertukaranexchanges[n]Selepas menyediakan proksi, antara muka pertukaran akan diakses melalui proksi.

Ambil objek pertukaran pertama yang ditambahexchange, iaitu:exchanges[0], sebagai contoh:

  • Tetapkan proksi, tanpa nama pengguna dan kata laluan:exchange.SetProxy("socks5://127.0.0.1:8889")
  • Tetapkan proksi, dan masukkan nama pengguna dan kata laluan:exchange.SetProxy("socks5://username:password@127.0.0.1:8889") (usernameadalah nama pengguna,passwordadalah kata laluan.)
  • Bertukar ke mod biasa, tanpa proksi:exchange.SetProxy("")

Menyokong untuk menetapkan alamat IP yang diminta oleh objek pertukaran.

  • Spesifikasi global Pelabuhan dariwindowsversi antara muka sistem boleh ditetapkan secara langsung, yang ditunjukkan sebagai imej berikut:

img

Pelabuhan lain yang dikendalikan oleh parameter penggunaan perintah segera-Iuntuk menentukan alamat IP:

img

  • Berdasarkan pertukaran untuk menentukan:

    function main(){
        exchange.SetProxy("ip://10.0.3.15")
        exchange.GetTicker()                      // The reque

Lebih lanjut