Sumber dimuat naik... memuat...

Terminal Perdagangan

Platform Perdagangan Kuantum FMZ menyediakan platform perdagangan kuantum yang modular dan boleh disesuaikan.PerdaganganAnda boleh secara bebas menambah pelbagai modul data dan modul fungsi dagangan, dan juga membangunkan modul kod mereka sendiri (plugin terminal dagangan). Dengan penggunaannya yang sangat fleksibel dan bebas, ia juga memudahkan pengguna perdagangan manual dan perdagangan separa programatik. Pelbagai modul pada halaman Trade boleh diseret dan diperbesar, tetapan pasangan perdagangan dan bursa yang terikat oleh modul dapat diubah suai, dan beberapa modul jenis yang sama boleh ditambah.

Platform Dagangan Kuant FMZ meningkatkan fungsi terminal dagangan, memudahkan perdagangan manual dengan lebih baik, dan memperkenalkan fungsi plug-in perdagangan terminal dagangan.

Prinsip Plugin

Prinsipnya sama denganalat debugging: menghantar sekeping kod ke docker halaman terminal Trade untuk dijalankan, dan menyokong kembalinya carta dan jadual (peralatan debugging juga menyokong peningkatan).alat debugging, ia hanya boleh dilaksanakan selama 3 minit, tanpa caj. ia boleh merealisasikan beberapa fungsi kecil yang mudah, strategi yang kompleks masih perlu dijalankan dalam perdagangan langsung.

Penulisan Plugin

Untuk membuat pemalam terminal perdagangan, anda boleh menetapkan jenis strategi untuk:Trading pluginpadaStrategi Baruhalaman. Perdagangan plugin menyokongJavaScript, Python, C++, danMyLanguage.

Penggunaan Plugin

Plugin boleh menjalankan kod untuk tempoh masa, dan ia boleh melakukan beberapa operasi mudah, sepertiPerintah aisberg, Perintah menunggu, pembatalan pesanandanPengiraan pesananSama sepertialat debugging, ia menggunakanreturnuntuk mengembalikan hasil, dan ia juga boleh secara langsung mengembalikan carta dan jadual. Berikut adalah beberapa contoh, dan fungsi lain boleh diterokai sendiri.

  • Kembali ke snapshot kedalaman

    // 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 the live trading to display the table of the status bar
    }
    
  • Menggambar perbezaan antara tempoh

    // 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
    

Terdapat contoh lain dalam More Strategies, seperti membeli / menjual dalam kuantiti kecil.

Cara Menggunakan

  • Tambah modul pemalam terminal perdagangan Buka menu menambah modul pada halaman terminal Trade, plugin terminal perdagangan dalamperpustakaan strategidari akaun FMZ semasa akan dipaparkan dalam senarai secara automatik, cari pemalam untuk ditambahkan dan klik Tambah.
  • Jalankan pemalam Klik Execute, dan plugin terminal perdagangan akan mula berjalan.
  • Masa menjalankan pemalam Masa maksimum pemacu pemalam adalah 3 minit; dan ia akan berhenti berjalan secara automatik selepas melebihi 3 minit.
Antara muka API yang diperluaskan Penjelajahan Data