Im Bereich des quantitativen Handels waren einfache und einfach zu bedienende quantitative Handelswerkzeuge schon immer einer der Schlüssel zum Erreichen von Vermögenswachstum und Risikomanagement. Mit zunehmendem Marktwettbewerb reichen jedoch traditionelle Handelswerkzeuge nicht mehr aus, um den sich schnell ändernden Marktanforderungen gerecht zu werden. Um den Wettbewerbsvorteil für quantitative Händler in der sich ständig weiterentwickelnden digitalen Asset-Welt zu erhalten, hat FMZ Mobile App eine bedeutende neue Funktion hinzugefügt: Trading Terminal. Diese Funktion wird nicht nur Ihre Handelseffizienz verbessern, sondern Sie auch durch kundenspezifische Pluginprogramme befähigen, beim Handel zu helfen und Ihrer Handelskarriere neue Vitalität zu verleihen.
Auf der FMZ Quant Trading Plattform können Sie die FMZ Quant Mobile APPSeite zum Herunterladen der mobilen AppNach dem Herunterladen und Installieren öffnen Sie die FMZ Mobile App und melden Sie sich mit Ihrem FMZ Account an.
Bitte beachten Sie, dass FMZ Quant inFMZ.COMInternationale Website undFMZ.CNChina Inlandsseite (unterstützt verschiedene Märkte). Beim Anmelden müssen Sie die entsprechende Website auswählen. Konten für verschiedene Websites sind unabhängig und nicht austauschbar.
Das mobile APP-Handelsterminal der FMZ Quantitative Trading Platform ist ein quantitatives Handelswerkzeug, das APIs von großen Börsen umfasst.
Nach dem Einloggen in die FMZ Quant Mobile APP können Sie die
Bevor FMZ sein mobiles APP-Handelsterminal einführte, hatte die Webversion von FMZ
1. Hauptoberfläche des Handelsterminals:
Nach dem Öffnen des Handelsterminals sehen Sie die Hauptoberfläche des Handelsterminals.
2. Handelszone:
Die Handelszone zeigt Markttiefe-Daten an. Handelswidgets können mit Bestellpreis, Bestellmenge, Bestellrichtung, Hebelwirkung und anderen Einstellungen festgelegt werden.
Die unteren Registerkarten der Hauptoberfläche zeigen Informationen wie
3. K-Liniendiagramm:
Wenn Sie beim Bestellen das K-Liniendiagramm ansehen möchten, wurde hier ein durchdachtes Design implementiert - ein zusammenklappbares Display-Widget, das das Mini-K-Liniendiagramm des aktuellen Produkts entfaltet.
Wenn Sie das K-Liniendiagramm in einem größeren Bereich anzeigen möchten, Markttransaktionsprotokolle anzeigen, tiefgreifende Informationen und mehr, können Sie auf dieses K-Liniendiagramm-Symbol klicken, um auf die professionelle K-Liniendiagrammseite zu springen.
Die professionelle K-Liniendiagramm-Schnittstelle:
Die professionelle K-Line-Chart-Schnittstelle kann auch im Landschaftsmodus angezeigt werden:
Was kann ein Trading-Terminal-Plugin tun?
Welche Programmiersprachen und Tools werden zur Entwicklung von Plugins verwendet?
Was gibt's denn?
In der FMZ-Community hat ein Nutzer eine solche Anfrage gestellt:
Verwenden Sie js, um alle U-Kontraktwährungen der Binance-Börse zu durchqueren und eine Position von 10u (lang) für jede Währung zu eröffnen.
Dieses Anforderungsszenario kann mit Trading-Terminal-Plugins tatsächlich implementiert werden, und das Ausführen von Plugin-Strategien auf dem Trading-Terminal ist kostenlos.
Lassen Sie uns sehen, wie die Benutzeranfrage gestaltet und umgesetzt wird.
Zunächst müssen wir ein Trading-Terminal-Plugin erstellen und drei Parameter zu seiner Strategie hinzufügen:
Dann schreiben Sie das Plugin:
function main() {
let exName = exchange.GetName()
if (exName != "Futures_Binance") {
return "not support!"
}
let apiBase = "https://fapi.binance.com"
if (isSimulate) {
apiBase = "https://testnet.binancefuture.com"
Log("Switch base address:", apiBase)
}
exchange.SetBase(apiBase)
try {
var obj = JSON.parse(HttpQuery(apiBase + "/fapi/v1/exchangeInfo"))
} catch (e) {
Log(e)
}
let pairs = []
for (var i in obj.symbols) {
if (obj.symbols[i]["status"] !== "TRADING" || obj.symbols[i]["quoteAsset"] !== "USDT") {
continue
}
let = pair = obj.symbols[i]["baseAsset"] + "_" + obj.symbols[i]["quoteAsset"]
pairs.push(pair)
}
let markets = _C(exchange.GetMarkets)
for (var i in pairs) {
// /*
// For testing purposes, only 10 varieties are opened here. If all varieties are needed, this comment content can be deleted.
if (i >= 9) {
break
}
// */
let pair = pairs[i]
exchange.SetCurrency(pair)
exchange.SetContractType("swap")
let ticker = exchange.GetTicker()
if (!ticker) {
continue
}
let = amountPrecision = markets[pair + ".swap"]["AmountPrecision"]
exchange.SetDirection("buy")
let amount = _N(qty / ticker.Last, amountPrecision)
if (amount > 0) {
exchange.Buy(-1, amount)
}
Sleep(100)
}
// Obtain all positions
let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
if (!pos) {
return
}
// View positions
return pos.filter(item => Number(item.positionAmt) != 0)
}
Nachdem das Trading-Terminal-Plugin geschrieben wurde, kann es getestet werden:
Klicken Sie im Handelsterminal der mobilen APP auf die Schaltfläche
Nachdem wir die Operation auf der mobilen APP abgeschlossen haben, verwenden wir den folgenden Code, um die Position des Simulationsbots von Binance zu abfragen:
function main() {
let apiBase = "https://testnet.binancefuture.com"
exchange.SetBase(apiBase)
let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
if (!pos) {
return
}
// View positions
return pos.filter(item => Number(item.positionAmt) != 0)
}
Gefundene Daten
[{
"symbol": "ETCUSDT",
"entryPrice": "16.17",
"unRealizedProfit": "0.08567881",
"positionSide": "LONG",
"updateTime": 1698420908103,
"isolated": false,
"breakEvenPrice": "16.176468",
"leverage": "20",
"adlQuantile": 3,
"positionAmt": "0.65",
"markPrice": "16.30181356",
"liquidationPrice": "0",
"maxNotionalValue": "400000",
"marginType": "cross",
"notional": "10.59617881",
"isolatedMargin": "0.00000000",
"isAutoAddMargin": "false",
"isolatedWallet": "0"
}, {
"positionAmt": "105",
"markPrice": "0.09371526",
"liquidationPrice": "0",
"leverage": "20",
"maxNotionalValue": "90000",
"positionSide": "LONG",
"isolatedWallet": "0",
"symbol": "TRXUSDT",
"updateTime": 1698420906668,
"breakEvenPrice": "0.094497784",
"isolatedMargin": "0.00000000",
"isolated": false,
"entryPrice": "0.09446",
"adlQuantile": 1,
"unRealizedProfit": "-0.07819770",
"isAutoAddMargin": "false",
"notional": "9.84010230",
"marginType": "cross"
}, {
"unRealizedProfit": "-0.00974456",
"isAutoAddMargin": "false",
"notional": "9.97449543",
"isolatedWallet": "0.50309216",
"updateTime": 1698420905377,
"markPrice": "67.85371047",
"isolatedMargin": "0.49334760",
"adlQuantile": 2,
"symbol": "LTCUSDT",
"entryPrice": "67.92",
"liquidationPrice": "64.91958163",
"maxNotionalValue": "250000",
"positionSide": "LONG",
"isolated": true,
"positionAmt": "0.147",
"breakEvenPrice": "67.947168",
"leverage": "20",
"marginType": "isolated"
}, {
"liquidationPrice": "1613.23261508",
"marginType": "isolated",
"isolated": true,
"symbol": "ETHUSDT",
"entryPrice": "1784.27",
"markPrice": "1783.35661952",
"isAutoAddMargin": "false",
"positionSide": "LONG",
"notional": "8.91678309",
"leverage": "10",
"maxNotionalValue": "30000000",
"isolatedWallet": "0.89551774",
"adlQuantile": 1,
"positionAmt": "0.005",
"breakEvenPrice": "1784.983708",
"unRealizedProfit": "-0.00456690",
"isolatedMargin": "0.89095084",
"updateTime": 1698420900362
}, {
"positionAmt": "17.1",
"marginType": "cross",
"isolatedWallet": "0",
"adlQuantile": 2,
"liquidationPrice": "0",
"maxNotionalValue": "250000",
"positionSide": "LONG",
"isolated": false,
"symbol": "EOSUSDT",
"breakEvenPrice": "0.6432572",
"updateTime": 1698420904257,
"isolatedMargin": "0.00000000",
"isAutoAddMargin": "false",
"notional": "10.34550000",
"entryPrice": "0.643",
"markPrice": "0.60500000",
"unRealizedProfit": "-0.64980000",
"leverage": "20"
}, {
"isolated": false,
"adlQuantile": 1,
"liquidationPrice": "0",
"maxNotionalValue": "10000000",
"notional": "9.73993328",
"leverage": "20",
"updateTime": 1698420901638,
"symbol": "BCHUSDT",
"entryPrice": "250.0",
"markPrice": "243.49833219",
"isAutoAddMargin": "false",
"positionSide": "LONG",
"positionAmt": "0.040",
"breakEvenPrice": "250.1",
"isolatedMargin": "0.00000000",
"unRealizedProfit": "-0.26006671",
"marginType": "cross",
"isolatedWallet": "0"
}]
Es kann gesehen werden, dass 6 Positionen geöffnet wurden, weil es beim Auftragen von tatsächlichen Aufträgen auf dem Simulationsbot leicht ist, Limitpreise auszulösen; außerdem ist es aufgrund des Auftragsbetrags von 10U leicht, das Mindestaufträgelimit von Handelsparen auszulösen; daher wurden einige Handelspare nicht erfolgreich bestellt. Wenn Sie dies in der Realität verwenden müssen, sollten praktischere Situationen in Betracht gezogen werden, um dieses Plugin für eine bessere Nutzung zu optimieren.
Das mobile App-Handelsterminal der FMZ Quant Trading Platform hat viele interessante Plugins. Kommen Sie und erkunden Sie gemeinsam!
https://www.fmz.com/upload/asset/16b436307a4ce5c246c2.mp4
Die neue Trading-Terminal-Funktion der FMZ-Mobil-App wird zu Ihrem leistungsstarken Assistenten auf dem Markt für digitale Vermögenswerte und ermöglicht Ihnen, flexibler auf Marktfluktuationen und Chancen zu reagieren.