A plataforma FMZ API Doc Junta-te a nós no grupo do telegrama.
www.fmz.com(anteriormente BotVs) é uma plataforma de negociação de estratégias quantitativas onde você pode facilmente aprender, escrever, compartilhar e negociar estratégias quantitativas.
FMZ (BOTVS) agora suporta todos os contratos no 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));
}
Registe as informações por bot, que é o mesmo que no 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 (As ordens pendentes informação).
[{"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"}]
Usando os mais recentes administradores, o substrato pode sintetizar automaticamente os K-lines, e alguns dados de ciclos de K-lines não suportados pelo BITMEX também podem ser sintetizados, então não é mais limitado ao tempo de configuração dos K-lines.1分钟、5分钟、1小时、1天
Estes ciclos, todos os ciclos podem ser configurados.
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 (a informação bruta da API de posição/leverage)
{"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"}
q25459768Obrigado.
CooongPor favor, use um servidor local para instalar o VPN, use o shadowsocks, global, bitmex. A página pode ser acessada, mas o programa não funciona.
As flores florescem.Pergunte se o botvs suporta o encomendamento de preço limitado do bitmex, o que equivale a selecionar a barra de encomenda passiva ao fazer um pedido no bitmex.
Boba188Com getrecords, o bitmex só retorna 100 dados, mas o bitmex suporta até 500, como você pode obter mais?
almaOs dados obtidos pelo GetAccount estão errados. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance: 0} O FrozenStocks está um zero abaixo, o que é 0.092248.
BeleevComo resolver este problema? Como resolver este problema? Eu quero obter este URL do bitmex: https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBT&depth=1, usando o seguinte código de acordo com o documento def main (: depth = exchanges[0].IO (("api", "GET", "/api/v1/orderBook/L2","symbol=XBT&depth=1") Log ((depth)) O log de exibição recebeu um erro: Futures_BitMEX erro Futures_OP 4: 401: {"error":{"message":"Signature not valid.","name":"HTTPError"}} O meu aksk não é problema, porque outras APIs podem ser chamadas de passagem, ajuda a ver qual é a razão?
Victor997Olá, não consigo adicionar Droker, diz senha incorreta. Preciso de ajuda com todos os passos, se for possível, só posso adicionar a plataforma. Obrigado, Victor997.
Oito pessoasQuando o BitMEX poderá suportar o modo websocekt, agora o limite de freqüência de 5 minutos de 300 transações é muito grande
Kejohttps://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png Por que eu não vejo o Bitmex nas plataformas adicionadas, incluindo o Kraken no screenshot?
YtrezqOlá, sou novo no botvs, como posso usar isto para o Bitmex?
LuísPor favor, pergunte se a sua plataforma tem um sistema de feedback para o BitMex.
JO último valor dos dados da linha K retornados pelo GetRecords do BitMEX não é real, o que não permite calcular os indicadores em tempo real. O problema é de longa data e é uma falha na própria API do BitMEX, que não foi resolvida. O BotVS coleta dados do BitMEX em tempo real, e pode complementar esses dados em tempo real do BitMEX com dados coletados?
JComo é que os dados da linha K do BitMEX foram obtidos?
Minha filhaSonho, eu descobri um problema, depois de o bitMEX ter configurado a taxa de câmbio para o yuan, não consegui fazer transações ~ Não sei qual é o problema, por favor, sonho por favor ~
JEste é muito bom e pode ser usado como alavanca.
Inventor quantificado - sonho pequenoO shadowsocks não é um verdadeiro agente global, não tem acesso à rede de todos os computadores, e o mais simples é executar um host com um servidor em outra região.
Boba188Por favor, pode dar-me um exemplo, obrigado!
Inventor quantificado - sonho pequenoAcesso direto ao Exchange, interface, especificação de parâmetros, acesso a dados.
Inventor quantificado - sonho pequenoSe você me enviar um QQ: 359706687, eu vou ajudá-lo a ver.
Inventor quantificado - sonho pequenoSim, você está chamando uma interface de acesso de profundidade, que deve ser criptografada sem assinatura. Para uma interface de solicitação de criptografia, use a chamada exchange.IO, para uma interface de solicitação de criptografia, use HttpQuery (python usa a biblioteca urlib), HttpQuery processa solicitações de interface não criptografadas.
Inventor quantificado - sonho pequenoObrigado pelo apoio! Posso obter alguma resposta sobre que tipos de seu sistema que você quer executar um docker. BotVS suportado: - windows 64 bits, 32 bits (CLI, Interface) - MAC OSX (linha cmd) - Linux 64 bits, 32 bits (cmd linha) - ARM Linux (linha cmd) Depois disso, vou fazer um processo que passo a passo adicionar um docker. Aguardo a tua mensagem!
Inventor quantificado - sonho pequenoO protocolo WS do BITMEX ainda não é suportado.
KejoEu sou o meu pai.
Inventor quantificado - sonho pequenoA plataforma do disco externo não tem dados de retrospecção no momento, sendo planejado o suporte. Você trocou o navegador de teste, possivelmente o navegador, causando o controle de deslizamento não aparecer.
Inventor quantificado - sonho pequenoUsando passo: 1, Execute o programa chamado robô, onde baixar neste local: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、Adicionar plataforma: configuração BitMEX `s API KEY: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 3, Adicionar robô e estratégia de ligação com robô: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png
YtrezqSim, mas quais são os passos no site para usar o BitMex no BotVS?
Inventor quantificado - sonho pequenoObrigado por usar o BotVS ^^, o BotVS já suporta o BitMEX.
Inventor quantificado - sonho pequenoOlá, o sistema de detecção ainda não suporta o BitMEX, ^^ 。
Inventor quantificado - sonho pequenoPode copiar profundamente um push para dentro.
JObrigado! Então eu vou empurrar para a outra variável que deve ser suficiente.
Inventor quantificado - sonho pequenoJ maior ~ Esta matriz obtida pelo GetRecords é referenciada, e se for inserido o elemento de push na próxima captura.
Inventor quantificado - sonho pequenoEu vou testá-lo, espere um pouco.
JEu gostaria de adicionar este último dado em tempo real, mas eu tive um problema, por favor me ajude a ver. exchange.SetContractType (('XBTUSD') // Obter dados através do GetRecords records = exchange.GetRecords (em inglês) Log (records) // e depois adicionar o último valor. Aqui, adicione qualquer dado, apenas para testes Não, eu não vou. Time:records[records.length-1].Time + 3600000, Close:records[records.length-1].Close + 1 Não. Log (records) // Pausa 10 segundos para recomeçar a chamada GetRecords ((() Sleep (Sleep) records = exchange.GetRecords (em inglês) // Por que os dados que foram adicionados na última vez ainda existem? Log (records)
Inventor quantificado - sonho pequenoMuito bem, obrigado J, por me sugerir, vou testá-lo.
Inventor quantificado - sonho pequenoSim, BITMEX, este é o contrato.
JÉ claro, primeiro é preciso definir a moeda. exchanges.SetContractType (('XBTUSD') records = exchanges.GetRecords (em inglês)
Inventor quantificado - sonho pequenoMuito bem, vamos verificar.
Minha filhaAh, isso também é possível, vou tentar.
Inventor quantificado - sonho pequenoPode-se usar o_N para limitar o número de frações do preço. Muitas casas de câmbio limitam o número de frações das ofertas, geralmente não mais de 4 frações.
Minha filhaA sensação é de que, sem converter o preço em dólares, ele foi reportado, de modo que o preço se desviou anormalmente e não foi listado.
Inventor quantificado - sonho pequenoMuito bem, vou testá-lo agora mesmo.