[TOC]
Die Erfinder der Quantitative-Trading-Plattform haben sich nach neun Jahren technischer Inbetriebnahme mehrmals umgebaut, obwohl wir als Nutzer es vielleicht nicht bemerkt haben. In den letzten zwei Jahren wurden die Plattformen in Bezug auf die Benutzererfahrung erheblich optimiert und verbessert, einschließlich einer umfassenden Upgrade der Benutzeroberfläche, einer Vielzahl von häufig verwendeten Quantitative-Trading-Tools und der Hinzufügung von mehr Retweet-Daten-Unterstützung.
Um die Konstruktion von Strategien zu erleichtern, die Transaktionslogik zu klären und für Anfänger einfacher zu handhaben, wurde die API-Schnittstelle für die Strategien aktualisiert. Die neuen Funktionen können mit den neuesten Versionen der Administratoren aktiviert werden. Die Plattform ist weiterhin maximal kompatibel mit den Anrufen der alten Schnittstellen.
Lassen Sie uns in diesem Artikel einen Überblick darüber geben, welche Upgrades für die Interface verfügbar sind und welche Änderungen an den alten Strategien erforderlich sind, um die aktuelle API zu unterstützen.
Eine solche aggregierte Markt-Interface ist unerlässlich, um Strategien leichter zu entwickeln und zu vermeiden, dass sich die Räder wiederholen.
Wenn eine Börse keine solche Schnittstelle hat (eine einzelne Börse), rufen Sieexchange.GetTickers()
Ich habe das Gefühl, dass ich das nicht kann.
Die Funktion hat keine Parameter und liefert Echtzeit-Marktdaten für alle Arten von Anwendungen in der Anwendungs-Interface zurück.
exchange.GetTickers()
Die Funktion istexchange.GetTicker()
Eine vollständige Version der Funktion wird angefordert (siehe genau, die Unterscheidung zwischen den beiden Funktionsnamen ist nur ein einziger Komplex).
Wir testen die Umgebung mit OKX Live Simulation:
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
}
Neueexchange.CreateOrder()
Die Funktion ist ein Schwerpunkt des Upgrades.exchange.CreateOrder()
Die größte Funktion der Funktion ist es, die Art und Richtung der Bestellung direkt in den Parametern der Funktion anzugeben. So hängt die Einstellung nicht mehr von den aktuellen Einstellungen des Systems ab.
In den Szenarien mit einer Vielzahl von Transaktionen reduziert sich die Designkomplexität in den Szenarien mit einer Reihe von Synchronisationen erheblich.exchange.CreateOrder()
Die vier Parameter der Funktion sind:symbol
、side
、price
、amount
。
Tests mit OKX Futures Simulator:
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 ist nur drei Mal.exchange.CreateOrder()
Die Funktionsanrufe führen zu drei verschiedenen Futures-Orders, die in verschiedene Richtungen verlaufen.
Neueexchange.GetHistoryOrders()
Eine Funktion, die verwendet wird, um historische Transaktionsorders einer bestimmten Art zu erhalten, die auch von der Exchange-Schnittstelle unterstützt werden muss.
Für die Suche nach historischen Aufträgen gibt es große Unterschiede in den Interfaces, die von den verschiedenen Börsen implementiert werden:
Für die Verpackung dieser Art von Interfaces mit der größtmöglichen Kompatibilität ist in der Praxis darauf zu achten, ob sie den Bedürfnissen und Erwartungen der Strategie entsprechen.
Die Funktionsbeschreibung ist hier nicht mehr beschrieben. Sie können sich die Syntax-Handbuch in der API-Dokumentation ansehen:
https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders
Bei der Erprobung in einer realen Umgebung mit Binance Cash:
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 Datenspeicherfunktion heißtexchange.GetPosition()
In diesem Upgrade wurde eine neue Akquisitions-Holding-Funktion hinzugefügt, um die Funktionsnamen semantischer anzupassen:exchange.GetPositions()
Und zwar mit GetPosition-Funktionen.
Beachten Sie, dass die beiden Funktionsnamen nur einen s-endenden Unterschied aufweisen, da GetPositions eher semantisch übereinstimmen.
exchange.GetPositions()
Die Funktion kann in drei Formen aufgerufen werden:
exchange.GetPositions (WEB Wenn keine Parameter übertragen werden, wird die Datenbasis nach dem aktuellenDie Transaktion stimmt / VertragskodeDie Einstellung, die alle Sorten der aktuellen Dimension anfordert.
exchange.GetPositions ((BTC_USD.swap
、ETH_USDT.swap
、ETH_USDT.quarter
Und so weiter.
BTC_USD.swap: Eine dauerhafte Währung für BTC.
ETH_USDT.swap: Ein dauerhaftes U-Bit-Kontrakt für ETH.
ETH_USDC.swap: USDC-basierte dauerhafte Kontrakte für ETH. (Außer USDT können verschiedene Quote-Währungen angegeben werden, weiter unten)
ETH_USDT.quarter: Der U-Bits-Quartals-Transaktionsanteil von ETH beträgt ca.
BTC_USD.BTC-USD-201226-24250-C: Einheitliche Währungsoptionskontrakte für BTC.
exchange.GetPositions (siehe USDT.swap) Nach dem angegebenen Dimensionsbereich werden die Lagerdaten für alle Sorten angefordert. USDT.swap: U-Bit-Dauerhafte Vertragsschwerpunkt. USDT.futures: U-Bits Wechselkurs-Schnittbereich. USDC.swap: USDC-Standort für dauerhafte Verträge. (Außer USDT können verschiedene Quote-Währungen angegeben werden, weiter unten) USDC.futures: USDC-Standort-Austauschquote in etwa. USD.swap: Dauervertragsgrenze für Währungsinvestitionen. USD.futures: Umfang der Wechselkurse für die Währung. USDT.option:U-Bits-Option-Kontraktsumfang. USD.option: Umfang der Optionskontrakte für die Währung.
Einige spezifische Abgrenzungen zwischen den Kontraktdimensionen der Börsen sind: USDT.futures_combo:Futures_Deribit ist ein Differenz-Portfolio-Kontrakt der Börse. USD.Futures_ff:Futures_Kraken ist ein Anbieter von Mixed-Back-Funds-Transaktionen. USD.swap_pf:Futures_Kraken ist ein Mixed-Security-Permanent-Kontrakt der Börse.
Für Dimensionen, die von der Exchange API nicht unterstützt werden, wird ein Fehler beim Aufruf zurückgegeben.
Tests mit OKX Futures Simulator:
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) + "`")
}
Wenn es kommtexchange.GetPositions()
Die Parameter der Funktion sind:ETH_USDT.swap
In diesem Fall können Sie die Lagerdaten von ETH-U-Bit-Permanenten-Kontrakten abrufen.
Wenn es nicht gehtexchange.GetPositions()
Die Parameter der Funktion ermöglichen es, alle U-Bit-Holdings von dauerhaften Aufträgen, die an der Börse online gestellt wurden, zu erhalten (da das aktuelle Handelspärchen BTC_USDT ist, der Vertrag ist ein Swap, entsprechend dem aktuellen Handelspärchen, der Anforderung an die Dimension des Vertrages).exchange.GetPositions("USDT.swap")
, geben Sie einen Anforderungsbereich an.
Die neue GetFundings-Funktion erlaubt es, die Kapitalraten für dauerhafte Futures-Kontrakte zu erhalten. Die Funktion hat ein Parameter-Symbol. Die Funktion gibt eine Funding-Struktur zurück.
BTC_USDT.swap
│ Nicht übertragen von Parametern oder die Übertragung der Funktion der Reichweite gibt eine Fehlermeldung. Symbol-Parameter werden nicht unterstützt.Funktionenexchange.GetTicker()
Das Upgrade besteht hauptsächlich aus der Erweiterung der Symbol-Parameter. Die Funktion kann sich von den aktuellen Handelsparen lösen, die Art der Informationen, die der Vertragskode direkt nach den Parametern angegeben wird, anfordern und Marktdaten anfordern. Der Code-Schreibprozess wird vereinfacht.
Parametersymbol
Gegenstand der Börseexchange
Es gibt verschiedene Formate für Bargeld/Futures:
AAA_BBB
Die Basiswährung wird von AAA angegeben, die Währung wird von BBB angegeben.
Ein Beispiel: BTC_USDT ist ein Bargeld-Paar.AAA_BBB.XXX
AAA steht für die Basiswährung, BBB für die Quotewährung, und XXX für den Vertragscode, z. B. für den dauerhaften Vertragsswap.
Beispiel: BTC_USDT.swap, ein dauerhaftes U-Bit-Kontrakt für BTC.Tests in einer realen Umgebung mit 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
}
Die Anforderung einer Reihe von Markendaten für bestimmte Sorten wird einfacher.
Dies ist die gleiche Funktion wie bei GetTicker.exchange.GetDepth()
Die Funktion hat auch die Symbol-Parameter hinzugefügt. Es ist möglich, die Sorte direkt bei der Anfrage von Tiefendaten anzugeben.
Tests in einer realen Umgebung mit 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"))
}
Dies ist die gleiche Funktion wie bei GetTicker.exchange.GetTrades()
Die Funktion hat auch Symbol-Parameter hinzugefügt. Es ist möglich, die Sorte direkt bei der Anfrage von Markttransaktionsdaten anzugeben.
Tests in einer realen Umgebung mit 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) + "`")
}
Das Upgrade ist ebenfalls kompatibel.exchange.Go()
Die Funktion wird gleichzeitig von der Plattform-API aufgerufen, um Symbol-Parameter zur Spezifikation der Spezies zu übermitteln.
Die GetRecords-Funktion unterstützt nicht nur die Art der Informationen für die K-Strängendaten, die die Symbol-Parameter direkt für die Anfrage angeben. Die ursprüngliche Period-Parameter, die für die Angabe der K-Strängenzyklen verwendet werden, werden beibehalten. Ein Limit-Parameter wird hinzugefügt, um die gewünschte K-Strängengradlänge für die Anfrageperiode anzugeben.
exchange.GetRecords()
Funktionen können aufgerufen werden:
Tests in einer realen Umgebung mit 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 GetOrders-Funktion wurde ebenfalls hinzugefügt.symbol
Parameter, mit denen eine bestimmte Sorte angegeben werden kann, um unvollendete Bestellungen für diese Sorte zu abfragen; unterstützt auch das Abfragen von unvollendeten Bestellungen für alle Sorten im angegebenen Dimensionsbereich.
exchange.GetOrders()
Die Funktion kann folgendermaßen aufgerufen werden:
Tests mit OKX Futures Simulator:
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.swap
Bei Parametern werden USDT-Standorte für dauerhafte Verträge ("Pending Orders") angefordert, bei denen ETH benötigt wird."USDT.swap"
Die USDT-Funktion wird von den US-amerikanischen Behörden eingesetzt, um alle nicht abgeschlossenen Bestellungen ("Pending Orders") zu beantragen, für die USDT einen permanenten Vertrag hat.Es ist weiterhin kompatibel mit den alten Funktionsnamen für die Speicherung und wurde auch ein Symbol-Parameter hinzugefügt, mit dem die Art der Informationen für die Speicherdaten, die speziell angefordert werden, angegeben werden können.exchange.GetPositions()
Ich bin der Meinung, dass das nicht wahr ist.
Fürexchange.IO("api", ...)
Funktionsanrufe, die für alle Austauschobjekte aktualisiert wurden, unterstützen die direkte Übermittlung der vollständigen Anfrageadresse.
Zum Beispiel, wenn Sie die OKX-Schnittstelle aufrufen möchten:
GEThttps://www.okx.com/api/v5/Konto/maximale Auszahlungszeit: BTC
Unterstützt die direkte Eingabe von Adressenhttps://www.okx.com
, ohne dass man die Basisadresse wechseln muss, um die IO-Funktion wieder aufzurufen.
Tests mit OKX Futures Simulator:
function main() {
exchange.IO("simulate", true)
return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}
Das Ergebnis war ein starker Aufschwung.exchange.GetOrder(id)
Parameter der Funktionid
Die,id-Parameter wurden von der ursprünglichen Börsen-Order-id in ein Stringformat geändert, das die Handelsart enthält. Alle gepackten Orders auf der FMZ-Plattform werden in diesem Format ausgeführt.
Zum Beispiel:
123456
Vor diesem Upgrade sollte die GetOrder-Funktion mit der Order-Id ausgeliefert werden, die123456
。BTC-USDT
Das ist nicht wahr.
Beachten Sie, dass hier die Code für die Handelssorten genannt werden, die von den Börsen benannt werden, und nicht die Paare, die von der FMZ-Plattform definiert werden.Ich bin der Ansicht, dass es eine gute Idee ist.exchange.GetOrder(id)
Das Format der Parameter-id, die die Funktion übermitteln soll, wird angepasst:BTC-USDT,123456
。
Ich möchte erst einmal erklären, warum ich es so gestaltet habe: Da die CreateOrder-Funktion in diesem Fall aktualisiert wurde, um die Sorte des Auftrags direkt anzugeben (die Sorte des Auftrags und das derzeit eingestellte Transaktionspaar, der Vertragskode kann unterschiedlich sein), kann die Order-Id nicht verwendet werden, wenn die zurückgegebene Order-Id keine Sorteninformationen enthält.
Wie lässt sich dieser Einfluss kombinieren: Wenn die Auftragserstellung mit der exchange.IO-Funktion durchgeführt wird, die die Auftragserstellungsschnittstelle der Börse direkt aufruft, werden im Allgemeinen die ursprünglichen Symbole der Börse (Variantecode) und die ursprüngliche Auftragsid zurückgegeben. Wenn die beiden mit einem Komma zusammengefügt werden, entspricht die Auftragsid der FMZ-Plattform. Auch wenn die Unterordnungsoberfläche, die mit der FMZ-Plattform verpackt ist, verwendet wird, kann der Unterordnungscode und die Kommas entfernt werden, wenn die ursprüngliche Id der Bestellung verwendet werden muss, da der Anfang der OrderId der Transaktionsvarietätcode ist.
Die Erweiterungexchange.CancelOrder()
Einfluss der Funktion aufexchange.GetOrder()
Die Funktion ist die gleiche.
Die Erweiterungexchange.Buy()
Einfluss der Funktion aufexchange.GetOrder()
Die Funktion ist die gleiche.exchange.Buy()
Die Funktion liefert eine neue Struktur an, z. B. die ID, die beim Auftragen von Futures auf der OKX-Börse zurückgegeben wird:LTC-USDT-SWAP,1578360858053058560
。
Die Erweiterungexchange.Sell()
Einfluss der Funktion aufexchange.GetOrder()
Die Funktion ist die gleiche.exchange.Sell()
Die Funktion liefert eine neue Struktur an, z. B. die ID, die beim Auftragen von Futures auf der OKX-Börse zurückgegeben wird:ETH-USDT-SWAP,1578360832820125696
。
Nur Futures-Exchange-Objekte unterstützen diese Funktion, die für die Akquisition von Lagerdaten die Funktion exchange.GetPosition ((() und die neue Exchange.GetPositions ((() benannt sind.
Die alte Definition: exchange.GetPosition ((() Funktion, die ohne Angabe von Parametern aufgerufen wird, erhält die Haltedaten des aktuellen Handelspares, der spezifischen Vertrag, der in der Kontraktcode-Einstellung festgelegt ist.
Anpassung, Änderung, Neudefinition: exchange.GetPosition (()) Funktion, die ohne Angabe von Parametern aufgerufen wird, um alle Sorten der aktuell eingestellten Transaktionspaare, die in der Dimensionsspanne des Vertragscodes festgelegt sind, zu erhalten.
Zum Beispiel wird das aktuelle Handelspaar BTC_USDT und der Vertragskode swap genannt.
exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")
Die Funktion bittet um die Lagerdaten für U-Bit-Permanente-Kontrakte aller Währungen.
1. Für die Börse:
Die alte Definition: exchange.GetOrders() Funktion, die keine Parameter angegeben hat und bei einem Aufruf alle noch nicht abgeschlossenen Aufträge des aktuellen Transaktionspaares erhält.
Anpassung, Änderung, Neudefinition: exchange.GetOrders() Funktion, bei der keine Parameter angegeben werden.
2. Für Futures-Börsen:
Die alte Definition: exchange.GetOrders() Funktion, die keine Parameter angegeben hat, wird aufgerufen, um alle noch nicht abgeschlossenen Aufträge für die aktuellen Transaktionspaare und die spezifischen Kontrakte zu erhalten, die in der Kontraktcode-Einstellung festgelegt wurden.
Die Funktion "Exchange.GetOrders" wurde geändert, um alle noch nicht abgeschlossenen Aufträge ohne Angabe von Parametern abzurufen.
Zum Beispiel ist das aktuelle Handelspaar BTC_USD und der Vertragskode ist quarter.
exchange.GetOrders() // 等价于调用 exchange.GetOrders("USD.futures")
Die Funktion bittet um Daten zu unvollendeten Bestellungen, die den Wechselkurs für alle Währungen angeben.
Die Aktualisierung des Ticker-Strukturs ergänzt das Symbol-Feld, das Marktinformationen über die Art der aktuellen Ticker-Struktur aufzeichnet.exchange.GetTicker()
Die Symbolparameter der Funktion sind vollständig übereinstimmend.
Dieses Update für den Order-Strukturen fügt ein Symbol-Feld hinzu, das in der Form vonexchange.GetTicker()
Die Symbol-Parameterformate der Funktion sind vollständig übereinstimmend. Das Update ändert auch das Id-Feld des Order-Strukturs, um Sorteninformationen, ursprüngliche Bestellinformationen und andere Informationen in einem neuen Order-Id-Format zu erfassen.exchange.GetOrder()
Eine Beschreibung der Order-Id in der Funktion wird hier nicht mehr beschrieben.
Das Update erweiterte die Position-Struktur um ein Symbol-Feld.exchange.GetTicker()
Die Symbolparameter der Funktion sind vollständig übereinstimmend.
Die GetFundings-Funktion gibt eine Funding-Struktursammlung zurück.
{
"Info": {...}, // 交易所资金费率接口原始应答数据
"Symbol": "BTC_USDT.swap", // FMZ平台定义的品种名称
"Interval": 28800000, // 8小时间隔,单位毫秒
"Time": 1729728000000, // 本期资金费率收取时间
"Rate": 0.0001, // 资金费率,即 0.01 %
}
Das Upgrade wird erst für die Festplattenkompatibilität durchgeführt, um den Bedürfnissen der Benutzer gerecht zu werden, und das Retesting-System wird innerhalb einer Woche vollständig angepasst sein. Wenn einzelne Politikcodes betroffen sind, wenden Sie sich an diesen Artikel.
Im Zuge der Plattformstrategie API-Interface-Upgrade wurden alle API-Interfaces in den Retest-Systemen der Plattform synchronisiert und aktualisiert.
Mitgliederfunktionen für Futures-ObjekteGetAccount
Die RückkehrAccount
Die Struktur wurde erweitert.
Die SetMarginLevel-Mitgliedsfunktion für Futures-Exchange-Objekte wurde mit dem Hinzufügen des Parametersymbols verbessert.
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)
}
CtValCcy
Die Wertmenge eines Kontracts wird erfasst, wobei die Wertmenge eines Kontracts BTC, USD, ETH usw. sein kann.CtVal
Der Wert eines auf der Börse verhandelten Vertrags der betreffenden Handelsart wird inCtValCcy
Die Währung, in der das Feld aufgezeichnet wird.CtVal
Das ist 0.01,CtValCcy
Als "BTC" bezeichnet man einen Vertrag mit einem Wert von 0,01 BTC.Was ist los?Ich frage mich, was mit meinem neu gestarteten Roboter passiert ist, die Rücksendung ID mit den Namen der Transaktionen, die ich lange recherchiert habe, und die Log-Informationen nach der Bestellung, die jetzt nicht angezeigt werden, auch wegen der Aktualisierung durch den Administrator?
Das ist Zhang./upload/asset/2ffc0f961149326b78aed.png Kann ich fragen, ob das Problem durch dieses Interface-Update verursacht wurde?
Eckmusch 希望exchange.Buy函数能增加开止损单的功能。。
NansegVorreihengrundbild
Was ist los?Gut.
Die Erfinder quantifizieren - Kleine TräumeDas ist eine gute Idee, aber es ist nicht einfach, es zu versuchen.
Was ist los?Ja, extMsg1, extMsg2 ist nicht angezeigt.
Die Erfinder quantifizieren - Kleine TräumeHallo, Order-ID ist eine notwendige Änderung, da die Angabe der Sorte direkt in die Bestellung aufgerüstet wurde. Die Bestell-ID muss Sorteninformationen enthalten, sonst kann nicht festgestellt werden, welche Sorte die Bestellung ist, und kann nicht bei der Widerrufsanforderung aufgerufen werden. Sie haben gesagt, dass die Nachschlagsanzeige nicht angezeigt wird, was bedeutet: exchange.Buy ((preis, Menge, extMsg1, extMsg2) bei einem Aufruf wird extMsg1, extMsg2 nicht im Log angezeigt?
Die Erfinder quantifizieren - Kleine TräumeHallo, hier sind die aktuellen Börsen-Einstellungen, Handelspare und Kontrakt-Code-Einstellungen.
Der Erfinder quantifiziertBitte senden Sie Testcode und Konfigurationsdetails an die Bauplanung, und die Ingenieure werden Ihnen gleich zurückschreiben.
Die Erfinder quantifizieren - Kleine TräumeEs gibt einige Unterschiede zwischen den Bedingungen der Börsen, wie z.B. ein Einheitsmechanismus, und es gibt unterschiedliche Grade der Unterstützung, die wir untersuchen müssen, um zu sehen, ob dies möglich ist.
Die Erfinder quantifizieren - Kleine TräumeIch danke für die Unterstützung, wenn Sie Probleme mit der Nutzung haben, können Sie mir eine Anfrage oder einen Kommentar schreiben.