www.fmz.com(BotVs로 사용되었던) 은 양적 전략 거래 플랫폼으로 양적 전략을 쉽게 배우고, 작성하고, 공유하고 거래할 수 있습니다.
FMZ (BOTVS) 는 이제 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));
}
바트로 정보를 기록합니다. 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 (중계 주문 정보)
[{"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"}]
최신 관리자를 사용하여 하위층은 자동으로 K 라인을 합성할 수 있으며, BITMEX가 지원하지 않는 일부 K 라인 주기 데이터도 합성할 수 있으므로 K 라인 주기 설정 시에는 더 이상 제한되지 않습니다.1分钟、5分钟、1小时、1天
이 주기는 모든 주기를 설정할 수 있습니다.
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 (거래소 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"}
q25459768감사합니다.
쿨롱로컬 호스트를 사용하여 VPN을 열고 shadowsocks, global, bitmex 웹 페이지를 사용할 수 있지만 프로그램이 실행되지 않습니다. 미국 퍼블릭 서버를 선택하면 문제가 없습니다.
꽃이 피어botvs가 bitmex의 제한된 가격 위탁을 지원하는지 물어보십시오. 이는 bitmex에서 주문할 때 문자를 선택하는 것과 같습니다.
bobo188getrecords로 Bitmex는 100개의 데이터를 반환하지만 Bitmex는 최대 500개의 데이터를 지원합니다. 어떻게 더 많은 것을 얻을 수 있습니까? 감사합니다.
영혼GetAccount의 자료가 잘못되었습니다. {"Stocks": 0.00841059, "FrozenStocks": 0.0092248, "Balance": 0, "FrozenBalance": 0} FrozenStocks는 0을 잃었고 실제로는 0.092248입니다.
빅터997안녕하세요, 드로커를 추가할 수 없습니다, 잘못된 암호가 있습니다. 모든 단계에 대한 도움이 필요해요 가능하다면, 고마워, 빅터997
여덟 명의 오일
케조https://dn-filebox.qbox.me/bf29e11e9f2d707808ccd006406bb3026a794876.png 왜 나는 Bitmex를 추가 플랫폼에서 볼 수 없습니까? 스크린 샷을 포함하여 크라켄도 없습니다. 또한 해외 플랫폼에서 몇 가지 검토 할 수 있습니까? 감사합니다.
ytrezq안녕하세요, 저는 botvs에 처음입니다. 어떻게 이것을 bitmex에 사용할 수 있을까요?
루이스루BitMex에 대한 리뷰 시스템이 있는지 물어보세요.
JBitMEX의 GetRecords에서 반환된 K선 데이터의 마지막 값은 실시간이 아니므로 실시간으로 지표를 계산할 수 없습니다. 이 문제는 오래전부터 존재해왔고, BitMEX API 자체의 결함으로 해결되지 않은 방법이다. BotVS는 BitMEX의 실시간 데이터를 수집하고 있으며, 수집된 데이터로 BitMEX의 실시간 데이터를 보충할 수 있습니까?
JBitMEX의 K 라인 데이터를 어떻게 얻습니까?
닌자쿠드림
J이것은 너무 뚱뚱해서 레버 조작이 가능합니다.
작은 꿈shadowsocks는 진정한 글로벌 에이전트가 아니며, 모든 에이전트 컴퓨터의 네트워크 액세스가 없습니다. 현재 가장 간단한 방법은 다른 지역에서 서버를 실행하는 호스트를 사용하는 것입니다.
bobo188예를 들어 주시겠습니까? 감사합니다. 저는 백인입니다.
작은 꿈HttpQuery를 사용하여 직접 액세스 할 수 있습니다. 거래소 인터페이스 파라미터 지정 데이터 획득.
작은 꿈제 QQ: 359706687을 추가하면, 제가 도와드릴게요.
작은 꿈네, 당신이 호출하는 인터페이스는 심층을 얻는 인터페이스입니다. 이 인터페이스는 서명 없이 암호화되어야 합니다. 암호화 요청 인터페이스는 exchange.IO 호출을 사용해야 합니다. 암호화되지 않은 인터페이스는 HttpQuery (python는 urlib 라이브러리를 사용합니다) 를 사용해야 합니다.
작은 꿈응원해주셔서 감사합니다! 도커를 실행하고 싶은 어떤 종류의 시스템에 대한 답을 얻을 수 있습니까? BotVS 지원: - 윈도우 64비트, 32비트 (CLI, 인터페이스) - MAC OSX (cmd 라인) - 리눅스 64비트, 32비트 (cmd 라인) - ARM 리눅스 (cmd 라인) 이 후, 저는 단계적으로 도커를 추가하는 프로세스를 만들 것입니다. 메세지를 기다리고 있어!
작은 꿈현재 BITMEX의 WS 프로토콜은 지원되지 않습니다.
케조저는 ᅳᅳ 정말, ie 할 수 있습니다.
작은 꿈외장판의 플랫폼은 현재 검색 데이터가 없으며 지원이 계획되어 있습니다. 당신은 다른 브라우저를 테스트했습니다. 아마도 브라우저가 다운로드를 표시하지 않는 것을 초래했습니다.
작은 꿈단계 사용: 1, 로봇이라는 프로그램을 실행, 어디서 이 위치에서 다운로드: https://dn-filebox.qbox.me/cfe3c7fab12e72b6dae4ca238dde150e5d8bcd56.png 2、플랫폼 추가: BitMEX의 API 키 구성: https://dn-filebox.qbox.me/5527bc725b11109774c5bdf152c80974542d59ed.png https://dn-filebox.qbox.me/c953a7570513cb6e5800a4775df67cbcbc9135b8.png https://dn-filebox.qbox.me/6a8077d08bae2ac3ba5c4f57eb88af5c0683e4f6.png 로봇과 결합 전략을 로봇으로 추가합니다: https://dn-filebox.qbox.me/290a20859a186b27af4058019259134b6b48bda5.png https://dn-filebox.qbox.me/5e797e71b6c7c0bfda4860f7b1073aa69b499f64.png https://dn-filebox.qbox.me/74307cc14fa0039695e4608c955c2b7d71789b10.png
ytrezq네, 하지만 웹 사이트에서 BitMex를 BotVS에 사용하려면 어떻게 해야 할까요?
작은 꿈BotVS를 사용해서 감사합니다 ^^, BotVS는 이미 BitMEX를 지원합니다.
작은 꿈안녕하세요, 현재 BitMEX 거래소를 지원하는 검증 시스템이 없습니다 ^^.
작은 꿈눌러 넣을 수 있습니다.
J다른 변수를 눌러도 됩니다
작은 꿈J 대 ~ 이 GetRecords에서 가져온 배열은 참조로 전달되며, 만약 push가 들어가면 다음 가져오는 때 push의 요소가 나타난다.
작은 꿈저는 테스트를 해보겠습니다. 잠시만요.
J이 마지막 실시간 데이터를 직접 추가하려고 했지만 문제가 생겼습니다. exchange.SetContractType (('XBTUSD') ' // GetRecords (() 를 통해 데이터를 가져옵니다 records = exchange.GetRecords (역주) 로그 (기록) // 그리고 마지막 값을 직접 추가합니다. 레코드.푸시 타임:records[records.length-1].타임 + 3600000, Close:records[records.length-1]. }) 로그 (기록) // 10초 휴식을 취하고 GetRecords를 다시 호출합니다 ((( 수면 ((10000) records = exchange.GetRecords (역주) // 왜 마지막으로 추가된 데이터가 남아있나요? 로그 (기록)
작은 꿈자, J씨에게 감사드리지만, 제가 테스트를 해보고자 합니다.
작은 꿈이 모든 것이 비트메크스 (BITMEX) 에 대한 계약입니다.
J이 모든 것이 어떻게 이루어질 것인가에 대한 질문입니다. exchanges.SetContractType (('XBTUSD') ' records = exchanges.GetRecords
작은 꿈자, 한번 확인해보자.
닌자쿠음, 이것도 가능해요, 제가 시도해보겠습니다.
작은 꿈N를 사용하여 소수점을 제한할 수 있습니다. 많은 거래소에서는 소수점을 제한하고 일반적으로 4 소수점을 초과하지 않습니다.
닌자쿠꿈은 항상 일찍, Sell ((12319.94890, 100.00000): 400: {"error":{"message":"Invalid price tickSize","name":"HTTPError"}}, 느낌은, 가격을 달러로 변환하지 않고 보고되어서, 가격이 이상적으로 벗어나서,挂牌하지 않습니다.
작은 꿈네, 바로 시험해볼게요.