資源の読み込みに... 荷物...

トレーディング・ターミナル

FMZ Quant トレーディング プラットフォームは,モジュール化され,カスタマイズできる貿易独自のコードモジュール (トレードターミナルプラグイン) を開発することもできます. Tradeのページのさまざまなモジュールは,ドラッグとズームインすることができ,モジュールに縛られた取引ペアと取引所の設定を変更することができ,同じタイプの複数のモジュールを追加することができます.

FMZの量子取引プラットフォームは,取引端末の機能を改善し,手動取引をより容易にし,取引端末のプラグイン機能も導入しました.

プラグインの原理

原則はデバッグツール: 実行するために"Trade"ターミナルページのドッカーにコードを送信し,チャートとテーブルを返信することをサポートします (デバッグツールはアップグレードもサポートします).デバッグツール簡単な小さな機能を実現できます. 複雑な戦略は,まだライブ取引で実行する必要があります.

プラグイン作成

トレーディング・ターミナル・プラグインを作成するには,戦略型を以下に設定できます.Trading pluginについて新しい戦略取引プラグインをサポートJavaScript, Python, C++そしてMyLanguage.

プラグインの使用

このプラグインは,コードを一定の期間実行し,いくつかの簡単な操作を行うことができます.アイスバーグの注文, 待機中の命令, 注文のキャンセルそして注文計算同じようにデバッグツール,それは使用returnグラフや表も直接返します グラフや表は直接返します 他の機能も自分で探すことができます

  • 深度スナップショットに戻る

    // 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
    }
    
  • クロスペリオド・スプレッドを引く

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

More Strategiesには,小量で買い/売るなど,他の例があります.

どう 使うか

  • 取引端末のプラグインモジュールを追加する Tradeターミナルページでモジュール追加メニューを開く.戦略ライブラリ追加するプラグインを見つけ,追加をクリックします.
  • プラグインを実行 Executeをクリックすると,トレードターミナルプラグインが起動します.プラグインはログを表示しませんが,表示テーブルを返します.
  • プラグインを実行する時間 プラグインの最大実行時間は 3分です. 3分を超えると自動的に停止します.
拡張された API インターフェース データ探査