En la carga de los recursos... Cargando...

Terminal de negociación

La Plataforma de Comercio Cuántico de FMZ proporciona una plataforma modular y personalizable Comercio Puede agregar libremente varios módulos de datos y módulos de función de trading, e incluso desarrollar sus propios módulos de código (plugins de terminal de trading). Con su uso altamente flexible y gratuito, también facilita en gran medida a los usuarios del comercio manual y el comercio semiprogramático.

La plataforma de negociación Quant de FMZ mejoró la funcionalidad del terminal de negociación, facilitó mejor la negociación manual e introdujo la función de complemento de negociación del terminal de negociación.

Principio del complemento

El principio es el mismoherramienta de depuración: enviar un pedazo de código al docker de la página terminal Trade para ejecutar, y soportar la devolución de gráficos y tablas (la herramienta de depuración también admite la actualización).herramienta de depuraciónPuede realizar algunas pequeñas funciones simples, estrategias complejas que aún necesitan ejecutarse en el comercio en vivo.

Escribir el complemento

Para crear un complemento de terminal de negociación, puede configurar el tipo de estrategia para:Trading pluginen elNueva estrategiaPágina. Compras plugin soportaJavaScript, Python, C++, yMyLanguage.

Uso del complemento

El complemento puede ejecutar el código durante un período de tiempo, y puede realizar algunas operaciones simples, tales comoórdenes de iceberg, órdenes pendientes, cancelación de la ordenyEl cálculo de la ordenLo mismo que elherramienta de depuración, se utilizareturnpara devolver los resultados, y también puede devolver directamente los gráficos y tablas. Aquí hay algunos ejemplos, y otras funciones pueden ser exploradas por usted mismo.

  • Vuelve a la instantánea de profundidad

    // 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
    }
    
  • Dibujar los diferenciales entre períodos

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

Hay otros ejemplos en las Más estrategias, como comprar / vender en pequeñas cantidades.

Cómo usar

  • Añadir el módulo de complemento de la terminal de negociación Abre el menú de añadir módulos en la página del terminal Trade, los complementos del terminal de negociación en elbiblioteca de estrategiasde la cuenta FMZ actual se mostrará en la lista automáticamente, encontrar el complemento a agregar y haga clic en Añadir.
  • Ejecute el complemento Haga clic en Execute, y el complemento de terminal de trading comenzará a ejecutarse.
  • Tiempo de ejecución del complemento El tiempo máximo de ejecución del complemento es de 3 minutos; y dejará de funcionar automáticamente después de superar los 3 minutos.
Interfaz de API extendida Exploración de datos