Platform FMZ API Dokumen Sertai kami di kumpulan telegram
www.fmz.com(sebelumnya BotVs) adalah platform perdagangan strategi kuantitatif di mana anda boleh dengan mudah belajar, menulis, berkongsi, dan perdagangan strategi kuantitatif.
FMZ (BOTVS) kini menyokong semua kontrak di 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));
}
Log maklumat oleh bot, yang sama dengan yang di 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 (maklumat pesanan tertangguh yang diperoleh).
[{"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"}]
Menggunakan hos terkini, lapisan bawah boleh secara automatik menggabungkan K-line, dan beberapa data kitaran K-line yang tidak disokong oleh BITMEX juga boleh disatukan, jadi ia tidak lagi terhad pada kitaran K-line semasa menetapkan.1分钟、5分钟、1小时、1天
Semua kitaran boleh disetel.
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
{"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"}
q25459768Terima kasih.
CooongSila buka VPN menggunakan hoster tempatan, gunakan shadowsocks, global, halaman web bitmex boleh naik, tetapi program tidak berjalan. Pilih pelayan awam Amerika Syarikat tidak ada masalah, anda boleh membuat perbandingan.
Bunga-bunga kecil.Sila tanyakan botvs menyokong penugasan harga terhad untuk bitmex, yang sama dengan memilih penugasan pasif ketika membuat pesanan di bitmex
bobo188Dengan getrecords, bitmex hanya mengembalikan 100 data, tetapi bitmex menyokong maksimum 500, bagaimana anda boleh mendapatkan lebih banyak? terima kasih
jiwaData yang diperoleh oleh GetAccount tidak betul. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance: 0} FrozenStocks kurang satu 0, sebenarnya 0.0092248.
bertaqwaMenggunakan exchange.IO (("api", httpMethod, resource, params) untuk memanggil bitmex pada rest interface error, bolehkah anda bertanya bagaimana ini diselesaikan? Saya ingin mendapatkan URL bitmex ini: https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBT&depth=1, menggunakan kod berikut mengikut dokumen def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log (dalam) Kesalahan log selepas berjalan: Kesilapan Futures_BitMEX Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError}} Aksk saya tidak masalah, kerana API lain boleh memanggil melalui, tolong lihat apa yang menyebabkan ini?
Victor997Halo, saya tidak boleh menambah Droker, ia mengatakan kata laluan yang salah. Saya perlukan bantuan dengan semua langkah jika mungkin, saya hanya boleh menambah platform. Terima kasih, Victor997.
Lapan orang yang menanam minyakBilakah BitMEX akan dapat menyokong mod websocekt, sekarang had frekuensi 300 transaksi dalam 5 minit terlalu besar
kesjohttps://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png Mengapa saya tidak dapat melihat Bitmex dalam platform tambahan, termasuk Kraken dalam skrin?
ytrezqHalo, saya baru ke botvs, bagaimana saya boleh menggunakan ini untuk bitmex?
LUISLUSila tanyakan adakah platform anda mempunyai sistem penyesuaian untuk BitMex?
JNilai terakhir data baris K yang dikembalikan oleh BitMEX's GetRecords tidak dalam masa nyata, yang menyebabkan tidak dapat mengira pelbagai penunjuk dalam masa nyata. Masalah ini telah lama berlaku dan merupakan kelemahan pada API BitMEX sendiri yang tidak dapat diselesaikan. Adakah BotVS mengumpul data BitMEX secara langsung, dan adakah ia boleh menambah data BitMEX secara langsung dengan data yang dikumpulkan?
JBagaimana data K-line BitMEX diperoleh?
Lelaki NingDream Sum, saya mendapati satu masalah, bitMEX tidak dapat berurusan selepas menetapkan kadar pertukaran kepada RMB ~ tidak tahu apa masalahnya, tolong Dream Sum tolong
JIni terlalu lembu, dan boleh digunakan sebagai tuas.
Pencipta Kuantiti - Impian Kecilshadowsocks bukan penyokong global yang sebenar, dan tidak mempunyai semua akses ke rangkaian komputer penyokong, yang paling mudah adalah dengan menggunakan pelayan di kawasan lain untuk menjalankan hoster.
bobo188Bolehkah anda berikan saya satu contoh, terima kasih! Saya seorang yang kecil.
Pencipta Kuantiti - Impian KecilMenggunakan HttpQuery untuk mengakses pertukaran secara langsung, antara muka, menentukan parameter, mendapatkan data.
Pencipta Kuantiti - Impian KecilJika anda boleh, sila tambah QQ saya: 359706687 dan saya akan membantu anda.
Pencipta Kuantiti - Impian KecilYa, anda memanggil antara muka yang mempunyai kedalaman, yang seharusnya tidak memerlukan tanda tangan untuk mengenkripsi. Untuk antara muka yang meminta enkripsi, gunakan panggilan exchange.IO, untuk yang tidak menggunakan enkripsi, gunakan HttpQuery (python menggunakan perpustakaan urlib), HttpQuery memproses permintaan antara muka yang tidak mengenkripsi.
Pencipta Kuantiti - Impian KecilTerima kasih atas sokongan anda! Boleh saya mendapatkan beberapa jawapan mengenai jenis sistem anda yang anda mahu menjalankan docker. BotVS disokong: - Windows 64bit, 32bit (CLI, Antara muka) - Mac OSX (garis cmd) - Linux 64bit, 32bit (garis cmd) - ARM Linux (garis cmd) Selepas ini, saya akan membuat proses yang langkah demi langkah menambah docker. Menunggu mesej anda! ^^
Pencipta Kuantiti - Impian KecilBITMEX masih belum menyokong protokol WS.
kesjoSaya tidak faham.
Pencipta Kuantiti - Impian KecilPlatform luar tidak mempunyai data retest buat masa ini, sokongan sedang dirancang. Anda menukar penyemak imbas percubaan, mungkin penyemak imbas yang menyebabkan kawalan turun tidak muncul.
Pencipta Kuantiti - Impian KecilMenggunakan langkah: 1, Jalankan program bernama robot, di mana untuk memuat turun di lokasi ini: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、Tambah platform: konfigurasi KEY API BitMEX: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 3、Tambah robot dan Strategy Ikatan dengan robot: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png
ytrezqYa, tetapi apa langkah-langkah di laman web untuk menggunakan BitMex pada BotVS?
Pencipta Kuantiti - Impian KecilTerima kasih kerana menggunakan BotVS ^^, BotVS sudah menyokong BitMEX.
Pencipta Kuantiti - Impian KecilHalo, sementara ini sistem pengesanan tidak menyokong pertukaran BitMEX, ^^ 。
Pencipta Kuantiti - Impian KecilBoleh menyalin secara mendalam push ke dalam.
JTerima kasih! Saya akan teruskan ke satu lagi pemboleh ubah.
Pencipta Kuantiti - Impian KecilJ besar ~ Array yang diperoleh oleh GetRecords ini adalah rujukan yang dihantar, jika push masuk pada pengambilan seterusnya, elemen push akan muncul.
Pencipta Kuantiti - Impian KecilSaya akan cuba, tunggu sebentar.
JSaya mahu menambah data masa nyata yang terakhir, tetapi ada masalah, tolong saya lihat. exchange.SetContractType (('XBTUSD') // Mengambil data melalui GetRecords records = exchange.GetRecords (dalam bahasa Inggeris) Log (rekod) // dan kemudian menambah nilai terakhir sendiri. records.push ((({ Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 {C:$0000FF} Log (rekod) // Hentikan 10 saat untuk memanggil semula GetRecords ((() Sleep ((10000) records = exchange.GetRecords (dalam bahasa Inggeris) // Mengapa data yang ditambahkan terakhir masih ada? Log (rekod)
Pencipta Kuantiti - Impian KecilBaiklah, terima kasih J, saya akan cuba.
Pencipta Kuantiti - Impian KecilYa, BITMEX, ini adalah kontrak.
JSudah tentu, kita perlu menetapkan mata wang yang lebih rendah. exchanges.SetContractType (('XBTUSD') records = exchanges.GetRecords ((()
Pencipta Kuantiti - Impian KecilBaiklah, mari kita lihat.
Lelaki NingOh, itu juga mungkin, saya akan cuba.
Pencipta Kuantiti - Impian KecilBoleh menggunakan _N untuk mengehadkan percubaan bilangan kecil harga, banyak bursa yang mengehadkan bilangan kecil tawaran, biasanya tidak lebih daripada 4 digit.
Lelaki NingMimpi selalu pagi, Sell ((12319.94890, 100.00000): 400: {"error":{ "message":" Invalid price tickSize","name":"HTTPError"}}, perasaan adalah, tidak menukar harga ke dolar dan dilaporkan sehingga harga yang luar biasa menyimpang, tidak diberikan senarai.
Pencipta Kuantiti - Impian KecilBaiklah, saya akan cuba sekarang.