Tài nguyên đang được tải lên... tải...

Địa điểm giao dịch

FMZ Quant Trading Platform cung cấp một mô-đun và tùy chỉnh Thương mạiBạn có thể tự do thêm các mô-đun dữ liệu khác nhau và mô-đun chức năng giao dịch, và thậm chí phát triển các mô-đun mã của riêng họ (trading terminal plugins). Với việc sử dụng rất linh hoạt và miễn phí, nó cũng tạo điều kiện thuận lợi cho người dùng giao dịch thủ công và giao dịch bán lập trình.

Nền tảng giao dịch FMZ Quant đã cải thiện chức năng của thiết bị đầu cuối giao dịch, tạo điều kiện giao dịch thủ công tốt hơn và giới thiệu chức năng plug-in giao dịch của thiết bị đầu cuối giao dịch.

Nguyên tắc của Plugin

Nguyên tắc là giống nhưcông cụ gỡ lỗi: gửi một đoạn mã đến docker của trang đầu cuối Trade để thực hiện, và hỗ trợ trả về biểu đồ và bảng (công cụ gỡ lỗi cũng hỗ trợ nâng cấp).công cụ gỡ lỗi, nó chỉ có thể được thực hiện trong 3 phút, mà không cần sạc. nó có thể nhận ra một số chức năng nhỏ đơn giản, chiến lược phức tạp vẫn cần chạy trong giao dịch trực tiếp.

Viết plugin

Để tạo plugin đầu cuối giao dịch, bạn có thể đặt loại chiến lược là:Trading plugintrênChiến lược mớitrang. hỗ trợ plugin giao dịchJavaScript, Python, C++, vàMyLanguage.

Sử dụng Plugin

Plugin có thể thực hiện mã trong một khoảng thời gian, và nó có thể thực hiện một số hoạt động đơn giản, chẳng hạn nhưlệnh băng trôi, lệnh đang chờ, hủy lệnhtính toán lệnhTương tự nhưcông cụ gỡ lỗi, nó sử dụngreturnđể trả lại kết quả, và nó cũng có thể trực tiếp trả lại các biểu đồ và bảng. Dưới đây là một vài ví dụ, và các chức năng khác có thể được khám phá bởi chính bạn.

  • Trở lại ảnh chụp sâu

    // 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
    }
    
  • Kích thước chênh lệch giữa các giai đoạn

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

Có những ví dụ khác trong Nhiều chiến lược, chẳng hạn như mua / bán với số lượng nhỏ.

Cách sử dụng

  • Thêm module plugin của giao dịch đầu cuối Mở menu thêm module trên trang đầu cuối Trade, các plugin đầu cuối giao dịch trongthư viện chiến lượccủa tài khoản FMZ hiện tại sẽ được hiển thị trong danh sách tự động, tìm plugin để được thêm và nhấp vào Add.
  • Chạy plugin Nhấp vào Execute, và plugin đầu cuối giao dịch sẽ bắt đầu chạy.
  • Thời gian chạy plugin Thời gian chạy tối đa của plugin là 3 phút; và nó sẽ ngừng chạy tự động sau khi vượt quá 3 phút.
Giao diện API mở rộng Khảo sát dữ liệu