Sumber daya yang dimuat... Pemuatan...

Instruksi API FMZ

Penulis:Tidak ada, Dibuat: 2020-04-20 10:19:00, Diperbarui: 2023-04-12 14:44:56

xchangeList()

GetExchangeList()mengembalikan daftar pertukaran yang didukung dan informasi konfigurasi yang diperlukan.

  • Parameter Tidak ada

  • Nilai kembali

    {
        "code": 0,
        "data": {
            "result": {
                "exchanges": [{
                    "website": "https://www.huobi.pro/",
                    "name": "Huobi",
                    "priority": 1,
                    "meta": "[{"desc": "Access Key", "required": true, "type": "string", "name": "AccessKey", "label": "Access Key"}, {"encrypt": true, "name": "SecretKey", "required": true, "label": "Secret Key", "type": "password", "desc": "Secret Key"}]",
                    "eid": "Huobi",
                    "logo": "huobi.png",
                    "id": 1
                }, {
                    "website": "https://www.kex.com/",
                    "name": "KEX",
                    "priority": -99,
                    "meta": "[{"desc": "Access Key", "required": true, "type": "string", "name": "AccessKey", "label": "Access Key"}, {"encrypt": true, "name": "SecretKey", "required": true, "label": "Secret Key", "type": "password", "desc": "Secret Key"}, {"encrypt": true, "required": true, "type": "password", "name": "Password", "label": "Trading Password"}]",
                    "eid": "KEX",
                    "logo": "",
                    "id": 43
                }, 
    
                 ...
          
                ]
            },
            "error": null
        }
    }
    

HapusNode (Nid)

DeleteNode(Nid)menghapus node docker (IDadalahNid) yang sesuai denganAPI KEYdalam permintaan akun platform perdagangan FMZ Quant.

  • ParameterNidadalah dari jenis integer, yaitu dockerID.

  • Nilai Pengembalian

    {
        "code":0,
        "data":{
            "result":true,
            "error":null
        }
    }
    

HapusRobot(...)

DeleteRobot(RobotId, DeleteLogs)menghapus robot dengan ID yang ditentukan (robotID: RobotId) yang sesuai denganAPI KEYdalam permintaan di bawah akun FMZ Quant.

  • ParameterRobotIdadalah jenis bilangan bulat, yaitu robotIDakan dihapus.DeleteLogsadalah tipe Boolean; setDeleteLogsuntuk memutuskan apakah untuk menghapus log atau tidak;truemenunjukkan menghapus log.

  • Nilai Pengembalian

    // Return value after successful deletion
    {
        "code": 0,
        "data": {
            "result": 0,
            "error": null
        }
    }
    

GetStrategyList ((()

GetStrategyList()memperoleh informasi strategi yang sesuai denganAPI KEYdalam permintaan akun platform perdagangan FMZ Quant.

  • Parameter Tidak ada

  • Nilai kembali

    {
        "code": 0,
        "data": {
            "result": {
                "strategies": [{
                    "category": 0,
                    "username": "yifidslei",
                    "is_owner": true,
                    "name": "fmz simulation market test strategy",
                    "language": 0,
                    "hasToken": false,
                    "args": "[]",
                    "is_buy": false,
                    "public": 0,
                    "last_modified": "2018-01-18 12:36:03",
                    "date": "2018-01-17 09:19:32",
                    "forked": 0,
                    "id": 63372
                }, {
                    "category": 20,
                    "username": "bifndslez",
                    "is_owner": true,
                    "name": "Line drawing library",
                    "language": 0,
                    "hasToken": false,
                    "args": "[]",
                    "is_buy": false,
                    "public": 0,
                    "last_modified": "2017-05-08 09:44:18",
                    "date": "2017-04-19 10:38:14",
                    "forked": 0,
                    "id": 39677
                },
                
                ...
                ],
                "all": 20
            },
            "error": null
        }
    }
    

NewRobot ((Pengaturan)

NewRobot(Settings)membuat bot baru sesuai dengan pengaturan parameter, sesuai denganAPI KEYdalam permintaan akun FMZ Quant.

  • ParameterSettingsadalah dariJSONtipe objek.SettingsadalahJSONobjek yang dikonfigurasi oleh bot.

    PeraturanSettingsdeskripsi dijelaskan sebagai berikut:

    Settings = {
        "name": "hedge test",
        /*
        Strategy parameters; the order does not have to be in correspondence with the parameter order, but the name must be the same as the parameter name 
        Note: the second element in the parameter array ["MAType", 0, 75882] is an array including three elements, in which the first one "MAType" is the parameter on the pattern referred by the bot-binding strategy, and the second one "0" is the specific value set by the parameter "MAType", and the third one "75882" is the pattern ID containing the parameter "MAType"
        */
        "args": [["Interval", 500], ["MAType", 0, 75882]],
        // Strategy ID, which can be obtained by "GetStrategyList" method
        "strategy": 25189,                      
        // K-line period parameter; "60" indicates 60 seconds
        "period": 60,                           
        // it can be specified to run on which docker; no writing of the attribute will lead to automatic assignment 
        "node" : 52924,                         
        // custom field
        "appid": "member2",
        // Specify a bot group
        "group": 1122,
        "exchanges": [
            // ZB; "pid" can be obtained by "GetPlatformList" method 
            {"pid": 15445, "pair": "ETH_BTC"},     
            // OKEX
            {"pid": 13802, "pair": "BCH_BTC"},     
            // In addition to the exchanges configured by the FMZ dashboard (pid identification), you can also set exchange configuration information that has not been configured to operate the bot 
            {"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}},
            {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}}
        ]
    }
    

    Catatan: Ketika Anda menggunakan informasi sensitif, seperti platformAPI KEY, termasuk"meta":{"AccessKey":"xxx","SecretKey":"yyy"}dalam konfigurasieid, Anda harus tahu FMZ tidak menyimpan data. data akan dikirim langsung ke program docker, sehingga informasi ini harus dikonfigurasi setiap kali bot dibuat atau di-restart.

    Untuk memulai kembali bot yang menggunakan plugin untuk mendukung platform, Saat mengkonfigurasiSettingsparameter, Anda harus membuat pengaturan berikut untukexchangesatribut:

    {"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}
    

    labelAtribut adalah untuk mengatur label untuk objek pertukaran diakses oleh protokol umum saat ini, yang dapat diperoleh olehexchange.GetLabel()fungsi dalam strategi.

  • Strategi pengujian:

    • Parameter strategiInterval

    • JavaScriptkode strategi

      function main(){
          Log(exchange.GetAccount())
          Log(exchange.GetTicker())
          Log(exchange.GetDepth())
          Log("Interval:", Interval)
      }
      
  • Nilai kembali

    // Create the bot successfully 
    {
        "code": 0,
        "data": {
            "result": 74260,
            "error": null
        }
    }
    

PluginRun ((Pengaturan)

PluginRun(Settings)menggunakan API diperpanjang untuk memanggilalat debugging function.

  • ParameterSettingsadalahJSONobjek, yaitu pengaturan dalam alat debugging (Settingsberisi kode tes yang ditulis dalam atributsource).

  • Kode pengujianPythonContoh:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import time
    import md5
    import urllib
    import json
    
    # API KEY has been blurred; you can use your own API KEY to test
    accessKey = 'f77XXXXXXXXXXXXXXX757'              
    # API KEY has been blurred; you can use your own API KEY to test
    secretKey = 'd8XXXXXXXXXXXXXXXX41ca97ea15'       
    
    def api(method, *args):
        d = {
            'version': '1.0',
            'access_key': accessKey,
            'method': method,
            'args': json.dumps(list(args)),
            'nonce': int(time.time() * 1000),
            }
        d['sign'] = md5.md5('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).hexdigest()
        return json.loads(urllib.urlopen('https://www.fmz.com/api/v1', urllib.urlencode(d)).read())
    
    code = '''
    function main() {
        Log(exchange.GetTicker())
        exchange.SetTimeout(2000);
        return exchanges[0].GetTicker()
    }
    '''
    
    settings = { 
        # K-line period parameter "60" indicates 60 seconds
        "period": 60,                                 
        "source": code, 
        # The docker ID can specify which docker to run the bot on; if the value is -1, it means automatic assignment 
        "node" : 54913,                               
        "exchanges": [
            {"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}},
            {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}
        ]
    }
    
    print api("PluginRun", settings)
    

    Catatan:{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}} {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}Untukexchangesatribut dalampengaturan, atribut hanya perlu diatur menjadi 1, ketika memanggilPluginRuninterface (hanya untuk satu objek pertukaran dapat didukung ketika Anda menggunakan halaman Debug Tool). Tidak ada kesalahan yang akan dilaporkan ketika Anda mengatur 2 objek pertukaran dipengaturan, tetapi kesalahan akan dilaporkan ketika objek pertukaran kedua diakses dalam kode.

  • Nilai kembaliapi("PluginRun", settings)Hasil yang dikembalikan:

    {
        u'code': 0, 
        u'data': {
            u'result': u'{"logs":[{"PlatformId":"","OrderId":"0","LogType":5,"Price":0,"Amount":0,"Extra":"{\\"Info\\":{\\"date\\":\\"1523715057\\",\\"ticker\\":{\\"high\\":\\"0.06400845\\",\\"vol\\":\\"117648.31546800\\",\\"last\\":\\"0.06204514\\",\\"low\\":\\"0.06178666\\",\\"buy\\":\\"0.06200001\\",\\"sell\\":\\"0.06208728\\"}},\\"High\\":0.06400845,\\"Low\\":0.06178666,\\"Sell\\":0.06208728,\\"Buy\\":0.06200001,\\"Last\\":0.06204514,\\"Volume\\":117648.315468,\\"OpenInterest\\":0,\\"Time\\":1523715057726}","Instrument":"","Direction":"","Time":1523715057726}],"result":"{\\"Info\\":{\\"date\\":\\"1523715057\\",\\"ticker\\":{\\"vol\\":\\"117648.31546800\\",\\"last\\":\\"0.06204514\\",\\"low\\":\\"0.06178666\\",\\"buy\\":\\"0.06200001\\",\\"sell\\":\\"0.06208728\\",\\"high\\":\\"0.06400845\\"}},\\"High\\":0.06400845,\\"Low\\":0.06178666,\\"Sell\\":0.06208728,\\"Buy\\":0.06200001,\\"Last\\":0.06204514,\\"Volume\\":117648.315468,\\"OpenInterest\\":0,\\"Time\\":1523715057774}"}\n', 
            u'error': None
        }
    }
    

GetRobotLogs(...)

GetRobotLogs(robotId, logMinId, logMaxId, logOffset, logLimit, profitMinId, profitMaxId, profitOffset, profitLimit, chartMinId, chartMaxId, chartOffset, chartLimit, chartUpdateBaseId, chartUpdateDate, summaryLimit)mendapatkan informasi log robot (robotID: robotId), yang sesuai denganAPI KEYdalam permintaan akun FMZ Quant.

  • Parameter

    Nama Parameter Jenis Pengamatan
    robotId bilangan bulat ID bot

    Tabel Logmenanyakan data log dari tabel database:

    Nama Parameter Jenis Pengamatan
    logMinId bilangan bulat ID minimal log
    logMaxId bilangan bulat ID maksimum log
    LogOffset bilangan bulat Setelah kisaran ditentukan oleh logMinId dan logMaxId, offset logOffset (berapa catatan yang dilewatkan) mulai digunakan sebagai posisi awal untuk mendapatkan data
    logLimit bilangan bulat Setelah menentukan posisi awal, jumlah catatan data yang dipilih

    Tabel Keuntunganmenanyakan data Laba dari tabel basis data:

    Nama Parameter Jenis Pengamatan
    laba MinId bilangan bulat ID rekaman minimum
    profitMaxId bilangan bulat ID rekaman maksimum
    profitOffset bilangan bulat Offset (berapa banyak catatan yang dilewatkan) mulai digunakan sebagai posisi awal
    profitLimit bilangan bulat Setelah menentukan posisi awal, jumlah catatan data yang dipilih

    Tabel Baganmenanyakan data Chart dari tabel database:

    Nama Parameter Jenis Pengamatan
    grafik MinId bilangan bulat ID rekaman minimum
    grafikMaxId bilangan bulat ID rekaman maksimum
    chartOffset bilangan bulat Kompensasi
    chartLimit bilangan bulat jumlah catatan yang akan diperoleh
    chartUpdateBaseId bilangan bulat Menanyakan ID basis yang diperbarui
    chartUpdate Tanggal bilangan bulat Catatan data memperbarui timestamp yang akan menyaring catatan yang lebih besar dari timestamp ini

    Ringkasanmenanyakan data dari bilah status:

    Ini menanyakan data bilah status bot. Jenis parameter adalah bilangan bulat. Mengatur ke 0 berarti tidak perlu menanyakan informasi bilah status, dan pengaturan ke angka non-nol menunjukkan jumlah byte informasi bilah status yang akan ditanyakan (interface tidak membatasi jumlah data, sehingga Anda dapat menentukan jumlah yang lebih besarsummaryLimitparameter untuk mendapatkan semua informasi bar status). Data bar status disimpan dalam data yang dikembalikansummary.

    PythonContoh:

    api('GetRobotLogs', 63024, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)    # For the specific code, please refer to the above content: 4. Simple examples, which will not be repeated here; here only write the call and pass of "GetRobotLogs"
    
  • Nilai kembali data yang dikembalikan:

    {
        "code": 0,
        "data": {
            "result": {
                "status": 1,
                "updateTime": 1527049990197,
                "wd": 0,
                // The first data structure in logs is the log records in the strategy log table in the bot database
                "logs": [{            
                    "Max": 3984,
                    "Arr": [
                        [3977, 3, "Futures_OKCoin", "", 0, 0, "Sell(688.9, 2): 20016", 1526954372591, "", ""],
                        [3976, 5, "", "", 0, 0, "OKCoin:this_week too many positions, long: 2", 1526954372410, "", ""]
                    ],
                    "Total": 1503,
                    "Min": 2482
                }, {                  
                    // The second data structure in logs is the log records in the strategy log table in the bot database
                    "Max": 0,
                    "Arr": [],
                    "Total": 0,
                    "Min": 0
                }, {                  
                    // The third data structure in logs is the log records in the strategy log table in the bot database
                    "Max": 0,
                    "Arr": [],
                    "Total": 0,
                    "Min": 0
                }],
                "chart": "",
                "refresh": 1527049988000,
                "summary": "...", 
                "chartTime ": 0, 
                "node_id ": 50755, 
                "online ": true
            }, 
            "error ": null
        }
    }
    
  • Tabel log strategi dalam database

    PeraturanArrdeskripsi nilai atribut dalam data hasil yang dikembalikan di atas:

    "Arr": [
        [3977, 3, "Futures_OKCoin", "", 0, 0, "Sell(688.9, 2): 20016", 1526954372591, "", ""],
        [3976, 5, "", "", 0, 0, "OKCoin:this_week too many positions, long: 2", 1526954372410, "", ""]
    ],
    
    id logType eid Perintah harga jumlah tambahan tanggal kontrakJenis arah
    3977 3 Futures_OKCoin "" 0 0 Menjual ((688.9, 2): 20016 1526954372591 "" ""
    3976 5 "" "" 0 0 OKCoin:minggu ini_terlalu banyak posisi, panjang: 2 1526954372410 "" ""

    extraadalah pesan yang terlampir dari log yang dicetak.

    Jenis log khusus yang diwakili olehlogTypenilai:

    logType: 0 1 2 3 4 5 6
    Arti logType: Membeli Penjualan Keluar Kesalahan Keuntungan Pesan Memulai kembali
    Arti Cina Log jenis order beli Jurnal jenis pesanan jual Menarik Kesalahan Pendapatan Log Mulai kembali
  • Tabel log grafik pendapatan dalam database Data dalam tabel log grafik konsisten dengan log pendapatan dalam tabel log strategi.

    "Arr": [
        [202, 2515.44, 1575896700315],
        [201, 1415.44, 1575896341568]
    ]
    

    Ambil salah satu data log sebagai contoh:

    [202, 2515.44, 1575896700315]
    

    202sebagai logID; 2515.44sebagai nilai pendapatan;1575896700315sebagai timestamp.

  • Tabel log grafik di database

    "Arr": [
        [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
        [23636, 5, "{\"x\":1575960300000,\"y\":3.0735}"]
    ]
    

    Ambil salah satu data log sebagai contoh:

    [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
    

    23637adalah logID, 0adalah indeks dari seri data grafik, dan data terakhir"{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"adalah data log; data ini adalah data K-line pada grafik.

Plugin Perdagangan

Pengantar

Untuk meningkatkan fungsi terminal perdagangan dan memudahkan perdagangan manual, fungsi plug-in sekarang tersedia.

img

Prinsip Plugin

Prinsipnya sama dengan alat debugging: mengirim sepotong kode ke docker halaman terminal Trade untuk dieksekusi, dan mendukung kembalinya grafik dan tabel (alat debugging juga dapat mendukung setelah upgrade). Fungsi yang sama denganalat debugging, itu hanya dapat dijalankan selama 3 menit, tanpa biaya. itu dapat mewujudkan beberapa fungsi kecil sederhana, strategi yang kompleks masih perlu berjalan dalam perdagangan nyata.

Penulisan Plugin

Pada halaman New Strategy, atur jenis strategi menjadi:Trading Plugin, yang mendukungJavaScript, Python, cppdanMyLanguage.

img

Penggunaan Plugin

Plugin dapat menjalankan kode untuk jangka waktu tertentu, dan dapat melakukan beberapa operasi sederhana, sepertipesanan gunung es, Perintah yang menunggu, pembatalan pesanandanPerhitungan pesananSama sepertialat debugging, itu menggunakanreturnIni adalah beberapa contoh, dan fungsi lain dapat dijelajahi sendiri.

  • Kembali ke gambar dalam

    // Return to the depth snapshot
    function main() {
        var tbl = { 
            type: 'table', 
            title: 'snapshot of the order depth @ ' + _D(), 
            cols: ['#', 'Amount', 'Ask', 'Bid', 'Amount'], 
            rows: []
        }
        var d = exchange.GetDepth()
        for (var i = 0; i < Math.min(Math.min(d.Asks.length, d.Bids.length), 15); i++) {
            tbl.rows.push([i, d.Asks[i].Amount, d.Asks[i].Price+'#ff0000', d.Bids[i].Price+'#0000ff', d.Bids[i].Amount])
        }
        return tbl
    }
    
    def main():
        tbl = {
            "type": "table",
            "title": "snapshot of the order depth @ " + _D(),
            "cols": ["#", "Amount", "Ask", "Bid", "Amount"],
            "rows": []
        }
        d = exchange.GetDepth()
        for i in range(min(min(len(d["Asks"]), len(d["Bids"])), 15)):
            tbl["rows"].append([i, d["Asks"][i]["Amount"], str(d["Asks"][i]["Price"]) + "#FF0000", str(d["Bids"][i]["Price"]) + "#0000FF", d["Bids"][i]["Amount"]])
        return tbl
    
    void main() {
        json tbl = R"({
            "type": "table",
            "title": "abc",
            "cols": ["#", "Amount", "Ask", "Bid", "Amount"],
            "rows": []   
        })"_json;
        
        tbl["title"] = "snapshot of the order depth @" + _D(); 
        auto d = exchange.GetDepth();
        for(int i = 0; i < 5; i++) {
            tbl["rows"].push_back({format("%d", i), format("%f", d.Asks[i].Amount), format("%f #FF0000", d.Asks[i].Price), format("%f #0000FF", d.Bids[i].Price), format("%f", d.Bids[i].Amount)});
        }
        
        LogStatus("`" + tbl.dump() + "`");
        // C++ does not support "return json" to display the table, and you can create a bot to display the table of the status bar 
    }
    

    img

  • Menggambar spread lintas periode

    // Draw cross-period spreads
    var chart = { 
        __isStock: true,    
        title : { text : 'spread analysis chart'},                     
        xAxis: { type: 'datetime'},                 
        yAxis : {                                        
            title: {text: 'spread'},                   
            opposite: false                   
        },
        series : [                    
            {name : "diff", data : []}
        ]
    }  
    
    function main() {
        exchange.SetContractType('quarter')
        var recordsA = exchange.GetRecords(PERIOD_M5)
        exchange.SetContractType('this_week')
        var recordsB = exchange.GetRecords(PERIOD_M5)
        
        for(var i = 0; i < Math.min(recordsA.length, recordsB.length); i++){
            var diff = recordsA[recordsA.length - Math.min(recordsA.length, recordsB.length) + i].Close - recordsB[recordsB.length - Math.min(recordsA.length, recordsB.length) + i].Close
            chart.series[0].data.push([recordsA[recordsA.length - Math.min(recordsA.length, recordsB.length) + i].Time, diff])
        }
        return chart
    }
    
    chart = {
        "__isStock": True,
        "title": {"text": "spread analysis chart"},
        "xAxis": {"type": "datetime"},
        "yAxis": {
            "title": {"text": "spread"}, 
            "opposite": False
        }, 
        "series": [
            {"name": "diff", "data": []}
        ]
    }  
    
    def main():
        exchange.SetContractType("quarter")
        recordsA = exchange.GetRecords(PERIOD_M5)
        exchange.SetContractType("this_week")
        recordsB = exchange.GetRecords(PERIOD_M5)  
    
        for i in range(min(len(recordsA), len(recordsB))):
            diff = recordsA[len(recordsA) - min(len(recordsA), len(recordsB)) + i].Close - recordsB[len(recordsB) - min(len(recordsA), len(recordsB)) + i].Close
            chart["series"][0]["data"].append([recordsA[len(recordsA) - min(len(recordsA), len(recordsB)) + i]["Time"], diff])
        return chart
    
    // C++ does not support "return json" structure drawing
    

    img

    Ada contoh lain dalam More Strategies, seperti:membeli / menjual dalam jumlah kecil, Alamat Strategi.

Cara Menggunakannya

  • Tambahkan modul plugin dari terminal perdagangan Seperti yang ditunjukkan pada gambar, buka menu menambahkan modul pada halaman terminal Trade, plugin terminal perdagangan diperpustakaan strategidari akun FMZ saat ini akan ditampilkan dalam daftar secara otomatis, cari plugin yang akan ditambahkan dan klik Tambahkan.

    img

  • Jalankan plugin Klik Execute, dan plugin terminal trading akan mulai berjalan. Plugin tidak akan menampilkan log, tetapi dapat mengembalikan tabel tampilan.

  • Waktu menjalankan plugin Waktu maksimum plugin berjalan adalah 3 menit; dan itu akan berhenti berjalan secara otomatis setelah melebihi 3 menit.

Alat Analisis Faktor Alfa

Pengantar

Rumus analisis mengacu pada metode perhitungan penawaran pasar di publik.alpha101dariworldquant: http://q.fmz.com/chart/doc/101_Formulaic_Alphas.pdf, yang pada dasarnya kompatibel dengan tata bahasanya (dengan penjelasan untuk fitur yang belum diimplementasikan), dan telah ditingkatkan. Hal ini digunakan untuk cepat melakukan perhitungan pada seri waktu dan memvalidasi ide,Gunakan Alamat.

Pambuka halaman:

img

Fungsi & Operator

"{}" di bawah ini mewakili placeholder, semua ekspresi tidak sensitif huruf besar, dan x mewakili seri waktu data

  • abs(x), log(x), sign(x)secara harfiah berarti nilai absolut, logaritma dan tanda fungsi, masing-masing.

Operator berikut, termasuk+, -, *, /, >, <, juga memenuhi arti standar mereka;==mewakili sama atau tidak;||berarti or;x? y: zmenunjukkan operator ternary.

  • rank(x): peringkat bagian-bagian yang berlawanan, mengembalikan persentase lokasi; perlu untuk menentukan beberapa calon target, yang tidak dapat dihitung untuk satu pasar tunggal dan akan langsung mengembalikan hasil asli.
  • delay(x, d): nilai sebelum periode d dari urutan.
  • sma(x, d): rata-rata bergerak sederhana dari periode d dari urutan.
  • correlation(x, y, d): koefisien korelasi dari deret waktu x dan y selama periode d terakhir.
  • covariance(x, y, d): kovariansi deret waktu x dan y pada periode d yang lalu.
  • scale(x, a): ini menormalkan data, sehinggasum(abs(x)) = a(a default ke 1).
  • delta(x, d): nilai saat ini dari deret waktu x dikurangi nilai sebelum periode d.
  • signedpower(x, a): x^a.
  • decay_linear(x, d): rata-rata bergerak periode d tertimbang dari deret waktu x, dengan bobot d, d-1, d-2... 1 (normal).
  • indneutralize(x, g): pemrosesan netral untuk klasifikasi industri g, saat ini tidak didukung.
  • ts_{O}(x, d): melakukan operasi O pada deret waktu x pada periode d yang lalu (O secara khusus dapat mewakili min dan max, dll, diperkenalkan nanti), d akan dikonversi menjadi bilangan bulat.
  • ts_min(x, d): nilai minimum dari periode d terakhir.
  • ts_max(x, d): nilai maksimum dari periode d terakhir.
  • ts_argmax(x, d): ts_max(x, d) position.
  • ts_argmin(x, d): ts_min(x, d) position.
  • ts_rank(x, d): penyaringan nilai seri waktu d periode yang lalu x (penyaringan persentase).
  • min(x, d): ts_min(x, d).
  • max(x, d): ts_max(x, d).
  • sum(x, d): jumlah periode d yang lalu.
  • product(x, d): hasil dari periode d yang lalu.
  • stddev(x, d): penyimpangan standar dari periode d yang lalu.

Data Masuk

Data input tidak sensitif huruf besar; data default adalah simbol yang dipilih di halaman web, atau dapat ditentukan secara langsung, sepertibinance.ada_bnb

  • returns: pengembalian harga penutupan.
  • open, close, high, low, volume: yaitu harga buka, harga tutup, harga tertinggi, harga terendah dan volume perdagangan selama periode.
  • vwap: harga eksekusi tertimbang volume, belum dilaksanakan, yang saat ini merupakan harga penutupan.
  • cap: total nilai pasar, belum dilaksanakan.
  • IndClass: klasifikasi industri, belum diterapkan.

lainnya

Output beberapa hasil (diekspresikan oleh daftar) sekaligus didukung; misalnya,[sma(close, 10), sma(high, 30)]Selain memasukkan data deret waktu, ini juga dapat digunakan sebagai kalkulator sederhana.

Perbandingan

Protokol Umum

Untuk platform FMZ Quant Trading yang belum mengkapsulkan antarmuka API pertukaran, dapat diakses dengan menulis program plug-in protokol umum.

Perbedaan antaraFIXprotokol plug-in program danRESTprotokol plug-in program hanya interaksi antara protokol plug-in program dan antarmuka pertukaran. Protokol plug-in program memiliki detail yang sama pemrosesan dari docker program interaksi dan format data sebagai FMZ Quant. Untuk rincian, silakan lihat contoh di link di atas.

Terminal Perdagangan

FMZ Quant Trading platform menyediakan modular dan dapat disesuaikanPerdaganganAnda dapat secara bebas menambahkan berbagai modul data dan modul fungsi perdagangan, dan bahkan mengembangkan modul kode mereka sendiri (plugin terminal perdagangan). Dengan penggunaan yang sangat fleksibel dan gratis, ini juga sangat memudahkan pengguna perdagangan manual dan perdagangan semi-programatik. Berbagai modul pada halaman Trade dapat diseret dan diperbesar, pengaturan pasangan perdagangan dan bursa yang terikat oleh modul dapat dimodifikasi, dan beberapa modul dari jenis yang sama dapat ditambahkan.

img

Alat Debugging

Alat Debughalaman menyediakan lingkungan untuk cepat menguji kode oleh bot, mendukung hanyaJavaScript currently.

img

Pengeditan jarak jauh

Ini mendukung editor lokal kode strategi sinkronisasi jarak jauh ke platform FMZ Quant Trading, dan mendukungSublime Text/Atom/Vim/VSCodePada halaman editing strategi, klik Remote Edit untuk membuka tombol download plugin alamat untuk menampilkan remote synchronization key (token) dari strategi saat ini.

img

Klik Update key untuk menyegarkan tampilan kunci saat ini, dan klik Delete Key untuk menghapus kunci rahasia (token) dari strategi saat ini.

img

Metode instalasi plug-in editor yang berbeda sedikit berbeda. Anda dapat mengklik tombol download untuk melompat ke item plug-in sinkronisasi jarak jauh tertentu.

img

Parameter Bot Impor & Ekspor

img

Saat menjalankan perdagangan langsung, Anda perlu menyimpan data parameter dari konfigurasi bot nyata, Anda dapat mengklik tombol Export.JSONfile, dan konfigurasi parameter strategi yang diekspor juga dapat diimpor ke bot nyata lagi. Klik tombol Import untuk mengimpor parameter bot strategi yang disimpan ke bot nyata saat ini. Kemudian, klik Save untuk menyimpan.

File Impor & Ekspor Strategi

img

  • Unduh Kode Sumber Ekspor kode sumber strategi, dan jenis file ekspor didasarkan pada bahasa pemrograman strategi.js; strategi python mengekspor file dengan ekstensipy; C ++ strategi mengekspor file dengan ekstensicpp; Mylanguage strategi mengekspor file dengan ekstensitxtPerhatikan bahwa hanya kode sumber strategi yang diekspor, tidak termasuk parameter strategi, referensi template, dll.

  • Strategi Ekspor Ekspor strategi lengkap, termasuk semua informasi strategi, seperti kode sumber strategi dan desain parameter.xml file.

  • Strategi Impor Gunakanxmlfile diekspor oleh fungsi Export, dan klik tombol Import pada halaman editing strategi untuk memilihxmlSetelah mengimpor, Anda perlu mengklik tombol Save untuk menyimpan strategi.

Dukungan Multilingual

Nama strategi dan deskripsi parameter strategi dapat ditulis dalamChinese|English, ditampilkan dalam bahasa yang diakui oleh halaman web secara otomatis.

img

img

Di tempat lain, seperti:deskripsi strategi, instruksi penggunaandan teks lainnya dalamMarkdownformat, menggunakan[trans]Chinese|English[/trans]atau[trans]Chinese||English[/trans]Efek dari contoh di atas ditunjukkan dalam gambar berikut:

  • Tampilan halaman dalam bahasa Cina:img

  • Tampilan halaman dalam bahasa Inggris:img

Setelah beralih bahasa, akan mengambil efek setelah menyegarkan halaman web.

Fungsi yang dapat menulis string dalam kode strategi juga mendukung beralih bahasa, seperti fungsiLog, fungsiLogStatus, dll.

function main() {
    Log("[trans]日志|log[/trans]")
    var table = {
        type: "table", 
        title: "[trans]操作|option[/trans]", 
        cols: ["[trans]列1|col1[/trans]", "[trans]列2|col2[/trans]", "[trans]操作|option[/trans]"],
        rows: [ 
            ["[trans]比特币|BTC[/trans]", "[trans]以太坊|ETH[/trans]", {"type": "button", "cmd": "coverAll", "name": "平仓|cover", "description": "描述|description"}]  // Note: It doesn't need to add [trans] tag in the button
        ]
    }
    LogStatus("[trans]信息|message[/trans]", "\n`" + JSON.stringify(table) + "`")
    throw "[trans]错误|error[/trans]"
}
import json
def main():
    Log("[trans]日志|log[/trans]")
    table = {
        "type": "table", 
        "title": "[trans]操作|option[/trans]", 
        "cols": ["[trans]列1|col1[/trans]", "[trans]列2|col2[/trans]", "[trans]操作|option[/trans]"],
        "rows": [ 
            ["[trans]比特币|BTC[/trans]", "[trans]以太坊|ETH[/trans]", {"type": "button", "cmd": "coverAll", "name": "平仓|cover", "description": "描述|description"}]
        ]
    }
    LogStatus("[trans]信息|message[/trans]", "\n`" + json.dumps(table) + "`")
    raise Exception("[trans]错误|error[/trans]")
void main() {
    Log("[trans]日志|log[/trans]");
    json table = R"({
        "type": "table", 
        "title": "[trans]操作|option[/trans]", 
        "cols": ["[trans]列1|col1[/trans]", "[trans]列2|col2[/trans]", "[trans]操作|option[/trans]"],
        "rows": [ 
            ["[trans]比特币|BTC[/trans]", "[trans]以太坊|ETH[/trans]", {"type": "button", "cmd": "coverAll", "name": "平仓|cover", "description": "描述|description"}]
        ]
    })"_json;
    LogStatus("[trans]信息|message[/trans]", "\n`" + table.dump() + "`");
    Panic("[trans]错误|error[/trans]");
}

Pasar Simulasi WexApp

  • Operasi 24 jam non-stop, sistem pencocokan perdagangan yang kuat, mensimulasikan perdagangan nyata.
  • Robot pembuat pasar yang kuat yang memberikan likuiditas yang baik dan kedalaman buku pesanan.
  • Dukungan antarmuka API lengkap, tidak hanya dapat diuji pada FMZ Quant untuk perdagangan kuantitatif simulasi, tetapi juga dapat terhubung ke antarmuka API sendiri, alamat:WexApp.

Parameter Program Docker

Setelah mengunduh perangkat lunak docker, file yang dapat dijalankan setelah dekompresi (nama file:robot) adalah program docker; parameter dapat ditentukan untuk program docker, saat menyebarkan docker.

  • -v: memeriksa informasi termasuk versi dan waktu kompilasi dari program docker saat ini. Komando eksekusi lengkap didasarkan padaApple Mac System: ./robot -v.
  • -s: alamat yang ditentukan untuk berkomunikasi dengan platform FMZ Quant Trading saat menjalankan program docker. Komando eksekusi lengkap didasarkan padaApple Mac System: ./robot -s node.fmz.com/xxxxxxx; xxxxxxxadalah ID identifikasi unik dari setiap akun di platform FMZ Quant Trading; setelah mengeksekusi perintah, akan ada permintaan untuk memasukkan kata sandi untuk akun platform FMZ Quant Trading yang sesuai.
  • -p: Anda dapat secara langsung menentukan parameter dalam perintah run untuk memasukkan kata sandi, yang tidak dianjurkan, karena parameter kata sandi akan ditinggalkan dalam catatan sistem saat ini.node.fmz.com/xxxxxxxadalah:abc123456Aku tidak tahu. Komando eksekusi lengkap didasarkan padaApple Mac System: ./robot -s node.fmz.com/xxxxxxx -p abc123456.
  • -n: melampirkan informasi label ke program docker yang sedang berjalan. Komando eksekusi lengkap didasarkan padaApple Mac System: ./robot -n macTest -s node.fmz.com/xxxxxxxAkan adamacTestlabel teks dalam informasi docker pada halaman manajemen platform docker.
  • -l: cetak daftar pertukaran yang didukung oleh docker saat ini. Komando eksekusi lengkap didasarkan padaApple Mac System: ./robot -l, yaitu, nama pertukaran yang didukung dapat di output.

Penyebab Umum untuk Kesalahan Bot & Exit Abnormal

  • Strategi kesalahan tata bahasa statis (kesalahan seperti itu jelas, dan biasanya Anda dapat melihat tanda kesalahan pada halaman pengeditan strategi), yang dapat ditemukan dan diperbaiki selama backtest.
  • Kesalahan strategi runtime, contoh yang paling umum adalah penggunaan langsung nilai return fungsi tanpa membuat penilaian hukum.
  • Terlalu banyak konten yang tidak dapat dikumpulkan sampah disimpan dalam variabel global, yang mengakibatkan penggunaan memori yang berlebihan.
  • Ketika menggunakan asinkronexchange.Gofungsi, tidak ada yang wajarwaituntuk menunggu akhir dari coroutine selama operasi, menghasilkan sejumlah besar coroutines.
  • Terlalu banyak lapisan panggilan fungsi rekursif menyebabkan ukuran tumpukan coroutines melebihi.
  • Kesalahan bisnis antarmuka dan kesalahan permintaan jaringan, dll; pesan kesalahan tersebut akan menampilkan informasi, termasuk nama objek pertukaran yang relevan, nama fungsi, pesan dan alasan terkait kesalahan, dan informasi lainnya. Kesalahan tersebut tidak akan menyebabkan penghentian yang abnormal dalam perdagangan yang sebenarnya (kesalahan semacam itu biasanya penyebab, tetapi bukan penyebab langsung.program pengecualian yang disebabkan oleh penggunaan langsung tanpa antarmuka kembali nilai untuk menilai legalitas).
  • Kesalahan lapisan bawah platform, contoh umum adalahDecrypt: Secret key decrypt failed, yang akan menyebabkan kegagalan memulai perdagangan langsung. Alasan kesalahan adalah bahwa modifikasi kata sandi akun FMZ menyebabkan semuaAPI KEYUntuk memecahkan masalah ini,API KEYperlu dikonfigurasi ulang, dan docker perlu di-restart.
  • Ketika menyewa strategi Python, kesalahan dilaporkan karena ketidakcocokan versi antara Python yang dienkripsi oleh platform dan Python dalam strategi runtime:ValueError: bad marshal data (unknown type code). Upgrade atau menginstal lingkungan Python yang dijalankan oleh strategi ke salah satu versi yang didukung oleh strategi:Python 2.7, Python 3.5danPython 3.6.
  • interruptkesalahan; kesalahan adalah karena pengguna mengklikHentikan bottombol pada halaman Bot ketika program melakukan operasi (seperti mengakses antarmuka platform), dan bot berhenti dan mengganggu pesan kesalahan yang dicetak oleh operasi saat ini.

Bot & Pengelompokan Strategi

Pada halaman Bot dan Strategy dari platform FMZ Quant Trading, Anda dapat mengklikPengaturan kelompoktombol di sebelah kanan untuk mengelola strategi dan perdagangan nyata dalam kelompok.Template, Strategi JavaScriptdanStrategi untuk Backtestdapat dibagi menjadi tiga kelompok, masing-masing.

Sub-Akun & Live Bot

Sub Rekening Setelah masuk ke platform, klik Dashboard dan Account untuk melompat ke akun FMZ [halaman manajemen] (https://www.fmz.com/m/accountKlik Sub-Account untuk melihat halaman pembuatan sub-account, pilih bot yang dapat diakses sub-account yang ditambahkanizin yang tersediakontrol, dan menetapkan sub-accountsnama penggunadankata sandi login sub-akundalamInformasi penggunakontrol. Klik tombol Tambahkan sub-anggota untuk membuat sub-akun. Sub-akun yang ditambahkan akan ditampilkan di halaman saat ini dan dapat diubah, dikunci/dibuka, dan dihapus.

Sub-akun memiliki izin terbatas; hanya bot yang sah dalam pengaturanizin yang tersediadapat dilihat di sub-akun. Bot yang berwenang memiliki wewenang untuk memodifikasi parameter, menghentikan dan memulai kembali perdagangan langsung, tetapi tidak dapat memodifikasi objek pertukaran yang dikonfigurasi oleh bot.

  • A. Sangat nyaman untuk masuk dan mengelola ketika tim kuantitatif mengelola beberapa strategi bot.
  • B. Debugging ketika strategi untuk disewa.

Tampilan Trading Langsung Dalam daftar bot dari platform FMZhalaman bot, klik tombol Publik untuk menampilkan bot baris saat ini secara publik. Saat ini ada dua cara untuk melihat bot langsung:

    1. Tampilkan bot di [Live View] (https://www.fmz.com/live) halaman yang diterbitkan di platform FMZ, setelah mengklik tombol Publik dan pilihBagian Masyarakat.
    1. Buat link pribadi untuk dilihat. Setelah mengklik tombol Public dan memilihBagian Internal, Anda dapat mengatur periode validitas untuk menghasilkan link pribadi untuk masuk ke halaman tampilan langsung pribadi dari bot strategi.

Strategy Sharing & Renting

PadaStrategihalaman, setelah mengklik tombol Action di sisi kanan strategi, menu yang muncul memiliki opsi untuk berbagi dan menyewa.

Berbagi Strategi

  • Berbagi Publik Setelah mengklik tombol Berbagi, kotak dialog akan muncul, dan Anda dapat memilih Berbagi Publik, sehingga strategi sepenuhnya dibagikan di platform Lebih Banyak Strategi, dan setiap pengguna dapat menyalin strategi.

  • Penggabungan Internal Setelah mengklik tombol Berbagi, kotak dialog akan muncul, dan Anda dapat memilih Berbagi Internal.alamat halaman salinandanKode salinandari strategi akan dihasilkan. Hal ini dapat didistribusikan ke pengguna platform FMZ yang ditunjuk. Pengguna yang membutuhkan strategi ini hanya perlu menggunakanalamat halaman salinanlink, untuk masuk kehalaman salinanSetelah mendapatkan strategi, itu akan muncul di halaman Strategy secara otomatis.

Strategi Penyewaan

  • Penjualan Umum Setelah mengklik tombol Rent, kotak dialog akan muncul, dan Anda dapat memilih Public Sale.

  • Penjualan Internal Setelah mengklik tombol Rent, kotak dialog akan muncul, dan Anda dapat memilih Internal Sale.alamat halaman pendaftarandantoken strategidari strategi akan dihasilkan. Hal ini dapat didistribusikan ke pengguna FMZ tertentu. Pengguna yang membutuhkan strategi ini hanya perlu menggunakanalamat halaman pendaftaranlink, untuk masuk kehalaman pendaftaran. Kemudian, masukkan token strategi untuk mendapatkan hak untuk menggunakan strategi. Strategi juga akan ditampilkan di halaman Strategy, tetapi hanya dengan hak untuk menggunakan backtest dan bot. Informasi seperti kode sumber strategi tidak dapat diakses.

Catatan penting: Ketika membuat dan mendistribusikantoken strategi, pastikan untuk memastikan dengan hati-hati apakah itu adalah strategi token atau copy code, sehingga tidak berbagi strategi secara tidak sengaja.

Algoritma Sharpe dalam Sistem Tes Balik

function returnAnalyze(totalAssets, profits, ts, te, period, yearDays) {
    // force by days
    period = 86400000
    if (profits.length == 0) {
        return null
    }
    var freeProfit = 0.03 // 0.04
    var yearRange = yearDays * 86400000
    var totalReturns = profits[profits.length - 1][1] / totalAssets
    var annualizedReturns = (totalReturns * yearRange) / (te - ts)

    // MaxDrawDown
    var maxDrawdown = 0
    var maxAssets = totalAssets
    var maxAssetsTime = 0
    var maxDrawdownTime = 0
    var maxDrawdownStartTime = 0
    var winningRate = 0
    var winningResult = 0
    for (var i = 0; i < profits.length; i++) {
        if (i == 0) {
            if (profits[i][1] > 0) {
                winningResult++
            }
        } else {
            if (profits[i][1] > profits[i - 1][1]) {
                winningResult++
            }
        }
        if ((profits[i][1] + totalAssets) > maxAssets) {
            maxAssets = profits[i][1] + totalAssets
            maxAssetsTime = profits[i][0]
        }
        if (maxAssets > 0) {
            var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
            if (drawDown > maxDrawdown) {
                maxDrawdown = drawDown
                maxDrawdownTime = profits[i][0]
                maxDrawdownStartTime = maxAssetsTime
            }
        }
    }
    if (profits.length > 0) {
        winningRate = winningResult / profits.length
    }
    // trim profits
    var i = 0
    var datas = []
    var sum = 0
    var preProfit = 0
    var perRatio = 0
    var rangeEnd = te
    if ((te - ts) % period > 0) {
        rangeEnd = (parseInt(te / period) + 1) * period
    }
    for (var n = ts; n < rangeEnd; n += period) {
        var dayProfit = 0.0
        var cut = n + period
        while (i < profits.length && profits[i][0] < cut) {
            dayProfit += (profits[i][1] - preProfit)
            preProfit = profits[i][1]
            i++
        }
        perRatio = ((dayProfit / totalAssets) * yearRange) / period
        sum += perRatio
        datas.push(perRatio)
    }

    var sharpeRatio = 0
    var volatility = 0
    if (datas.length > 0) {
        var avg = sum / datas.length;
        var std = 0;
        for (i = 0; i < datas.length; i++) {
            std += Math.pow(datas[i] - avg, 2);
        }
        volatility = Math.sqrt(std / datas.length);
        if (volatility !== 0) {
            sharpeRatio = (annualizedReturns - freeProfit) / volatility
        }
    }

    return {
        totalAssets: totalAssets,
        yearDays: yearDays,
        totalReturns: totalReturns,
        annualizedReturns: annualizedReturns,
        sharpeRatio: sharpeRatio,
        volatility: volatility,
        maxDrawdown: maxDrawdown,
        maxDrawdownTime: maxDrawdownTime,
        maxAssetsTime: maxAssetsTime,
        maxDrawdownStartTime: maxDrawdownStartTime,
        winningRate: winningRate
    }
}

Instruksi Pertukaran Khusus

  • Futures_Binance Ini mendukung mode posisi ganda Binance berjangka; Anda dapat menggunakanexchange.IOuntuk beralih:

    function main() {
        var ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=true")
        // ret : {"code":200,"msg":"success"}
        Log(ret)
    }
    
    def main():
        ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=false")
        Log(ret)
    
    void main() {
        auto ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=true");
        Log(ret);
    }
    

    Ini mendukung beralih antara posisi silang / posisi terisolasi

    function main() {
        exchange.SetContractType("swap")
        exchange.IO("cross", true)    // Switch to crossed position
        exchange.IO("cross", false)   // Switch to isolated position
    }
    
    def main():
        exchange.SetContractType("swap")
        exchange.IO("cross", True)
        exchange.IO("cross", False)
    
    void main() {
        exchange.SetContractType("swap");
        exchange.IO("cross", true);
        exchange.IO("cross", false);
    }
    
  • Futures_HuobiDM Ini mendukung memodifikasi alamat Huobi Futures yang berpartisipasi dalam tanda tangan, yang tidak beralih secara default.exchange.IO("signHost", "")untuk mengatur string kosong. Penggunaanexchange.IO("signHost", "https://aaa.xxx.xxx")untuk mengubah alamat dasar Huobi Futures yang berpartisipasi dalam verifikasi tanda tangan. Penggunaanexchange.IO("base", "https://bbb.xxx.xxx")atauexchange.SetBase("https://bbb.xxx.xxx")untuk mengubah alamat dasar antarmuka platform. Ketika pasangan perdagangan diatur untukXXX_USDT, gunakan fungsiexchange.SetContractType("swap")untuk mengatur kode kontrak untukswapkontrak abadi, menggunakanexchange.IO("cross", true)bisa beralih keUSDT- Margined kontrak abadi dalam mode posisi silang.exchange.IO("cross", false)untuk beralih kembali ke mode posisi terisolasi. default awal adalah mode posisi terisolasi.

  • Huobi Ini mendukung token leverage spot Huobi, seperti:LINK*(-3); kode yang didefinisikan oleh bursa adalah:link3susdt, yang ditulis ketika FMZ menetapkan pasangan perdaganganLINK3S_USDTAku tidak tahu. Hal ini juga mungkin untuk beralih pasangan perdagangan dalam strategi:

    function main() {
        exchange.SetCurrency("LINK3S_USDT")
        Log(exchange.GetTicker())
    }
    
    def main():
        exchange.SetCurrency("LINK3S_USDT")
        Log(exchange.GetTicker())
    
    void main() {
        exchange.SetCurrency("LINK3S_USDT");
        Log(exchange.GetTicker());
    }
    
  • OKX OKX interface dapat beralih ke lingkungan pengujian simulasi bot OKX; menggunakanexchange.IO("simulate", true)Jika Anda ingin beralih ke lingkungan perdagangan nyata, gunakanexchange.IO("simulate", false)default awal adalah lingkungan perdagangan yang sebenarnya. Hal ini mendukung beralih mode margin akun; menggunakanexchange.IO("cross", true)untuk beralih ke mode posisi silang, dan menggunakanexchange.IO("cross", false)untuk beralih ke mode posisi terisolasi, default awal adalah mode posisi silang.

  • Futures_Bibox Penggunaanexchange.IO("cross", true)untuk beralih ke mode posisi silang, dan menggunakanexchange.IO("cross", false)untuk beralih ke mode posisi terisolasi; default awal adalah mode posisi silang. Bursa tidak mendukung kueri pesanan saat ini menunggu dan antarmuka untuk kueri catatan perdagangan sejarah pasar, sehinggaGetOrdersdanGetTradesfungsi tidak didukung.

  • Futures_Bitget Penggunaanexchange.IO("cross", true)untuk beralih ke mode posisi silang, dan menggunakanexchange.IO("cross", false)untuk beralih ke mode posisi terisolasi.

  • Futures_AOFEX Penggunaanexchange.IO("cross", true)untuk beralih ke mode posisi silang, dan menggunakanexchange.IO("cross", false)untuk beralih ke mode posisi terisolasi.

  • Futures_MEXC Penggunaanexchange.IO("cross", true)untuk beralih ke mode posisi silang, dan menggunakan` ` pertukaran.IO("salib",


Lebih banyak