Die FMZ-Plattform API Doc Schließen Sie sich uns in die Telegramm-Gruppe an.
www.fmz.com(früher BotVs) ist eine quantitative Strategie-Handelsplattform, auf der Sie leicht quantitative Strategien lernen, schreiben, teilen und handeln können.
FMZ (BOTVS) unterstützt jetzt alle Verträge auf BitMEX!
function main() {
exchange.IO("base", "https://testnet.bitmex.com")
}
var initAccount = null;
var nowAccount = null;
function main() {
LogReset(1);
Log("This is BitMEX test bot");
Log("Fee:", exchange.GetFee());
Log("Initial account:", initAccount = _C(exchange.GetAccount));
var info = exchange.SetContractType("XBTUSD"); // BitMEX : XBTUSD , OK : this_week
Log("XBTUSD info:", info);
Log("Use GetTicker to get ticker information:", _C(exchange.GetTicker))
Sleep(1000 * 10);
// make an order
exchange.SetDirection("sell"); // set order direction
var orderId = exchange.Sell(-1, 1); // sell at market price。
Sleep(6000);
// log positions
var positions = null;
Log(positions = _C(exchange.GetPosition));
Log("Account before changing leverage:", _C(exchange.GetAccount));
// change leverage
Log("Change leverage", _C(exchange.SetMarginLevel, positions[0].MarginLevel * 2));
Log("Account after changing leverage:", _C(exchange.GetAccount));
// test GetOrder
if (orderId) {
Log(_C(exchange.GetOrder, orderId));
}
Sleep(1000 * 10);
Log(_C(exchange.GetPosition));
// set direction to close
exchange.SetDirection("closesell");
var go_buy = exchange.Go("Buy", -1, 1);
var orderId2 = go_buy.wait();
Log(_C(exchange.GetOrder, orderId2));
Log("Current account:", nowAccount = _C(exchange.GetAccount));
Log(_C(exchange.GetPosition));
LogProfit(nowAccount.Stocks - initAccount.Stocks, " initAccount:", initAccount, " nowAccount:", nowAccount);
Sleep(1000 * 10);
var ticker = _C(exchange.GetTicker);
exchange.SetDirection("buy");
exchange.Buy(ticker.Last - 50, 1);
exchange.SetDirection("sell");
exchange.Sell(ticker.Last + 50, 1);
// GetOrders
Log("Test GetOrders:", _C(exchange.GetOrders));
var e = exchange;
while (true) {
var orders = _C(e.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(500);
for (var j = 0; j < orders.length; j++) {
e.CancelOrder(orders[j].Id);
if (j < (orders.length - 1)) {
Sleep(500);
}
}
}
Log("Cancel order, test GetOrders again:", _C(exchange.GetOrders));
}
Loggen Sie die Informationen per Bot, das ist dasselbe wie bei BitMEX.
exchange.SetDirection("closesell");
var go_buy = exchange.Go("Buy", -1, 1);
var orderId2 = go_buy.wait();
Log(_C(exchange.GetOrder, orderId2));
Log("当前账户:", nowAccount = _C(exchange.GetAccount));
Log(_C(exchange.GetPosition));
LogProfit(nowAccount.Stocks - initAccount.Stocks, " initAccount:", initAccount, " nowAccount:", nowAccount);
var ticker = _C(exchange.GetTicker);
exchange.SetDirection("buy");
exchange.Buy(ticker.Last - 50, 1);
exchange.SetDirection("sell");
exchange.Sell(ticker.Last + 50, 1);
// GetOrders
Log("Test GetOrders:", _C(exchange.GetOrders));
var e = exchange;
while (true) {
var orders = _C(e.GetOrders);
if (orders.length === 0) {
break;
}
Sleep(500);
for (var j = 0; j < orders.length; j++) {
e.CancelOrder(orders[j].Id);
if (j < (orders.length - 1)) {
Sleep(500);
}
}
}
Log("orders have been canceled. Now check orders again, order array is empty. GetOrders:", _C(exchange.GetOrders));
The pending orders
information (Die anhängigen Aufträge werden angefordert)
[{"Id":4,"Amount":1,"Price":1679.6,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":1,"ContractType":"XBTUSD"},
{"Id":3,"Amount":1,"Price":1579.6,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":0,"ContractType":"XBTUSD"}]
Mit dem neuesten Host kann die Unterseite automatisch K-Linien synthetisieren, und einige K-Linien-Zyklusdaten, die von BITMEX nicht unterstützt werden, können auch synthetisiert werden, so dass sie sich nicht mehr auf K-Linien-Zyklusen beschränken, wenn sie eingerichtet werden.1分钟、5分钟、1小时、1天
Diese Zyklen, alle Zyklen können eingestellt werden.
LogReset(1);
var info = exchange.SetContractType("XBTUSD");
exchange.SetDirection("sell");
var orderId = exchange.Sell(-1, 1);
Log(_C(exchange.GetPosition));
Sleep(1000*6);
exchange.SetDirection("buy");
var orderId2 = exchange.Buy(-1, 1);
Log(_C(exchange.GetPosition));
exchange.SetDirection("closesell");
var orderId3 = exchange.Buy(-1, 1);
Log(_C(exchange.GetPosition));
// exchange.IO example
exchange.SetContractType("XBTUSD");
Log(exchange.IO("api", "POST", "position/leverage", "symbol=XBTUSD&leverage=4"));
Log(exchange.IO("api", "GET", "user"));
The raw information of position/leverage API (Daten, die von der Position/Leverage-API zurückgegeben werden)
{"homeNotional":0,
"sessionMargin":0,
"bankruptPrice":null,
"initMarginReq":0.25,
"execBuyQty":2,
"execComm":184,
"unrealisedCost":0,
"commission":0.00075,
"leverage":4,
"posLoss":0,
"posMargin":0,
"posMaint":0,
"liquidationPrice":null,
"maintMarginReq":0.005,
"grossExecCost":0,
"execCost":7,
"currentTimestamp":"2017-05-08T10:51:20.576Z",
"markValue":0,
"unrealisedGrossPnl":0,
"taxBase":7720,
"unrealisedPnlPcnt":0,
"prevUnrealisedPnl":0,
"openOrderSellCost":0,
"deleveragePercentile":null,
"openingComm":31588,
"openOrderBuyCost":0,
"posCross":0,
"taxableMargin":0,
"simpleCost":0,
"underlying":"XBT",
"quoteCurrency":"USD",
"execBuyCost":122613,
"execSellCost":122620,
"execQty":0,
"realisedCost":-7720,
"unrealisedPnl":0,
"openingQty":0,
"openOrderBuyQty":0,
"initMargin":0,
"unrealisedTax":0,
"simpleQty":0,
"avgCostPrice":null,
"rebalancedPnl":24052,
"openingTimestamp":"2017-05-08T10:00:00.000Z",
"unrealisedRoePcnt":0,
"posCost":0,
"posInit":0,
"posComm":0,
"realisedTax":0,
"indicativeTax":0,
"breakEvenPrice":null,
"isOpen":false,
"riskValue":0,
"posState":"",
"varMargin":0,
"realisedGrossPnl":7720,
"timestamp":"2017-05-08T10:51:20.576Z",
"account":25992,
"foreignNotional":0,
"openOrderSellPremium":0,
"simpleValue":0,
"lastValue":0,
"riskLimit":20000000000,
"openOrderSellQty":0,
"grossOpenPremium":0,
"marginCallPrice":null,
"prevClosePrice":1562.74,
"openOrderBuyPremium":0,
"currentQty":0,
"currentCost":-7720,
"currentComm":31772,
"markPrice":null,
"posCost2":0,
"realisedPnl":-24052,
"prevRealisedPnl":-95,
"execSellQty":2,
"shortBankrupt":0,
"simplePnl":0,
"simplePnlPcnt":0,
"lastPrice":null,
"posAllowance":0,
"targetExcessMargin":0,
"indicativeTaxRate":0,
"grossOpenCost":0,
"maintMargin":0,
"crossMargin":false,
"openingCost":-7727,
"longBankrupt":0,
"avgEntryPrice":null,
"symbol":"XBTUSD",
"currency":"XBt"}
q25459768Ich danke Ihnen.
- Ich weiß nicht.Bitte, wenn Sie ein lokales VPN-Manager verwenden, können Sie Shadowsocks, Global, Bitmex verwenden, aber das Programm läuft nicht. Wählen Sie einen US-amerikanischen öffentlichen Server, können Sie sich freuen.
Kleine Blumen aufblühenBitte fragen Sie botvs unterstützt Bitmex Preisbegrenzung Auftrag, das ist das gleiche wie beim Bestellen in Bitmex.
Bobo188Mit getrecords gibt bitmex nur 100 daten zurück, aber bitmex unterstützt maximal 500, wie kann ich mehr bekommen?
SeeleDie Daten, die GetAccount erhalten hat, sind falsch. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance": 0} FrozenStocks ist eine Null weniger und ist tatsächlich 0.092248.
BelievWie löst man bitte einen Rest-Interface-Fehler beim Aufruf von Bitmex mit exchange.IO (API, httpMethod, resource, params)? Ich möchte diese URL von GET bitmex: https://www.bitmex.com/api/v1/orderBook/L2? symbol=XBT&depth=1, mit folgendem Code nach Dokumentation Def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log (siehe unten) Ein Fehler beim Laufen des Logs: Futures_BitMEX Fehler Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError"}} Mein Aksk ist in Ordnung, weil andere APIs durchrufen können, helfen Sie mir zu sehen, warum das so ist?
Sie haben mich verletzt.Hallo, ich kann Droker nicht hinzufügen, es steht falsches Passwort. Ich brauche Hilfe bei allen Schritten, wenn es möglich ist, ich konnte nur die Platteform hinzufügen. Danke, Victor 997.
Acht Leute, die mit dem Öl schwimmen.Wenn BitMEX Websocekt unterstützt, ist die Frequenz von 300 Transaktionen pro 5 Minuten zu hoch.
KejsjoWarum sehe ich Bitmex nicht in den Plätzen, die ich hinzufüge, und auch nicht den Kraken im Screenshot?
YtrezqHallo, ich bin neu bei botvs, wie kann ich das für bitmex benutzen?
- Nein.Bitte fragen Sie mich, ob Ihre Plattform ein Feedback-System für BitMex hat.
JBitMEX's GetRecords geben an, dass der letzte Wert der K-Linien-Daten nicht in Echtzeit ist, was die Berechnung der Indikatoren nicht in Echtzeit ermöglicht. Das Problem, das seit langem besteht, ist ein Fehler der BitMEX-API selbst, der nicht gelöst wurde. BotVS sammelt Daten von BitMEX in Echtzeit, und kann es diese Daten mit Hilfe von Daten ergänzen?
JWie wurde die K-Line-Daten von BitMEX erhalten?
Der Mann von NingIch habe ein Problem entdeckt, nachdem BitMEX den Wechselkurs auf den Yuan gesetzt hat, konnte es nicht funktionieren ~ Ich weiß nicht, was das Problem ist, bitte bitMEX um Hilfe ~
JDas ist zu teuer, um den Hebel zu bedienen.
Die Erfinder quantifizieren - Kleine Träumeshadowsocks ist kein wirklich globaler Proxy und hat nicht alle Proxy-Computer, die Zugang zum Netz haben. Derzeit ist es am einfachsten, mit einem Server in einer anderen Region einen Host zu laufen.
Bobo188Kannst du mir ein Beispiel geben? Danke! Ich bin klein und weiß.
Die Erfinder quantifizieren - Kleine TräumeSie können mit HttpQuery direkt auf die Börse zugreifen, die Benutzeroberfläche anzeigen, Parameter angeben, Daten abrufen.
Die Erfinder quantifizieren - Kleine TräumeSie können mir QQ: 359706687 hinzufügen und ich helfe Ihnen, es zu sehen.
Die Erfinder quantifizieren - Kleine TräumeJa, Sie rufen eine Schnittstelle an, die die Tiefe erreicht, und diese Schnittstelle sollte ohne Signaturen verschlüsselt sein. Für verschlüsselte Anfragen werden Exchange.IO-Anrufe verwendet, für nicht verschlüsselte Anfragen wird HttpQuery verwendet (Python verwendet die urlib-Bibliothek).
Die Erfinder quantifizieren - Kleine TräumeDanke für Ihre Unterstützung! Könnte ich eine Antwort darüber, welche Art von System, das Sie wollen, um einen Docker laufen bekommen. BotVS unterstützt: - Windows 64 Bit, 32 Bit (CLI, Schnittstelle) - MAC OSX (cmd-Linie) - Linux 64 Bit, 32 Bit (cmd Linie) - ARM Linux (cmd-Linie) Danach werde ich einen Prozess durchführen, bei dem Schritt für Schritt ein Docker hinzugefügt wird. Warte auf deine Nachricht! ^^
Die Erfinder quantifizieren - Kleine TräumeDer WS-Protokoll von BITMEX wird derzeit nicht unterstützt.
KejsjoIch mag sie. Ja, ich mag sie.
Die Erfinder quantifizieren - Kleine TräumeDie Plattform für die Plattform hat momentan keine Rückmeldedaten, die Unterstützung ist geplant. Sie haben einen anderen Browser getestet, möglicherweise der Browser, der dazu führt, dass die Absteiger nicht angezeigt wird.
Die Erfinder quantifizieren - Kleine TräumeMit Schritt: 1,Lauf das Programm namens Roboter, wo es heruntergeladen werden kann an diesem Ort: Siehe auch: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、Plattform hinzufügen: Konfiguration BitMEX `s API KEY: Siehe auch: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png Siehe auch: https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png Siehe auch: https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 3, Roboter und Bindungsstrategie mit Roboter hinzufügen: Der Präsident. - Nach der Tagesordnung folgt die Aussprache über den Bericht (Dok. Siehe auch: https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png Siehe auch: https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png
YtrezqJa, aber was sind die Schritte auf der Website, um BitMex auf BotVS zu verwenden?
Die Erfinder quantifizieren - Kleine TräumeDanke, dass Sie BotVS benutzen ^^, BotVS unterstützt bereits BitMEX.
Die Erfinder quantifizieren - Kleine TräumeHallo, das Retesting-System unterstützt BitMEX momentan nicht.
Die Erfinder quantifizieren - Kleine TräumeSie können einen Push-In tief kopieren.
JDanke! Dann muss ich die andere Variable drücken.
Die Erfinder quantifizieren - Kleine TräumeJ groß ~ Die Array, die GetRecords abruft, wird mit Referenzen übermittelt, und wenn man sie beim nächsten Abrufen pusht, erscheint das Element, das pusht.
Die Erfinder quantifizieren - Kleine TräumeIch versuche es, aber warten Sie.
JIch wollte diese letzte Echtzeit-Daten selbst hinzufügen, aber ich hatte ein Problem. exchange.SetContractType (('XBTUSD')) ist eine Währung, die von den US-amerikanischen Banken in den USA verkauft wird. // Daten über GetRecords erhalten records = exchange.GetRecords ((() Log ((records)) // und dann den letzten Wert selbst hinzufügen. Das ist ein sehr schwieriger Fall. Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 Wir sind hier. Log ((records)) // 10 Sekunden Pause zum Wiederaufrufen von GetRecords ((() Schlaf records = exchange.GetRecords ((() Warum ist die Daten, die ich zuletzt hinzugefügt habe, noch da? Log ((records))
Die Erfinder quantifizieren - Kleine TräumeOkay, danke für die Anregung von J, ich werde es testen.
Die Erfinder quantifizieren - Kleine TräumeJa, BITMEX, das ist der Vertrag.
JDas ist klar, aber erst müssen wir die Währung einstellen. Es gibt eine große Anzahl von Anwendungen, die von den Anwendern verwendet werden. records = exchanges.GetRecords
Die Erfinder quantifizieren - Kleine TräumeDas ist eine gute Idee, wir werden es überprüfen.
Der Mann von NingOh, das ist auch möglich, ich versuche es.
Die Erfinder quantifizieren - Kleine TräumeEs ist möglich, mit _N_ eine Kleinteilprobe des Preises zu beschränken. Viele Börsen beschränken das Angebot auf Kleinteile, in der Regel nicht mehr als 4 Kleinteile.
Der Mann von NingDer Traum ist immer früh, Sell ((12319.94890, 100.00000): 400: {"error": {"message":"Invalid price tickSize","name":"HTTPError"}}, das Gefühl ist, dass der Preis nicht in Dollar umgewandelt wurde, so dass der Preis ungewöhnlich abweicht und nicht aufgehängt wird.
Die Erfinder quantifizieren - Kleine TräumeIch werde es gleich testen.