Die Ressourcen sind geladen. Beförderung...

Handelsterminal

Die FMZ Quant Trading Plattform bietet eine modulare und anpassbareHandelSie können frei verschiedene Datenmodule und Handelsfunktionsmodule hinzufügen und sogar eigene Code-Module (Trading-Terminal-Plugins) entwickeln. Mit seiner sehr flexiblen und kostenlosen Nutzung erleichtert es auch den Benutzern des manuellen Handels und des halbprogrammatischen Handels. Verschiedene Module auf der Trade-Seite können gezogen und vergrößert werden, die Einstellungen der von den Modulen gebundenen Handelspaare und Börsen können geändert werden und mehrere Module desselben Typs können hinzugefügt werden.

Die FMZ Quant Trading-Plattform verbesserte die Funktionalität des Handelsterminals, erleichterte den manuellen Handel und führte die Plug-in-Funktion des Handelsterminals ein.

Prinzip des Plugins

Das Prinzip ist das gleiche wie bei derDebugging-Tool: senden Sie einen Code zum Docker der Trade Terminalseite zum Ausführen und unterstützen Sie die Rückgabe von Diagrammen und Tabellen (das Debugging-Tool unterstützt auch das Upgrade).Debugging-ToolEs kann einige einfache kleine Funktionen realisieren, komplexe Strategien müssen noch im Live-Handel ausgeführt werden.

Schreiben von Plugins

Um ein Trading-Terminal-Plugin zu erstellen, können Sie den Strategie-Typ auf:Trading pluginauf derNeue StrategieHandelsplugin unterstütztJavaScript, Python, C++, undMyLanguage.

Nutzung des Plugins

Das Plugin kann den Code für einen bestimmten Zeitraum ausführen, und es kann einige einfache Operationen durchführen, wieEisberg-Bestellungen, Ausstehende Aufträge, Stornierung der BestellungundBerechnung der Bestellung- Das gleiche wie derDebugging-Tool, verwendet esreturnDie Ergebnisse werden zurückgegeben, und es kann auch direkt die Diagramme und Tabellen zurückgeben. Hier sind ein paar Beispiele, und andere Funktionen können selbst erforscht werden.

  • Zurück zum Tiefen-Snapshot

    // 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
    }
    
  • Zeichnen Sie die Querschnittspannen

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

Es gibt andere Beispiele in den Mehr Strategien, wie zum Beispiel Kauf / Verkauf in kleinen Mengen.

Wie man sie verwendet

  • Hinzufügen des Plug-in-Moduls des Handelsterminals Öffnen Sie das Modul hinzufügen Menü auf der Trade Terminalseite, die Handelsterminal-Plugins in derStrategiebibliothekder aktuellen FMZ-Konto wird automatisch in der Liste angezeigt, finden Sie das Plugin hinzufügen und klicken Sie auf Add.
  • Führen Sie das Plugin aus Klicken Sie auf Execute, und das Trading-Terminal-Plugin startet.
  • Zeit des Plugins Die maximale Laufzeit des Plugins beträgt 3 Minuten; und es wird automatisch nach mehr als 3 Minuten nicht mehr laufen.
Erweiterte API-Schnittstelle Datenforschung