[TOC]

Die Inventor Quantitative Trading Platform hat 9 Jahre technologischer Iterationen durchlaufen und wurde viele Male umgestaltet, obwohl wir als Benutzer dies möglicherweise nicht bemerkt haben. In den letzten zwei Jahren wurden an der Plattform viele Optimierungen und Verbesserungen im Hinblick auf die Benutzererfahrung vorgenommen, darunter eine umfassende Aktualisierung der Benutzeroberfläche, die Erweiterung häufig verwendeter quantitativer Handelstools und die Hinzufügung weiterer Unterstützung für Backtesting-Daten.
Um die Strategiegestaltung komfortabler, die Handelslogik klarer und Anfängern den Einstieg zu erleichtern, hat die Plattform die von der Strategie verwendete API-Schnittstelle aktualisiert. Verwenden Sie die neueste Version Ihres Hosts, um diese neuen Funktionen zu aktivieren. Die Plattform bleibt dabei weitestgehend kompatibel zum Aufruf alter Schnittstellen. Informationen zu neuen Funktionen der API-Schnittstelle wurden in der API-Dokumentation der Inventor Quantitative Trading Platform aktualisiert:
Werfen wir also einen kurzen Blick darauf, welche Schnittstellen aktualisiert wurden und welche Änderungen erforderlich sind, um alte Strategien mit der aktuellen API kompatibel zu machen.
Zur Entwicklung vielfältiger Strategien und Strategien zur umfassenden Überwachung der Marktlage. Diese aggregierte Marktschnittstelle ist wichtig, um die Entwicklung von Strategien zu vereinfachen und zu vermeiden, dass das Rad neu erfunden werden muss. Die quantitative Handelsplattform des Erfinders kapselt solche APIs von Börsen.
Wenn die Vermittlungsstelle diese Schnittstelle nicht besitzt (Einzelvermittlungsstellen), rufen Sieexchange.GetTickers()Es wird eine Fehlermeldung gemeldet: Nicht unterstützt.
Diese Funktion hat keine Parameter und gibt die Echtzeit-Marktdaten aller Varianten in der aggregierten Marktschnittstelle der Börse zurück. Es kann einfach so verstanden werden:
exchange.GetTickers()Die Funktion istexchange.GetTicker()Die vollständige Version der Funktion (der Unterschied zwischen den beiden Funktionsnamen ist Singular und Plural).
Zum Testen verwenden wir die OKX-Spot-Simulationsumgebung:
function main() {
exchange.IO("simulate", true)
var tickers = exchange.GetTickers()
if (!tickers) {
throw "tickers error"
}
var tbl = {type: "table", title: "test tickers", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var i in tickers) {
var ticker = tickers[i]
tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
return tickers.length
}

Neuexchange.CreateOrder()Bei diesem Upgrade stehen die Funktionen im Mittelpunkt.exchange.CreateOrder()Die wichtigste Funktion der Funktion besteht darin, Art und Richtung der Reihenfolge direkt in den Parametern der Funktion anzugeben. Somit ist man nicht mehr abhängig von den aktuellen Systemeinstellungen wie Handelspaaren, Kontraktcodes, Handelsrichtungen etc.
Die Designkomplexität wird in Szenarien mit Handelsaufträgen für mehrere Produkte und in gleichzeitigen Szenarien erheblich reduziert.exchange.CreateOrder()Die vier Parameter der Funktion sindsymbol、side、price、amount。
Test mit der OKX-Futures-Simulationsumgebung:
function main() {
exchange.IO("simulate", true)
var id1 = exchange.CreateOrder("ETH_USDT.swap", "buy", 3300, 1)
var id2 = exchange.CreateOrder("BTC_USDC.swap", "closebuy", 70000, 1)
var id3 = exchange.CreateOrder("LTC_USDT.swap", "sell", 110, 1)
Log("id1:", id1, ", id2:", id2, ", id3:", id3)
}

Das dauerte nur 3 Malexchange.CreateOrder()Der Funktionsaufruf platziert drei Futures-Orders unterschiedlicher Art und Richtung.
Neuexchange.GetHistoryOrders()Die Funktion dient dazu, die historischen Transaktionsaufträge eines bestimmten Produkts abzurufen. Auch diese Funktion erfordert die Unterstützung der Börsenschnittstelle.
Für die Abfrage historischer Aufträge sind an den verschiedenen Börsen sehr unterschiedliche Schnittstellen implementiert:
Solche Schnittstellen werden mit höchster Kompatibilität gekapselt und es ist im tatsächlichen Einsatz darauf zu achten, ob sie den Anforderungen und Erwartungen der Strategie entsprechen.
Die detaillierte Funktionsbeschreibung wird hier nicht wiederholt. Sie können das Syntaxhandbuch in der API-Dokumentation zu Rate ziehen:
https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders
Getestet mit der Binance-Spot-Trading-Umgebung:
function main() {
var orders = exchange.GetHistoryOrders("ETH_USDT")
// 写入图表
var tbl = {type: "table", title: "test GetHistoryOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("orders.length:", orders.length, "\n", "`" + JSON.stringify(tbl) + "`")
}

Die alte Version der Funktion zur Positionsdatenerfassung lautet:exchange.GetPosition(). Um die Semantik der Funktionsbenennung besser anzupassen, fügt dieses Upgrade eine neue Funktion zum Abrufen von Positionen hinzu:exchange.GetPositions(). Gleichzeitig ist es weiterhin mit der GetPosition-Funktion kompatibel/aktualisiert.
Beachten Sie, dass sich die beiden Funktionsnamen nur durch das abschließende s unterscheiden. Da GetPositions semantisch korrekter ist, wird empfohlen, in Zukunft GetPositions zu verwenden.
exchange.GetPositions()Es gibt drei Formen von Funktionsaufrufen:
exchange.GetPositions() Wenn keine Parameter übergeben werden, wird der aktuelleHandelspaare / VertragscodeFordern Sie die Positionsdaten aller Sorten in der aktuellen Dimension an.
exchange.GetPositions(“ETH_USDT.swap”)
Wenn Sie spezifische Produktinformationen angeben (das Format ETH_USDT.swap wird durch die FMZ-Plattform definiert), fordern Sie die Positionsdaten des spezifischen Produkts an.
Beispiel:BTC_USD.swap、ETH_USDT.swap、ETH_USDT.quarterWarten.
BTC_USD.swap: Währungsbasierter unbefristeter Vertrag von BTC.
ETH_USDT.swap: U-basierter unbefristeter Vertrag von ETH.
ETH_USDC.swap: Unbefristeter Vertrag mit USDC-Marge für ETH. (Neben USDT können Sie auch andere Kurswährungen angeben, die hier nicht wiederholt werden.)
ETH_USDT.quarter: U-basierter vierteljährlicher Liefervertrag von ETH.
BTC_USD.BTC-USD-201226-24250-C: Optionsvertrag mit BTC-Coin-Margin.
exchange.GetPositions(“USDT.swap”) Positionsdaten aller Symbole entsprechend des angegebenen Dimensionsbereichs anfordern. USDT.swap: U-basierter unbefristeter Vertragsbereich. USDT.futures: Angebot an U-basierten Lieferverträgen. USDC.swap: Unbefristeter Kontraktbereich mit USDC-Marge. (Neben USDT können Sie auch andere Kurswährungen angeben, die hier nicht wiederholt werden.) USDC.futures: Angebot an Futures-Kontrakten mit USDC-Margin. USD.swap: Währungsbasierter unbefristeter Vertragsbereich. USD.futures: Angebot an währungsbasierten Terminkontrakten. USDT.option: U-basierter Optionskontraktbereich. USD.option: Währungsbasierter Optionskontraktbereich.
Einige spezielle Aufteilungen der Austauschkontraktdimensionen: USDT.futures_combo: CFD-Kombination der Futures_Deribit-Börse. USD.futures_ff: Futures_Mixed-Margin-Liefervertrag der Börse Craken. USD.swap_pf: Futures_Ein unbefristeter Hybrid-Margin-Vertrag an der Kraken-Börse.
Bei Dimensionen, die von der Exchange-API-Schnittstelle nicht unterstützt werden, wird ein Fehler gemeldet und beim Aufruf ein Nullwert zurückgegeben.
Test mit der OKX-Futures-Simulationsumgebung:
function main() {
exchange.IO("simulate", true)
exchange.SetCurrency("BTC_USDT")
exchange.SetContractType("swap")
var p1 = exchange.GetPositions()
var p2 = exchange.GetPositions("BTC_USDT.swap")
var tbls = []
for (var positions of [p1, p2]) {
var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
for (var p of positions) {
tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}

Bei eingehendenexchange.GetPositions()Die Parameter der Funktion sindETH_USDT.swapWenn Sie den unbefristeten Vertrag auf ETH-U-Basis verwenden, können Sie die Positionsdaten des unbefristeten Vertrags auf ETH-U-Basis abrufen.
Wenn nicht importiertexchange.GetPositions()Wenn die Funktion als Parameter verwendet wird, können die Positionsdaten aller an der Börse notierten U-Margin-Perpetual-Verträge abgerufen werden (da das aktuelle Handelspaar BTC_USDT und der Vertrag ein Swap ist, basiert die Anfrage auf dem aktuellen Handelspaar und Vertragsdimensionsbereich). Dies entspricht dem Aufrufexchange.GetPositions("USDT.swap"), geben Sie einen Anforderungsbereich an.
Mit der neu hinzugefügten Funktion „GetFundings“ lässt sich der Finanzierungssatz unbefristeter Kontrakte an Terminbörsen ermitteln. Die Funktion akzeptiert ein Parametersymbol. Die Funktion gibt ein Array von Finanzierungsstrukturen zurück.
BTC_USDT.swap. Wenn keine Parameter übergeben werden oder ein Bereich an die Funktion übergeben wird, wird eine Fehlermeldung angezeigt, die besagt, dass der Symbolparameter nicht unterstützt wird.Marktfunktionexchange.GetTicker()Dieses Upgrade fügt hauptsächlich Symbolparameter hinzu. Mit dieser Funktion können Marktdaten direkt entsprechend der durch die Parameter vorgegebenen Produktinformationen abgefragt werden, unabhängig vom aktuellen Handelspaar und Kontraktcode. Vereinfacht den Code-Schreibprozess. Gleichzeitig ist es weiterhin mit der aufrufenden Methode ohne Parameterübergabe kompatibel und weitgehend mit den alten Plattformstrategien kompatibel.
ParametersymbolFür TauschobjekteexchangeEs gibt verschiedene Formate für Spot/Futures:
AAA_BBBAAA steht für baseCurrency, also die Transaktionswährung, und BBB steht für quoteCurrency, also die Preiswährung. Alle Währungsnamen sind in Großbuchstaben.
Beispiel: BTC_USDT Spot-Handelspaar.AAA_BBB.XXX, AAA steht für baseCurrency, also die Transaktionswährung, BBB steht für quoteCurrency, also die Preiswährung, und XXX steht für den Vertragscode, z. B. den unbefristeten Vertragsswap. Die Währungsnamen sind alle in Großbuchstaben und die Vertragscodes in Kleinbuchstaben.
Beispiel: BTC_USDT.swap, der U-basierte unbefristete Vertrag von BTC.Getestet mit der Live-Umgebung von Binance Futures:
var symbols = ["BTC_USDT.swap", "BTC_USDT.quarter", "BTC_USD.swap", "BTC_USD.next_quarter", "ETH_USDT.swap"]
function main() {
exchange.SetCurrency("ETH_USD")
exchange.SetContractType("swap")
var arr = []
var t = exchange.GetTicker()
arr.push(t)
for (var symbol of symbols) {
var ticker = exchange.GetTicker(symbol)
arr.push(ticker)
}
var tbl = {type: "table", title: "test GetTicker", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of arr) {
tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
return arr
}

Das Anfordern eines Stapels Marktdaten für ein bestimmtes Symbol ist viel einfacher geworden.
Entspricht der Funktion GetTickerexchange.GetDepth()Die Funktion fügt diesmal auch einen Symbolparameter hinzu. Es besteht die Möglichkeit, den Typ direkt bei der Anforderung von Tiefendaten anzugeben.
Getestet mit der Live-Umgebung von Binance Futures:
function main() {
exchange.SetCurrency("LTC_USD")
exchange.SetContractType("swap")
Log(exchange.GetDepth())
Log(exchange.GetDepth("ETH_USDT.quarter"))
Log(exchange.GetDepth("BTC_USD.swap"))
}

Entspricht der Funktion GetTickerexchange.GetTrades()Die Funktion fügt diesmal auch einen Symbolparameter hinzu. Bei der Abfrage von Markttransaktionsdaten besteht die Möglichkeit, das Produkt direkt anzugeben.
Getestet mit der Live-Umgebung von Binance Futures:
function main() {
var arr = []
var arrR = []
var symbols = ["LTC_USDT.swap", "ETH_USDT.quarter", "BTC_USD.swap"]
for (var symbol of symbols) {
var r = exchange.Go("GetTrades", symbol)
arrR.push(r)
}
for (var r of arrR) {
arr.push(r.wait())
}
var tbls = []
for (var i = 0; i < arr.length; i++) {
var trades = arr[i]
var symbol = symbols[i]
var tbl = {type: "table", title: symbol, cols: ["Time", "Amount", "Price", "Type", "Id"], rows: []}
for (var trade of trades) {
tbl.rows.push([trade.Time, trade.Amount, trade.Price, trade.Type, trade.Id])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}

Dieses Upgrade ist auch kompatibel mitexchange.Go()Wenn die Funktion gleichzeitig die Plattform-API-Schnittstelle aufruft, wird der Symbolparameter übergeben, um die Produktinformationen anzugeben.
Die GetRecords-Funktion wurde dieses Mal erheblich angepasst und unterstützt zusätzlich den Symbolparameter, um die Typinformationen der angeforderten K-Line-Daten direkt anzugeben. Der ursprüngliche Periodenparameter wird beibehalten, um die K-Line-Periode anzugeben, und ein Grenzparameter wird hinzugefügt, um bei der Anforderung die erwartete K-Line-Länge anzugeben. Es ist auch mit der alten Version der GetRecords-Funktion kompatibel, die nur den Zeitraumparameter übergibt.
exchange.GetRecords()So rufen Sie die Funktion auf:
Getestet mit der Live-Umgebung von Binance Futures:
function main() {
exchange.SetCurrency("ETH_USDT")
exchange.SetContractType("swap")
var r1 = exchange.GetRecords()
var r2 = exchange.GetRecords(60 * 60)
var r3 = exchange.GetRecords("BTC_USDT.swap")
var r4 = exchange.GetRecords("BTC_USDT.swap", 60)
var r5 = exchange.GetRecords("LTC_USDT.swap", 60, 3000)
Log("r1相邻Bar时间差值:", r1[1].Time - r1[0].Time, "毫秒, Bar长度:", r1.length)
Log("r2相邻Bar时间差值:", r2[1].Time - r2[0].Time, "毫秒, Bar长度:", r2.length)
Log("r3相邻Bar时间差值:", r3[1].Time - r3[0].Time, "毫秒, Bar长度:", r3.length)
Log("r4相邻Bar时间差值:", r4[1].Time - r4[0].Time, "毫秒, Bar长度:", r4.length)
Log("r5相邻Bar时间差值:", r5[1].Time - r5[0].Time, "毫秒, Bar长度:", r5.length)
}

Die Funktion GetOrders fügt außerdemsymbolParameter, Sie können ein bestimmtes Produkt angeben und die nicht abgeschlossenen Bestellungen (ausstehenden Bestellungen) des Produkts abfragen; Sie können auch die nicht abgeschlossenen Bestellungen (ausstehenden Bestellungen) aller Produkte im angegebenen Dimensionsbereich abfragen.
exchange.GetOrders()Die Funktion kann auf folgende Arten aufgerufen werden:
Test mit der OKX-Futures-Simulationsumgebung:
function main() {
exchange.IO("simulate", true)
exchange.SetCurrency("BTC_USDT")
exchange.SetContractType("swap")
// 写入图表
var tbls = []
for (var symbol of ["null", "ETH_USDT.swap", "USDT.swap"]) {
var tbl = {type: "table", title: symbol, cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
var orders = null
if (symbol == "null") {
orders = exchange.GetOrders()
} else {
orders = exchange.GetOrders(symbol)
}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}
ETH_USDT.swapParameter, fordern Sie die nicht ausgeführten Aufträge (ausstehende Aufträge) des mit USDT-Marge versehenen unbefristeten Vertrags von ETH an."USDT.swap"Fordern Sie alle ausstehenden Aufträge (ausstehende Aufträge) von unbefristeten Verträgen mit USDT-Marge an.Es ist weiterhin mit der alten Benennung der Positionserfassungsfunktion kompatibel und fügt außerdem den Symbolparameter hinzu, der die Typinformationen der spezifischen angeforderten Positionsdaten angeben kann. Funktionsnutzung undexchange.GetPositions()Absolut stimmig.
fürexchange.IO("api", ...)Die Methode des Funktionsaufrufs wurde erweitert, um die direkte Übergabe der vollständigen Anforderungsadresse für alle Austauschobjekte zu unterstützen.
Wenn Sie beispielsweise die OKX-Schnittstelle aufrufen möchten:
GET https://www.okx.com /api/v5/account/max-withdrawal ccy: BTC
Unterstützt direktes Schreiben an die Basisadressehttps://www.okx.com, es ist nicht erforderlich, die Basisadresse vor dem Aufruf der IO-Funktion zu wechseln.
Test mit der OKX-Futures-Simulationsumgebung:
function main() {
exchange.IO("simulate", true)
return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

Dieses Upgrade betrifft vor allemexchange.GetOrder(id)FunktionsparameteridDer ID-Parameter wird von der ursprünglichen Umtauschauftrags-ID in ein Zeichenfolgenformat geändert, das die Handelsvariante enthält. Alle verpackten Bestell-IDs auf der FMZ-Plattform liegen in diesem Format vor.
Zum Beispiel:
123456
Wenn Sie vor diesem Upgrade die Funktion GetOrder aufrufen möchten, lautet die übergebene Bestell-ID123456。BTC-USDT。
Bitte beachten Sie, dass es sich hier um den von der Börse benannten Handelsproduktcode handelt und nicht um das von der FMZ-Plattform definierte Handelspaar.Nach diesem Upgradeexchange.GetOrder(id)Das Format der Parameter-ID, die die Funktion übergeben muss, wird wie folgt angepasst:BTC-USDT,123456。
Lassen Sie mich zunächst erklären, warum dieses Design erstellt wurde: Denn die Funktion CreateOrder wurde dieses Mal aktualisiert, um das Produkt für die Bestellung direkt anzugeben (das bestellte Produkt kann sich vom aktuell festgelegten Handelspaar und Vertragscode unterscheiden), wenn die zurückgegebene Bestell-ID die Produktinformationen nicht enthält. Dann ist diese Bestellnummer nicht verwendbar. Denn bei der Prüfung der Bestellung ist Ihnen nicht bekannt, um welchen Typ (Vertrag) es sich handelt. Die meisten Börsen verlangen beim Prüfen und Stornieren von Bestellungen die Angabe von Parametern, die den Produktcode beschreiben.
So berücksichtigen Sie diesen Effekt: Wenn Sie die Funktion exchange.IO verwenden, um die Bestellschnittstelle der Börse direkt aufzurufen und eine Bestellung aufzugeben, enthält der Rückgabewert im Allgemeinen das ursprüngliche Symbol (Produktcode) der Börse und die ursprüngliche Bestell-ID. Durch anschließendes Verknüpfen der beiden mit englischen Kommas erhalten Sie die von der FMZ-Plattform definierte Bestell-ID. Wenn Sie die von der FMZ-Plattform gekapselte Bestellschnittstelle verwenden, um eine Bestellung aufzugeben, müssen Sie, da der Anfang der Bestell-ID der Handelsproduktcode ist, nur den Produktcode löschen, wenn Sie die ursprüngliche Bestell-ID verwenden müssen. Komma.
Dieses Upgrade ist fürexchange.CancelOrder()Der Einfluss von Funktionen undexchange.GetOrder()Die Funktionen sind die gleichen.
Dieses Upgrade ist fürexchange.Buy()Der Einfluss von Funktionen undexchange.GetOrder()Die Funktionen sind die gleichen.exchange.Buy()Die von der Funktion zurückgegebene Auftrags-ID weist eine neue Struktur auf, beispielsweise die ID, die beim Platzieren einer Futures-Order an der OKX-Börse zurückgegeben wird:LTC-USDT-SWAP,1578360858053058560。
Dieses Upgrade ist fürexchange.Sell()Der Einfluss von Funktionen undexchange.GetOrder()Die Funktionen sind die gleichen.exchange.Sell()Die von der Funktion zurückgegebene Auftrags-ID weist eine neue Struktur auf, beispielsweise die ID, die beim Platzieren einer Futures-Order an der OKX-Börse zurückgegeben wird:ETH-USDT-SWAP,1578360832820125696。
Nur Futures-Börsenobjekte unterstützen diese Funktion. Für die Funktion „exchange.GetPosition()“ zum Abrufen von Positionsdaten wird der neue Name „exchange.GetPositions()“ hinzugefügt, und ihr Verhalten ist genau gleich.
Alte Definition: Funktion „exchange.GetPosition()“. Wenn sie ohne Angabe von Parametern aufgerufen wird, erhält sie die Positionsdaten des spezifischen Kontrakts, der durch das aktuelle Handelspaar und den Kontraktcode festgelegt ist.
Nach der Anpassung und Änderung lautet die neue Definition: Funktion „exchange.GetPosition()“. Wenn sie ohne Angabe von Parametern aufgerufen wird, erhält sie die Positionen aller Varianten im Dimensionsbereich, der durch das aktuell festgelegte Handelspaar und den Vertragscode bestimmt wird.
Beispielsweise ist das aktuelle Handelspaar BTC_USDT und der Vertragscode ist Swap. Rufen Sie zu dieser Zeit an:
exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")
Diese Funktion fordert die Positionsdaten von U-Margin-Perpetual-Kontrakten aller Währungen an.
Alte Definition: Funktion „exchange.GetOrders()“. Wenn sie ohne Angabe von Parametern aufgerufen wird, ruft sie alle offenen Aufträge für das aktuelle Handelspaar ab.
Nach der Anpassung und Änderung lautet die neue Definition: Funktion „exchange.GetOrders()“. Wenn sie ohne Angabe von Parametern aufgerufen wird, erhält sie die nicht abgeschlossenen Aufträge aller Spot-Handelspaare.
Alte Definition: Funktion „exchange.GetOrders()“. Wenn sie ohne Angabe von Parametern aufgerufen wird, ruft sie alle nicht abgeschlossenen Aufträge des spezifischen Vertrags ab, der durch das aktuelle Handelspaar und den Vertragscode festgelegt wurde.
Nach der Anpassung und Änderung lautet die neue Definition: Funktion „exchange.GetOrders()“. Wenn sie ohne Angabe von Parametern aufgerufen wird, ruft sie alle nicht abgeschlossenen Aufträge im Dimensionsbereich ab, der durch das aktuell festgelegte Handelspaar und den Vertragscode bestimmt wird.
Beispielsweise ist das aktuelle Handelspaar BTC_USD und der Vertragscode ist „Quartal“. Rufen Sie zu dieser Zeit an:
exchange.GetOrders() // 等价于调用 exchange.GetOrders("USD.futures")
Diese Funktion fordert die ausstehenden Auftragsdaten aller Coin-Margined-Futures-Kontrakte an.
Dieses Update fügt der Tickerstruktur ein Symbolfeld hinzu, das die Marktinformationen des Produkts der aktuellen Tickerstruktur aufzeichnet. Das Format dieses Feldes istexchange.GetTicker()Das Symbolparameterformat der Funktion ist genau dasselbe.
Dieses Update fügt der Order-Struktur ein Symbolfeld hinzu. Das Format dieses Felds ist das gleiche wieexchange.GetTicker()Das Symbolparameterformat der Funktion ist genau dasselbe. Dieses Update ändert auch das ID-Feld der Bestellstruktur, um Produktinformationen und ursprüngliche Bestellinformationen im neuen Bestell-ID-Format aufzuzeichnen. sieheexchange.GetOrder()Auf die Beschreibung der Bestell-ID in der Funktion wird hier nicht nochmal eingegangen.
Dieses Update fügt der Positionsstruktur ein Symbolfeld hinzu. Das Format dieses Felds ist das gleiche wieexchange.GetTicker()Das Symbolparameterformat der Funktion ist genau dasselbe.
Die Funktion GetFundings gibt ein Array von Finanzierungsstrukturen zurück.
{
"Info": {...}, // 交易所资金费率接口原始应答数据
"Symbol": "BTC_USDT.swap", // FMZ平台定义的品种名称
"Interval": 28800000, // 8小时间隔,单位毫秒
"Time": 1729728000000, // 本期资金费率收取时间
"Rate": 0.0001, // 资金费率,即 0.01 %
}
Um den Bedürfnissen der Benutzer gerecht zu werden, wird dieses Upgrade zunächst mit dem realen Markt kompatibel sein und das Backtesting-System wird innerhalb einer Woche angepasst. Wenn einzelne Strategiecodes betroffen sind, folgen Sie bitte den Anweisungen in diesem Artikel, um Änderungen und Anpassungen vorzunehmen.
Gemäß dem Upgrade der API-Schnittstelle der Plattformstrategie wurden die API-Schnittstellen im Backtesting-System der Plattform synchron aktualisiert. Darüber hinaus wurde im Backtesting-System Unterstützung für Folgendes hinzugefügt:
Memberfunktionen für TerminbörsenobjekteGetAccountZurückkehrenAccountDie Struktur wurde um Felder erweitert.
Die Memberfunktion SetMarginLevel des Terminbörsenobjekts wurde um das Parametersymbol erweitert.
Testbeispiel:
function main() {
exchange.SetCurrency("ETH_USDT")
exchange.SetContractType("swap")
// 当前交易对为ETH_USDT,合约代码为swap,设置杠杆值为10
exchange.SetMarginLevel(10)
// 直接指定交易对BTC_USDT,合约代码swap,设置杠杆值20
exchange.SetMarginLevel("BTC_USDT.swap", 20)
}
CtValCcyNotieren Sie die Werteinheit eines Vertrags. Die Werteinheit eines Vertrags kann sein: BTC, USD, ETH usw.CtValNotieren Sie den Wert eines Kontrakts dieses Handelsprodukts an der Börse in Einheiten vonCtValCcyDie Währung des Felddatensatzes. Zum Beispiel:CtValbeträgt 0,01,CtValCcy„BTC“ bedeutet, dass ein Vertrag 0,01 BTC wert ist.